Pulling my hair - one weird issue after the other

164 views
Skip to first unread message

Konrad Skeri Ekblad

unread,
Jul 27, 2021, 6:20:26 PM7/27/21
to weewx-user
I have been using weewx on a Raspberry Pi for about two years now. After my old Fine Offset died soon after I moved from pywws I bought a Eurochron WS2900 which I got running using the interceptor driver, and that worked fine until the weather station stopped giving temperature readings this winter. I was able to fix that last week (bad connector on the cable from the temperature sensor to the circuit board in the sensor array) but when I reconnected it to weewx I started to experience various odd things. The unit shows correct data on its display and sends data to weewx, and the webpages rendered by weewx are correct (e.g. temperature ranging between 16°C and 28°C the other day) but the temperatures sent to Windy (and others) by weewx varies from -2°C to 21°C for the same day. Thinking that there might be some API change or something during the half year my station was offline, and that I for some time have had thoughts of moving it to a virtual server on my ESXi station anyway, I set up a Centos 8 machine and installed weewx on it. Simulator works fine, but using the same interceptor settings as on my Raspberry Pi I don't get any data (IP updated in the weather station settings).

Using
PYTHONPATH=/usr/share/weewx python3 -m user.interceptor --debug --mode=listen --port=8000 --device=ecowitt-client
I was able to once capture this after listening maybe one hour:
raw data:
raw packet: {'dateTime': 1627416663, 'usUnits': 1}
mapped packet: {'dateTime': 1627416663, 'usUnits': 1}
Yay! A timestamp!

Trying to connect to port 8000 from another computer in the network shows that the port is open.

Thinking there is some problem with the weather station I have reseted it, but no change. The device is by itself directly uploading to Weather Underground and some other sites, and that works.

Frustrated I one again change the local IP the weather station should send data to to the Raspberry Pi, but now I don't get any data there at all.

This is the interceptor settings of weewx.conf:

    station_type = Interceptor
##############################################################################

[Interceptor]
    # This section is for the network traffic interceptor driver.

    # The driver to use:
    driver = user.interceptor

    # Specify the hardware device to capture.  Options include:
    #   acurite-bridge - acurite internet bridge, smarthub, or access
    #   observer - fine offset WH2600/HP1000/HP1003, ambient WS2902
    #   lw30x - oregon scientific LW301/LW302
    #   lacrosse-bridge - lacrosse GW1000U/C84612 internet bridge
    #   wu-client - any hardware that uses the weather underground protocol
#    device_type = observer
    device_type = ecowitt-client
    port = 8000

##############################################################################

I'm not sure what more is relevant logs to post.
I see no dropped packages originating from the weather station in the firewall log.

Does anyone have any idea how I should proceed or what I should try?

regards
Konrad Skeri Ekblad

gjr80

unread,
Jul 27, 2021, 8:24:31 PM7/27/21
to weewx-user
You have changed many things in your setup and even though you appear to have reverted to your original working configuration I would be starting from scratch as per the interceptor drive readme.I would be running the driver directly and then making sure you use the —debug command line option. Post the console output here. Let’s see where that gets us.

Gary

Konrad Skeri Ekblad

unread,
Aug 2, 2021, 5:17:12 AM8/2/21
to weewx-user
I did a complete reinstallation of the server with Centos 8. Fresh install of WeeWX from repository using yum as described on web page. Installed interceptor driver according to set up instructions.
Running PYTHONPATH=/usr/share/weewx python3 user/interceptor.py --debug --port=8000 --device=ecowitt-client for almost an hour only gives the following output:

raw data:
raw packet: {'dateTime': 1627891880, 'usUnits': 1}
mapped packet: {'dateTime': 1627891880, 'usUnits': 1}

Using Wireshark to monitor the network traffic I notice this:
Weatherstation to WeeWX server:
POST  HTTP/1.1
HOST: 192.168.129.10
Connection: Close
Content-Type: application/x-www-form-urlencoded
Content-Length: 415
PASSKEY=**replaced**&stationtype=EasyWeatherV1.6.0&dateutc=2021-08-02+08:11:21&tempinf=77.5&humidityin=42&baromrelin=29.894&baromabsin=29.374&tempf=59.9&humidity=76&winddir=25&windspeedmph=2.7&windgustmph=3.4&maxdailygust=6.9&rainratein=0.000&eventrainin=0.000&hourlyrainin=0.000&dailyrainin=0.000&weeklyrainin=0.000&monthlyrainin=0.000&totalrainin=53.673&solarradiation=355.26&uv=3&model=WS2900

