Code Monkey home page Code Monkey logo

weewx-gw1000's People

Contributors

darkorb avatar gjr80 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

weewx-gw1000's Issues

Feature request: write calibration data

Hi,

the driver's ability to read calibration data of the sensors is excellent. Very useful to document/backup the configuration of the system.

I was wondering if the API allows to not only read that data, but to write it, so to have a sort of backup/restore utility of the calibration configuration.

The use case is that in the past, some fw updates deleted/reset all calibration values, and if you have lot of sensors it's a tedious and error-prone process inserting all values again.

It would be a great feature, IMHO.

update step

Hello please can you explain to me how should update the drivers for the future versions?

Solar Radiation W/m2 and brigtness Lux

Is there a solution for reading Solar Radiation W/m2 and brigtness Lux not showing up in weewx.

UV index is reading ok.
Is this a driver problem or a Weewx problem.

The diver works fine!

Is this becouse of switching from interceptor driver to API driver? Do I need a fresh weewx install

What do you reccomend?

Battery levels for WH40 WH51 are zero

Firstly, this is brilliant driver so thanks! I have a WS80 multi, WH40 rain, WH32B indoor, WH41 AQ, WH51 soil, WH57 lightning. Below is sample output. I can see the battery levels coming through except the WH40 and WH51 seem to be zero's. The WS-View app is reporting good battery levels on everything as is the ecowitt.net alert monitoring (i.e. lack of alerts). Maybe a bug? The below is from first running test driver.

Output as per install instructions Step 5 test driver:
"2020-10-15 23:21:30 BST (1602800490): UV: 0, dateTime: 1602800490, dayRain: 0.3, daymaxwind: 7.0, inHumidity: 53, inTemp: 21.1, lightning_distance: None, lightning_last_det_time: None, lightning_strike_count: None, luminosity: 0.0, monthRain: 0.5, outHumidity: 97, outTemp: 7.4, pm2_5: 11.0, pm2_51_24hav: 8.1, pressure: 1012.7, rain: None, rainRate: 0.0, relbarometer: 1024.6, soilMoist1: 59, stormRain: 0.0, usUnits: 17, uvradiation: 0.0, weekRain: 0.5, wh40_batt: 0, wh41_ch1_batt: 4, wh51_ch1_batt: 0, wh57_batt: 5, windDir: 241, windGust: 0.8, windSpeed: 0.0, ws80_batt: 3.28, yearRain: 0.5"

Also MQTT LOOP out I can see the same 0's e.g.:
beaufort_count: "0.571428571429"
cloudbase_meter: "161.465568243"
outHumidity: "97.2142857143"
pressure_mbar: "1012.66428571"
rain_cm: "0.0"
interval_minute: "5.0"
barometer_mbar: "1026.3257574"
yearRain_cm: "0.05"
windrun_km: "0.167143272575"
dewpoint_C: "6.95153953628"
ws80_batt: "3.28"
pm2_51_24hav: "8.3"
windGust_kph: "9.00002236942"
heatindex_C: "7.36428571429"
dayRain_cm: "0.03"
stormRain_cm: "0.0"
inDewpoint_C: "11.0476782125"
daymaxwind: "7.0"
wh51_ch1_batt: "0.0"
weekRain: "0.5"
altimeter_mbar: "1026.03501945"
windchill_C: "7.26328516716"
appTemp_C: "6.26522101744"
outTemp_C: "7.36428571429"
windGustDir: "245.0"
pm2_5_microgram_per_meter_cubed: "11.0"
lightning_strike_count: "0.0"
humidex_C: "7.37520274268"
wh57_batt: "5.0"
soilMoist1_centibar: "59.0"
rain24_cm: "0.0381"
wh41_ch1_batt: "4.0"
hourRain_cm: "0.0"
inTemp_C: "21.0"
windSpeed_kph: "2.0057192709"
usUnits: "16.0"
uvradiation: "0.0"
wh40_batt: "0.0"
monthRain_cm: "0.05"
luminosity: "0.0"
UV: "0.0"
rainRate_cm_per_hour: "0.0"
dateTime: "1602801600.0"
windDir: "345.229304126"
relbarometer: "1024.56428571"
ET_cm: "0.0"
inHumidity: "53.0"

Ambient PM25IN AQ sensor

I am new to WeeWX, so sorry if this is a stupid question. I have the sensor in the title. The GW1000 is clearly picking up data from it, and from code in your driver and in the Accumulators section in weewx.conf, I would expect it to be showing up. Any suggestion on where I am missing the boat for this would be much appreciated!

--Richard

PS: we also have a Purple Air outdoor sensor, which I hope to add via a separate extension. So having the PM25IN show up as indoor would be much desired.

0.1.0b5 - Rain day missing

Froggit/Ecowitt GW1000, V1.6.1, WS57 Lightning Sensor, 7in1 Outdoor Sensor

Aaccording to WS-View, it should be 0,6mm since this morning, but nothing displayed in Weeweex in opposite to before by the interceptor driver. Rain rate seems to work...

root@DietPi:~# PYTHONPATH=/home/weewx/bin python -m user.gw1000 --test-driverUsing configuration file /home/weewx/weewx.conf

Interrogating GW1000 at 192.168.12.189:45000

2020-07-26 09:02:26 CEST (1595746946): UV: 0, barometer: 1003.1, dateTime: 1595746946, daymaxwind: 2.6, inHumidity: 51, inTemp: 26.2, lightning_distance: None, lightning_last_det_time: None, lightning_strike_count: None, luminosity: 5704.0, outHumidity: 97, outTemp: 17.0, pressure: 1003.1, rainRate: 1.8, rainday: 0.6, rainevent: 0.3, rainmonth: 84.4, rainweek: 0.6, rainyear: 179.3, usUnits: 17, uvRadiation: 4.7, windDir: 9.8, windGust: 0.5, windSpeed: 0.4

Driver was not loading after system reboot

I installed rsyslog and was promted to reboot my machine for this.
After the reboot weewx was loading, but not the driver.

To fix the problem I had to:
sudo /etc/init.d/weewx restart

user.log:

Jul 26 11:27:54 DietPi blkmapd[265]: open pipe file /run/rpc_pipefs/nfs/blocklayout failed: No such file or directory
Jul 26 11:28:11 DietPi weewx[379] INFO main: Initializing weewx version 4.1.1
Jul 26 11:28:11 DietPi weewx[379] INFO main: Using Python 3.5.3 (default, Jul 9 2020, 13:00:10) #12[GCC 6.3.0 20170516]
Jul 26 11:28:12 DietPi weewx[379] INFO main: Platform Linux-4.9.0-12-amd64-x86_64-with-debian-9.13
Jul 26 11:28:12 DietPi weewx[379] INFO main: Locale is 'de_DE.UTF-8'
Jul 26 11:28:12 DietPi weewx[379] INFO main: PID file is /var/run/weewx.pid
Jul 26 11:28:12 DietPi weewx[849] INFO main: Using configuration file /home/weewx/weewx.conf
Jul 26 11:28:12 DietPi weewx[849] INFO main: Debug is 0
Jul 26 11:28:12 DietPi weewx[849] INFO weewx.engine: Loading station type GW1000 (user.gw1000)
Jul 26 11:28:14 DietPi weewx[849] ERROR weewx.engine: Import of driver failed: local variable 'disc_ip' referenced before assignment (<class 'UnboundLocalError'>)
Jul 26 11:28:16 DietPi weewx[849] CRITICAL weewx.engine: **** Traceback (most recent call last):
Jul 26 11:28:16 DietPi weewx[849] CRITICAL weewx.engine: **** File "/home/weewx/bin/weewx/engine.py", line 103, in setupStation
Jul 26 11:28:16 DietPi weewx[849] CRITICAL weewx.engine: **** self.console = loader_function(config_dict, self)
Jul 26 11:28:16 DietPi weewx[849] CRITICAL weewx.engine: **** File "/home/weewx/bin/user/gw1000.py", line 832, in loader
Jul 26 11:28:16 DietPi weewx[849] CRITICAL weewx.engine: **** return Gw1000Driver(**config_dict[DRIVER_NAME])
Jul 26 11:28:16 DietPi weewx[849] CRITICAL weewx.engine: **** File "/home/weewx/bin/user/gw1000.py", line 917, in init
Jul 26 11:28:16 DietPi weewx[849] CRITICAL weewx.engine: **** super(Gw1000Driver, self).init(**stn_dict)
Jul 26 11:28:16 DietPi weewx[849] CRITICAL weewx.engine: **** File "/home/weewx/bin/user/gw1000.py", line 553, in init
Jul 26 11:28:16 DietPi weewx[849] CRITICAL weewx.engine: **** retry_wait=self.retry_wait)
Jul 26 11:28:16 DietPi weewx[849] CRITICAL weewx.engine: **** File "/home/weewx/bin/user/gw1000.py", line 1103, in init
Jul 26 11:28:16 DietPi weewx[849] CRITICAL weewx.engine: **** retry_wait=retry_wait)
Jul 26 11:28:16 DietPi weewx[849] CRITICAL weewx.engine: **** File "/home/weewx/bin/user/gw1000.py", line 1395, in init
Jul 26 11:28:16 DietPi weewx[849] CRITICAL weewx.engine: **** ip_address = disc_ip.encode() if ip_address is None else ip_address.encode()
Jul 26 11:28:16 DietPi weewx[849] CRITICAL weewx.engine: **** UnboundLocalError: local variable 'disc_ip' referenced before assignment
Jul 26 11:28:16 DietPi weewx[849] CRITICAL main: Unable to load driver: local variable 'disc_ip' referenced before assignment
Jul 26 11:28:16 DietPi weewx[849] CRITICAL main: **** Exiting...
Jul 26 11:29:11 DietPi org.kde.KScreen[1331]: kscreen.xrandr: Connected output 64 to CRTC 63
Jul 26 11:29:11 DietPi org.kde.KScreen[1331]: kscreen.xcb.helper: Detected XRandR 1.5
Jul 26 11:29:11 DietPi org.kde.KScreen[1331]: kscreen.xcb.helper: Event Base: 89
Jul 26 11:29:11 DietPi org.kde.KScreen[1331]: kscreen.xcb.helper: Event Error: 147
Jul 26 11:29:12 DietPi org.a11y.atspi.Registry[1508]: SpiRegistry daemon is running with well-known name - org.a11y.atspi.Registry
Jul 26 11:29:12 DietPi org.kde.KScreen[1331]: kscreen.xrandr: XRandR::setConfig
Jul 26 11:29:12 DietPi org.kde.KScreen[1331]: kscreen.xrandr: Requested screen size is QSize(1280, 960)
Jul 26 11:29:12 DietPi org.kde.KScreen[1331]: kscreen.xrandr: Needed CRTCs: 1
Jul 26 11:29:12 DietPi org.kde.KScreen[1331]: kscreen.xrandr: Actions to perform:
Jul 26 11:29:12 DietPi org.kde.KScreen[1331]: kscreen.xrandr: #011Primary Output: false
Jul 26 11:29:12 DietPi org.kde.KScreen[1331]: kscreen.xrandr: #011Change Screen Size: true
Jul 26 11:29:12 DietPi org.kde.KScreen[1331]: kscreen.xrandr: #11#011Old: QSize(1024, 768)
Jul 26 11:29:12 DietPi org.kde.KScreen[1331]: kscreen.xrandr: #11#011Intermediate: QSize(1280, 960)
Jul 26 11:29:12 DietPi org.kde.KScreen[1331]: kscreen.xrandr: #11#011New: QSize(1280, 960)
Jul 26 11:29:12 DietPi org.kde.KScreen[1331]: kscreen.xrandr: #011Disable outputs: false
Jul 26 11:29:12 DietPi org.kde.KScreen[1331]: kscreen.xrandr: #011Change outputs: true
Jul 26 11:29:12 DietPi org.kde.KScreen[1331]: kscreen.xrandr: #11#011 (64)
Jul 26 11:29:12 DietPi org.kde.KScreen[1331]: kscreen.xrandr: #011Enable outputs: false
Jul 26 11:29:12 DietPi org.kde.KScreen[1331]: kscreen.xrandr: RRSetScreenSize
Jul 26 11:29:12 DietPi org.kde.KScreen[1331]: kscreen.xrandr: #011DPI: 96.0946
Jul 26 11:29:12 DietPi org.kde.KScreen[1331]: kscreen.xrandr: #011Size: QSize(1280, 960)
Jul 26 11:29:12 DietPi org.kde.KScreen[1331]: kscreen.xrandr: #011SizeMM: QSize(338, 253)
Jul 26 11:29:12 DietPi org.kde.KScreen[1331]: kscreen.xrandr: RRSetCrtcConfig (change output)
Jul 26 11:29:12 DietPi org.kde.KScreen[1331]: kscreen.xrandr: #011Output: 64 ( "VGA-1" )
Jul 26 11:29:12 DietPi org.kde.KScreen[1331]: kscreen.xrandr: #011CRTC: 63
Jul 26 11:29:12 DietPi org.kde.KScreen[1331]: kscreen.xrandr: #011Pos: QPoint(0,0)
Jul 26 11:29:12 DietPi org.kde.KScreen[1331]: kscreen.xrandr: #011Mode: 68 KScreen::Mode(Id: "68" , Size: QSize(1280, 960) )
Jul 26 11:29:12 DietPi org.kde.KScreen[1331]: kscreen.xrandr: #011Rotation: 1
Jul 26 11:29:12 DietPi org.kde.KScreen[1331]: kscreen.xrandr: #011Result: 0
Jul 26 11:29:12 DietPi org.kde.KScreen[1331]: kscreen.xrandr: XRandROutput 64 update
Jul 26 11:29:12 DietPi org.kde.KScreen[1331]: kscreen.xrandr: #011m_connected: 0
Jul 26 11:29:12 DietPi org.kde.KScreen[1331]: kscreen.xrandr: #011m_crtc XRandRCrtc(0x564dd65ca610)
Jul 26 11:29:12 DietPi org.kde.KScreen[1331]: kscreen.xrandr: #011CRTC: 63
Jul 26 11:29:12 DietPi org.kde.KScreen[1331]: kscreen.xrandr: #011MODE: 68
Jul 26 11:29:12 DietPi org.kde.KScreen[1331]: kscreen.xrandr: #011Connection: 0
Jul 26 11:29:12 DietPi org.kde.KScreen[1331]: kscreen.xrandr: #011Primary: true
Jul 26 11:29:12 DietPi org.kde.KScreen[1331]: kscreen.xrandr: XRandR::setConfig done!
Jul 26 11:29:12 DietPi org.kde.KScreen[1331]: kscreen.xcb.helper: RRScreenChangeNotify
Jul 26 11:29:12 DietPi org.kde.KScreen[1331]: kscreen.xcb.helper: #011Window: 14680068
Jul 26 11:29:12 DietPi org.kde.KScreen[1331]: kscreen.xcb.helper: #011Root: 620
Jul 26 11:29:12 DietPi org.kde.KScreen[1331]: kscreen.xcb.helper: #011Rotation: "Rotate_0"
Jul 26 11:29:12 DietPi org.kde.KScreen[1331]: kscreen.xcb.helper: #011Size ID: 2
Jul 26 11:29:12 DietPi org.kde.KScreen[1331]: kscreen.xcb.helper: #011Size: 1280 960
Jul 26 11:29:12 DietPi org.kde.KScreen[1331]: kscreen.xcb.helper: #011SizeMM: 338 253
Jul 26 11:29:12 DietPi org.kde.KScreen[1331]: kscreen.xcb.helper: RRNotify_CrtcChange
Jul 26 11:29:12 DietPi org.kde.KScreen[1331]: kscreen.xcb.helper: #011CRTC: 63
Jul 26 11:29:12 DietPi org.kde.KScreen[1331]: kscreen.xcb.helper: #011Mode: 68
Jul 26 11:29:12 DietPi org.kde.KScreen[1331]: kscreen.xcb.helper: #011Rotation: "Rotate_0"
Jul 26 11:29:12 DietPi org.kde.KScreen[1331]: kscreen.xcb.helper: #011Geometry: 0 0 1280 960
Jul 26 11:29:12 DietPi org.kde.KScreen[1331]: kscreen.xcb.helper: RRScreenChangeNotify
Jul 26 11:29:12 DietPi org.kde.KScreen[1331]: kscreen.xcb.helper: #011Window: 14680068
Jul 26 11:29:12 DietPi org.kde.KScreen[1331]: kscreen.xcb.helper: #011Root: 620
Jul 26 11:29:12 DietPi org.kde.KScreen[1331]: kscreen.xcb.helper: #011Rotation: "Rotate_0"
Jul 26 11:29:12 DietPi org.kde.KScreen[1331]: kscreen.xcb.helper: #011Size ID: 2
Jul 26 11:29:12 DietPi org.kde.KScreen[1331]: kscreen.xcb.helper: #011Size: 1280 960
Jul 26 11:29:12 DietPi org.kde.KScreen[1331]: kscreen.xcb.helper: #011SizeMM: 338 253
Jul 26 11:29:12 DietPi org.kde.KScreen[1331]: kscreen.xcb.helper: RRNotify_CrtcChange
Jul 26 11:29:12 DietPi org.kde.KScreen[1331]: kscreen.xcb.helper: #011CRTC: 63
Jul 26 11:29:12 DietPi org.kde.KScreen[1331]: kscreen.xcb.helper: #011Mode: 68
Jul 26 11:29:12 DietPi org.kde.KScreen[1331]: kscreen.xcb.helper: #011Rotation: "Rotate_0"
Jul 26 11:29:12 DietPi org.kde.KScreen[1331]: kscreen.xcb.helper: #011Geometry: 0 0 1280 960
Jul 26 11:29:12 DietPi org.kde.KScreen[1331]: kscreen.xrandr: Emitting configChanged()
Jul 26 11:29:21 DietPi org.gtk.vfs.AfcVolumeMonitor[1331]: Volume monitor alive
Jul 26 11:31:26 DietPi org.a11y.atspi.Registry[2803]: SpiRegistry daemon is running with well-known name - org.a11y.atspi.Registry
Jul 26 11:31:27 DietPi org.kde.KScreen[2752]: kscreen.xrandr: Connected output 60 to CRTC 59
Jul 26 11:31:27 DietPi org.kde.KScreen[2752]: kscreen.xcb.helper: Detected XRandR 1.5
Jul 26 11:31:27 DietPi org.kde.KScreen[2752]: kscreen.xcb.helper: Event Base: 92
Jul 26 11:31:27 DietPi org.kde.KScreen[2752]: kscreen.xcb.helper: Event Error: 147
Jul 26 11:31:27 DietPi org.kde.KScreen[2752]: kscreen.xrandr: XRandR::setConfig
Jul 26 11:31:27 DietPi org.kde.KScreen[2752]: kscreen.xrandr: Requested screen size is QSize(1024, 768)
Jul 26 11:31:27 DietPi org.kde.KScreen[2752]: kscreen.xrandr: Needed CRTCs: 1
Jul 26 11:31:27 DietPi org.kde.KScreen[2752]: kscreen.xrandr: Actions to perform:
Jul 26 11:31:27 DietPi org.kde.KScreen[2752]: kscreen.xrandr: #011Primary Output: false
Jul 26 11:31:27 DietPi org.kde.KScreen[2752]: kscreen.xrandr: #011Change Screen Size: false
Jul 26 11:31:27 DietPi org.kde.KScreen[2752]: kscreen.xrandr: #011Disable outputs: false
Jul 26 11:31:27 DietPi org.kde.KScreen[2752]: kscreen.xrandr: #011Change outputs: false
Jul 26 11:31:27 DietPi org.kde.KScreen[2752]: kscreen.xrandr: #011Enable outputs: false
Jul 26 11:31:27 DietPi org.kde.KScreen[2752]: kscreen.xrandr: XRandR::setConfig done!
Jul 26 11:31:27 DietPi org.gtk.vfs.AfcVolumeMonitor[2752]: Volume monitor alive
Jul 26 11:34:45 DietPi weewx[4045] DEBUG gw1000: main: Sending broadcast packet 'FF FF 12 03 15' to '255.255.255.255:46000'
Jul 26 11:34:45 DietPi weewx[4045] DEBUG gw1000: main: Received broadcast response 'FF FF 12 00 21 A4 CF 12 B4 FB 23 C0 A8 0C BD AF C8 10 47 57 31 30 30 30 41 2D 57 49 46 49 46 42 32 33 0A'
Jul 26 11:34:47 DietPi weewx[4045] INFO gw1000: main: GW1000 was found at 192.168.12.189:45000
Jul 26 11:34:47 DietPi weewx[4045] DEBUG gw1000: main: Sending packet 'FF FF 27 03 2A' to '192.168.12.189:45000'
Jul 26 11:34:47 DietPi weewx[4045] DEBUG gw1000: main: Received response 'FF FF 27 00 5D 01 01 0C 06 34 08 27 3B 09 27 3B 02 00 B8 07 5E 0A 01 30 0B 00 09 0C 00 0A 15 00 04 04 16 16 02 2E 17 02 4C 0F 00 00 00 03 FF FF 00 FF FF FF FF FF FF FF FF 62 00 00 00 00 61 FF FF FF FF 60 FF 19 00 2E 0E 00 00 10 00 12 11 00 12 12 00 00 03 58 13 00 00 07 0D 0D 00 0A 6E'
Jul 26 11:34:47 DietPi weewx[4045] DEBUG gw1000: main: sensor data is '01 01 0C 06 34 08 27 3B 09 27 3B 02 00 B8 07 5E 0A 01 30 0B 00 09 0C 00 0A 15 00 04 04 16 16 02 2E 17 02 4C 0F 00 00 00 03 FF FF 00 FF FF FF FF FF FF FF FF 62 00 00 00 00 61 FF FF FF FF 60 FF 19 00 2E 0E 00 00 10 00 12 11 00 12 12 00 00 03 58 13 00 00 07 0D 0D 00 0A'
Jul 26 11:34:47 DietPi weewx[4045] DEBUG gw1000: main: Parsed data: {'wh31_ch6_batt': 0, 'wh41_ch3_batt': None, 'rainyear': 180.5, 'outtemp': 18.4, 'wh51_ch2_batt': 0, 'light': 26319.0, 'wh51_ch14_batt': 0, 'rainevent': 1.0, 'wh51_ch5_batt': 0, 'wh24_batt': 0, 'relbarometer': 1004.3, 'lightningdettime': None, 'wh51_ch7_batt': 0, 'wh31_ch2_batt': 0, 'wh51_ch4_batt': 0, 'wh51_ch10_batt': 0, 'ws80_batt': 5.1000000000000005, 'wh41_ch1_batt': None, 'wh55_ch4_batt': None, 'wh31_ch8_batt': 0, 'windspeed': 0.9, 'absbarometer': 1004.3, 'uv': 55.8, 'wh51_ch13_batt': 0, 'datetime': 1595756087, 'wh57_batt': 3, 'lightningdist': None, 'wh55_ch2_batt': None, 'wh26_batt': 0, 'daymaxwind': 4.6, 'wh51_ch11_batt': 0, 'winddir': 30.4, 'wh31_ch7_batt': 0, 'outhumid': 94, 'wh51_ch3_batt': 0, 'lightningcount': 0, 'wh41_ch4_batt': None, 'ws68_batt': 5.1000000000000005, 'wh51_ch9_batt': 0, 'wh40_batt': 0, 'intemp': 26.8, 'wh55_ch1_batt': None, 'uvi': 2, 'wh41_ch2_batt': None, 'inhumid': 52, 'wh51_ch8_batt': 0, 'rainday': 1.8, 'wh51_ch1_batt': 0, 'wh31_ch4_batt': 0, 'wh51_ch15_batt': 0, 'rainrate': 0.0, 'wh31_ch1_batt': 0, 'rainmonth': 85.6, 'wh25_batt': 0, 'wh31_ch3_batt': 0, 'wh51_ch6_batt': 0, 'gustspeed': 1.0, 'wh51_ch16_batt': 0, 'wh55_ch3_batt': None, 'rainweek': 1.8, 'wh31_ch5_batt': 0, 'wh51_ch12_batt': 0}
Jul 26 11:34:47 DietPi weewx[4045] DEBUG gw1000: main: Sending packet 'FF FF 3A 03 3D' to '192.168.12.189:45000'
Jul 26 11:34:47 DietPi weewx[4045] DEBUG gw1000: main: Received response 'FF FF 3A D5 00 00 00 00 79 00 04 01 FF FF FF FF FF 00 02 FF FF FF FF FF 00 03 FF FF FF FF 00 00 05 FF FF FF FF 00 00 06 FF FF FF FF 00 00 07 FF FF FF FF 00 00 08 FF FF FF FF 00 00 09 FF FF FF FF 00 00 0A FF FF FF FF 00 00 0B FF FF FF FF 00 00 0C FF FF FF FF 00 00 0D FF FF FF FF 00 00 0E FF FF FF FF 00 00 0F FF FF FF FF 00 00 10 FF FF FF FF 00 00 11 FF FF FF FF 00 00 12 FF FF FF FF 00 00 13 FF FF FF FF 00 00 14 FF FF FF FF 00 00 15 FF FF FF FF 00 00 16 FF FF FF FF 0F 00 17 FF FF FF FF 0F 00 18 FF FF FF FF 0F 00 19 FF FF FF FF 0F 00 1A 00 00 D0 3E 03 04 1B FF FF FF FF FF 00 1C FF FF FF FF FF 00 1D FF FF FF FF FF 00 1E FF FF FF FF FF 00 34'
Jul 26 11:34:47 DietPi weewx[4045] DEBUG gw1000: main: Filtered parsed data: {'windspeed': 0.9, 'outtemp': 18.4, 'gustspeed': 1.0, 'light': 26319.0, 'rainevent': 1.0, 'inhumid': 52, 'relbarometer': 1004.3, 'lightningdettime': None, 'absbarometer': 1004.3, 'rainyear': 180.5, 'uv': 55.8, 'datetime': 1595756087, 'wh57_batt': 3, 'lightningdist': None, 'daymaxwind': 4.6, 'winddir': 30.4, 'outhumid': 94, 'lightningcount': 0, 'intemp': 26.8, 'uvi': 2, 'rainrate': 0.0, 'rainday': 1.8, 'rainmonth': 85.6, 'rainweek': 1.8}
Jul 26 11:34:55 DietPi weewx[4240] DEBUG gw1000: main: Sending broadcast packet 'FF FF 12 03 15' to '255.255.255.255:46000'
Jul 26 11:34:55 DietPi weewx[4240] DEBUG gw1000: main: Received broadcast response 'FF FF 12 00 21 A4 CF 12 B4 FB 23 C0 A8 0C BD AF C8 10 47 57 31 30 30 30 41 2D 57 49 46 49 46 42 32 33 0A'
Jul 26 11:34:57 DietPi weewx[4240] INFO gw1000: main: GW1000 was found at 192.168.12.189:45000
Jul 26 11:34:57 DietPi weewx[4240] DEBUG gw1000: main: Sending packet 'FF FF 27 03 2A' to '192.168.12.189:45000'
Jul 26 11:34:57 DietPi weewx[4240] DEBUG gw1000: main: Received response 'FF FF 27 00 5D 01 01 0C 06 34 08 27 3B 09 27 3B 02 00 B8 07 5E 0A 01 30 0B 00 09 0C 00 0A 15 00 04 04 16 16 02 2E 17 02 4C 0F 00 00 00 03 FF FF 00 FF FF FF FF FF FF FF FF 62 00 00 00 00 61 FF FF FF FF 60 FF 19 00 2E 0E 00 00 10 00 12 11 00 12 12 00 00 03 58 13 00 00 07 0D 0D 00 0A 6E'
Jul 26 11:34:57 DietPi weewx[4240] DEBUG gw1000: main: sensor data is '01 01 0C 06 34 08 27 3B 09 27 3B 02 00 B8 07 5E 0A 01 30 0B 00 09 0C 00 0A 15 00 04 04 16 16 02 2E 17 02 4C 0F 00 00 00 03 FF FF 00 FF FF FF FF FF FF FF FF 62 00 00 00 00 61 FF FF FF FF 60 FF 19 00 2E 0E 00 00 10 00 12 11 00 12 12 00 00 03 58 13 00 00 07 0D 0D 00 0A'
Jul 26 11:34:57 DietPi weewx[4240] DEBUG gw1000: main: Parsed data: {'absbarometer': 1004.3, 'ws80_batt': 5.1000000000000005, 'wh51_ch9_batt': 0, 'wh51_ch14_batt': 0, 'wh31_ch5_batt': 0, 'rainrate': 0.0, 'wh25_batt': 0, 'winddir': 30.4, 'rainday': 1.8, 'wh51_ch2_batt': 0, 'wh55_ch4_batt': None, 'uvi': 2, 'wh31_ch3_batt': 0, 'lightningcount': 0, 'rainmonth': 85.6, 'wh51_ch5_batt': 0, 'wh31_ch4_batt': 0, 'wh57_batt': 3, 'wh24_batt': 0, 'wh51_ch10_batt': 0, 'rainweek': 1.8, 'outtemp': 18.4, 'wh51_ch7_batt': 0, 'gustspeed': 1.0, 'wh31_ch2_batt': 0, 'wh41_ch3_batt': None, 'lightningdist': None, 'wh51_ch6_batt': 0, 'wh55_ch2_batt': None, 'relbarometer': 1004.3, 'windspeed': 0.9, 'uv': 55.8, 'light': 26319.0, 'wh51_ch16_batt': 0, 'outhumid': 94, 'wh51_ch1_batt': 0, 'datetime': 1595756097, 'wh26_batt': 0, 'intemp': 26.8, 'wh31_ch7_batt': 0, 'wh51_ch12_batt': 0, 'wh51_ch13_batt': 0, 'wh31_ch1_batt': 0, 'wh31_ch6_batt': 0, 'wh51_ch15_batt': 0, 'inhumid': 52, 'wh40_batt': 0, 'wh31_ch8_batt': 0, 'wh41_ch4_batt': None, 'rainyear': 180.5, 'wh51_ch3_batt': 0, 'lightningdettime': None, 'wh51_ch8_batt': 0, 'wh55_ch3_batt': None, 'wh41_ch1_batt': None, 'wh51_ch11_batt': 0, 'ws68_batt': 5.1000000000000005, 'wh55_ch1_batt': None, 'rainevent': 1.0, 'wh41_ch2_batt': None, 'wh51_ch4_batt': 0, 'daymaxwind': 4.6}
Jul 26 11:34:57 DietPi weewx[4240] DEBUG gw1000: main: Sending packet 'FF FF 3A 03 3D' to '192.168.12.189:45000'
Jul 26 11:34:57 DietPi weewx[4240] DEBUG gw1000: main: Received response 'FF FF 3A D5 00 00 00 00 79 00 04 01 FF FF FF FF FF 00 02 FF FF FF FF FF 00 03 FF FF FF FF 00 00 05 FF FF FF FF 00 00 06 FF FF FF FF 00 00 07 FF FF FF FF 00 00 08 FF FF FF FF 00 00 09 FF FF FF FF 00 00 0A FF FF FF FF 00 00 0B FF FF FF FF 00 00 0C FF FF FF FF 00 00 0D FF FF FF FF 00 00 0E FF FF FF FF 00 00 0F FF FF FF FF 00 00 10 FF FF FF FF 00 00 11 FF FF FF FF 00 00 12 FF FF FF FF 00 00 13 FF FF FF FF 00 00 14 FF FF FF FF 00 00 15 FF FF FF FF 00 00 16 FF FF FF FF 0F 00 17 FF FF FF FF 0F 00 18 FF FF FF FF 0F 00 19 FF FF FF FF 0F 00 1A 00 00 D0 3E 03 04 1B FF FF FF FF FF 00 1C FF FF FF FF FF 00 1D FF FF FF FF FF 00 1E FF FF FF FF FF 00 34'
Jul 26 11:34:57 DietPi weewx[4240] DEBUG gw1000: main: Filtered parsed data: {'absbarometer': 1004.3, 'uv': 55.8, 'inhumid': 52, 'winddir': 30.4, 'rainday': 1.8, 'rainrate': 0.0, 'lightningcount': 0, 'rainmonth': 85.6, 'rainweek': 1.8, 'wh57_batt': 3, 'outtemp': 18.4, 'gustspeed': 1.0, 'relbarometer': 1004.3, 'windspeed': 0.9, 'light': 26319.0, 'outhumid': 94, 'intemp': 26.8, 'daymaxwind': 4.6, 'datetime': 1595756097, 'uvi': 2, 'rainyear': 180.5, 'lightningdettime': None, 'lightningdist': None, 'rainevent': 1.0}
Jul 26 11:42:01 DietPi weewx[7355] INFO main: Initializing weewx version 4.1.1
Jul 26 11:42:01 DietPi weewx[7355] INFO main: Using Python 3.5.3 (default, Jul 9 2020, 13:00:10) #12[GCC 6.3.0 20170516]
Jul 26 11:42:01 DietPi weewx[7355] INFO main: Platform Linux-4.9.0-12-amd64-x86_64-with-debian-9.13
Jul 26 11:42:01 DietPi weewx[7355] INFO main: Locale is 'de_DE.UTF-8'
Jul 26 11:42:01 DietPi weewx[7355] INFO main: PID file is /var/run/weewx.pid
Jul 26 11:42:01 DietPi weewx[7359] INFO main: Using configuration file /home/weewx/weewx.conf
Jul 26 11:42:01 DietPi weewx[7359] INFO main: Debug is 0
Jul 26 11:42:01 DietPi weewx[7359] INFO weewx.engine: Loading station type GW1000 (user.gw1000)
Jul 26 11:42:03 DietPi weewx[7359] INFO gw1000: user.gw1000: GW1000 was found at 192.168.12.189:45000
Jul 26 11:42:03 DietPi weewx[7359] INFO gw1000: user.gw1000: field map is {'24havpm251': '24havpm251', '24havpm252': '24havpm252', '24havpm253': '24havpm253', '24havpm254': '24havpm254', 'UV': 'uvi', 'barometer': 'relbarometer', 'dateTime': 'datetime', 'daymaxwind': 'daymaxwind', 'dewpoint': 'dewpoint', 'extraHumid1': 'humid1', 'extraHumid2': 'humid2', 'extraHumid3': 'humid3', 'extraHumid4': 'humid4', 'extraHumid5': 'humid5', 'extraHumid6': 'humid6', 'extraHumid7': 'humid7', 'extraHumid8': 'humid8', 'extraTemp1': 'temp1', 'extraTemp2': 'temp2', 'extraTemp3': 'temp3', 'extraTemp4': 'temp4', 'extraTemp5': 'temp5', 'extraTemp6': 'temp6', 'extraTemp7': 'temp7', 'extraTemp8': 'temp8', 'heatindex': 'heatindex', 'inHumidity': 'inhumid', 'inTemp': 'intemp', 'leak1': 'leak1', 'leak2': 'leak2', 'leak3': 'leak3', 'leak4': 'leak4', 'lightning_distance': 'lightningdist', 'lightning_last_det_time': 'lightningdettime', 'lightning_strike_count': 'lightning_strike_count', 'luminosity': 'light', 'outHumidity': 'outhumid', 'outTemp': 'outtemp', 'pm2_5': 'pm251', 'pm2_52': 'pm252', 'pm2_53': 'pm253', 'pm2_54': 'pm254', 'pressure': 'absbarometer', 'rainRate': 'rainrate', 'rainday': 'rainday', 'rainevent': 'rainevent', 'rainhour': 'rainhour', 'rainmonth': 'rainmonth', 'raintotals': 'raintotals', 'rainweek': 'rainweek', 'rainyear': 'rainyear', 'soilMoist1': 'soilmoist1', 'soilMoist2': 'soilmoist2', 'soilMoist3': 'soilmoist3', 'soilMoist4': 'soilmoist4', 'soilMoist5': 'soilmoist5', 'soilMoist6': 'soilmoist6', 'soilMoist7': 'soilmoist7', 'soilMoist8': 'soilmoist8', 'soilMoist9': 'soilmoist9', 'soilMoist10': 'soilmoist10', 'soilMoist11': 'soilmoist11', 'soilMoist12': 'soilmoist12', 'soilMoist13': 'soilmoist13', 'soilMoist14': 'soilmoist14', 'soilMoist15': 'soilmoist15', 'soilMoist16': 'soilmoist16', 'soilTemp1': 'soiltemp1', 'soilTemp2': 'soiltemp2', 'soilTemp3': 'soiltemp3', 'soilTemp4': 'soiltemp4', 'soilTemp5': 'soiltemp5', 'soilTemp6': 'soiltemp6', 'soilTemp7': 'soiltemp7', 'soilTemp8': 'soiltemp8', 'soilTemp9': 'soiltemp9', 'soilTemp10': 'soiltemp10', 'soilTemp11': 'soiltemp11', 'soilTemp12': 'soiltemp12', 'soilTemp13': 'soiltemp13', 'soilTemp14': 'soiltemp14', 'soilTemp15': 'soiltemp15', 'soilTemp16': 'soiltemp16', 'uvRadiation': 'uv', 'windDir': 'winddir', 'windGust': 'gustspeed', 'windSpeed': 'windspeed', 'windchill': 'windchill'}
Jul 26 11:42:03 DietPi weewx[7359] INFO gw1000: user.gw1000: driver version is 0.1.0b5
Jul 26 11:42:03 DietPi weewx[7359] INFO gw1000: user.gw1000: GW1000 IP address not specified, attempting to discover GW1000...
Jul 26 11:42:03 DietPi weewx[7359] INFO gw1000: user.gw1000: GW1000 address is 192.168.12.189:45000
Jul 26 11:42:03 DietPi weewx[7359] INFO gw1000: user.gw1000: poll interval is 10 seconds
Jul 26 11:42:03 DietPi weewx[7359] INFO weewx.engine: StdConvert target unit is 0x1
Jul 26 11:42:03 DietPi weewx[7359] INFO weewx.wxservices: The following values will be calculated: pressure=prefer_hardware, altimeter=prefer_hardware, appTemp=prefer_hardware, barometer=prefer_hardware, beaufort=prefer_hardware, cloudbase=prefer_hardware, dewpoint=prefer_hardware, ET=prefer_hardware, heatindex=prefer_hardware, humidex=prefer_hardware, inDewpoint=prefer_hardware, maxSolarRad=prefer_hardware, rainRate=prefer_hardware, windchill=prefer_hardware, windrun=prefer_hardware
Jul 26 11:42:03 DietPi weewx[7359] INFO weewx.wxservices: The following algorithms will be used for calculations: altimeter=aaASOS, maxSolarRad=RS
Jul 26 11:42:03 DietPi weewx[7359] INFO weewx.engine: Archive will use data binding wx_binding
Jul 26 11:42:03 DietPi weewx[7359] INFO weewx.engine: Record generation will be attempted in 'software'
Jul 26 11:42:03 DietPi weewx[7359] INFO weewx.engine: Using archive interval of 300 seconds (software record generation)
Jul 26 11:42:03 DietPi weewx[7359] INFO weewx.restx: StationRegistry: Registration not requested.
Jul 26 11:42:03 DietPi weewx[7359] INFO weewx.restx: Wunderground: Posting not enabled.
Jul 26 11:42:03 DietPi weewx[7359] INFO weewx.restx: PWSWeather: Data for station FITZBEK will be posted
Jul 26 11:42:03 DietPi weewx[7359] INFO weewx.restx: CWOP: Posting not enabled.
Jul 26 11:42:03 DietPi weewx[7359] INFO weewx.restx: WOW: Posting not enabled.
Jul 26 11:42:03 DietPi weewx[7359] INFO weewx.restx: AWEKAS: Posting not enabled.
Jul 26 11:42:03 DietPi weewx[7359] INFO user.mqtt: service version is 0.23
Jul 26 11:42:03 DietPi weewx[7359] INFO user.mqtt: binding to ['archive', 'loop']
Jul 26 11:42:03 DietPi weewx[7359] INFO user.mqtt: topic is weather
Jul 26 11:42:03 DietPi weewx[7359] INFO user.mqtt: desired unit system is METRIC
Jul 26 11:42:03 DietPi weewx[7359] INFO user.mqtt: data will be uploaded to mqtt://192.168.12.127:9002/
Jul 26 11:42:03 DietPi weewx[7359] INFO main: Starting up weewx version 4.1.1
Jul 26 11:42:03 DietPi weewx[7359] INFO weewx.engine: Using binding 'wx_binding' to database 'weewx.sdb'
Jul 26 11:42:03 DietPi weewx[7359] INFO weewx.manager: Starting backfill of daily summaries
Jul 26 11:42:03 DietPi weewx[7359] INFO weewx.engine: Starting main packet loop.
Jul 26 11:42:03 DietPi weewx[7359] INFO gw1000: user.gw1000: using 'rainyear' for rain total
Jul 26 11:42:03 DietPi weewx[7359] INFO gw1000: user.gw1000: skipping rain measurement of 180.5: no last rain
Jul 26 11:42:03 DietPi weewx[7359] INFO gw1000: user.gw1000: skipping lightning count of 0: no last count

