Acurite Atlas/Access with interceptor and wunderground

740 views
Skip to first unread message

Chris McLeod

unread,
Jul 24, 2019, 9:14:40 PM7/24/19
to weewx-user
Hello,

I just got my new Atlas set up and having not done my research found that getting it to work with SDR isn't a solved solution as yet (if I am missing something please tell me) so I decided to go the interceptor route. I have the Access setup up and sending, have the pfSense resolver routing it to my ubuntu box and I can see the data both with tcpdump and with interceptor.py running in debug mode. I have made two attempts at a [[sensor_map]] (one off of tcpdump and one off of interceptor.py in debug mode) but I am still not getting anything but an eroneous rain measurement into the database. I am guessing its the sensor_map that is borked but since I don't know for sure I will be putting much more data here in case someone can assist.

Thanks in advance,

Chris

weewx 3.9.2 installed from apt repository for Ubuntu 18.04 LTS

tcpdump on Ubuntu box:

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens160, link-type EN10MB (Ethernet), capture size 262144 bytes
17:01:03.669281 IP W550-0A43C9.little-to-no.org.3132 > rtupdate.wunderground.com.http: Flags [P.], seq 1:440, ack 1, win 8192, length 439: HTTP: GET /weatherstation/updateweatherstation.php?ID=@@@@@@@&PASSWORD=*********&softwaretype=myAcuRite&dateutc=now&action=updateraw&realtime=1&rtfreq=35&baromin=30.13&UV=1&humidity=19&tempf=92.6&windspeedmph=2&winddir=53&windgustmph=3&windgustdir=90&dewptf=44.3&dailyrainin=0.00&rainin=0.00 HTTP/1.1

From this I built the following sensor_map

[[sensor_map]]
barometer = baromin
UV = UV
outHumidity = humidity
outTemp = tempf
windSpeed = windspeedmph
windDir = winddir
windGust = windgustmph
windGustDir= windgustdir
dewpoint = dewptf
rain = rainin

but got nothing but the humidity on to the index.html

interceptory.py in manually with device type acurite-bridge

cmcleod@Weewx2:~$ sudo PYTHONPATH=/usr/share/weewx python /usr/share/weewx/user/interceptor.py --device=acurite-bridge --mode=listen --port=80
identifiers: {'bridge_id': None, 'sensor_type': None, 'sensor_id': None}

interceptor.py in manual mode with device type observer (found old post where someone mentioned they got it going with observer)

cmcleod@Weewx2:~$ sudo PYTHONPATH=/usr/share/weewx python /usr/share/weewx/user/interceptor.py --device=observer --mode=listen --port=80
identifiers: {}

Interceptor.py debug output w/accurite-bridge setting

cmcleod@Weewx2:~$ sudo PYTHONPATH=/usr/share/weewx python /usr/share/weewx/user/interceptor.py --device=acurite-bridge --mode=listen --port=80 --bug
identifiers: {'bridge_id': None, 'sensor_type': None, 'sensor_id': None}
raw data: ID=KCOTHORN74&PASSWORD=YdrxbW2U&softwaretype=myAcuRite&dateutc=now&action=updateraw&realtime=1&rtfreq=35&baromin=30.20&UV=1&humidity=53&tempf=74.7&windspeedmph=8&winddir=34&windgustmph=16&windgustdir=37&dewptf=56.4&dailyrainin=0.08&rainin=0.00
raw packet: {'winddir..': 34.0, 'dateTime': 1564016918, 'usUnits..': 1, 'pressure..': 30.2, 'temperature..': 74.7, 'dateTime..': 1564016918, 'windspeed..': 8.0, 'rainfall..': None, 'usUnits': 1, 'humidity..': 53.0}
mapped packet: {'pressure': 30.2, 'usUnits': 1, 'dateTime': 1564016918}

As you can see the items here are named quite a bit differently than in just the raw HTTP GET so I generated a new sensor_map

  [[sensor_map]]
        barometer = pressure
        outHumidity = humidity
        outTemp = temperature
        windSpeed = windspeed
        windDir = winddir
        dewpoint = dewptf
        rain = rainfall
        UV = UV

And now I have lost the barometric pressure. 

