interceptor driver, HP2560 and WS90

654 views
Skip to first unread message

Jason Gibson

unread,
Jun 12, 2023, 8:28:39 PM6/12/23
to weewx-user
Hi All,

I have been trying to coax rain data out of the WS90 and into weewx.

I assume that the local API is deprecated on the HP2560 as I can't appear to get any details out of it on port 45000.

I am currently using the interceptor driver in listen mode on port 8080.  And I am able to  log all data in WeeWX except rain from the piezo sensor, and battery voltages.

I have tried mapping sensors to fields as below, to no avail, is anyone able to assist with the interceptor driver, or is there another driver better suited to my hardware?

Hardware:
-----------------
HP2564 - HP2560 & WS90

HP2560_C:
  Hardware revision V2.0
  Firmware: Pro_V1.9.0
  EasyWeatherProv5.11
WS90: 
  Firmware 1.3.3

weewx.conf extract:
--------------------------------

driver = user.interceptor
    device_type = ecowitt-client
    port = 8080
    iface = ens18
    [[sensor_map_extensions]]
          rain = drain_piezo
          rainRate = rrain_piezo
          bat_wind = wh90batt
          bat_rain = ws90cap_volt

Am I using the right field names?  Example output from the ws90 is as follows:

PASSKEY: <redacted>
stationtype:  EasyWeatherPro_V5.1.1
runtime: 
2
dateutc: 
2023-06-11 01:53:27
tempinf: 
77.0
humidityin: 
40
baromrelin: 
30.224
baromabsin: 
29.946
tempf: 
61.2
humidity: 
60
winddir: 
12
windspeedmph: 
5.14
windgustmph: 
6.93
maxdailygust: 
10.74
solarradiation: 
270.64
uv: 
2
rrain_piezo: 
0.000
erain_piezo: 
0.000
hrain_piezo: 
0.000
drain_piezo: 
0.000
wrain_piezo: 
0.000
mrain_piezo: 
1.209
yrain_piezo: 
1.209
ws90cap_volt: 
5.2
ws90_ver: 
133
gain10_piezo: 
1.15
gain20_piezo: 
1.05
gain30_piezo: 
1.00
gain40_piezo: 
1.00
gain50_piezo: 
1.00
wh90batt: 
3.10
freq: 
433M
model: 
HP2564CA_Pro_V1.9.0
interval: 
30


Cheers,

Jason

Rainer Lang

unread,
Jun 13, 2023, 1:41:00 PM6/13/23
to weewx...@googlegroups.com

Hi Jason

1. the local API (local Ecowitt Gateway API aka GW1000 API) was never implemented in the HP25x0, HP350x, WH2910 consoles => so no such thing like depreciation
you want to know which console supports which API, look up https://www.wxforum.net/index.php?topic=40730.0 😎

2. the reason why you may not receive WS90 (piezo rain) data via the custom server could be that your WS90 has not been set in the console as primary rain device.
gear wheel --> setup (more) --> rain priority (has to be set to piezo).

3. could you run the interceptor driver stand-alone and post here the result of one console post ?
(or run weewx in debug = 3 mode and copy from the syslog)

regards

Rainer

--
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/8828c0f2-f040-4558-bf6d-f2ff1dedb0ben%40googlegroups.com.

Rainer Lang

unread,
Jun 13, 2023, 1:56:01 PM6/13/23
to weewx...@googlegroups.com

One more thing - regarding mapping and field names

the weewx names to map to are the database field names of the database schema you use for your database
(nowadays usually wview-extended - look up the schema in /usr/share/weewx/schemas/wview-extended.py)
[or /home/weewx/bin/schemas  depending on your setup]
you have to map the (additional) field names from the interceptor.py to the respective weewx (database) fields from wview-extended.py
(either inside the interceptor.py or via a field-map extension)

if you want to store the new fields which are not in the wview-extended schema, you will either have to repurpose existing but unused database fields
or extend your database schema with the respective columns

Jason Gibson

unread,
Jun 13, 2023, 8:26:36 PM6/13/23
to weewx-user
Hi Rainer,

Thanks for your reply.

Rainfall data priority is set to piezo.

Standalone interceptor driver output below:

mapped packet: {'dateTime': 1686696648, 'usUnits': 1, 'pressure': 29.604, 'outHumidity': 85.0, 'inHumidity': 40.0, 'outTemp': 50.7, 'inTemp': 73.4, 'windSpeed': 8.5, 'windGust': 11.18, 'windDir': 279.0, 'radiation': 71.59, 'UV': 0.0}