0.1.0b5 - Solar Radiation Missing

Froggit/Ecowitt GW1000, V1.6.1, WS57 Lightning Sensor, 7in1 Outdoor Sensor

Aaccording to WS-View, it should be currently 63,4 w/m², but nothing displayed in Weewx.

root@DietPi:~# PYTHONPATH=/home/weewx/bin python -m user.gw1000 --test-driverUsing configuration file /home/weewx/weewx.conf

Interrogating GW1000 at 192.168.12.189:45000

2020-07-26 09:02:26 CEST (1595746946): UV: 0, barometer: 1003.1, dateTime: 1595746946, daymaxwind: 2.6, inHumidity: 51, inTemp: 26.2, lightning_distance: None, lightning_last_det_time: None, lightning_strike_count: None, luminosity: 5704.0, outHumidity: 97, outTemp: 17.0, pressure: 1003.1, rainRate: 1.8, rainday: 0.6, rainevent: 0.3, rainmonth: 84.4, rainweek: 0.6, rainyear: 179.3, usUnits: 17, uvRadiation: 4.7, windDir: 9.8, windGust: 0.5, windSpeed: 0.4

Solar radiation and ET values not appearing in weewx

Hi,
I shifted to using this API driver over interceptor (because it didn't have all the sensors) and since then I get "N/A" in weewx for the Radiation value, same for the ET value(no idea what ET stands for, but I had a value appearing with the interceptor driver).

Not sure why since it looks like the driver is reading uvradiation just fine:
Here is the result of sudo PYTHONPATH=/usr/share/weewx python -m user.gw1000 --live-data --debug=3

GW1000 live sensor data (2021-07-19 10:48:35 EDT (1626706115)): absbarometer: 984.6hPa, daymaxwind: 7kph, gustspeed: 2kph, inhumid: 50%, intemp: 23.1�C, light: 26190lx, outhumid: 64%, outtemp: 27.6�C, rainday: 0.0mm, rainevent: 0.0mm, rainmonth: 0.0mm, rainrate: 0.0mm/h, rainweek: 0.0mm, rainyear: 0.0mm, relbarometer: 984.6hPa, uv: 54W/m�, uvi: 2.0, wh26_batt: 0, wh26_sig: 4, wh40_batt: 0, wh40_sig: 4, wh68_batt: 1.6V, wh68_sig: 4, winddir: 104�, windspeed: 1kph

and from sudo PYTHONPATH=/usr/share/weewx python -m user.gw1000 --test-driver

2021-07-19 10:55:23 EDT (1626706523): UV: 1, dateTime: 1626706523, dayRain: 0.0, daymaxwind: 2.0, inHumidity: 50, inTemp: 23.2, luminosity: 23710.0, monthRain: 0.0, outHumidity: 61, outTemp: 28.1, pressure: 984.5, rain: None, rainRate: 0.0, relbarometer: 984.5, stormRain: 0.0, usUnits: 17, uvradiation: 9.9, weekRain: 0.0, wh26_batt: 0, wh26_sig: 4, wh40_batt: 0, wh40_sig: 4, wh68_batt: 1.62, wh68_sig: 4, windDir: 104, windGust: 0.0, windSpeed: 0.0, yearRain: 0.0

Any idea?

Wind Direction Decimal Place

It looks like the decimal place is off on the Wind direction, my current wind direction on the App and on my console is 152 deg, the driver is reporting 15.2, resulting in Weewx seeing Around N constantly.

Dump of data is below:

GW1000 live sensor data: 24havpm251: 11.4, absbarometer: 872.5, datetime: 1595939970, daymaxwind: 5.1, gustspeed: 2.0, inhumid: 44, intemp: 22.7, light: 930.0, lightningcount: 0, lightningdettime: 1595896953, lightningdist: 34, outhumid: 63, outtemp: 20.3, pm251: 10.0, rainday: 0.0, rainevent: 0.0, rainmonth: 0.0, rainrate: 0.0, rainweek: 0.0, rainyear: 152.2, relbarometer: 1018.9, soilmoist1: 37, soilmoist2: 52, temp2: -18.3, uv: 1.0, uvi: 0, wh31_ch2_batt: 0, wh41_ch1_batt: 4, wh51_ch1_batt: 0, wh51_ch2_batt: 0, wh57_batt: 5, wh65_batt: 0, winddir: 15.2, windspeed: 1.5

CRITICAL error in syslog, data collecting/reporting stopped.

New install of weewx on Raspberry Pi. Was using ecowitt-client interceptor but switched to this today. Started up and seemed find however it appears to have crashed.

Devices:
gw1000
WH40
WS68
WH31

Started weewx at 15:52, and crashed at 18:36.

Start

Jul 23 17:52:43 raspberrypi systemd[1]: Starting LSB: weewx weather system...
Jul 23 17:52:44 raspberrypi weewx[17077] INFO main: Initializing weewx version 4.1.1
Jul 23 17:52:44 raspberrypi weewx[17077] INFO main: Using Python 3.7.3 (default, Dec 20 2019, 18:57:59) #12[GCC 8.3.0]
Jul 23 17:52:44 raspberrypi weewx[17077] INFO main: Platform Linux-5.4.51-v7+-armv7l-with-debian-10.4
Jul 23 17:52:44 raspberrypi weewx[17077] INFO main: Locale is 'en_US.UTF-8'
Jul 23 17:52:44 raspberrypi weewx[17077] INFO main: PID file is /var/run/weewx.pid
Jul 23 17:52:44 raspberrypi weewx[17082] INFO main: Using configuration file /home/weewx/weewx.conf
Jul 23 17:52:44 raspberrypi weewx[17082] INFO main: Debug is 0
Jul 23 17:52:44 raspberrypi weewx[17082] INFO weewx.engine: Loading station type GW1000 (user.gw1000)
Jul 23 17:52:44 raspberrypi weewx[17066]: Starting weewx weather system: weewx.
Jul 23 17:52:44 raspberrypi systemd[1]: Started LSB: weewx weather system.

Crash

Jul 23 18:35:58 raspberrypi weewx[17082] INFO weeutil.rsyncupload: rsync'd 23 files (171,099 bytes) in 1.64 seconds
Jul 23 18:36:54 raspberrypi weewx[17082] CRITICAL gw1000: user.gw1000: **** Traceback (most recent call last):
Jul 23 18:36:54 raspberrypi weewx[17082] CRITICAL gw1000: user.gw1000: **** File "/home/weewx/bin/user/gw1000.py", line 1294, i
n run
Jul 23 18:36:54 raspberrypi weewx[17082] CRITICAL gw1000: user.gw1000: **** self.client.collect_sensor_data()
Jul 23 18:36:54 raspberrypi weewx[17082] CRITICAL gw1000: user.gw1000: **** File "/home/weewx/bin/user/gw1000.py", line 1116, i
n collect_sensor_data
Jul 23 18:36:54 raspberrypi weewx[17082] CRITICAL gw1000: user.gw1000: **** filtered_data = self.get_live_sensor_data()
Jul 23 18:36:54 raspberrypi weewx[17082] CRITICAL gw1000: user.gw1000: **** File "/home/weewx/bin/user/gw1000.py", line 1147, i
n get_live_sensor_data
Jul 23 18:36:54 raspberrypi weewx[17082] CRITICAL gw1000: user.gw1000: **** filtered_data = self.filter_battery_data(parsed_d
ata)
Jul 23 18:36:54 raspberrypi weewx[17082] CRITICAL gw1000: user.gw1000: **** File "/home/weewx/bin/user/gw1000.py", line 1170, i
n filter_battery_data
Jul 23 18:36:54 raspberrypi weewx[17082] CRITICAL gw1000: user.gw1000: **** sensor_list = self.sensor_id_data
Jul 23 18:36:54 raspberrypi weewx[17082] CRITICAL gw1000: user.gw1000: **** File "/home/weewx/bin/user/gw1000.py", line 1213, i
n sensor_id_data
Jul 23 18:36:54 raspberrypi weewx[17082] CRITICAL gw1000: user.gw1000: **** sensor_id_response = self.station.get_sensor_id()
Jul 23 18:36:54 raspberrypi weewx[17082] CRITICAL gw1000: user.gw1000: **** File "/home/weewx/bin/user/gw1000.py", line 1475, i
n get_sensor_id
Jul 23 18:36:54 raspberrypi weewx[17082] CRITICAL gw1000: user.gw1000: **** return self.send_cmd_with_retries('CMD_READ_SENSO
R_ID')
Jul 23 18:36:54 raspberrypi weewx[17082] CRITICAL gw1000: user.gw1000: **** File "/home/weewx/bin/user/gw1000.py", line 1520, i
n send_cmd_with_retries
Jul 23 18:36:54 raspberrypi weewx[17082] CRITICAL gw1000: user.gw1000: **** self.check_response(response, self.commands[cmd])
Jul 23 18:36:54 raspberrypi weewx[17082] CRITICAL gw1000: user.gw1000: **** File "/home/weewx/bin/user/gw1000.py", line 1581, i
n check_response
Jul 23 18:36:54 raspberrypi weewx[17082] CRITICAL gw1000: user.gw1000: **** if six.indexbytes(response, 2) == six.byte2int(cm
d_code):
Jul 23 18:36:54 raspberrypi weewx[17082] CRITICAL gw1000: user.gw1000: **** IndexError: index out of range

Solar Radiation and UV Values Incorrect

I have CumulusMX installed on a separate system.
WeeWX 4.1.1 and b11 of this driver installed on another system.

Both the console and CumulusMX report the same values for Radiation and UV Index.
WeeWX is showing a far lesser value for both.

Console values- Radiation 750 W/m2 UV Index 7
WeeWX values- Radiation 159 W/m² UV Index 1.0

What else is needed to investigate?

WeeWX 4.5.1 update

I ran the update to WeeWX from 4.4.0 to 4.5.1 this evening and found my skin a bit munged afterwards. I think my mistake -- lesson learned -- was in not reverting to the Seasons skin for the update. I had borrowed and slightly changed the original sensors.inc file for a different skin. My original sensors.inc and the new one from Seasons are attached. After the update two changes were apparent

  1. The graphs now included a signal quality graph, but dropping to zero with daylight (although data is still received by both GW1000 and HP2551); is this expected?
  2. The display for the sensors now included some unwanted N/A displays, and of course reverting to the default doesn't work, and more than just the list of sensors is different.

sensors-old.txt
sensors-inc.txt

Even if I had included rather than copied the Seasons/templates/sensors.inc file I presume that the results would have been the same. Should the list of sensors be a separate include file?

I've commented out the sensors display card for now and will wait for yr advice about fixing and best way of avoiding this getting hit by future updates.

Battery Data Not Captured

I have installed b5 into my WeeWX 4.1.1 Python 3 instance.
Works well, but I have one question and one observation.

My question is, how to configure the polling interval in weewx.conf
I used that to run directly and it works well for my sensors reporting intervals.

My observation is that battery data is not captured.
Using Interceptor, these are my extensions to the sensor map:
device_type = fineoffset-bridge port = 8000 [[sensor_map_extensions]] windBatteryStatus = wh68_battery txBatteryStatus = wh26_battery supplyVoltage = wh40_battery

Happy to see this driver.

Rationalisation of soil temperature support

The GW1000 API documentation has long included support for 16 discrete soil temperature sensors under the CMD_GW1000_LIVEDATA API command. Despite no such sensor being publicly released, support for these sensors was and is included in the GW1000 driver. This support consisted of the ability to extract the relevant sensor data from the CMD_GW1000_LIVEDATA API command response and map to an appropriate WeeWX field (soilTempx).

A dedicated soil temperature sensor, the WN34S, has subsequently been released along with the WN34 and WN34L (Note, this sensor family is referred to as the WH34 in the API documentation and that nomenclature is currently used in the GW1000 driver). However, instead of using the previously allocated 16 soil temperature ‘addresses’ allocated in the API documentation the WN34S uses a separate address space. Furthermore, the WH34S shares eight ‘addresses’ with the WN34L meaning the GW1000 supports a maximum of eight total WN34L or WH34S of any mix. Also, the API provides no (known) way to discriminate between a WN34S and a WN34L.

Whilst the GW1000 driver includes support for the decoding of WN34S/L sensors the mapping is to WeeWX fields tempx (the WeeWX soilTempx fields are still currently mapped from the original 16 soil temperature ’addresses’). This can be overcome by the user creating a custom mapping to override the default mapping; but perhaps there is a better way, in particular a better default mapping.

Also, based on the API documentation the current driver uses the WH34 nomenclature not WN34. This is largely internal but it does manifest itself externally through in the default mapping. This discrepancy should be corrected, though it will have an impact on users already using WN34S/L sensors.

wh51 batt reading

I have two soil moisture sensors (WH51) on my GW1000 and I am getting different data from the New API driver than I was with interceptor. GW1000 reports a 0 while Interceptor seems to have the voltage of 1.4, I changed the batter and interceptor does see the voltage change. Is three some data I can provide to help find a way to fix this? Or is this an API issue on GW1000?

On the GW1000 Driver:
GW1000 live sensor data: **** wh51_ch1_batt: 0, wh51_ch2_batt: 0, ****

On Interceptor:
&soilbatt1=1.4&soilbatt2=1.7&

Possible incorrect sensor ID decode

WH31 on channel two is showing a sensor ID of d when using --sensors, actual sensor ID is d0. No other WH31 sensors appear incorrect and no others end with 0.

Driver version is 0.4.1.

Driver periodically fails to update weather data

I've been experiencing occasional periods of time where WeeWX isn't receiving data while using the gw1000 driver. I've tried to look for patterns, but nothing has jumped out at me yet. Sometimes restarting the weewx service or rebooting my pi resolves it, sometimes it doesn't. Then it all shows up again. The problem appears isolated to the outside temp, heat index, wind chill, humidity, and barometer readings. The other sensors continue to work and are never affected by this. I've attached some screenshots showing examples of problem. Also, here's ~15 minutes of data from the debug log file after first starting up (and experiencing the issue.) The only change I've made to the system (other than to update the driver to 0.3.1 and weewx to 4.5.1) is a couple firmware updates on the gw1000.

Jun  8 11:10:21 weather weewx[1808] DEBUG __main__: Initializing engine
Jun  8 11:10:23 weather weewx[1808] DEBUG user.gw1000: max tries is 3, retry wait time is 10 seconds
Jun  8 11:10:23 weather weewx[1808] DEBUG user.gw1000: broadcast address is 255.255.255.255:46000, socket timeout is 2 seconds
Jun  8 11:10:23 weather weewx[1808] DEBUG weewx.engine: Loading service weewx.engine.StdTimeSynch
Jun  8 11:10:23 weather weewx[1808] DEBUG weewx.engine: Finished loading service weewx.engine.StdTimeSynch
Jun  8 11:10:23 weather weewx[1808] DEBUG weewx.engine: Loading service weewx.engine.StdConvert
Jun  8 11:10:23 weather weewx[1808] DEBUG weewx.engine: Finished loading service weewx.engine.StdConvert
Jun  8 11:10:23 weather weewx[1808] DEBUG weewx.engine: Loading service weewx.engine.StdCalibrate
Jun  8 11:10:23 weather weewx[1808] DEBUG weewx.engine: Finished loading service weewx.engine.StdCalibrate
Jun  8 11:10:23 weather weewx[1808] DEBUG weewx.engine: Loading service weewx.engine.StdQC
Jun  8 11:10:23 weather weewx[1808] DEBUG weewx.engine: Finished loading service weewx.engine.StdQC
Jun  8 11:10:23 weather weewx[1808] DEBUG weewx.engine: Loading service weewx.wxservices.StdWXCalculate
Jun  8 11:10:23 weather weewx[1808] DEBUG user.gw1000: Next update in 20 seconds
Jun  8 11:10:23 weather weewx[1808] DEBUG weewx.manager: Daily summary version is 4.0
Jun  8 11:10:23 weather weewx[1808] DEBUG weewx.engine: Finished loading service weewx.wxservices.StdWXCalculate
Jun  8 11:10:23 weather weewx[1808] DEBUG weewx.engine: Loading service weewx.wxxtypes.StdWXXTypes
Jun  8 11:10:23 weather weewx[1808] DEBUG weewx.engine: Finished loading service weewx.wxxtypes.StdWXXTypes
Jun  8 11:10:23 weather weewx[1808] DEBUG weewx.engine: Loading service weewx.wxxtypes.StdPressureCooker
Jun  8 11:10:23 weather weewx[1808] DEBUG weewx.engine: Finished loading service weewx.wxxtypes.StdPressureCooker
Jun  8 11:10:23 weather weewx[1808] DEBUG weewx.engine: Loading service weewx.wxxtypes.StdRainRater
Jun  8 11:10:23 weather weewx[1808] DEBUG weewx.engine: Finished loading service weewx.wxxtypes.StdRainRater
Jun  8 11:10:23 weather weewx[1808] DEBUG weewx.engine: Loading service weewx.wxxtypes.StdDelta
Jun  8 11:10:23 weather weewx[1808] DEBUG weewx.engine: Finished loading service weewx.wxxtypes.StdDelta
Jun  8 11:10:23 weather weewx[1808] DEBUG weewx.engine: Loading service weewx.engine.StdArchive
Jun  8 11:10:23 weather weewx[1808] DEBUG weewx.engine: Use LOOP data in hi/low calculations: 1
Jun  8 11:10:23 weather weewx[1808] DEBUG weewx.engine: Finished loading service weewx.engine.StdArchive
Jun  8 11:10:23 weather weewx[1808] DEBUG weewx.engine: Loading service weewx.restx.StdStationRegistry
Jun  8 11:10:23 weather weewx[1808] DEBUG weewx.engine: Finished loading service weewx.restx.StdStationRegistry
Jun  8 11:10:23 weather weewx[1808] DEBUG weewx.engine: Loading service weewx.restx.StdWunderground
Jun  8 11:10:23 weather weewx[1808] DEBUG weewx.engine: Finished loading service weewx.restx.StdWunderground
Jun  8 11:10:23 weather weewx[1808] DEBUG weewx.engine: Loading service weewx.restx.StdPWSweather
Jun  8 11:10:23 weather weewx[1808] DEBUG weewx.engine: Finished loading service weewx.restx.StdPWSweather
Jun  8 11:10:23 weather weewx[1808] DEBUG weewx.engine: Loading service weewx.restx.StdCWOP
Jun  8 11:10:23 weather weewx[1808] DEBUG weewx.engine: Finished loading service weewx.restx.StdCWOP
Jun  8 11:10:23 weather weewx[1808] DEBUG weewx.engine: Loading service weewx.restx.StdWOW
Jun  8 11:10:23 weather weewx[1808] DEBUG weewx.engine: Finished loading service weewx.restx.StdWOW
Jun  8 11:10:23 weather weewx[1808] DEBUG weewx.engine: Loading service weewx.restx.StdAWEKAS
Jun  8 11:10:23 weather weewx[1808] DEBUG weewx.engine: Finished loading service weewx.restx.StdAWEKAS
Jun  8 11:10:23 weather weewx[1808] DEBUG weewx.engine: Loading service weewx.engine.StdPrint
Jun  8 11:10:23 weather weewx[1808] DEBUG weewx.engine: Finished loading service weewx.engine.StdPrint
Jun  8 11:10:23 weather weewx[1808] DEBUG weewx.engine: Loading service weewx.engine.StdReport
Jun  8 11:10:23 weather weewx[1808] DEBUG weewx.engine: Finished loading service weewx.engine.StdReport
Jun  8 11:10:23 weather weewx[1808] DEBUG weewx.engine: Station does not support reading the time
Jun  8 11:10:23 weather weewx[1808] DEBUG weewx.manager: Daily summary version is 4.0
Jun  8 11:10:23 weather weewx[1808] DEBUG weewx.manager: Daily summary version is 4.0
Jun  8 11:10:43 weather weewx[1808] DEBUG user.gw1000: Next update in 20 seconds
Jun  8 11:11:03 weather weewx[1808] DEBUG user.gw1000: Next update in 20 seconds
Jun  8 11:11:23 weather weewx[1808] DEBUG user.gw1000: Next update in 20 seconds
Jun  8 11:11:43 weather weewx[1808] DEBUG user.gw1000: Next update in 20 seconds
Jun  8 11:12:03 weather weewx[1808] DEBUG user.gw1000: Next update in 20 seconds
Jun  8 11:12:23 weather weewx[1808] DEBUG user.gw1000: Next update in 20 seconds
Jun  8 11:12:44 weather weewx[1808] DEBUG user.gw1000: Next update in 20 seconds
Jun  8 11:13:04 weather weewx[1808] DEBUG user.gw1000: Next update in 20 seconds
Jun  8 11:13:24 weather weewx[1808] DEBUG user.gw1000: Next update in 20 seconds
Jun  8 11:13:44 weather weewx[1808] DEBUG user.gw1000: Next update in 20 seconds
Jun  8 11:14:04 weather weewx[1808] DEBUG user.gw1000: Next update in 20 seconds
Jun  8 11:14:24 weather weewx[1808] DEBUG user.gw1000: Next update in 20 seconds
Jun  8 11:14:45 weather weewx[1808] DEBUG user.gw1000: Next update in 20 seconds
Jun  8 11:15:05 weather weewx[1808] DEBUG user.gw1000: Next update in 20 seconds
Jun  8 11:15:25 weather weewx[1808] DEBUG user.gw1000: Next update in 20 seconds
Jun  8 11:15:30 weather weewx[1808] DEBUG weewx.reportengine: Running reports for latest time in the database.
Jun  8 11:15:30 weather weewx[1808] DEBUG weewx.reportengine: Running report 'SeasonsReport'
Jun  8 11:15:30 weather weewx[1808] DEBUG weewx.reportengine: Found configuration file /etc/weewx/skins/Seasons/skin.conf for report 'SeasonsReport'
Jun  8 11:15:30 weather weewx[1808] DEBUG weewx.cheetahgenerator: Using search list ['weewx.cheetahgenerator.Almanac', 'weewx.cheetahgenerator.Station', 'weewx.cheetahgenerator.Current', 'weewx.cheetahgenerator.Stats', 'weewx.cheetahgenerator.UnitInfo', 'weewx.cheetahgenerator.Extras', 'weewx.cheetahgenerator.JSONHelpers']
Jun  8 11:15:30 weather weewx[1808] DEBUG weewx.manager: Daily summary version is 4.0
Jun  8 11:15:31 weather weewx[1808] DEBUG weewx.restx: CWOP: Connected to server cwop.aprs.net:14580
Jun  8 11:15:35 weather weewx[1808] DEBUG weewx.manager: Daily summary version is 4.0
Jun  8 11:15:36 weather weewx[1808] DEBUG weewx.reportengine: Running report 'SmartphoneReport'
Jun  8 11:15:36 weather weewx[1808] DEBUG weewx.reportengine: Found configuration file /etc/weewx/skins/Smartphone/skin.conf for report 'SmartphoneReport'
Jun  8 11:15:36 weather weewx[1808] DEBUG weewx.cheetahgenerator: Using search list ['weewx.cheetahgenerator.Almanac', 'weewx.cheetahgenerator.Station', 'weewx.cheetahgenerator.Current', 'weewx.cheetahgenerator.Stats', 'weewx.cheetahgenerator.UnitInfo', 'weewx.cheetahgenerator.Extras', 'weewx.cheetahgenerator.JSONHelpers']
Jun  8 11:15:36 weather weewx[1808] DEBUG weewx.manager: Daily summary version is 4.0
Jun  8 11:15:37 weather weewx[1808] DEBUG weewx.manager: Daily summary version is 4.0
Jun  8 11:15:37 weather weewx[1808] DEBUG PIL.PngImagePlugin: STREAM 'IHDR' 16 13
Jun  8 11:15:37 weather weewx[1808] DEBUG PIL.PngImagePlugin: STREAM 'IDAT' 41 1216
Jun  8 11:15:37 weather weewx[1808] DEBUG PIL.PngImagePlugin: STREAM 'IHDR' 16 13
Jun  8 11:15:37 weather weewx[1808] DEBUG PIL.PngImagePlugin: STREAM 'IDAT' 41 1216
Jun  8 11:15:37 weather weewx[1808] DEBUG weewx.reportengine: Running report 'MobileReport'
Jun  8 11:15:37 weather weewx[1808] DEBUG weewx.reportengine: Found configuration file /etc/weewx/skins/Mobile/skin.conf for report 'MobileReport'
Jun  8 11:15:37 weather weewx[1808] DEBUG weewx.cheetahgenerator: Using search list ['weewx.cheetahgenerator.Almanac', 'weewx.cheetahgenerator.Station', 'weewx.cheetahgenerator.Current', 'weewx.cheetahgenerator.Stats', 'weewx.cheetahgenerator.UnitInfo', 'weewx.cheetahgenerator.Extras', 'weewx.cheetahgenerator.JSONHelpers']
Jun  8 11:15:37 weather weewx[1808] DEBUG weewx.manager: Daily summary version is 4.0
Jun  8 11:15:37 weather weewx[1808] DEBUG weewx.manager: Daily summary version is 4.0
Jun  8 11:15:37 weather weewx[1808] DEBUG weewx.reportengine: Report 'StandardReport' not enabled. Skipping.
Jun  8 11:15:37 weather weewx[1808] DEBUG weewx.reportengine: Running report 'Belchertown'
Jun  8 11:15:37 weather weewx[1808] DEBUG weewx.reportengine: Found configuration file /etc/weewx/skins/Belchertown/skin.conf for report 'Belchertown'
Jun  8 11:15:37 weather weewx[1808] DEBUG weewx.cheetahgenerator: Using search list ['weewx.cheetahgenerator.Almanac', 'weewx.cheetahgenerator.Station', 'weewx.cheetahgenerator.Current', 'weewx.cheetahgenerator.Stats', 'weewx.cheetahgenerator.UnitInfo', 'weewx.cheetahgenerator.Extras', 'weewx.cheetahgenerator.JSONHelpers', u'user.belchertown.getData']
Jun  8 11:15:38 weather weewx[1808] DEBUG weewx.manager: Daily summary version is 4.0
Jun  8 11:15:45 weather weewx[1808] DEBUG user.gw1000: Next update in 20 seconds
Jun  8 11:15:46 weather weewx[1808] DEBUG weewx.manager: Daily summary version is 4.0
Jun  8 11:15:49 weather weewx[1808] DEBUG weewx.reportengine: Report 'FTP' not enabled. Skipping.
Jun  8 11:15:49 weather weewx[1808] DEBUG weewx.reportengine: Report 'RSYNC' not enabled. Skipping.
Jun  8 11:16:06 weather weewx[1808] DEBUG user.gw1000: Next update in 20 seconds
Jun  8 11:16:26 weather weewx[1808] DEBUG user.gw1000: Next update in 20 seconds
Jun  8 11:16:46 weather weewx[1808] DEBUG user.gw1000: Next update in 20 seconds
Jun  8 11:17:06 weather weewx[1808] DEBUG user.gw1000: Next update in 20 seconds
Jun  8 11:17:26 weather weewx[1808] DEBUG user.gw1000: Next update in 20 seconds
Jun  8 11:17:46 weather weewx[1808] DEBUG user.gw1000: Next update in 20 seconds
Jun  8 11:18:07 weather weewx[1808] DEBUG user.gw1000: Next update in 20 seconds
Jun  8 11:18:27 weather weewx[1808] DEBUG user.gw1000: Next update in 20 seconds
Jun  8 11:18:47 weather weewx[1808] DEBUG user.gw1000: Next update in 20 seconds
Jun  8 11:19:07 weather weewx[1808] DEBUG user.gw1000: Next update in 20 seconds
Jun  8 11:19:27 weather weewx[1808] DEBUG user.gw1000: Next update in 20 seconds
Jun  8 11:19:47 weather weewx[1808] DEBUG user.gw1000: Next update in 20 seconds
Jun  8 11:20:07 weather weewx[1808] DEBUG user.gw1000: Next update in 20 seconds
Jun  8 11:20:27 weather weewx[1808] DEBUG user.gw1000: Next update in 20 seconds
Jun  8 11:20:29 weather weewx[1808] DEBUG weewx.restx: CWOP: wait interval (300 < 600) has not passed for record 2021-06-08 11:20:00 CDT (1623169200)
Jun  8 11:20:29 weather weewx[1808] DEBUG weewx.restx: StationRegistry: wait interval (300 < 604800) has not passed for record 2021-06-08 11:20:00 CDT (1623169200)
Jun  8 11:20:29 weather weewx[1808] DEBUG weewx.reportengine: Running reports for latest time in the database.
Jun  8 11:20:29 weather weewx[1808] DEBUG weewx.reportengine: Running report 'SeasonsReport'
Jun  8 11:20:29 weather weewx[1808] DEBUG weewx.reportengine: Found configuration file /etc/weewx/skins/Seasons/skin.conf for report 'SeasonsReport'
Jun  8 11:20:29 weather weewx[1808] DEBUG weewx.cheetahgenerator: Using search list ['weewx.cheetahgenerator.Almanac', 'weewx.cheetahgenerator.Station', 'weewx.cheetahgenerator.Current', 'weewx.cheetahgenerator.Stats', 'weewx.cheetahgenerator.UnitInfo', 'weewx.cheetahgenerator.Extras', 'weewx.cheetahgenerator.JSONHelpers']
Jun  8 11:20:29 weather weewx[1808] DEBUG weewx.manager: Daily summary version is 4.0
Jun  8 11:20:31 weather weewx[1808] DEBUG weewx.manager: Daily summary version is 4.0
Jun  8 11:20:33 weather weewx[1808] DEBUG weewx.reportengine: Running report 'SmartphoneReport'
Jun  8 11:20:33 weather weewx[1808] DEBUG weewx.reportengine: Found configuration file /etc/weewx/skins/Smartphone/skin.conf for report 'SmartphoneReport'
Jun  8 11:20:33 weather weewx[1808] DEBUG weewx.cheetahgenerator: Using search list ['weewx.cheetahgenerator.Almanac', 'weewx.cheetahgenerator.Station', 'weewx.cheetahgenerator.Current', 'weewx.cheetahgenerator.Stats', 'weewx.cheetahgenerator.UnitInfo', 'weewx.cheetahgenerator.Extras', 'weewx.cheetahgenerator.JSONHelpers']
Jun  8 11:20:33 weather weewx[1808] DEBUG weewx.manager: Daily summary version is 4.0
Jun  8 11:20:33 weather weewx[1808] DEBUG weewx.manager: Daily summary version is 4.0
Jun  8 11:20:33 weather weewx[1808] DEBUG weewx.reportengine: Running report 'MobileReport'
Jun  8 11:20:33 weather weewx[1808] DEBUG weewx.reportengine: Found configuration file /etc/weewx/skins/Mobile/skin.conf for report 'MobileReport'
Jun  8 11:20:33 weather weewx[1808] DEBUG weewx.cheetahgenerator: Using search list ['weewx.cheetahgenerator.Almanac', 'weewx.cheetahgenerator.Station', 'weewx.cheetahgenerator.Current', 'weewx.cheetahgenerator.Stats', 'weewx.cheetahgenerator.UnitInfo', 'weewx.cheetahgenerator.Extras', 'weewx.cheetahgenerator.JSONHelpers']
Jun  8 11:20:33 weather weewx[1808] DEBUG weewx.manager: Daily summary version is 4.0
Jun  8 11:20:33 weather weewx[1808] DEBUG weewx.manager: Daily summary version is 4.0
Jun  8 11:20:34 weather weewx[1808] DEBUG weewx.reportengine: Report 'StandardReport' not enabled. Skipping.
Jun  8 11:20:34 weather weewx[1808] DEBUG weewx.reportengine: Running report 'Belchertown'
Jun  8 11:20:34 weather weewx[1808] DEBUG weewx.reportengine: Found configuration file /etc/weewx/skins/Belchertown/skin.conf for report 'Belchertown'
Jun  8 11:20:34 weather weewx[1808] DEBUG weewx.cheetahgenerator: Using search list ['weewx.cheetahgenerator.Almanac', 'weewx.cheetahgenerator.Station', 'weewx.cheetahgenerator.Current', 'weewx.cheetahgenerator.Stats', 'weewx.cheetahgenerator.UnitInfo', 'weewx.cheetahgenerator.Extras', 'weewx.cheetahgenerator.JSONHelpers', u'user.belchertown.getData']
Jun  8 11:20:34 weather weewx[1808] DEBUG weewx.manager: Daily summary version is 4.0
Jun  8 11:20:36 weather weewx[1808] DEBUG weewx.manager: Daily summary version is 4.0
Jun  8 11:20:38 weather weewx[1808] DEBUG weewx.reportengine: Report 'FTP' not enabled. Skipping.
Jun  8 11:20:38 weather weewx[1808] DEBUG weewx.reportengine: Report 'RSYNC' not enabled. Skipping.
Jun  8 11:20:47 weather weewx[1808] DEBUG user.gw1000: Next update in 20 seconds
Jun  8 11:21:08 weather weewx[1808] DEBUG user.gw1000: Next update in 20 seconds
Jun  8 11:21:28 weather weewx[1808] DEBUG user.gw1000: Next update in 20 seconds
Jun  8 11:21:48 weather weewx[1808] DEBUG user.gw1000: Next update in 20 seconds
Jun  8 11:22:08 weather weewx[1808] DEBUG user.gw1000: Next update in 20 seconds
Jun  8 11:22:28 weather weewx[1808] DEBUG user.gw1000: Next update in 20 seconds
Jun  8 11:22:48 weather weewx[1808] DEBUG user.gw1000: Next update in 20 seconds
Jun  8 11:23:08 weather weewx[1808] DEBUG user.gw1000: Next update in 20 seconds
Jun  8 11:23:29 weather weewx[1808] DEBUG user.gw1000: Next update in 20 seconds
Jun  8 11:23:49 weather weewx[1808] DEBUG user.gw1000: Next update in 20 seconds
Jun  8 11:24:09 weather weewx[1808] DEBUG user.gw1000: Next update in 20 seconds
Jun  8 11:24:29 weather weewx[1808] DEBUG user.gw1000: Next update in 20 seconds
Jun  8 11:24:49 weather weewx[1808] DEBUG user.gw1000: Next update in 20 seconds
Jun  8 11:25:09 weather weewx[1808] DEBUG user.gw1000: Next update in 20 seconds
Jun  8 11:25:29 weather weewx[1808] DEBUG user.gw1000: Next update in 20 seconds
Jun  8 11:25:32 weather weewx[1808] DEBUG weewx.restx: StationRegistry: wait interval (600 < 604800) has not passed for record 2021-06-08 11:25:00 CDT (1623169500)
Jun  8 11:25:32 weather weewx[1808] DEBUG weewx.reportengine: Running reports for latest time in the database.
Jun  8 11:25:32 weather weewx[1808] DEBUG weewx.reportengine: Running report 'SeasonsReport'
Jun  8 11:25:32 weather weewx[1808] DEBUG weewx.reportengine: Found configuration file /etc/weewx/skins/Seasons/skin.conf for report 'SeasonsReport'
Jun  8 11:25:32 weather weewx[1808] DEBUG weewx.cheetahgenerator: Using search list ['weewx.cheetahgenerator.Almanac', 'weewx.cheetahgenerator.Station', 'weewx.cheetahgenerator.Current', 'weewx.cheetahgenerator.Stats', 'weewx.cheetahgenerator.UnitInfo', 'weewx.cheetahgenerator.Extras', 'weewx.cheetahgenerator.JSONHelpers']
Jun  8 11:25:32 weather weewx[1808] DEBUG weewx.restx: CWOP: Connected to server cwop.aprs.net:14580
Jun  8 11:25:32 weather weewx[1808] DEBUG weewx.manager: Daily summary version is 4.0
Jun  8 11:25:34 weather weewx[1808] DEBUG weewx.manager: Daily summary version is 4.0
Jun  8 11:25:36 weather weewx[1808] DEBUG weewx.reportengine: Running report 'SmartphoneReport'
Jun  8 11:25:36 weather weewx[1808] DEBUG weewx.reportengine: Found configuration file /etc/weewx/skins/Smartphone/skin.conf for report 'SmartphoneReport'
Jun  8 11:25:36 weather weewx[1808] DEBUG weewx.cheetahgenerator: Using search list ['weewx.cheetahgenerator.Almanac', 'weewx.cheetahgenerator.Station', 'weewx.cheetahgenerator.Current', 'weewx.cheetahgenerator.Stats', 'weewx.cheetahgenerator.UnitInfo', 'weewx.cheetahgenerator.Extras', 'weewx.cheetahgenerator.JSONHelpers']
Jun  8 11:25:36 weather weewx[1808] DEBUG weewx.manager: Daily summary version is 4.0
Jun  8 11:25:36 weather weewx[1808] DEBUG weewx.manager: Daily summary version is 4.0
Jun  8 11:25:36 weather weewx[1808] DEBUG weewx.reportengine: Running report 'MobileReport'
Jun  8 11:25:36 weather weewx[1808] DEBUG weewx.reportengine: Found configuration file /etc/weewx/skins/Mobile/skin.conf for report 'MobileReport'
Jun  8 11:25:36 weather weewx[1808] DEBUG weewx.cheetahgenerator: Using search list ['weewx.cheetahgenerator.Almanac', 'weewx.cheetahgenerator.Station', 'weewx.cheetahgenerator.Current', 'weewx.cheetahgenerator.Stats', 'weewx.cheetahgenerator.UnitInfo', 'weewx.cheetahgenerator.Extras', 'weewx.cheetahgenerator.JSONHelpers']
Jun  8 11:25:36 weather weewx[1808] DEBUG weewx.manager: Daily summary version is 4.0
Jun  8 11:25:36 weather weewx[1808] DEBUG weewx.manager: Daily summary version is 4.0
Jun  8 11:25:36 weather weewx[1808] DEBUG weewx.reportengine: Report 'StandardReport' not enabled. Skipping.
Jun  8 11:25:36 weather weewx[1808] DEBUG weewx.reportengine: Running report 'Belchertown'
Jun  8 11:25:36 weather weewx[1808] DEBUG weewx.reportengine: Found configuration file /etc/weewx/skins/Belchertown/skin.conf for report 'Belchertown'
Jun  8 11:25:37 weather weewx[1808] DEBUG weewx.cheetahgenerator: Using search list ['weewx.cheetahgenerator.Almanac', 'weewx.cheetahgenerator.Station', 'weewx.cheetahgenerator.Current', 'weewx.cheetahgenerator.Stats', 'weewx.cheetahgenerator.UnitInfo', 'weewx.cheetahgenerator.Extras', 'weewx.cheetahgenerator.JSONHelpers', u'user.belchertown.getData']
Jun  8 11:25:37 weather weewx[1808] DEBUG weewx.manager: Daily summary version is 4.0
Jun  8 11:25:39 weather weewx[1808] DEBUG weewx.manager: Daily summary version is 4.0
Jun  8 11:25:41 weather weewx[1808] DEBUG weewx.reportengine: Report 'FTP' not enabled. Skipping.
Jun  8 11:25:41 weather weewx[1808] DEBUG weewx.reportengine: Report 'RSYNC' not enabled. Skipping.
Jun  8 11:25:50 weather weewx[1808] DEBUG user.gw1000: Next update in 20 seconds
Jun  8 11:26:10 weather weewx[1808] DEBUG user.gw1000: Next update in 20 seconds
Jun  8 11:26:30 weather weewx[1808] DEBUG user.gw1000: Next update in 20 seconds
Jun  8 11:26:50 weather weewx[1808] DEBUG user.gw1000: Next update in 20 seconds
Jun  8 11:27:10 weather weewx[1808] DEBUG user.gw1000: Next update in 20 seconds
Jun  8 11:27:30 weather weewx[1808] DEBUG user.gw1000: Next update in 20 seconds
Jun  8 11:27:50 weather weewx[1808] DEBUG user.gw1000: Next update in 20 seconds

current
temp
indoor temp

Help with non-GW1000 rain gauge

Hello, thanks for all the work that went into this driver.

I have a WS-80 (no rain measuring). I'm using a simple two wire tipping bucket gauge for rain measurement, and I wrote a service to capture the tips and inject them into the loop. The service is correctly capturing the number of tips, converting it to rain amount (each tip is .01 inches), and adding it to the packet. The code for the service is here: https://github.com/lordratner/weewx_gpio_raingauge/blob/main/gpio_rain_service.py

With the simulator driver all I had to do was comment out the 'rain' : line and weewx would use my value.

With the GW1000 driver however there are many, many instances that deal with rain in the driver code, and I'm not sure which to disable to allow mine to work. Without changing anything, a .01 per tip value passed from my service is translated into 0.00039370078740157485 per tip. The number of tips is passing correctly (each tip adds 0.00039370078740157485 to the "rain" value in the loop), but I'm not sure what is changing it from .01 to 0.00039370078740157485.

Any suggestions? Thanks!

FW Version (--firmware-version)

Just a small glitch, found while I was testing the command line options of the driver: when using the fw version option, the output is missing the 3rd digit. It should be v1.6.6.

➜ ~ PYTHONPATH=/home/weewx/bin python -m user.gw1000 --config=/etc/weewx/ecowitt.conf --firmware-version
Using configuration file /etc/weewx/ecowitt.conf

Interrogating GW1000 at 10.1.10.118:45000

GW1000 firmware version string: GW1000A_V1.6.

Testing the driver with errors

root@DietPi:# sudo /home/weewx/bin/wee_extension --install=/var/tmp/gw1000-0.1.0b5.tar.gz
Request to install '/var/tmp/gw1000-0.1.0b5.tar.gz'
Extracting from tar archive /var/tmp/gw1000-0.1.0b5.tar.gz
Saving installer file to /home/weewx/bin/user/installer/GW1000
Saved configuration dictionary. Backup copy at /home/weewx/weewx.conf.20200724165212
Finished installing extension '/var/tmp/gw1000-0.1.0b5.tar.gz'
root@DietPi:
# PYTHONPATH=/home/weewx/bin python -m user.gw1000 --test-driver
Traceback (most recent call last):
File "/usr/lib/python2.7/runpy.py", line 174, in _run_module_as_main
"main", fname, loader, pkg_name)
File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
exec code in run_globals
File "/home/weewx/bin/user/gw1000.py", line 267, in
import weecfg
File "/home/weewx/bin/weecfg/init.py", line 22, in
import configobj
ImportError: No module named configobj
root@DietPi:~#

by the way, many thanks for this driver! - I hope to get it running because I´m not happy with the interceptor limitations...

Field Map: light -> illuminance

I was having problems with the default mapping (with Influxdb and Grafana) and found the Field Map page in the wiki.

I found out, reading a couple of posts by Tom, that the field that better represents the light sensor should be in reality be "illuminance", introduced in weewx 4.2, and not luminosity.

weewx/weewx#613 (comment)
https://groups.google.com/g/weewx-user/c/gcjK6o_1QXE/m/qMMW3Mg_BwAJ

I used a [[field_map_extensions]] stanza, under [GW1000], to remap it:

[[field_map_extensions]]
     illuminance = light

With this I solved the issue I had exporting data to influxdb, but I thought it would be useful to have your opinion about the default mappings.

Disppearing battery levels

I set up a new test system last night with Ubuntu 20.04.1 running on a Pi with WeeWX 4.2, installed weewx-g1000 (0.1.1b12) and, using default Seasons skin got to see battery level indicators for my additional temperature & humidity and pressure sensors. The readings all said battery level was LOW although battery tests shows all at 100%.

Today, to my surprise, the battery levels have all disappeared from the skin.

Don't think I had too much to drink yesterday. Any ideas?

I think the only deviation from the installation instructions (I installed automatically, used wee_extension) was manually changing the data_services entry here from "," but can't recall if that was before or after seeing battery indicators.

    [[Services]]
        prep_services = weewx.engine.StdTimeSynch
        data_services = user.gw1000.Gw1000Service

Inconistent handling of errors when interrogating the GW1000

There appears to be inconsistent behaviour when errors are encountered obtaining a response/data from the GW1000. Expected behaviour will be different whether the GW1000 driver is being used as a WeeWX driver or as a WeeWX service. In simple terms when run as a driver failure to communicate with the GW1000 should result repeated attempts to connect to the GW1000 every 60 seconds. Behaviour on startup is determined by loop_on_init config setting. When operated as a service failure to communicate with the GW1000 should again result in repeated attempts to connect to the GW1000 but the failure to establish a connection with the GW1000 should not cause WeeWX to crash or interrupt WeeWX operation in some other way. In both cases recovery (if possible) should be seamless without the need for user intervention.

This weewx-user thread (driver) and this weewx-user thread (service) highlight unrecoverable errors as a result of lost communication with the GW1000.

Something goes wrong with gw1100 and 2.0.4 firmware

I've a new GW1100A with V2.0.4 firmware, tonight i've the following errors and weewx stop working.
Can any one help me ?
Many Thanks
Alex

PYTHONPATH=/usr/share/weewx python -m user.gw1000 --live-data
Interrogating GW1000 at 10.100.200.23:45000
Traceback (most recent call last):
File "/usr/lib/python2.7/runpy.py", line 174, in _run_module_as_main
"main", fname, loader, pkg_name)
File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
exec code in run_globals
File "/usr/share/weewx/user/gw1000.py", line 5906, in
main()
File "/usr/share/weewx/user/gw1000.py", line 5900, in main
direct_gw100.process_options()
File "/usr/share/weewx/user/gw1000.py", line 4860, in process_options
self.live_data()
File "/usr/share/weewx/user/gw1000.py", line 5497, in live_data
live_sensor_data_dict = collector.get_live_sensor_data()
File "/usr/share/weewx/user/gw1000.py", line 2329, in get_live_sensor_data
self.update_sensor_id_data()
File "/usr/share/weewx/user/gw1000.py", line 2344, in update_sensor_id_data
self.sensors_obj.set_sensor_id_data(sensor_id_data)
File "/usr/share/weewx/user/gw1000.py", line 4108, in set_sensor_id_data
batt_fn = Gw1000Collector.sensor_ids[data[index:index + 1]]['batt_fn']
KeyError: '0'