So as you can see the data is getting sent from my access to wunderground, redirected by pfSense to my Ubuntu box. I had hoped that would be the hard part and getting it into the db would be easier but I am obviously doing something wrong. Any assistance appreciated. I will respond quicky for asks for any missing infomration.




Xant

unread,
Jul 24, 2019, 11:49:40 PM7/24/19
to weewx-user

As always, too many hours already trying to make WeeWX on RasperryPi to connect to Acurite Access, at no result (1st try normal installation; 2nd try driver standalone; etc).


Acurite Access has a Static DHCP through DD-WRT router. The following command, returns no result:


PYTHONPATH=/usr/share/weewx python /usr/share/weewx/user/interceptor.py --device=acurite-bridge --mode=sniff --iface=eth0 --filter="src 192.168.1.135 and dst port 80"


Understand there might be other 'strong' approaches (DNS hijack, direct eth0 connection, etc). Please, advice whats "next" and usually works for WeeWX Interceptor and Acurite Access.


After much plus hours, I was able to DNS hijack "atlasapi.myacurite.com" (this is the "new" API/myacurite.com address) to RaspberryPi/WeeWX IP address through DD-WRT DNSmasq/DNS Forwarding... still, no luck and stuck.



The above, was a posted of mine in the GitHub Interceptor blog, which Matthew was kind to reply and respond as the following (so ALL Acurite Access users to be aware):


weewx does work with the access, but the access must send data in wu format. configure the access to send wu data. ideally you would configure it to send to the computer running weewx (use dns hijacking for this). then configure interceptor to listen (not sniff), and it will simply receive the wu data.

if you prefer to send to wu, then you must configure the interceptor to sniff the traffic (not listen).

please post on the weewx user group for further help on this.

i am sorry there is not yet a guide specifically for intercepter and access


Thanks Matthew for continue support and response.



If you place the Access IP in web-browser, it provides basic info and current Acurite server, which for the Atlas current server seems to be "atlasapi.myacurite.com". In my router with DD-WRT I was able to DNS forward "atlastapi.myacurite.com" to RaspberryPi/WeeWX IP. Is this the same approach for UW through DNS hijacking? If so, what UW domain for DNS forward?


Thanks, ZX

Message has been deleted

Xant

unread,
Jul 25, 2019, 12:28:58 AM7/25/19
to weewx-user

As always, too many hours already trying to make WeeWX on RasperryPi to connect to Acurite Access, at no result (1st try normal installation; 2nd try driver standalone; etc).


Acurite Access has a Static DHCP through DD-WRT router. The following command, returns no result:


PYTHONPATH=/usr/share/weewx python /usr/share/weewx/user/interceptor.py --device=acurite-bridge --mode=sniff --iface=eth0 --filter="src 192.168.1.135 and dst port 80"


Understand there might be other 'strong' approaches (DNS hijack, direct eth0 connection, etc). Please, advice whats "next" and usually works for WeeWX Interceptor and Acurite Access.


After much plus hours, I was able to DNS hijack "atlasapi.myacurite.com" (this is the "new" API/myacurite.com address) to RaspberryPi/WeeWX IP address through DD-WRT DNSmasq/DNS Forwarding... still, no luck and stuck.


The above, was a posted of mine in the GitHub Interceptor blog, which Matthew was kind to reply and respond as the following (so ALL Acurite Access users to be aware):


weewx does work with the access, but the access must send data in wu format. configure the access to send wu data. ideally you would configure it to send to the computer running weewx (use dns hijacking for this). then configure interceptor to listen (not sniff), and it will simply receive the wu data.

if you prefer to send to wu, then you must configure the interceptor to sniff the traffic (not listen).

please post on the weewx user group for further help on this.

i am sorry there is not yet a guide specifically for intercepter and access


Thanks Matthew for continue support and response.



Some progress! (more to come)

DD-WRT can do DNS forwarding as the following:


In DD-WRT:

Setup>Forced DNS Redirection [On]

Services>ServicesTab>DNSmasq>Additional DNSmasq Options
address=/website/forwardIP , or in this case
address=wunderground/Y.Y.Y.Y

In RaspberryPi:

PYTHONPATH=/usr/share/weewx python /usr/share/weewx/user/interceptor.py --device=wu-client --mode=listen --port=80

Finally some data packages. Now, trying with WeeWX and identifiers.

Best, ZX

Chris McLeod

unread,
Jul 25, 2019, 12:32:46 AM7/25/19
to weewx-user
Hello,

Sorry for the wasted post, I have this sorted (for the most part). Apparently I was a bit overdone getting the networking sorted and didn't read the fine manual provided for interceptor so I missed there was a wu-client device. Once that was set things work much, much better. The only error I am getting in syslog is:

Jul 24 22:21:08 Weewx2 weewx[20428]: interceptor: MainThread: unrecognized parameter rainin=0.00

I removed the sensor_map so I guess this is part of interceptor.py? Below is representative of what I get when running interceptor.py in debug mode:

:~$ sudo PYTHONPATH=/usr/share/weewx python /usr/share/weewx/user/interceptor.py --device=wu-client --mode=listen --port=80 --debug
identifiers: {}
raw data: ID=@@@@@@@&PASSWORD=********&softwaretype=myAcuRite&dateutc=now&action=updateraw&realtime=1&rtfreq=35&baromin=30.26&UV=0&humidity=42&empf=76.6&windspeedmph=4&winddir=195&windgustmph=7&windgustdir=0&dewptf=51.8&dailyrainin=0.00&rainin=0.00
raw packet: {'wind_speed': 4.0, 'barometer': 30.26, 'wind_gust': 7.0, 'dewpoint': 51.8, 'humidity_out': 42.0, 'uv': 0.0, 'rain': None, 'dateTime':1564028339, 'temperature_out': 76.6, 'wind_dir': 195.0, 'rain_total': 0.0, 'wind_gust_dir': 0.0, 'usUnits': 1}
mapped packet: {'barometer': 30.26, 'dewpoint': 51.8, 'outHumidity': 42.0, 'UV': 0.0, 'rain': None, 'dateTime': 1564028339, 'windDir': 195.0, 'outemp': 76.6, 'windSpeed': 4.0, 'windGust': 7.0, 'usUnits': 1, 'windGustDir': 0.0}

I see that I am getting dailyrain from the wu data and it is likely getting mapped to rain, would it be better to map rainin to rain and let weewx calculate my daily rain? Any assistance on this appreciated as rain measurement is one of my primary wants from this setup.

Thanks,

Chris

Chris McLeod

unread,
Jul 25, 2019, 12:34:52 AM7/25/19
to weewx-user
One more thing, I looked back at my syslog once more after posting the below and see three lines and thought I would post them for completeness in case they help sort the rain issue out. 

Jul 24 22:19:20 Weewx2 weewx[20428]: interceptor: MainThread: unrecognized parameter rainin=0.00
Jul 24 22:19:20 Weewx2 weewx[20428]: interceptor: MainThread: skipping rain measurement of 0.0: no last rain
Jul 24 22:19:23 Weewx2 weewx[20428]: interceptor: MainThread: unrecognized parameter rainin=0.00


On Wednesday, July 24, 2019 at 7:14:40 PM UTC-6, Chris McLeod wrote:

Xant

unread,
Jul 29, 2019, 9:36:37 PM7/29/19
to weewx-user

Chris

As I also have an Acurite Atlas, and "rainin" error as well, wondering if you figured out the many variations of 'rain' (?!)

My identifiers:
identifiers: {}
raw data: ID=KNYCLIFT14&PASSWORD=XXXX&softwaretype=myAcuRite&dateutc=now&action=updateraw&realtime=1&rtfreq=35&baromin=30.05&UV=0&humidity=78&tempf=75.1&windspeedmph=3&winddir=291&windgustmph=4&windgustdir=55&dewptf=67.8&dailyrainin=0.06&rainin=0.06
raw packet: {'wind_speed': 3.0, 'barometer': 30.05, 'wind_gust': 4.0, 'dewpoint': 67.8, 'humidity_out': 78.0, 'uv': 0.0, 'rain': None, 'dateTime': 1564448985, 'temperature_out': 75.1, 'wind_dir': 291.0, 'rain_total': 0.06, 'wind_gust_dir': 55.0, 'usUnits': 1}
mapped packet: {'barometer': 30.05, 'dewpoint': 67.8, 'outHumidity': 78.0, 'UV': 0.0, 'rain': None, 'dateTime': 1564448985, 'windDir': 291.0, 'outTemp': 75.1, 'windSpeed': 3.0, 'windGust': 4.0, 'usUnits': 1, 'windGustDir': 55.0}

