Interceptor receives empty packets - Netcat don't....

142 views
Skip to first unread message

Ingper

unread,
Oct 24, 2019, 1:08:31 PM10/24/19
to weewx-user
I have an issue to receive the data from my new weather station ((FineOffset clone, Eurochron WS2900) that is sent through my local network to a Raspberry Pi running Weewx.

The station (IP 192.168.0.11 below) is configured to send according to WU protocol but to the (static) IP of my R-Pi 192.168.0.160 and port 8000. The problem is that Interceptor receives something but the packets are empty. 

If I instead use Netcat to monitor the port, correct data is received each 60s (it's no row brake after GET, forum editor adds that):

pi@raspberrypi:~ $ sudo nc -l 8000
GET ID=EMCO&PASSWORD=1234&indoortempf=70.0&tempf=69.8&dewptf=56.1&windchillf=69.8&indoorhumidity=59&humidity=62&windspeedmph=0.0&windgustmph=0.0&winddir=356&absbaromin=29.076&baromin=29.912&rainin=0.000&dailyrainin=0.000&weeklyrainin=0.000&monthlyrainin=0.000&solarradiation=0.00&UV=0&dateutc=2019-10-24%2016:24:42&softwaretype=EasyWeatherV1.4.4&action=updateraw&realtime=1&rtfreq=5 HTTP/1.0
Host: 192.168.0.160
Accept:*/*
Connection: Close

But this data never reach Weewx through Interceptor, and the weewx debug info shows that Interceptor queue is always empty. By running Interceptor alone and directly (below in debug mode) it shows that something really is happening/received each 60s (the result, four last rows, are written each 60 s), but it's empty:

pi@raspberrypi:~ $ sudo PYTHONPATH=/usr/share/weewx python /usr/share/weewx/user/interceptor.py --port=8000 --debug --device=observer --mode=listen
identifiers: {}
raw data: 
raw packet: {'usUnits': 16, 'dateTime': 1571935276}
mapped packet: {'usUnits': 16, 'dateTime': 1571935276}

And if I instead use Tcpdump, I also get packets with no data (or at least not the weather station data, only the necessary communication related, I think). And also a little bit too often, each 16 s, but nothing additional as long as the data i see with Netcat each 60s:

pi@raspberrypi:~ $ sudo tcpdump -i wlan0 port 8000 -A -X -v
tcpdump: listening on wlan0, link-type EN10MB (Ethernet), capture size 262144 bytes
18:45:15.911352 IP (tos 0x0, ttl 128, id 486, offset 0, flags [none], proto TCP (6), length 44)
    192.168.0.11.10877 > 192.168.0.160.8000: Flags [S], cksum 0x8304 (correct), seq 275093, win 5840, options [mss 1460], length 0
0x0000:  4500 002c 01e6 0000 8006 b6ea c0a8 000b  E..,............
0x0010:  c0a8 00a0 2a7d 1f40 0004 3295 0000 0000  ....*}.@..2.....
0x0020:  6002 16d0 8304 0000 0204 05b4            `...........
18:45:15.911459 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 40)
    192.168.0.160.8000 > 192.168.0.11.10877: Flags [R.], cksum 0xb17d (correct), seq 0, ack 275094, win 0, length 0
0x0000:  4500 0028 0000 4000 4006 b8d4 c0a8 00a0  E..(..@.@.......
0x0010:  c0a8 000b 1f40 2a7d 0000 0000 0004 3296  .....@*}......2.
0x0020:  5014 0000 b17d 0000                      P....}..
18:45:31.903936 IP (tos 0x0, ttl 128, id 487, offset 0, flags [none], proto TCP (6), length 44)
    192.168.0.11.28473 > 192.168.0.160.8000: Flags [S], cksum 0x3504 (correct), seq 277465, win 5840, options [mss 1460], length 0
0x0000:  4500 002c 01e7 0000 8006 b6e9 c0a8 000b  E..,............
0x0010:  c0a8 00a0 6f39 1f40 0004 3bd9 0000 0000  ....o9.@..;.....
0x0020:  6002 16d0 3504 0000 0204 05b4            `...5.......
18:45:31.904053 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 40)
    192.168.0.160.8000 > 192.168.0.11.28473: Flags [R.], cksum 0x637d (correct), seq 0, ack 277466, win 0, length 0
0x0000:  4500 0028 0000 4000 4006 b8d4 c0a8 00a0  E..(..@.@.......
0x0010:  c0a8 000b 1f40 6f39 0000 0000 0004 3bda  .....@o9......;.
0x0020:  5014 0000 637d 0000                      P...c}..

It's the same behaviour regardless if I use eth0 or wlan0 interface on my Pi. Version of Interceptor is 0.46 (latest). Have also tried different device settings in Interceptor, but because already the raw data is missing it may be irrelevant. 

But the weather station seems to be correct configured and transmits everything ok I think, otherwise the data could not have been captured by Netcat on my Pi. But why is it then filtered out (?) before it gets to Tcpdump or Interceptor, what is the difference in interface handling compared to Netcat ?

I'm VERY thankful if somebody could help. I have spent days on this now. Have a faulty station that should be replaced ASAP (Renkforce/FineOffset 2315) that only worked ok for few weeks. But it was USB interface on that (=easier ;-).



Ingper

unread,
Oct 25, 2019, 8:06:27 AM10/25/19
to weewx-user
Update:
If I change the output format from Weather station to "Ecowitt" Interceptor will find the info, even though it is in "wu-client" or "observer" format.

This is the raw data captured with Netcat:
pi@raspberrypi:~ $ sudo nc -l 8000
POST /data/report/ HTTP/1.1
HOST: 192.168.0.160
Connection: Close
Content-Type: application/x-www-form-urlencoded
Content-Length: 444

PASSKEY=CFCD77F9A5836A0D9EF120FA44A30E14&stationtype=EasyWeatherV1.4.4&dateutc=2019-10-25+11:57:29&tempinf=70.0&humidityin=59&baromrelin=29.891&baromabsin=29.055&tempf=69.1&humidity=62&winddir=200&windspeedmph=0.0&windgustmph=0.0&maxdailygust=14.8&rainratein=0.000&eventrainin=0.000&hourlyrainin=0.000&dailyrainin=0.000&weeklyrainin=0.000&monthlyrainin=0.000&totalrainin=0.000&solarradiation=0.00&uv=0&wh65batt=0&freq=868M&model=WS2900_V2.01.08

....and this is what Interceptor now receives (in debug mode):
pi@raspberrypi:~ $ sudo PYTHONPATH=/usr/share/weewx python /usr/share/weewx/user/interceptor.py --port=8000 --debug --device=observer --mode=listen
identifiers: {}
raw data: PASSKEY=CFCD77F9A5836A0D9EF120FA44A30E14&stationtype=EasyWeatherV1.4.4&dateutc=2019-10-25+12:02:33&tempinf=70.0&humidityin=58&baromrelin=29.891&baromabsin=29.055&tempf=69.1&humidity=62&winddir=200&windspeedmph=0.0&windgustmph=0.0&maxdailygust=14.8&rainratein=0.000&eventrainin=0.000&hourlyrainin=0.000&dailyrainin=0.000&weeklyrainin=0.000&monthlyrainin=0.000&totalrainin=0.000&solarradiation=0.00&uv=0&wh65batt=0&freq=868M&model=WS2900_V2.01.08
raw packet: {'wind_speed': 0.0, 'humidity_in': 58.0, 'temperature_in': 70.0, 'wind_gust': 0.0, 'humidity_out': 62.0, 'uv': 0.0, 'radiation': 0.0, 'rain': None, 'dateTime': 1572004953, 'pressure': 29.055, 'temperature_out': 69.1, 'wind_dir': 200.0, 'rain_total': 0.0, 'usUnits': 1}
mapped packet: {'pressure': 29.055, 'outHumidity': 62.0, 'UV': 0.0, 'radiation': 0.0, 'rain': None, 'dateTime': 1572004953, 'windDir': 200.0, 'outTemp': 69.1, 'windSpeed': 0.0, 'inHumidity': 58.0, 'inTemp': 70.0, 'windGust': 0.0, 'usUnits': 1}

Why ?  What's the problem/difference to the WU format that makes it not even pass through to Interceptor ?  Ok, I now get the data to Weewx but it don't feel right. (Btw before changing to "Ecowitt" I also tested with a new, fresh clear installation of R-Pi img etc, but it was the same).

Thanks in advance for all ideas...

IL

unread,
May 21, 2020, 4:38:12 AM5/21/20
to weewx-user
How was this problem solved? I have exactly the same problem, although in my case it doesn't help changing to "Ecowitt".

IL

unread,
May 22, 2020, 6:39:45 AM5/22/20
to weewx-user
My problem is now solved, thanks to this link: https://groups.google.com/d/msg/weewx-user/OocmnyeIhbM/I-yHmyabCAAJ.

The reason for the problem was obviously a change of format in EasyWeather. Installing interceptor-0.54b.py took care of this.
Reply all
Reply to author
Forward
0 new messages