PYTHONPATH=/usr/share/weewx python -m user.gw1000 --sensors
Interrogating GW1000 at 10.100.200.23:45000
Traceback (most recent call last):
File "/usr/lib/python2.7/runpy.py", line 174, in _run_module_as_main
"main", fname, loader, pkg_name)
File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
exec code in run_globals
File "/usr/share/weewx/user/gw1000.py", line 5906, in
main()
File "/usr/share/weewx/user/gw1000.py", line 5900, in main
direct_gw100.process_options()
File "/usr/share/weewx/user/gw1000.py", line 4858, in process_options
self.sensors()
File "/usr/share/weewx/user/gw1000.py", line 5432, in sensors
collector.update_sensor_id_data()
File "/usr/share/weewx/user/gw1000.py", line 2344, in update_sensor_id_data
self.sensors_obj.set_sensor_id_data(sensor_id_data)
File "/usr/share/weewx/user/gw1000.py", line 4108, in set_sensor_id_data
batt_fn = Gw1000Collector.sensor_ids[data[index:index + 1]]['batt_fn']
KeyError: '0'

driver test needs --ip defined not --ip-address

The README.md states "Note: If necessary you can specify the GW1000 IP address and port using the --ip-address and --port command line options. Refer to the GW1000 driver help using --help for further information."