As the above, there is 'rainin', 'rain' (twice) and 'total_rain'.

Thanks,
Xant

Xant

unread,
Jul 30, 2019, 3:41:05 PM7/30/19
to weewx-user

Ok... I may have figured-out as the following:


1) 'rain' sensors in Acurite Atlas as acquired by Interceptor driver

identifiers: {}
raw data: ID=KNYCLIFT14&PASSWORD=XXXX&
softwaretype=myAcuRite&dateutc=now&action=updateraw&realtime=1&rtfreq=35&baromin=30.05&UV=0&humidity=78&tempf=75.1&windspeedmph=3&winddir=291&windgustmph=4&windgustdir=55&dewptf=67.8&dailyrainin=0.06&rainin=0.06
raw packet: {'wind_speed': 3.0, 'barometer': 30.05, 'wind_gust': 4.0, 'dewpoint': 67.8, 'humidity_out': 78.0, 'uv': 0.0, 'rain': None, 'dateTime': 1564448985, 'temperature_out': 75.1, 'wind_dir': 291.0, 'rain_total': 0.06, 'wind_gust_dir': 55.0, 'usUnits': 1}
mapped packet: {'barometer': 30.05, 'dewpoint': 67.8, 'outHumidity': 78.0, 'UV': 0.0, 'rain': None, 'dateTime': 1564448985, 'windDir': 291.0, 'outTemp': 75.1, 'windSpeed': 3.0, 'windGust': 4.0, 'usUnits': 1, 'windGustDir': 55.0}

That is "dailyrainin", "rainin", "rain", "rain_total". Not exactly clear which one is what, but may have info overlap.

2) "rainin" in Interceptor driver
Previous postings mention "rainin" error and not recognized, which was puzzling some as "rainin" at Interceptor.py listed as 'IGNORED_LABELS'.

That gave a hint from Developers that "rainin" might be overlap info, and should be ignored.
While "rainin" in IGNORED_LABELS section, was still generating error... and the reason is the IGNORED_LABELS shows twice in Interceptor.py (one with "rainin", the other without "rainin").

        IGNORED_LABELS = ['realtime', 'rtfreq', 'action', 'ID', 'PASSWORD', 'dateutc', 'softwaretype']

        IGNORED_LABELS = ['rainin', 'dewptf', 'realtime', 'rtfreq', 'action', 'ID', 'PASSWORD', 'dateutc', 'updateraw', 'sensor', 'mt', 'id', 'probe', 'check', 'water']

Once 'rainin' is added to the first IGNORED_LABEL instance, the msg error is gone, while still may provide the correct Rain data correlation.

Best,
Xant

Ray Pfaff

unread,
Jul 31, 2019, 10:08:12 AM7/31/19
to weewx-user
I also have the Access and am using sniff to feed data to weewx.  I think some of the rain parameters get initialized the first time you get rain and the other errors can be ignored.  Mine works fine other than a _very_ annoying problem wherein the Access just decides that it won't send any data to WeatherUnderground at all.  This is confirmed by doing a tcpdump and seeing nothing coming out of the Access. 
Message has been deleted

Xant

unread,
Jul 31, 2019, 12:03:39 PM7/31/19
to weewx-user
The problem of Atlas not sending data to WU might be that All data been channeled/DNS hijack to weewx, creating a loop (and similar case happened to me, when using DD-WRT DNSmasq). Use the following strategy and have weewx to feed WU.

In case of DNS hijack through router (DD-WRT or similar):

Do not use DNSmasq for hijack, but Firewall along with IPtables
iptables -t nat -A PREROUTING -s [AcessIP] -p tcp --dport 80 -j DNAT --to-destination [weewxIP]:80 iptables -t nat -A POSTROUTING -j MASQUERADE

Best,
Xant
Reply all
Reply to author
Forward
0 new messages