Response from WeeWX server:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
        <title>Error response</title>
    </head>
    <body>
        <h1>Error response</h1>
        <p>Error code: 400</p>
        <p>Message: Bad HTTP/0.9 request type ('POST').</p>
        <p>Error code explanation: HTTPStatus.BAD_REQUEST - Bad request syntax or unsupported method.</p>
    </body>
</html>

According to WireShark there is this communication about once each minute, but I have only one entry in the terminal.

gjr80

unread,
Aug 2, 2021, 6:22:05 AM8/2/21
to weewx-user
When you just ran the interceptor driver directly there should have been output to the console as well as log output in the WeeWX log, not sure what log file it will be in as I am not a Centos user. Can you please post the log output exactly as it appears in the log.

Gary

Rainer Lang

unread,
Aug 2, 2021, 6:42:54 AM8/2/21
to weewx...@googlegroups.com
On a RPi you have to add the following line to your weewx.conf
device_type = ecowitt-client
port = 8000

iface = eth0   #if you are using the Ethernet port
                    #or
iface = wlan0 #if you are using the WiFi of the RPi
# only one of them 😉

you also have to make sure that no other application on the RPi uses port 8000

you can try 8001 or 8777 (on both ends - weewx.conf and WSView app/console) - maybe port 8000 is used ....
--
You received this message because you are subscribed to the Google Groups "weewx-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to weewx-user+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/weewx-user/80473569-41c0-48be-b253-b230bed851b3n%40googlegroups.com.


Konrad Skeri Ekblad

unread,
Aug 2, 2021, 6:47:01 AM8/2/21
to weewx-user
If I start WeeXW (still using simulator driver) I get its log messages in /var/log/messages, however, running the interceptor driver directly does not produce any output in this log file.

Konrad

gjr80

unread,
Aug 2, 2021, 6:48:10 AM8/2/21
to weewx-user
Useful information but not relevant at this stage as the [Interceptor] settings in weewx.conf are not used when running the interceptor driver directly.

Gary

Konrad Skeri Ekblad

unread,
Aug 2, 2021, 6:50:42 AM8/2/21
to weewx-user
I'm running Centos as a virtual server. Port 8000 is not in use by anything else. (If it were I would get an error when running the interceptor driver directly, e.g. when trying to run it while WeeWX is still running configured to use the interceptor driver on that port.) Tried adding --iface=ens192 but it didn't make any difference.

Konrad

gjr80

unread,
Aug 2, 2021, 7:02:50 AM8/2/21
to weewx-user
Have a look in the other log files on your system, it should be there somewhere. When running the interceptor driver directly the (WeeWX) logging setup is somewhat abbreviated so it could be different to when WeeWX is run.

Gary

Konrad Skeri Ekblad

unread,
Aug 2, 2021, 8:55:48 AM8/2/21
to weewx-user
Running WeeWX directly instead the output in /var/log/messages is this:

Aug  2 14:36:59 localhost systemd[1]: Starting SYSV: start and stop the weewx weather system...
Aug  2 14:36:59 localhost journal[2697]: weewx[2697] INFO __main__: Initializing weewx version 4.5.1
Aug  2 14:36:59 localhost journal[2697]: weewx[2697] INFO __main__: Using Python 3.6.8 (default, Mar 19 2021, 05:13:41) #012[GCC 8.4.1 20200928 (Red Hat 8.4.1-1)]
Aug  2 14:36:59 localhost journal[2697]: weewx[2697] INFO __main__: Platform Linux-4.18.0-305.10.2.el8_4.x86_64-x86_64-with-centos-8.4.2105
Aug  2 14:36:59 localhost journal[2697]: weewx[2697] INFO __main__: Locale is 'sv_SE.UTF-8'
Aug  2 14:36:59 localhost journal[2697]: weewx[2697] INFO __main__: PID file is /var/run/weewx.pid
Aug  2 14:36:59 localhost journal[2701]: weewx[2701] INFO __main__: Using configuration file /etc/weewx/weewx.conf
Aug  2 14:36:59 localhost journal[2701]: weewx[2701] INFO __main__: Debug is 1
Aug  2 14:36:59 localhost weewx[2688]: Starting weewx: [     OK     ]
Aug  2 14:36:59 localhost journal[2701]: weewx[2701] INFO weewx.engine: Loading station type Interceptor (user.interceptor)
Aug  2 14:36:59 localhost systemd[1]: Started SYSV: start and stop the weewx weather system.
Aug  2 14:36:59 localhost journal[2701]: weewx[2701] INFO user.interceptor: driver version is 0.53
Aug  2 14:36:59 localhost journal[2701]: weewx[2701] INFO user.interceptor: device type: ecowitt-client
Aug  2 14:36:59 localhost journal[2701]: weewx[2701] INFO user.interceptor: mode is listen
Aug  2 14:36:59 localhost journal[2701]: weewx[2701] INFO user.interceptor: listen on :8000
Aug  2 14:36:59 localhost journal[2701]: weewx[2701] INFO user.interceptor: sensor map: {'pressure': 'pressure', 'barometer': 'barometer', 'outHumidity': 'humidity_out', 'inHumidity': 'humidity_in', 'outTemp': 'temperature_out', 'inTemp': 'temperature_in', 'windSpeed': 'wind_speed', 'windGust': 'wind_gust', 'windDir': 'wind_dir', 'windGustDir': 'wind_gust_dir', 'radiation': 'solar_radiation', 'dewpoint': 'dewpoint', 'windchill': 'windchill', 'rain': 'rain', 'rainRate': 'rain_rate', 'UV': 'uv', 'txBatteryStatus': 'battery', 'extraTemp1': 'temperature_1', 'extraTemp2': 'temperature_2', 'extraTemp3': 'temperature_3', 'extraHumid1': 'humidity_1', 'extraHumid2': 'humidity_2', 'soilTemp1': 'soil_temperature_1', 'soilTemp2': 'soil_temperature_2', 'soilMoist1': 'soil_moisture_1', 'soilMoist2': 'soil_moisture_2', 'soilMoist3': 'soil_moisture_3', 'soilMoist4': 'soil_moisture_4', 'leafWet1': 'leafwetness_1', 'leafWet2': 'leafwetness_2', 'pm2_5': 'pm2_5', 'extraTemp4': 'temperature_4', 'extraTemp5': 'temperature_5', 'extraTemp6': 'temperature_6', 'extraTemp7': 'temperature_7', 'extraTemp8': 'temperature_8', 'extraHumid3': 'humidity_3', 'extraHumid4': 'humidity_4', 'extraHumid5': 'humidity_5', 'extraHumid6': 'humidity_6', 'extraHumid7': 'humidity_7', 'extraHumid8': 'humidity_8', 'soilTemp3': 'soil_temperature_3', 'soilTemp4': 'soil_temperature_4'}
Aug  2 14:36:59 localhost journal[2701]: weewx[2701] INFO weewx.engine: StdConvert target unit is 0x1
Aug  2 14:36:59 localhost journal[2701]: weewx[2701] INFO weewx.engine: Archive will use data binding wx_binding
Aug  2 14:36:59 localhost journal[2701]: weewx[2701] INFO weewx.engine: Record generation will be attempted in 'hardware'
Aug  2 14:36:59 localhost journal[2701]: weewx[2701] INFO weewx.engine: Using archive interval of 300 seconds (specified in weewx configuration)
Aug  2 14:36:59 localhost journal[2701]: weewx[2701] INFO weewx.restx: StationRegistry: Registration not requested.
Aug  2 14:36:59 localhost journal[2701]: weewx[2701] INFO weewx.restx: Wunderground: Posting not enabled.
Aug  2 14:36:59 localhost journal[2701]: weewx[2701] INFO weewx.restx: PWSweather: Posting not enabled.
Aug  2 14:36:59 localhost journal[2701]: weewx[2701] INFO weewx.restx: CWOP: Posting not enabled.
Aug  2 14:36:59 localhost journal[2701]: weewx[2701] INFO weewx.restx: WOW: Posting not enabled.
Aug  2 14:36:59 localhost journal[2701]: weewx[2701] INFO weewx.restx: AWEKAS: Posting not enabled.
Aug  2 14:36:59 localhost journal[2701]: weewx[2701] INFO __main__: Starting up weewx version 4.5.1
Aug  2 14:36:59 localhost journal[2701]: weewx[2701] INFO weewx.engine: Using binding 'wx_binding' to database 'weewx.sdb'
Aug  2 14:36:59 localhost journal[2701]: weewx[2701] INFO weewx.manager: Starting backfill of daily summaries
Aug  2 14:36:59 localhost journal[2701]: weewx[2701] INFO weewx.manager: Daily summaries up to date
Aug  2 14:36:59 localhost journal[2701]: weewx[2701] INFO weewx.engine: Starting main packet loop.