However the driver actually expects --ip to be defined, and throws an error if --ip-address is used. (The --help command informs you to use --ip)

I would suggest changing the --ip parameter to --ip_address to be consistent with the weewx configuration file, which uses ip_address.

build5 Unable to load driver: local variable 'field_map_extensions' referenced before assignment

Two Raspberry Pis with identical setups. One is running perfectly, the other gives this error: -

Jul 27 00:27:06 wxpi4b weewxd[12461]: weewx[12461] CRITICAL weewx.engine: **** self.console = loader_function(config_dict, self)
Jul 27 00:27:06 wxpi4b weewxd[12461]: weewx[12461] CRITICAL weewx.engine: **** File "/home/weewx/bin/user/gw1000.py", line 867, in loader
Jul 27 00:27:06 wxpi4b weewxd[12461]: weewx[12461] CRITICAL weewx.engine: **** return Gw1000Driver(**config_dict[DRIVER_NAME])
Jul 27 00:27:06 wxpi4b weewxd[12461]: weewx[12461] CRITICAL weewx.engine: **** File "/home/weewx/bin/user/gw1000.py", line 952, in init
Jul 27 00:27:06 wxpi4b weewxd[12461]: weewx[12461] CRITICAL weewx.engine: **** super(Gw1000Driver, self).init(**stn_dict)
Jul 27 00:27:06 wxpi4b weewxd[12461]: weewx[12461] CRITICAL weewx.engine: **** File "/home/weewx/bin/user/gw1000.py", line 517, in init
Jul 27 00:27:06 wxpi4b weewxd[12461]: weewx[12461] CRITICAL weewx.engine: **** field_map.update(field_map_extensions)
Jul 27 00:27:06 wxpi4b weewxd[12461]: weewx[12461] CRITICAL weewx.engine: **** UnboundLocalError: local variable 'field_map_extensions' referenced before assignment
Jul 27 00:27:06 wxpi4b weewxd[12461]: weewx[12461] CRITICAL main: Unable to load driver: local variable 'field_map_extensions' referenced before assignment
Jul 27 00:27:06 wxpi4b weewxd[12461]: weewx[12461] CRITICAL main: **** Exiting...