It seems that I had mapped the rain fields sort of correctly.  Although I am not sure 'rain' and 'drain_piezo' are actually the same quantity.  There does not appear to be an equivalent to the database field 'rain' in the output from the HP2560.  It has only rain rate, daily, weekly, monthly and yearly rain totals.  Not rain since last interval, which is my understanding of what the database fieldname 'rain' is meant to represent.

Having looked at the wview-extended.py schema I can see that I had the wrong database field names for the battery values.   I have since changed the mapping as seen below, still no rain or battery data.

  [[sensor_map_extensions]]

          rain = drain_piezo
          rainRate = rrain_piezo
          supplyVoltage = wh90batt
          referenceVoltage = ws90cap_volt


Not sure where to go from here.

Cheers,

Jason

Jason Thomas

unread,
Aug 4, 2023, 3:04:29 PM8/4/23
to weewx-user
Here's my entire interceptor driver output, if it helps.

raw data: b'PASSKEY=XXXX&stationtype=EasyWeatherPro_V5.1.1&runtime=4&dateutc=2023-08-04+19:01:54&tempinf=73.2&humidityin=47&baromrelin=29.229&baromabsin=29.229&tempf=91.6&humidity=41&winddir=246&windspeedmph=4.03&windgustmph=4.25&maxdailygust=8.72&solarradiation=817.36&uv=7&rrain_piezo=0.000&erain_piezo=0.000&hrain_piezo=0.000&drain_piezo=0.000&wrain_piezo=0.000&mrain_piezo=0.000&yrain_piezo=0.000&ws90cap_volt=5.4&ws90_ver=133&gain10_piezo=1.00&gain20_piezo=1.00&gain30_piezo=1.00&gain40_piezo=1.00&gain50_piezo=1.00&wh90batt=3.14&freq=915M&model=HP2564BU_Pro_V1.9.0&interval=30'
raw packet: {'dateTime': 1691175714, 'usUnits': 1, 'temperature_in': 73.2, 'humidity_in': 47.0, 'pressure': 29.229, 'temperature_out': 91.6, 'humidity_out': 41.0, 'wind_dir': 246.0, 'wind_speed': 4.03, 'wind_gust': 4.25, 'solar_radiation': 817.36, 'uv': 7.0}
mapped packet: {'dateTime': 1691175714, 'usUnits': 1, 'pressure': 29.229, 'outHumidity': 41.0, 'inHumidity': 47.0, 'outTemp': 91.6, 'inTemp': 73.2, 'windSpeed': 4.03, 'windGust': 4.25, 'windDir': 246.0, 'radiation': 817.36, 'UV': 7.0}

I'm missing something. I have the driver configured as such:
[Interceptor]

    driver = user.interceptor
    device_type = ecowitt-client
    port = 8001
    ...
    [[sensor_map_extensions]]
        inTemp = temperature_in
        inHumidity = humidity_in
        outTemp = temperature_out
        outHumidity = humidity_out
        dateTime = dateTime
        usUnits = usUnits
        pressure = pressure
        windDir = wind_dir
        windSpeed = wind_speed
        UV = uv

And data doesn't seem to be flowing into Weewx. I guess I could start over completely with my weewx config - this was previously running a USB-connected Acurite. I was hoping I could comment that out and put this in and it work.

Rainer Lang

unread,
Aug 6, 2023, 11:15:02 AM8/6/23
to weewx...@googlegroups.com

in my understanding you don't need this field map extension below as it is already contained in the interceptor.py (driver).

The only extension you need is
[[sensor_map_extensions]]


          rain = drain_piezo
          rainRate = rrain_piezo
          supplyVoltage = wh90batt

          referenceVoltage = ws90cap_volt