After that there are no more log entries. Been running about 10 minutes now.

systemctr status weewx gives the following info:
● weewx.service - SYSV: start and stop the weewx weather system
   Loaded: loaded (/etc/rc.d/init.d/weewx; generated)
   Active: active (running) since Mon 2021-08-02 14:36:59 CEST; 10min ago
     Docs: man:systemd-sysv-generator(8)
  Process: 2671 ExecStop=/etc/rc.d/init.d/weewx stop (code=exited, status=0/SUCCESS)
  Process: 2688 ExecStart=/etc/rc.d/init.d/weewx start (code=exited, status=0/SUCCESS)
    Tasks: 2 (limit: 11377)
   Memory: 13.5M
   CGroup: /system.slice/weewx.service
           └─2701 python3 /usr/share/weewx/weewxd --daemon --pidfile=/var/run/weewx.pid /etc/weewx/weewx.conf

aug 02 14:45:29 localhost.localdomain python3[2701]: weewx[2701] DEBUG user.interceptor: empty queue
aug 02 14:45:39 localhost.localdomain python3[2701]: weewx[2701] DEBUG user.interceptor: empty queue
aug 02 14:45:49 localhost.localdomain python3[2701]: weewx[2701] DEBUG user.interceptor: empty queue
aug 02 14:45:59 localhost.localdomain python3[2701]: weewx[2701] DEBUG user.interceptor: empty queue
aug 02 14:46:09 localhost.localdomain python3[2701]: weewx[2701] DEBUG user.interceptor: empty queue
aug 02 14:46:19 localhost.localdomain python3[2701]: weewx[2701] DEBUG user.interceptor: empty queue
aug 02 14:46:29 localhost.localdomain python3[2701]: weewx[2701] DEBUG user.interceptor: empty queue
aug 02 14:46:39 localhost.localdomain python3[2701]: weewx[2701] DEBUG user.interceptor: empty queue
aug 02 14:46:49 localhost.localdomain python3[2701]: weewx[2701] DEBUG user.interceptor: empty queue
aug 02 14:46:59 localhost.localdomain python3[2701]: weewx[2701] DEBUG user.interceptor: empty queue

According to Wireshark the weather station connects to WeeWX every minute, but receives the 400 error code.
Stopping WeeWX, Wireshark now shows that the weather station instead of the SYN ACK response to the low level TCP handshake instead receives a RST ACK, indicating that the port now is closed for communication.

Konrad

Konrad Skeri Ekblad

unread,
Aug 2, 2021, 3:28:42 PM8/2/21
to weewx-user
After searching in the issue tracker on GitHub I found a similar problem when running in wu-client mode. If I understood correctly it is a firmware update on the weather station that requires a different path in its settings. WeeWX logs looks correct at the moment. Will continue with website setup to see if website generation and all other problems also are solved now.

Konrad

Konrad Skeri Ekblad

unread,
Aug 2, 2021, 3:29:47 PM8/2/21
to weewx-user
And for those who happen to stumble on this thread: Path must be set to /path?

gjr80

unread,
Aug 2, 2021, 4:31:34 PM8/2/21
to weewx-user
So it’s working now?

Gary

Konrad Skeri Ekblad

unread,
Aug 2, 2021, 4:42:58 PM8/2/21
to weewx-user
Data is being saved to the database and local website is being updated (still using default skin). Just re-enabled Windy uploads. Waiting to see if I still have the problem that WeeWX sends different data to Windy than received from the weather station. Unfortunately, it is my experience that Windy waits for a few consecutive data updates before publishing them if station has been offline. PWS seem to work though; that one also got erroneous data from WeeWX earlier. (Like -2°C last week when it was 16°C.)

Konrad

gjr80

unread,
Aug 2, 2021, 5:01:19 PM8/2/21
to weewx-user
If you have discrepancies between data being displayed by WeeWX and data being uploaded externally by WeeWX using the RESTful uploaders then the first step is to set debug = 3 and restart WeeWX. This should result in (amongst other things) the logging of the URL string being used by WeeWX when uploading. From there you should be able to work out if the issue is within WeeWX or the remote system.

Gary

Konrad Skeri Ekblad

unread,
Aug 3, 2021, 3:40:36 AM8/3/21
to weewx-user
That is great to know that the debug is a level setting and not a boolean true/false!
Also Windy works now! Yay!

Reply all
Reply to author
Forward
0 new messages