Field map settings are: -

[GW1000]
    # This section is for the GW1000
    # The driver itself
    driver = user.gw1000
    poll_interval = 16
    
        [[field_map]]
            outTemp = outtemp
            windSpeed = windspeed
            UV = uvi
            light = light
            outBatteryStatus = wh65_batt
            outHumidity = outhumid
            windDir = winddir
            windGust = gustspeed
            rain_total = rainday
            inTemp = intemp
            inHumidity = inhumid
            barometer = relbarometer
            inTempBatteryStatus = 

b12 Lost GW1000, Took WeeWX Down

Running b12 with WeeWX 4.1.1 under python3, setup.py method.
This is the GW1000 stanza in weewx.conf:
# Options for extension 'GW1000' [GW1000] driver = user.gw1000 ip_address = 10.10.100.125 port = 45000 poll_interval = 16 [[field_map_extensions]] supplyVoltage = wh40_batt windBatteryStatus = wh68_batt txBatteryStatus = wh26_batt

On my test machine, I noticed this morning that there was no live data.
systemctl status weewx shows:
`● weewx.service - weewx weather system
Loaded: loaded (/etc/systemd/system/weewx.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Wed 2020-09-09 17:36:50 EDT; 15h ago
Process: 174609 ExecStart=/home/weewx/bin/weewxd --daemon --pidfile=/var/run/weewx.pid /home/weewx/weewx.conf (code=exited, status=0/SUCCESS)
Main PID: 174624 (code=exited, status=4)

Sep 09 17:36:50 tester weewxd[174624]: weewx[174624] CRITICAL weewx.engine: **** self.mac = self.get_mac_address()
Sep 09 17:36:50 tester weewxd[174624]: weewx[174624] CRITICAL weewx.engine: **** File "/home/weewx/bin/user/gw1000.py", line 2407, in get_mac_ad>
Sep 09 17:36:50 tester weewxd[174624]: weewx[174624] CRITICAL weewx.engine: **** return self.send_cmd_with_retries('CMD_READ_STATION_MAC')
Sep 09 17:36:50 tester weewxd[174624]: weewx[174624] CRITICAL weewx.engine: **** File "/home/weewx/bin/user/gw1000.py", line 2532, in send_cmd_w>
Sep 09 17:36:50 tester weewxd[174624]: weewx[174624] CRITICAL weewx.engine: **** raise GW1000IOError(_msg)
Sep 09 17:36:50 tester weewxd[174624]: weewx[174624] CRITICAL weewx.engine: **** user.gw1000.GW1000IOError: Failed to obtain response to command '>
Sep 09 17:36:50 tester weewxd[174624]: weewx[174624] CRITICAL main: Unable to load driver: Failed to obtain response to command 'CMD_READ_STATION_M>
Sep 09 17:36:50 tester weewxd[174624]: weewx[174624] CRITICAL main: **** Exiting...
Sep 09 17:36:50 tester systemd[1]: weewx.service: Main process exited, code=exited, status=4/NOPERMISSION
Sep 09 17:36:50 tester systemd[1]: weewx.service: Failed with result 'exit-code'.
`
A restart of weewx has things working fine again.

Because I have my 'production' weewx online and CumulusMX on the test server, I can say that the network had no difficulty as both use the GW1000 and both have good data for yesterday and today.

Perhaps one of them stepped on the other, two calling for data at the same time?

some issues with driver 0.3.1 and weewx 4.5.1

some issues with driver 0.3.1 and weewx 4.5.1 too.

Jun 10 21:31:43 sandbox python3[5721]: weewx[5721] ERROR user.gw1000:     ****    File "/usr/share/weewx/user/gw1000.py", line 3421, in check_response
Jun 10 21:31:43 sandbox python3[5721]: weewx[5721] ERROR user.gw1000:     ****      if six.indexbytes(response, 2) == six.byte2int(cmd_code):
Jun 10 21:31:43 sandbox python3[5721]: weewx[5721] ERROR user.gw1000:     ****  IndexError: index out of range
Jun 10 21:32:07 sandbox python3[5721]: weewx[5721] ERROR user.gw1000: Unexpected exception occurred while checking response to attempt 1 to send command 'CMD_READ…x out of range
Jun 10 21:32:07 sandbox python3[5721]: weewx[5721] ERROR user.gw1000:     ****  Traceback (most recent call last):
Jun 10 21:32:07 sandbox python3[5721]: weewx[5721] ERROR user.gw1000:     ****    File "/usr/share/weewx/user/gw1000.py", line 3345, in send_cmd_with_retries
Jun 10 21:32:07 sandbox python3[5721]: weewx[5721] ERROR user.gw1000:     ****      self.check_response(response, self.commands[cmd])
Jun 10 21:32:07 sandbox python3[5721]: weewx[5721] ERROR user.gw1000:     ****    File "/usr/share/weewx/user/gw1000.py", line 3421, in check_response
Jun 10 21:32:07 sandbox python3[5721]: weewx[5721] ERROR user.gw1000:     ****      if six.indexbytes(response, 2) == six.byte2int(cmd_code):
Jun 10 21:32:07 sandbox python3[5721]: weewx[5721] ERROR user.gw1000:     ****  IndexError: index out of range