does your console have the proper entries in the Customized section (WS View Plus or WebUI [https://ip-address]) ?

weewx.conf Ecowitt console resp. WS View Plus Weather Services - Customized
[station] Enable
station_type = Interceptor protocol type same as: Ecowitt
[Interceptor] ServerIP/Hostname: 192.168.8.15 (IP address of the computer/Server, on which weewx runs)
mode = listen Path: /
device_type = ecowitt-client
port = xxxx #(z.B. 8000) Port: xxxx (the same port number as in weewx.conf in the [Interceptor] Stanza)
iface = eth0 # bzw. wlan0 Upload Interval: 16

Darkmage

unread,
Aug 6, 2023, 1:06:55 PM8/6/23
to weewx...@googlegroups.com
So my settings were close to that one, and with some tweaking from what you posted, I've gotten further, I think. I'm now getting this from syslog:

Aug  6 13:04:56 raspberrypi weewx[18619] INFO weewx.restx: Wunderground-RF: Published record 2023-08-06 13:04:55 EDT (1691341495)
Aug  6 13:05:12 raspberrypi weewx[18619] INFO user.interceptor: unrecognized parameter b'PASSKEY={hex string hidden in case it's for security}
Aug  6 13:05:12 raspberrypi weewx[18619] INFO user.interceptor: unrecognized parameter runtime=4
Aug  6 13:05:12 raspberrypi weewx[18619] INFO user.interceptor: unrecognized parameter rrain_piezo=0.000
Aug  6 13:05:12 raspberrypi weewx[18619] INFO user.interceptor: unrecognized parameter erain_piezo=0.000
Aug  6 13:05:12 raspberrypi weewx[18619] INFO user.interceptor: unrecognized parameter hrain_piezo=0.000
Aug  6 13:05:12 raspberrypi weewx[18619] INFO user.interceptor: unrecognized parameter drain_piezo=0.000
Aug  6 13:05:12 raspberrypi weewx[18619] INFO user.interceptor: unrecognized parameter wrain_piezo=0.000
Aug  6 13:05:12 raspberrypi weewx[18619] INFO user.interceptor: unrecognized parameter mrain_piezo=0.000
Aug  6 13:05:12 raspberrypi weewx[18619] INFO user.interceptor: unrecognized parameter yrain_piezo=0.000
Aug  6 13:05:12 raspberrypi weewx[18619] INFO user.interceptor: unrecognized parameter ws90cap_volt=5.3
Aug  6 13:05:12 raspberrypi weewx[18619] INFO user.interceptor: unrecognized parameter ws90_ver=133
Aug  6 13:05:12 raspberrypi weewx[18619] INFO user.interceptor: unrecognized parameter gain10_piezo=1.00
Aug  6 13:05:12 raspberrypi weewx[18619] INFO user.interceptor: unrecognized parameter gain20_piezo=1.00
Aug  6 13:05:12 raspberrypi weewx[18619] INFO user.interceptor: unrecognized parameter gain30_piezo=1.00
Aug  6 13:05:12 raspberrypi weewx[18619] INFO user.interceptor: unrecognized parameter gain40_piezo=1.00
Aug  6 13:05:12 raspberrypi weewx[18619] INFO user.interceptor: unrecognized parameter gain50_piezo=1.00
Aug  6 13:05:12 raspberrypi weewx[18619] INFO user.interceptor: unrecognized parameter wh90batt=3.16
Aug  6 13:05:12 raspberrypi weewx[18619] INFO user.interceptor: unrecognized parameter interval=16'
--
Jason Marshall Thomas


You received this message because you are subscribed to a topic in the Google Groups "weewx-user" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/weewx-user/lDfFN2U_x3Q/unsubscribe.
To unsubscribe from this group and all its topics, send an email to weewx-user+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/weewx-user/54412309-03f5-c8b2-e40b-ff20e6b4501f%40gmail.com.

Darkmage

unread,
Aug 6, 2023, 1:08:19 PM8/6/23
to weewx...@googlegroups.com
Even closer than I thought - my main page is now updating, despite the above errors. Is there anything I can or should do about them?
--
Jason Marshall Thomas

Rainer Lang

unread,
Aug 6, 2023, 1:20:32 PM8/6/23
to weewx...@googlegroups.com

this is normal as the standard interceptor.py code doesn't have a complete label map to handle these labels 😁
Matthew hasn't found the time to extend it - others had to do this

try the attached one (interceptor.py) instead (save yours before) - it covers all known Ecowitt sensors as per today - it should work

it has to go to /usr/share/weewx/user

interceptor(1).zip

Rainer Lang

unread,
Aug 6, 2023, 1:27:08 PM8/6/23
to weewx-user

you may also want to replace your "extensions.py" by the attached one to have the proper units for all sensors

it also goes into /usr/share/weewx/user

interceptor(1).zip
extensions.zip
Reply all
Reply to author
Forward
0 new messages