Originally posted by @Zaschii in #41 (comment)

Trouble timeout reading GW1000: 0.31 driver, firmware GW1000B_V1.6.8

Last week I updated firmware to 1.6.8. No other software changes. Over the weekend, weewx started failing to read through the GW1000 driver with timeout error messages. (Website: https://iayft.com/weewx/index.html) Updated driver from previous version to 0.3.1, powered down and restarted GW1000, network router. I can access GW1000 consistently through WSView, and no errors posted from GW1000 to Ecowitt.net and Wunderground (NHHOPKI9). weewx is typically running as a service on an Ubuntu 18.04 LTS server, Python 2.7.17, tried to run it as a daemon and it "seemed" to run longer, but still timeouts, anecdotally.

Following along with the several other threads posted here, I updated the retry count to 10, set debug to 1 and ran to see if I could add to the symptoms you've seen. It ran without issue for about 12 hours (longest in the three days) and then died. Attached are sensors, debug set to 1, live data, and logs

Sensors:
Using configuration file /etc/weewx/weewx.conf
debug level is '1'

IP address obtained from station config
Port number obtained from station config

Interrogating GW1000 at 192.168.1.248:45000

Sensor Status
WH68 sensor ID: 1bb signal: 4 battery: 1.86 (OK)
WH65 sensor is registering...
WH40 sensor ID: fa2b signal: 4 battery: 0 (OK)
WS80 sensor is registering...
WH26 sensor ID: a1 signal: 4 battery: 0 (OK)
WH31 ch2 sensor is registering...
WH31 ch1 sensor ID: 5e signal: 4 battery: 0 (OK)
WH31 ch4 sensor is registering...
WH31 ch3 sensor is registering...
WH31 ch6 sensor is registering...
WH31 ch5 sensor is registering...
WH31 ch8 sensor is registering...
WH31 ch7 sensor is registering...
WH51 ch2 sensor is registering...
WH51 ch1 sensor is registering...
WH51 ch4 sensor is registering...
WH51 ch3 sensor is registering...
WH51 ch6 sensor is registering...
WH51 ch5 sensor is registering...
WH51 ch8 sensor is registering...
WH51 ch7 sensor is registering...
WH41 ch2 sensor is registering...
WH41 ch1 sensor ID: a signal: 4 battery: 4 (OK)
WH41 ch4 sensor is registering...
WH41 ch3 sensor is registering...
WH55 ch1 sensor is registering...
WH57 sensor is registering...
WH55 ch3 sensor is registering...
WH55 ch2 sensor is registering...
WH34 ch1 sensor is registering...
WH55 ch4 sensor is registering...
WH34 ch3 sensor is registering...
WH34 ch2 sensor is registering...
WH34 ch5 sensor is registering...
WH34 ch4 sensor is registering...
WH34 ch7 sensor is registering...
WH34 ch6 sensor is registering...
WH45 sensor is registering...
WH34 ch8 sensor is registering...
WH35 ch2 sensor is registering...
WH35 ch1 sensor is registering...
WH35 ch4 sensor is registering...
WH35 ch3 sensor is registering...
WH35 ch6 sensor is registering...
WH35 ch5 sensor is registering...
WH35 ch8 sensor is registering...
WH35 ch7 sensor is registering...

Live Data:

PYTHONPATH=/usr/share/weewx python -m user.gw1000 --live-data

Using configuration file /etc/weewx/weewx.conf
debug level is '1'

IP address obtained from station config
Port number obtained from station config

Interrogating GW1000 at 192.168.1.248:45000

GW1000 live sensor data (2021-06-15 09:15:06 EDT (1623762906)): absbarometer: 992.5hPa, daymaxwind: 4kph, gustspeed: 2kph, humid1: 68%, inhumid: 72%, intemp: 20.2°C, light: 19680lx, outhumid: 89%, outtemp: 19.4°C, pm251: 8.0µg/m³, pm251_24h_avg: 4.1µg/m³, rainday: 0.2mm, rainevent: 0.0mm, rainmonth: 25.6mm, rainrate: 0.0mm/h, rainweek: 8.0mm, rainyear: 182.9mm, relbarometer: 1007.4hPa, temp1: 21.1°C, uv: 10W/m², uvi: 1.0, wh26_batt: 0, wh26_sig: 4, wh31_ch1_batt: 0, wh31_ch1_sig: 4, wh40_batt: 0, wh40_sig: 4, wh41_ch1_batt: 4, wh41_ch1_sig: 4, wh68_batt: 1.9V, wh68_sig: 4, winddir: 314°, windspeed: 1kph

Logs (generated with journalctl --unit=weewx --lines 12551 >~/weewxlog.txt)

weewxlog.txt

Read or write SSID?

Since there is a 'CMD_WRITE_SSID' in Station.commands, would there be a way to change WLAN settings via the api? Or at least retrieve the SSID the device is connected to?

I couldn't find a way to retrieve the connection details in the WS View app so i am afraid it's not possible, but still wanted check if it maybe is, before having to reset and setup via the App. I recently get lots of 'No route to host' errors and wondered if it is because the device is connected to a weak WLAN. Don't remember what i set up originally.

Mar 25 09:15:10 rsp1 weewx[23048] DEBUG user.gw1000: Failed attempt 18 to send command 'CMD_READ_SENSOR_ID_NEW': [Errno 113] No route to host
Mar 25 09:15:43 rsp1 weewx[23048] DEBUG user.gw1000: Failed attempt 19 to send command 'CMD_READ_SENSOR_ID_NEW': [Errno 113] No route to host
Mar 25 09:16:16 rsp1 weewx[23048] DEBUG user.gw1000: Failed attempt 20 to send command 'CMD_READ_SENSOR_ID_NEW': [Errno 113] No route to host
Mar 25 09:16:16 rsp1 weewx[23048] ERROR user.gw1000: Failed to obtain response to command 'CMD_READ_SENSOR_ID_NEW' after 20 attempts
Mar 25 09:16:16 rsp1 weewx[23048] DEBUG user.gw1000: IP address specified in 'weewx.conf', re-discovery was not attempted

Calculated radiation field

Hi, I was not seeing solar radiation data from the GW1000 sent to WU or PWSWeather, then I finally found your article in the wiki (https://github.com/gjr80/weewx-gw1000/wiki/Understanding-GW1000-radiation-fields), thanks for writing it.

Two things regarding the radiation field:

  1. In the article, you refer for the calculation to the StdCalculate service/stanza, but it should be the StdCalibrate.
  2. What is the difference between the weewx uvradiation field (to which the UV gw1000 API field is mapped) and the calculated radiation field? Only the unit of measurement? I can't understand the difference between the radiation and uvradiation fields.

Thanks for your support,

Alessandro

Error when specifying broadcast_port

First of all, let me thank you for this driver, very well made and documented.

I installed it with default settings, but it didn't discover the GW1000 so it threw an error. In the settings I didn't find a way to specify the IP so I went to the wiki and found the options sections. So I specified some default settings in weewx.conf with comments, so if I need to change something I have what's needed in the config.

Since I wanted to understand why it didn't find the GW1000, I specified the broadcast_port option, but when I restarted weewx it threw the following error:

Mar 17 20:03:03 rpi4argon weewx-ecowitt[67057] INFO user.gw1000: driver version is 0.2.0
Mar 17 20:03:03 rpi4argon weewx-ecowitt[67057] INFO user.gw1000: GW1000 address is 10.1.10.118:45000
Mar 17 20:03:03 rpi4argon weewx-ecowitt[67057] INFO user.gw1000: poll interval is 60 seconds
Mar 17 20:03:03 rpi4argon weewx-ecowitt[67057] ERROR weewx.engine: Import of driver failed: %d format: a number is required, not str (<class 'TypeError'>)
Mar 17 20:03:03 rpi4argon weewx-ecowitt[67057] CRITICAL weewx.engine:     ****  Traceback (most recent call last):
Mar 17 20:03:03 rpi4argon weewx-ecowitt[67057] CRITICAL weewx.engine:     ****    File "/home/weewx/bin/weewx/engine.py", line 119, in setupStation
Mar 17 20:03:03 rpi4argon weewx-ecowitt[67057] CRITICAL weewx.engine:     ****      self.console = loader_function(config_dict, self)
Mar 17 20:03:03 rpi4argon weewx-ecowitt[67057] CRITICAL weewx.engine:     ****    File "/home/weewx/bin/user/gw1000.py", line 1498, in loader
Mar 17 20:03:03 rpi4argon weewx-ecowitt[67057] CRITICAL weewx.engine:     ****      return Gw1000Driver(**config_dict[DRIVER_NAME])
Mar 17 20:03:03 rpi4argon weewx-ecowitt[67057] CRITICAL weewx.engine:     ****    File "/home/weewx/bin/user/gw1000.py", line 1860, in __init__
Mar 17 20:03:03 rpi4argon weewx-ecowitt[67057] CRITICAL weewx.engine:     ****      logdbg('broadcast address is %s:%d, socket timeout is %d seconds' % (self.broadcast_address,
Mar 17 20:03:03 rpi4argon weewx-ecowitt[67057] CRITICAL weewx.engine:     ****  TypeError: %d format: a number is required, not str
Mar 17 20:03:03 rpi4argon weewx-ecowitt[67057] CRITICAL __main__: Unable to load driver: %d format: a number is required, not str
Mar 17 20:03:03 rpi4argon weewx-ecowitt[67057] CRITICAL __main__:     ****  Waiting 60 seconds then retrying...

This is the config of the driver:

# Options for 'GW1000': https://github.com/gjr80/weewx-gw1000/wiki/Available-Config-Options
[GW1000]

# The driver to use:
driver = user.gw1000

# If ip_address is not specified the GW1000 driver will attempt to locate GW1000 on the LAN and use the first GW1000 found
ip_address = 10.1.10.118

# Port number used when communicating with the the GW1000. Optional, number. Default is 45000
port = 45000

# Interval in seconds used to poll the GW1000 for data. Optional, number. Default is 60
poll_interval = 60

# The IP address to be used when sending a UDP broadcast to identify GW1000 devices on the network. Optional, string. Default is 255.255.255.255
broadcast_address = 255.255.255.255  

# The port number to be used when sending a UDP broadcast to identify GW1000 devices on the network. Optional, number. Default is 46000
#broadcast_port = 46000

Thanks for any advice.

WeeWX "Today Rain" not matching GW1000

My WeeWX "Rain Today" field is not matching the values shown by the GW1000, WeeWX-GW1000 driver, or the data WeeWX is pushing up to Weather Underground.

Rain Today shows "0.02 in" on the standard report, whereas the other sources show the correct value of 0.06 inches (even the data that WeeWX itself is uploading to Wunderground which is weird). I'm not 100% sure if this is an error with how the driver is calculating the rain value for WeeWX?

image

2020-08-12 09:57:12 EDT (1597240632): UV: 1, dateTime: 1597240632, dayRain: 1.6, daymaxwind: 2.6, inHumidity: 59, inTemp: 26.9, luminosity: 25260.0, monthRain: 9.2, outHumidity: 90, outTemp: 26.6, pressure: 1018.3, rain: None, rainRate: 0.0, relbarometer: 1018.3, stormRain: 1.6, usUnits: 17, uvradiation: 9.9, weekRain: 1.6, wh26_batt: 0, wh40_batt: 0, wh68_batt: 1.64, windDir: 162, windGust: 0.0, windSpeed: 0.0, yearRain: 39.7

image
image

Unable to add pm2_51_24hav to graph.

What is wrong with this? It doesn't work and gives an error. I am trying to graph the PM 2.5 24H average along with the current reading. This is what I have in my graphs.conf

`
[[chart7]]
title = PM 2.5
[[[pm2_5]]]
name = PM 2.5
zIndex = 1
color = "#ffc83f"
[[[pm2_51_24hav]]]
name = 24H Average
color = "#f7f2b4"
y_label = "ug/m3"

`

This is the reading from the driver :

2020-12-21 20:15:48 AST (1608596148): UV: 0, dateTime: 1608596148, dayRain: 13.2, daymaxwind: 15.8, extraHumid1: 53, extraHumid2: 48, extraHumid3: 54, extraHumid4: 75, extraHumid5: 54, extraHumid6: 45, extraHumid7: 43, extraTemp1: 23.3, extraTemp2: 24.3, extraTemp3: 21.1, extraTemp4: 9.4, extraTemp5: 16.9, extraTemp6: 25.4, extraTemp7: 25.9, extraTemp8: 18.9, inHumidity: 39, inTemp: 27.8, leak1: 0, leak2: 0, lightning_distance: None, lightning_last_det_time: None, lightning_strike_count: None, luminosity: 0.0, monthRain: 74.7, outHumidity: 99, outTemp: 9.4, pm2_5: 9.9, pm2_51_24hav: 15.5, pressure: 992.2, radiation: 0.2, rain: None, rainRate: 6.0, relbarometer: 1003.4, stormRain: 13.2, usUnits: 17, weekRain: 13.2, wh31_ch1_batt: 0, wh31_ch2_batt: 0, wh31_ch3_batt: 0, wh31_ch4_batt: 0, wh31_ch5_batt: 0, wh31_ch6_batt: 0, wh31_ch7_batt: 0, wh31_ch8_batt: 0, wh41_ch1_batt: 4, wh55_ch1_batt: 5, wh55_ch2_batt: 4, wh57_batt: 5, wh65_batt: 0, windDir: 123, windGust: 4.1, windSpeed: 2.8, yearRain: 194.2

And this is the error I am getting.

Dec 21 20:42:30 LivingstoneCove weewx[28947] ERROR weewx.reportengine: Caught unrecoverable exception in generator 'user.belchertown.HighchartsJsonGenerator' Dec 21 20:42:30 LivingstoneCove weewx[28947] ERROR weewx.reportengine: **** Error trying to use database binding wx_binding to graph observation pm2_51_24hav. Error was: pm2_51_24hav. Dec 21 20:42:30 LivingstoneCove weewx[28947] ERROR weewx.reportengine: **** Traceback (most recent call last): Dec 21 20:42:30 LivingstoneCove weewx[28947] ERROR weewx.reportengine: **** File "/usr/share/weewx/user/belchertown.py", line 2335, in get_observation_data Dec 21 20:42:30 LivingstoneCove weewx[28947] ERROR weewx.reportengine: **** (time_start_vt, time_stop_vt, obs_vt) = archive.getSqlVectors(TimeSpan(start_ts, end_ts), obs_lookup, aggregate_type, aggregate_interval) Dec 21 20:42:30 LivingstoneCove weewx[28947] ERROR weewx.reportengine: **** File "/usr/share/weewx/weewx/manager.py", line 452, in getSqlVectors Dec 21 20:42:30 LivingstoneCove weewx[28947] ERROR weewx.reportengine: **** aggregate_type, aggregate_interval) Dec 21 20:42:30 LivingstoneCove weewx[28947] ERROR weewx.reportengine: **** File "/usr/share/weewx/weewx/xtypes.py", line 91, in get_series Dec 21 20:42:30 LivingstoneCove weewx[28947] ERROR weewx.reportengine: **** raise weewx.UnknownType(obs_type) Dec 21 20:42:30 LivingstoneCove weewx[28947] ERROR weewx.reportengine: **** weewx.UnknownType: pm2_51_24hav Dec 21 20:42:30 LivingstoneCove weewx[28947] ERROR weewx.reportengine: **** Dec 21 20:42:30 LivingstoneCove weewx[28947] ERROR weewx.reportengine: **** During handling of the above exception, another exception occurred: Dec 21 20:42:30 LivingstoneCove weewx[28947] ERROR weewx.reportengine: **** Dec 21 20:42:30 LivingstoneCove weewx[28947] ERROR weewx.reportengine: **** Traceback (most recent call last): Dec 21 20:42:30 LivingstoneCove weewx[28947] ERROR weewx.reportengine: **** File "/usr/share/weewx/weewx/reportengine.py", line 197, in run Dec 21 20:42:30 LivingstoneCove weewx[28947] ERROR weewx.reportengine: **** obj.start() Dec 21 20:42:30 LivingstoneCove weewx[28947] ERROR weewx.reportengine: **** File "/usr/share/weewx/weewx/reportengine.py", line 280, in start Dec 21 20:42:30 LivingstoneCove weewx[28947] ERROR weewx.reportengine: **** self.run() Dec 21 20:42:30 LivingstoneCove weewx[28947] ERROR weewx.reportengine: **** File "/usr/share/weewx/user/belchertown.py", line 1833, in run Dec 21 20:42:30 LivingstoneCove weewx[28947] ERROR weewx.reportengine: **** series_data = self.get_observation_data(binding, archive, observation_type, minstamp, maxstamp, aggregate_type, aggregate_interval, time_length, xAxis_groupby, xAxis_categories, mirrored_value, weatherRange_obs_lookup, wind_rose_color) Dec 21 20:42:30 LivingstoneCove weewx[28947] ERROR weewx.reportengine: **** File "/usr/share/weewx/user/belchertown.py", line 2337, in get_observation_data Dec 21 20:42:30 LivingstoneCove weewx[28947] ERROR weewx.reportengine: **** raise Warning( "Error trying to use database binding %s to graph observation %s. Error was: %s." % (binding, obs_lookup, e) ) Dec 21 20:42:30 LivingstoneCove weewx[28947] ERROR weewx.reportengine: **** Warning: Error trying to use database binding wx_binding to graph observation pm2_51_24hav. Error was: pm2_51_24hav. Dec 21 20:42:30 LivingstoneCove weewx[28947] ERROR weewx.reportengine: **** Generator terminated

What am I doing wrong? The graph works without the bottom section for the average reading, so if i remove the following, it works with no errors :

[[[pm2_51_24hav]]] name = 24H Average color = "#f7f2b4" y_label = "ug/m3"

CMD_READ_STATION_MAC

Nella guida fino al punto 6, quando faccio il test del drive, tutto funziona e la stazione scarica correttamente i dati.
Quando vado a riconfigurare weewx.conf, inizia a uscire questo errore CMD_READ_STATION_MAC
E in loop, ogni 60sec, continua a uscire lo stesso errore.
Cosa posso fare?
Grazie

GW-1000 Service stops updating after a period of time

I am experiencing an issue it seems with data from the GW-1000 not updating. After a period of time, maybe 30 minutes or so my readings for relative pressure (and inside temperature & humidity) don’t update, from what I can tell the GW-1000 is still providing the data when this happens. I have tried debugging etc but I can’t get to the bottom of the issue.
The only real output I can see directly from the syslog is the below every 20 seconds

weewx[31904] DEBUG user.gw1000: Next update in 20 seconds

For some background, I have the RTL SDR driver installed and this is receiving data from my weather station. The GW-1000 extension (latest version) is installed as a service to supplement my weather station data and add the barometric pressure and internal temperature and humidity.

Is there anything I can do to troubleshoot my issue further or can you offer any advice as to possible cause(s)?

Live data reading (from after data stopped updating in weewx):

$ PYTHONPATH=/usr/share/weewx python3 -m user.gw1000 --live-data

Using configuration file /etc/weewx/weewx.conf
Interrogating GW1000 at 192.168.5.241:45000
GW1000 live sensor data (2021-04-12 12:29:13 IST (1618226953)): absbarometer: 1013.4hPa, humid1: 46%, humid2: 59%, inhumid: 54%, intemp: 20.9°C, relbarometer: 1029.4hPa, temp1: 26.1°C, temp2: 10.8°C, wh31_ch1_batt: 0, wh31_ch1_sig: 2, wh31_ch2_batt: 0, wh31_ch2_sig: 4

Weewx conf file (I cut down on most of the default setting to make it easier to read. Anything I’ve removed is unrelated to GW-1000 or SDR.

Weewx.conf
# WEEWX CONFIGURATION FILE
#
# Copyright (c) 2009-2019 Tom Keffer <[email protected]>
# See the file LICENSE.txt for your rights.

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


debug = 1

WEEWX_ROOT = /

log_success = True

log_failure = True

socket_timeout = 20

version = 4.5.1

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

#   This section is for information about the station.

[Station]
    
    altitude = 132, meter

    station_type = SDR

    rain_year_start = 1
    
    week_start = 6

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

[SDR]

    driver = user.sdr
    cmd = rtl_433 -M utc -F json -f 868312k -s 1024k -Y classic
    path = /usr/local/bin:${PATH}
    ld_library_path = /usr/bin
    [[sensor_map]]
        windGust = wind_gust.220.FOWHx080Packet
        outBatteryStatus = battery.220.FOWHx080Packet
        rain_total = rain_total.220.FOWHx080Packet
        windSpeed = wind_speed.220.FOWHx080Packet
        windDir = wind_dir.220.FOWHx080Packet
        outHumidity = humidity.220.FOWHx080Packet
        outTemp = temperature.220.FOWHx080Packet
    [[deltas]]
        rain = rain_total

[StdRESTful]
    
    [[MQTT]]
        server_url = mqtt://xxxxxxxx:xxxxxxxxxx@localhost:1883/
        topic = weather
        unit_system = METRIC
        binding = loop, archive


[StdReport]
    
    SKIN_ROOT = /etc/weewx/skins
    HTML_ROOT = /var/www/html/weewx
    data_binding = wx_binding
    log_success = True
    log_failure = True

    [[SeasonsReport]]
        skin = Seasons
        enable = true
    [[Highcharts_Belchertown]]
        HTML_ROOT = /var/www/html/weewx/belchertown
        skin = Highcharts_Belchertown
    [[Belchertown]]
        HTML_ROOT = /var/www/html/weewx/belchertown
        skin = Belchertown

[StdConvert]

    target_unit = US    # Options are 'US', 'METRICWX', or 'METRIC'


[StdCalibrate]
    
    [[Corrections]]

        windDir = windDir + 180.0 if windDir < 180 else windDir - 180.0

[StdQC]
    
    [[MinMax]]
        barometer = 26, 32.5, inHg

[StdWXCalculate]
    
    [[Calculations]]
        pressure = prefer_hardware
        barometer = prefer_hardware

[StdTimeSynch]
    

[StdArchive]
    
    archive_interval = 300

    record_generation = software
    
    loop_hilo = True
    
    data_binding = wx_binding

[DataBindings]
    
    [[wx_binding]]

        database = archive_sqlite
        table_name = archive
        manager = weewx.wxmanager.WXDaySummaryManager
        schema = schemas.wview.schema

[Databases]
    
    # A SQLite database is simply a single file
    [[archive_sqlite]]
        database_name = weewx.sdb
        database_type = SQLite
    
    # MySQL
    [[archive_mysql]]
        database_name = weewx
        database_type = MySQL

[DatabaseTypes]

    [[SQLite]]
        driver = weedb.sqlite
        SQLITE_ROOT = /var/lib/weewx
		
[Engine]
    [[Services]]
        prep_services = weewx.engine.StdTimeSynch
        data_services =  user.gw1000.Gw1000Service
        process_services = weewx.engine.StdConvert, weewx.engine.StdCalibrate, weewx.engine.StdQC, weewx.wxservices.StdWXCalculate
        xtype_services = weewx.wxxtypes.StdWXXTypes, weewx.wxxtypes.StdPressureCooker, weewx.wxxtypes.StdRainRater, weewx.wxxtypes.StdDelta
        archive_services = weewx.engine.StdArchive
        restful_services = weewx.restx.StdStationRegistry, weewx.restx.StdWunderground, weewx.restx.StdPWSweather, weewx.restx.StdCWOP, weewx.restx.StdWOW, weewx.restx.StdAWEKAS, user.mqtt.MQTT
        report_services = weewx.engine.StdPrint, weewx.engine.StdReport

# Options for 'GW1000'
[GW1000]
    # This section is for the GW1000 API driver.
    
    # How often to poll the GW1000 API, default is every 20 seconds:
    poll_interval = 20
    
    # The driver to use:
    driver = user.gw1000
    ip_address = 192.168.5.241
    port = 45000
    max_tries = 10
    retry_wait = 20
    max_age = 120
    [[field_map_extensions]]
       inTemp = intemp
       inHumidity = inhumid
       barometer = relbarometer
       wh31_ch1_batt = wh31_ch1_batt
       wh31_ch2_batt = wh31_ch1_batt
       wh31_ch1_sig = wh31_ch1_sig
       wh31_ch2_sig = wh31_ch2_sig

[Accumulator]
    
    # Start GW1000 driver extractors
    [[daymaxwind]]
       extractor = last
    [[lightning_distance]]
        extractor = last
    [[lightning_strike_count]]
        extractor = sum
    [[lightningcount]]
        extractor = last
    [[lightning_last_det_time]]
        extractor = last
    [[stormRain]]
        extractor = last
    [[hourRain]]
        extractor = last
    [[dayRain]]
        extractor = last
    [[weekRain]]
        extractor = last
    [[monthRain]]
        extractor = last
    [[yearRain]]
        extractor = last
    [[totalRain]]
        extractor = last
    [[pm2_51_24h_avg]]
        extractor = last
    [[pm2_52_24h_avg]]
        extractor = last
    [[pm2_53_24h_avg]]
        extractor = last
    [[pm2_54_24h_avg]]
        extractor = last
    [[pm2_55_24h_avg]]
        extractor = last
    [[pm10_24h_avg]]
        extractor = last
    [[co2_24h_avg]]
        extractor = last
    [[wh40_batt]]
        extractor = last
    [[wh26_batt]]
        extractor = last
    [[wh25_batt]]
        extractor = last
    [[wh65_batt]]
        extractor = last
    [[wh31_ch1_batt]]
        extractor = last
    [[wh31_ch2_batt]]
        extractor = last
    [[wh31_ch3_batt]]
        extractor = last
    [[wh31_ch4_batt]]
        extractor = last
    [[wh31_ch5_batt]]
        extractor = last
    [[wh31_ch6_batt]]
        extractor = last
    [[wh31_ch7_batt]]
        extractor = last
    [[wh31_ch8_batt]]
        extractor = last
    [[wh35_ch1_batt]]
        extractor = last
    [[wh35_ch2_batt]]
        extractor = last
    [[wh35_ch3_batt]]
        extractor = last
    [[wh35_ch4_batt]]
        extractor = last
    [[wh35_ch5_batt]]
        extractor = last
    [[wh35_ch6_batt]]
        extractor = last
    [[wh35_ch7_batt]]
        extractor = last
    [[wh35_ch8_batt]]
        extractor = last
    [[wh41_ch1_batt]]
        extractor = last
    [[wh41_ch2_batt]]
        extractor = last
    [[wh41_ch3_batt]]
        extractor = last
    [[wh41_ch4_batt]]
        extractor = last
    [[wh45_batt]]
        extractor = last
    [[wh51_ch1_batt]]
        extractor = last
    [[wh51_ch2_batt]]
        extractor = last
    [[wh51_ch3_batt]]
        extractor = last
    [[wh51_ch4_batt]]
        extractor = last
    [[wh51_ch5_batt]]
        extractor = last
    [[wh51_ch6_batt]]
        extractor = last
    [[wh51_ch7_batt]]
        extractor = last
    [[wh51_ch8_batt]]
        extractor = last
    [[wh51_ch9_batt]]
        extractor = last
    [[wh51_ch10_batt]]
        extractor = last
    [[wh51_ch11_batt]]
        extractor = last
    [[wh51_ch12_batt]]
        extractor = last
    [[wh51_ch13_batt]]
        extractor = last
    [[wh51_ch14_batt]]
        extractor = last
    [[wh51_ch15_batt]]
        extractor = last
    [[wh51_ch16_batt]]
        extractor = last
    [[wh55_ch1_batt]]
        extractor = last
    [[wh55_ch2_batt]]
        extractor = last
    [[wh55_ch3_batt]]
        extractor = last
    [[wh55_ch4_batt]]
        extractor = last
    [[wh57_batt]]
        extractor = last
    [[wh68_batt]]
        extractor = last
    [[ws80_batt]]
        extractor = last
    [[wh40_sig]]
        extractor = last
    [[wh26_sig]]
        extractor = last
    [[wh25_sig]]
        extractor = last
    [[wh65_sig]]
        extractor = last
    [[wh31_ch1_sig]]
        extractor = last
    [[wh31_ch2_sig]]
        extractor = last
    [[wh31_ch3_sig]]
        extractor = last
    [[wh31_ch4_sig]]
        extractor = last
    [[wh31_ch5_sig]]
        extractor = last
    [[wh31_ch6_sig]]
        extractor = last
    [[wh31_ch7_sig]]
        extractor = last
    [[wh31_ch8_sig]]
        extractor = last
    [[wh35_ch1_sig]]
        extractor = last
    [[wh35_ch2_sig]]
        extractor = last
    [[wh35_ch3_sig]]
        extractor = last
    [[wh35_ch4_sig]]
        extractor = last
    [[wh35_ch5_sig]]
        extractor = last
    [[wh35_ch6_sig]]
        extractor = last
    [[wh35_ch7_sig]]
        extractor = last
    [[wh35_ch8_sig]]
        extractor = last
    [[wh41_ch1_sig]]
        extractor = last
    [[wh41_ch2_sig]]
        extractor = last
    [[wh41_ch3_sig]]
        extractor = last
    [[wh41_ch4_sig]]
        extractor = last
    [[wh45_sig]]
        extractor = last
    [[wh51_ch1_sig]]
        extractor = last
    [[wh51_ch2_sig]]
        extractor = last
    [[wh51_ch3_sig]]
        extractor = last
    [[wh51_ch4_sig]]
        extractor = last
    [[wh51_ch5_sig]]
        extractor = last
    [[wh51_ch6_sig]]
        extractor = last
    [[wh51_ch7_sig]]
        extractor = last
    [[wh51_ch8_sig]]
        extractor = last
    [[wh51_ch9_sig]]
        extractor = last
    [[wh51_ch10_sig]]
        extractor = last
    [[wh51_ch11_sig]]
        extractor = last
    [[wh51_ch12_sig]]
        extractor = last
    [[wh51_ch13_sig]]
        extractor = last
    [[wh51_ch14_sig]]
        extractor = last
    [[wh51_ch15_sig]]
        extractor = last
    [[wh51_ch16_sig]]
        extractor = last
    [[wh55_ch1_sig]]
        extractor = last
    [[wh55_ch2_sig]]
        extractor = last
    [[wh55_ch3_sig]]
        extractor = last
    [[wh55_ch4_sig]]
        extractor = last
    [[wh57_sig]]
        extractor = last
    [[wh68_sig]]
        extractor = last
    [[ws80_sig]]
        extractor = last

Error when specifying socket_timeout

Python 3.7.3 / weewx v4.4.0

When using socket_timeout, e.g.

[GW1000]
    driver = user.gw1000
    ip_address = XX.XX.XX.XX
    port = 45000
    poll_interval = 30
    socket_timeout = 5
    max_tries = 3
    retry_wait = 10

in the config of the driver in weewx.conf, the driver fails to load

Mar 24 15:56:32 rsp1 weewx[28170] DEBUG user.gw1000: Failed attempt 1 to send command 'CMD_READ_STATION_MAC': an integer is required (got type str )

it seems that self.socket_timeout arrives as string @ gw1000.py line 3361:
socket_obj.settimeout(self.socket_timeout)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.