Problem with GW1000 driver

398 views
Skip to first unread message

anc...@gmail.com

unread,
May 24, 2021, 2:36:20 PM5/24/21
to weewx-user
Hi everyone,
I am trying to use WeeWX with a GW1000 hardware (this) that is receiving data from a WN30 temperature sensor (this). I installed the hardware and connected to the WiFi, and by the smartphone app everything seems fine: in fact I can see live data from there.
Now, I want to use the GW1000 driver for reading its data with WeeWX. I correctly followed the instruction and installed the driver on WeeWX 3.9.2, but I am having some troubles.
In particular, I am getting the following error:
gw1000: Invalid response to attempt 1 to send command 'CMD_READ_SENSOR_ID_NEW': Invalid command code in API response. Expected '60' (0x3C), received '99' (0x63)
This is what the test-driver returns:
$ PYTHONPATH=/home/weewx/bin python -m user.gw1000 --test-driver
Using configuration file /etc/weewx/piscina.conf
debug level is '1'

IP address to be obtained by discovery
Port number set to default port number

Interrogating GW1000 at 192.168.0.25: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 "/home/weewx/bin/user/gw1000.py", line 5906, in <module>
    main()
  File "/home/weewx/bin/user/gw1000.py", line 5900, in main
    direct_gw100.process_options()
  File "/home/weewx/bin/user/gw1000.py", line 4833, in process_options
    self.test_driver()
  File "/home/weewx/bin/user/gw1000.py", line 5647, in test_driver
    for pkt in driver.genLoopPackets():
  File "/home/weewx/bin/user/gw1000.py", line 2057, in genLoopPackets
    raise weewx.WeeWxIOError(e)
weewx.WeeWxIOError: Failed to obtain response to command 'CMD_READ_SENSOR_ID_NEW' after 3 attempts

Any ideas??
Thank you!

Rainer Lang

unread,
May 24, 2021, 3:35:59 PM5/24/21
to anc...@gmail.com, weewx-user

The WN30 is just an extra temperature sensor and belongs to the WH31 extra sensor group - only it measures only temperature and not humidity.
As it is primarily meant for measuring water temperature, humidity will be always 100% and therefore measuring it makes little sense.

But it works just like other WH31 extra T/H sensors. I have one in my collection of WH31 sensors and weewx processes it without any problem.

Is there a special reason why your weewx configuration file is named piscina.conf and not weewx.conf ?
Has weewx been told to use piscina.conf instead of weewx.conf (default) in the respective files ?

Can you please provide a complete syslog starting from the weewx launch until it either terminates itself or you do so by issuing the stop command !?
Also, your weewx.conf (piscina.conf) would be helpful (you can/should remove passwords and API-keys if you use any there)

If you so far only started the driver, can you just configure weewx as in the GW1000 driver description in the weewx.conf file (/etc/weewx/weewx.conf),
and start weewx - and provide the logs and the weewx.conf file !?

Then we can have a better understanding what going on and what's potential going wrong here.

--
You received this message because you are subscribed to the Google Groups "weewx-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to weewx-user+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/weewx-user/2f6e835e-dbcd-4d71-bcee-cf431475ccd4n%40googlegroups.com.

anc...@gmail.com

unread,
May 24, 2021, 3:55:03 PM5/24/21
to weewx-user
Hi Lang,
thank you for answering. So, the configuration file is named 'piscina.conf' because I am using WeeWX in multi mode, and each station has its personal configuration file. In the specific case, I'm using the WN30 sensor for measuring a pole water temperature. Here is the complete log:
May 24 21:44:31 raspberrypi weewx-piscina[2019]: engine: Initializing weewx version 3.9.2
May 24 21:44:31 raspberrypi weewx-piscina[2019]: engine: Using Python 2.7.16 (default, Oct 10 2019, 22:02:15) #012[GCC 8.3.0]
May 24 21:44:31 raspberrypi weewx-piscina[2019]: engine: Platform Linux-5.4.51+-armv6l-with-debian-10.4
May 24 21:44:31 raspberrypi weewx-piscina[2019]: engine: Locale is 'en_GB.UTF-8'
May 24 21:44:31 raspberrypi weewx-piscina[2019]: engine: pid file is /var/run/weewx-piscina.pid
May 24 21:44:31 raspberrypi weewx-piscina[2023]: engine: Using configuration file /etc/weewx/piscina.conf
May 24 21:44:31 raspberrypi weewx-piscina[2023]: engine: Debug is 1
May 24 21:44:31 raspberrypi weewx-piscina[2023]: engine: Initializing engine
May 24 21:44:31 raspberrypi weewx-piscina[2023]: engine: Loading station type GW1000 (user.gw1000)
May 24 21:44:34 raspberrypi weewx-piscina[2023]: gw1000: Failed to obtain response to attempt 1 to send command 'CMD_READ_STATION_MAC': timed out
May 24 21:44:44 raspberrypi weewx-piscina[2023]: gw1000: field map is {'co2': 'co2', 'co2_24h_avg': 'co2_24h_avg', 'dateTime': 'datetime', 'daymaxwind': 'daymaxwind', 'dayRain': 'rainday', 'dewpoint': 'dewpoint', 'extraHumid1': 'humid1', 'extraHumid2': 'humid2', 'extraHumid3': 'humid3', 'extraHumid4': 'humid4', 'extraHumid5': 'humid5', 'extraHumid6': 'humid6', 'extraHumid7': 'humid7', 'extraHumid8': 'humid8', 'extraHumid17': 'humid17', 'extraTemp1': 'temp1', 'extraTemp2': 'temp2', 'extraTemp3': 'temp3', 'extraTemp4': 'temp4', 'extraTemp5': 'temp5', 'extraTemp6': 'temp6', 'extraTemp7': 'temp7', 'extraTemp8': 'temp8', 'extraTemp9': 'temp9', 'extraTemp10': 'temp10', 'extraTemp11': 'temp11', 'extraTemp12': 'temp12', 'extraTemp13': 'temp13', 'extraTemp14': 'temp14', 'extraTemp15': 'temp15', 'extraTemp16': 'temp16', 'extraTemp17': 'temp17', 'heatindex': 'heatindex', 'hourRain': 'rainhour', 'inHumidity': 'inhumid', 'inTemp': 'intemp', 'leafWet1': 'leafwet1', 'leafWet2': 'leafwet2', 'leafWet3': 'leafwet3', 'leafWet4': 'leafwet4', 'leafWet5': 'leafwet5', 'leafWet6': 'leafwet6', 'leafWet7': 'leafwet7', 'leafWet8': 'leafwet8', 'leak1': 'leak1', 'leak2': 'leak2', 'leak3': 'leak3', 'leak4': 'leak4', 'lightning_distance': 'lightningdist', 'lightning_last_det_time': 'lightningdettime', 'lightning_strike_count': 'lightning_strike_count', 'lightningcount': 'lightningcount', 'luminosity': 'light', 'monthRain': 'rainmonth', 'outHumidity': 'outhumid', 'outTemp': 'outtemp', 'pm2_5': 'pm251', 'pm2_51_24h_avg': 'pm251_24h_avg', 'pm2_52': 'pm252', 'pm2_52_24h_avg': 'pm252_24h_avg', 'pm2_53': 'pm253', 'pm2_53_24h_avg': 'pm253_24h_avg', 'pm2_54': 'pm254', 'pm2_54_24h_avg': 'pm254_24h_avg', 'pm2_55': 'pm255', 'pm2_55_24h_avg': 'pm255_24h_avg', 'pm10': 'pm10', 'pm10_24h_avg': 'pm10_24h_avg', 'pressure': 'absbarometer', 'rain': 'rain', 'rainRate': 'rainrate', 'relbarometer': 'relbarometer', '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', 'stormRain': 'rainevent', 'totalRain': 'raintotals', 'UV': 'uvi', 'uvradiation': 'uv', 'weekRain': 'rainweek', 'wh25_batt': 'wh25_batt', 'wh25_sig': 'wh25_sig', 'wh26_batt': 'wh26_batt', 'wh26_sig': 'wh26_sig', 'wh31_ch1_batt': 'wh31_ch1_batt', 'wh31_ch1_sig': 'wh31_ch1_sig', 'wh31_ch2_batt': 'wh31_ch2_batt', 'wh31_ch2_sig': 'wh31_ch2_sig', 'wh31_ch3_batt': 'wh31_ch3_batt', 'wh31_ch3_sig': 'wh31_ch3_sig', 'wh31_ch4_batt': 'wh31_ch4_batt', 'wh31_ch4_sig': 'wh31_ch4_sig', 'wh31_ch5_batt': 'wh31_ch5_batt', 'wh31_ch5_sig': 'wh31_ch5_sig', 'wh31_ch6_batt': 'wh31_ch6_batt', 'wh31_ch6_sig': 'wh31_ch6_sig', 'wh31_ch7_batt': 'wh31_ch7_batt', 'wh31_ch7_sig': 'wh31_ch7_sig', 'wh31_ch8_batt': 'wh31_ch8_batt', 'wh31_ch8_sig': 'wh31_ch8_sig', 'wh35_ch1_batt': 'wh35_ch1_batt', 'wh35_ch1_sig': 'wh35_ch1_sig', 'wh35_ch2_batt': 'wh35_ch2_batt', 'wh35_ch2_sig': 'wh35_ch2_sig', 'wh35_ch3_batt': 'wh35_ch3_batt', 'wh35_ch3_sig': 'wh35_ch3_sig', 'wh35_ch4_batt': 'wh35_ch4_batt', 'wh35_ch4_sig': 'wh35_ch4_sig', 'wh35_ch5_batt': 'wh35_ch5_batt', 'wh35_ch5_sig': 'wh35_ch5_sig', 'wh35_ch6_batt': 'wh35_ch6_batt', 'wh35_ch6_sig': 'wh35_ch6_sig', 'wh35_ch7_batt': 'wh35_ch7_batt', 'wh35_ch7_sig': 'wh35_ch7_sig', 'wh35_ch8_batt': 'wh35_ch8_batt', 'wh35_ch8_sig': 'wh35_ch8_sig', 'wh40_batt': 'wh40_batt', 'wh40_sig': 'wh40_sig', 'wh41_ch1_batt': 'wh41_ch1_batt', 'wh41_ch1_sig': 'wh41_ch1_sig', 'wh41_ch2_batt': 'wh41_ch2_batt', 'wh41_ch2_sig': 'wh41_ch2_sig', 'wh41_ch3_batt': 'wh41_ch3_batt', 'wh41_ch3_sig': 'wh41_ch3_sig', 'wh41_ch4_batt': 'wh41_ch4_batt', 'wh41_ch4_sig': 'wh41_ch4_sig', 'wh45_batt': 'wh45_batt', 'wh45_sig': 'wh45_sig', 'wh51_ch1_batt': 'wh51_ch1_batt', 'wh51_ch1_sig': 'wh51_ch1_sig', 'wh51_ch2_batt': 'wh51_ch2_batt', 'wh51_ch2_sig': 'wh51_ch2_sig', 'wh51_ch3_batt': 'wh51_ch3_batt', 'wh51_ch3_sig': 'wh51_ch3_sig', 'wh51_ch4_batt': 'wh51_ch4_batt', 'wh51_ch4_sig': 'wh51_ch4_sig', 'wh51_ch5_batt': 'wh51_ch5_batt', 'wh51_ch5_sig': 'wh51_ch5_sig', 'wh51_ch6_batt': 'wh51_ch6_batt', 'wh51_ch6_sig': 'wh51_ch6_sig', 'wh51_ch7_batt': 'wh51_ch7_batt', 'wh51_ch7_sig': 'wh51_ch7_sig', 'wh51_ch8_batt': 'wh51_ch8_batt', 'wh51_ch8_sig': 'wh51_ch8_sig', 'wh51_ch9_batt': 'wh51_ch9_batt', 'wh51_ch9_sig': 'wh51_ch9_sig', 'wh51_ch10_batt': 'wh51_ch10_batt', 'wh51_ch10_sig': 'wh51_ch10_sig', 'wh51_ch11_batt': 'wh51_ch11_batt', 'wh51_ch11_sig': 'wh51_ch11_sig', 'wh51_ch12_batt': 'wh51_ch12_batt', 'wh51_ch12_sig': 'wh51_ch12_sig', 'wh51_ch13_batt': 'wh51_ch13_batt', 'wh51_ch13_sig': 'wh51_ch13_sig', 'wh51_ch14_batt': 'wh51_ch14_batt', 'wh51_ch14_sig': 'wh51_ch14_sig', 'wh51_ch15_batt': 'wh51_ch15_batt', 'wh51_ch15_sig': 'wh51_ch15_sig', 'wh51_ch16_batt': 'wh51_ch16_batt', 'wh51_ch16_sig': 'wh51_ch16_sig', 'wh55_ch1_batt': 'wh55_ch1_batt', 'wh55_ch1_sig': 'wh55_ch1_sig', 'wh55_ch2_batt': 'wh55_ch2_batt', 'wh55_ch2_sig': 'wh55_ch2_sig', 'wh55_ch3_batt': 'wh55_ch3_batt', 'wh55_ch3_sig': 'wh55_ch3_sig', 'wh55_ch4_batt': 'wh55_ch4_batt', 'wh55_ch4_sig': 'wh55_ch4_sig', 'wh57_batt': 'wh57_batt', 'wh57_sig': 'wh57_sig', 'wh65_batt': 'wh65_batt', 'wh65_sig': 'wh65_sig', 'wh68_batt': 'wh68_batt', 'wh68_sig': 'wh68_sig', 'windchill': 'windchill', 'windDir': 'winddir', 'windGust': 'gustspeed', 'windSpeed': 'windspeed', 'ws80_batt': 'ws80_batt', 'ws80_sig': 'ws80_sig', 'yearRain': 'rainyear'}
May 24 21:44:44 raspberrypi weewx-piscina[2023]: gw1000: driver version is 0.3.1
May 24 21:44:44 raspberrypi weewx-piscina[2023]: gw1000: GW1000 address is 192.168.0.25:45000
May 24 21:44:44 raspberrypi weewx-piscina[2023]: gw1000: poll interval is 20 seconds
May 24 21:44:44 raspberrypi weewx-piscina[2023]: gw1000: max tries is 3, retry wait time is 10 seconds
May 24 21:44:44 raspberrypi weewx-piscina[2023]: gw1000: broadcast address is 255.255.255.255:46000, socket timeout is 2 seconds
May 24 21:44:44 raspberrypi weewx-piscina[2023]: engine: Loading service weewx.engine.StdTimeSynch
May 24 21:44:44 raspberrypi weewx-piscina[2023]: engine: Finished loading service weewx.engine.StdTimeSynch
May 24 21:44:44 raspberrypi weewx-piscina[2023]: engine: Loading service weewx.engine.StdConvert
May 24 21:44:44 raspberrypi weewx-piscina[2023]: engine: StdConvert target unit is 0x10
May 24 21:44:44 raspberrypi weewx-piscina[2023]: engine: Finished loading service weewx.engine.StdConvert
May 24 21:44:44 raspberrypi weewx-piscina[2023]: engine: Loading service weewx.engine.StdCalibrate
May 24 21:44:44 raspberrypi weewx-piscina[2023]: engine: Finished loading service weewx.engine.StdCalibrate
May 24 21:44:44 raspberrypi weewx-piscina[2023]: engine: Loading service weewx.engine.StdQC
May 24 21:44:44 raspberrypi weewx-piscina[2023]: engine: Finished loading service weewx.engine.StdQC
May 24 21:44:44 raspberrypi weewx-piscina[2023]: engine: Loading service weewx.wxservices.StdWXCalculate
May 24 21:44:44 raspberrypi weewx-piscina[2023]: wxcalculate: The following values will be calculated: barometer=software, windchill=prefer_hardware, dewpoint=prefer_hardware, appTemp=prefer_hardware, rainRate=prefer_hardware, windrun=prefer_hardware, heatindex=prefer_hardware, maxSolarRad=prefer_hardware, humidex=prefer_hardware, pressure=prefer_hardware, inDewpoint=prefer_hardware, ET=prefer_hardware, altimeter=prefer_hardware, cloudbase=prefer_hardware
May 24 21:44:44 raspberrypi weewx-piscina[2023]: wxcalculate: The following algorithms will be used for calculations: altimeter=aaNOAA, maxSolarRad=RS
May 24 21:44:44 raspberrypi weewx-piscina[2023]: engine: Finished loading service weewx.wxservices.StdWXCalculate
May 24 21:44:44 raspberrypi weewx-piscina[2023]: engine: Loading service weewx.engine.StdArchive
May 24 21:44:44 raspberrypi weewx-piscina[2023]: engine: Archive will use data binding wx_binding
May 24 21:44:44 raspberrypi weewx-piscina[2023]: engine: Record generation will be attempted in 'software'
May 24 21:44:44 raspberrypi weewx-piscina[2023]: engine: Using archive interval of 300 seconds (software record generation)
May 24 21:44:45 raspberrypi weewx-piscina[2023]: engine: Use LOOP data in hi/low calculations: 1
May 24 21:44:45 raspberrypi weewx-piscina[2023]: gw1000: Invalid response to attempt 1 to send command 'CMD_READ_SENSOR_ID_NEW': Invalid command code in API response. Expected '60' (0x3C), received '99' (0x63).
May 24 21:44:45 raspberrypi weewx-piscina[2023]: manager: Daily summary version is 2.0
May 24 21:44:45 raspberrypi weewx-piscina[2023]: engine: Using binding 'wx_binding' to database 'piscina.sdb'
May 24 21:44:45 raspberrypi weewx-piscina[2023]: manager: Starting backfill of daily summaries
May 24 21:44:45 raspberrypi weewx-piscina[2023]: engine: Finished loading service weewx.engine.StdArchive
May 24 21:44:45 raspberrypi weewx-piscina[2023]: engine: Loading service weewx.restx.StdStationRegistry
May 24 21:44:45 raspberrypi weewx-piscina[2023]: restx: StationRegistry: Registration not requested.
May 24 21:44:45 raspberrypi weewx-piscina[2023]: engine: Finished loading service weewx.restx.StdStationRegistry
May 24 21:44:45 raspberrypi weewx-piscina[2023]: engine: Loading service weewx.restx.StdWunderground
May 24 21:44:45 raspberrypi weewx-piscina[2023]: restx: Wunderground: Posting not enabled.
May 24 21:44:45 raspberrypi weewx-piscina[2023]: engine: Finished loading service weewx.restx.StdWunderground
May 24 21:44:45 raspberrypi weewx-piscina[2023]: engine: Loading service weewx.restx.StdPWSweather
May 24 21:44:45 raspberrypi weewx-piscina[2023]: restx: PWSweather: Posting not enabled.
May 24 21:44:45 raspberrypi weewx-piscina[2023]: engine: Finished loading service weewx.restx.StdPWSweather
May 24 21:44:45 raspberrypi weewx-piscina[2023]: engine: Loading service weewx.restx.StdCWOP
May 24 21:44:45 raspberrypi weewx-piscina[2023]: restx: CWOP: Posting not enabled.
May 24 21:44:45 raspberrypi weewx-piscina[2023]: engine: Finished loading service weewx.restx.StdCWOP
May 24 21:44:45 raspberrypi weewx-piscina[2023]: engine: Loading service weewx.restx.StdWOW
May 24 21:44:45 raspberrypi weewx-piscina[2023]: restx: WOW: Posting not enabled.
May 24 21:44:45 raspberrypi weewx-piscina[2023]: engine: Finished loading service weewx.restx.StdWOW
May 24 21:44:45 raspberrypi weewx-piscina[2023]: engine: Loading service weewx.restx.StdAWEKAS
May 24 21:44:45 raspberrypi weewx-piscina[2023]: restx: AWEKAS: Posting not enabled.
May 24 21:44:45 raspberrypi weewx-piscina[2023]: engine: Finished loading service weewx.restx.StdAWEKAS
May 24 21:44:45 raspberrypi weewx-piscina[2023]: engine: Loading service weewx.engine.StdPrint
May 24 21:44:45 raspberrypi weewx-piscina[2023]: engine: Finished loading service weewx.engine.StdPrint
May 24 21:44:45 raspberrypi weewx-piscina[2023]: engine: Loading service weewx.engine.StdReport
May 24 21:44:45 raspberrypi weewx-piscina[2023]: engine: Finished loading service weewx.engine.StdReport
May 24 21:44:45 raspberrypi weewx-piscina[2023]: engine: Starting up weewx version 3.9.2
May 24 21:44:45 raspberrypi weewx-piscina[2023]: engine: Station does not support reading the time
May 24 21:44:45 raspberrypi weewx-piscina[2023]: engine: Starting main packet loop.
May 24 21:44:55 raspberrypi weewx-piscina[2023]: gw1000: Invalid response to attempt 2 to send command 'CMD_READ_SENSOR_ID_NEW': Invalid command code in API response. Expected '60' (0x3C), received '99' (0x63).
May 24 21:45:05 raspberrypi weewx-piscina[2023]: gw1000: Invalid response to attempt 3 to send command 'CMD_READ_SENSOR_ID_NEW': Invalid command code in API response. Expected '60' (0x3C), received '99' (0x63).
May 24 21:45:05 raspberrypi weewx-piscina[2023]: gw1000: Failed to obtain response to command 'CMD_READ_SENSOR_ID_NEW' after 3 attempts
May 24 21:45:05 raspberrypi weewx-piscina[2023]: gw1000: IP address specified in 'weewx.conf', re-discovery was not attempted
May 24 21:45:05 raspberrypi weewx-piscina[2023]: gw1000: Unable to obtain live sensor data
May 24 21:45:05 raspberrypi weewx-piscina[2023]: gw1000: Next update in 20 seconds
May 24 21:45:05 raspberrypi weewx-piscina[2023]: engine: Main loop exiting. Shutting engine down.
May 24 21:45:06 raspberrypi weewx-piscina[2023]: gw1000: Gw1000Collector thread has been terminated
May 24 21:45:06 raspberrypi weewx-piscina[2023]: engine: Caught WeeWxIOError: Failed to obtain response to command 'CMD_READ_SENSOR_ID_NEW' after 3 attempts
May 24 21:45:06 raspberrypi weewx-piscina[2023]:     ****  Waiting 60 seconds then retrying...

And here the configuration file (piscina.conf):

# WEEWX CONFIGURATION FILE
#
# Copyright (c) 2009-2015 Tom Keffer <tke...@gmail.com>
# See the file LICENSE.txt for your rights.

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

# This section is for general configuration information.

# Set to 1 for extra debug info, otherwise comment it out or set to zero
debug = 1

# Root directory of the weewx data file hierarchy for this station
WEEWX_ROOT = /home/weewx

# How long to wait before timing out a socket (FTP, HTTP) connection
socket_timeout = 200

# Do not modify this. It is used when installing and updating weewx.
version = 3.9.2

loop_on_init = 1

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

#   This section is for information about the station.

[Station]
    
    # Description of the station location
    location = Termometro acqua piscina
    
    # Latitude and longitude in decimal degrees
    latitude = 41.446295
    longitude = 12.622721
    
    # Altitude of the station, with unit it is in. This is downloaded from
    # from the station if the hardware supports it.
    altitude = 10, meter    # Choose 'foot' or 'meter' for unit
    
    # Set to type of station hardware. There must be a corresponding stanza
    # in this file with a 'driver' parameter indicating the driver to be used.
    station_type = GW1000
    
    # If you have a website, you may specify an URL
    #station_url = http://www.example.com
    
    # The start of the rain year (1=January; 10=October, etc.). This is
    # downloaded from the station if the hardware supports it.
    rain_year_start = 1
    
    # Start of week (0=Monday, 6=Sunday)
    week_start = 0

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

#   This section is for uploading data to Internet sites

[StdRESTful]
    
    [[StationRegistry]]
        # To register this weather station with weewx, set this to true
        register_this_station = false
    
    [[AWEKAS]]
        # This section is for configuring posts to AWEKAS.
        
        # If you wish to do this, set the option 'enable' to true,
        # and specify a username and password.
        # To guard against parsing errors, put the password in quotes.
        enable = false
        username = replace_me
        password = replace_me
    
    [[CWOP]]
        # This section is for configuring posts to CWOP.
        
        # If you wish to do this, set the option 'enable' to true,
        # and specify the station ID (e.g., CW1234).
        enable = false
        station = replace_me
    
    # If this is an APRS (radio amateur) station, uncomment
    # the following and replace with a passcode (e.g., 12345).
    #passcode = replace_me (APRS stations only)
    
    [[PWSweather]]
        # This section is for configuring posts to PWSweather.com.
        
        # If you wish to do this, set the option 'enable' to true,
        # and specify a station and password.
        # To guard against parsing errors, put the password in quotes.
        enable = false
        station = replace_me
        password = replace_me
    
    [[WOW]]
        # This section is for configuring posts to WOW.
        
        # If you wish to do this, set the option 'enable' to true,
        # and specify a station and password.
        # To guard against parsing errors, put the password in quotes.
        enable = false
        station = replace_me
        password = replace_me
    
    [[Wunderground]]
        # This section is for configuring posts to the Weather Underground.
        
        # If you wish to do this, set the option 'enable' to true,
        # and specify a station (e.g., 'KORHOODR3') and password.
        # To guard against parsing errors, put the password in quotes.
        enable = false
        station = replace_me
        password = replace_me
        
        # Set the following to True to have weewx use the WU "Rapidfire"
        # protocol. Not all hardware can support it. See the User's Guide.
        rapidfire = False

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

#   This section specifies what reports, using which skins, to generate.

[StdReport]
    
    # Where the skins reside, relative to WEEWX_ROOT
    SKIN_ROOT = skins
    
    # Where the generated reports should go, relative to WEEWX_ROOT
    HTML_ROOT = public_html/piscina
    
    # The database binding indicates which data should be used in reports.
    data_binding = wx_binding
    
    # Each of the following subsections defines a report that will be run.
    
    [[StandardReport]]
        # See the customizing guide to change the units, plot types and line
        # colors, modify the fonts, display additional sensor data, and other
        # customizations. Many of those changes can be made here by overriding
        # parameters, or by modifying templates within the skin itself.
        
        # The StandardReport uses the 'Standard' skin, which contains the
        # images, templates and plots for the report.
        skin = Standard
        [[[Units]]]
            [[[[Groups]]]]
                group_altitude = meter
                group_speed2 = km_per_hour2
                group_pressure = mbar
                group_rain = mm
                group_rainrate = mm_per_hour
                group_temperature = degree_C
                group_degree_day = degree_C_day
                group_speed = km_per_hour
    
    [[FTP]]
        # FTP'ing the results to a webserver is treated as just another report,
        # albeit one with an unusual report generator!
        skin = Ftp
        
        # If you wish to use FTP, uncomment and fill out the next four lines.
        # Use quotes around passwords to guard against parsing errors.
        user = xxx
        password = xxx
        server = xxx
        path = xxx
        
        # Set to True for an FTP over TLS (FTPS) connection. Not all servers
        # support this.
        secure_ftp = False
        
        # To upload files from something other than what HTML_ROOT is set
        # to above, specify a different HTML_ROOT here.
        #HTML_ROOT = public_html
        
        # Most FTP servers use port 21
        port = 21
        
        # Set to 1 to use passive mode, zero for active mode
        passive = 1
    
    [[RSYNC]]
        # rsync'ing to a webserver is treated as just another report
        skin = Rsync
        
        # If you wish to use rsync, you must configure passwordless ssh using
        # public/private key authentication from the user account that weewx
        # runs as to the user account on the remote machine where the files
        # will be copied.
        #
        # The server, user, and path determine where files will be sent.
        # The server is the server name, such as www.threefools.org
        # The user is the username, such as weewx
        # The path is the destination directory, such as /var/www/html/weather
        # Be sure that the user has write permissions on the destination!
        #server = replace_me
        #user = replace_me
        #path = replace_me
        
        # Rsync can be configured to remove files from the remote server if
        # they don't exist under HTML_ROOT locally. USE WITH CAUTION: if you
        # make a mistake in the remote path, you could could unintentionally
        # cause unrelated files to be deleted. Set to 1 to enable remote file
        # deletion, zero to allow files to accumulate remotely.
        delete = 0

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

#   This service acts as a filter, converting the unit system coming from
#   the hardware to a unit system in the database.

[StdConvert]
    
    # The target_unit affects only the unit system in the database. Once
    # chosen it cannot be changed without converting the entire database.
    # Modification of target_unit after starting weewx will result in
    # corrupt data - the database will contain a mix of US and METRIC data.
    #
    # The value of target_unit does not affect the unit system for
    # reporting - reports can display US, Metric, or any combination of units.
    #
    # In most cases, target_unit should be left as the default: US
    #
    # In particular, those migrating from a standard wview installation
    # should use US since that is what the wview database contains.
    
    # DO NOT MODIFY THIS VALUE UNLESS YOU KNOW WHAT YOU ARE DOING!
    target_unit = METRIC    # Options are 'US', 'METRICWX', or 'METRIC'

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

#   This section can adjust data using calibration expressions.

[StdCalibrate]
    
    [[Corrections]]
        # For each type, an arbitrary calibration expression can be given. 
        # It should be in the units defined in the StdConvert section.
        # Example:
        foo = foo + 0.2

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

#   This section is for quality control checks. If units are not specified,
#   values must be in the units defined in the StdConvert section.

[StdQC]
    
    [[MinMax]]
        barometer = 26, 32.5, inHg
        outTemp = -40, 120, degree_F
        inTemp = 10, 120, degree_F
        outHumidity = 0, 100
        inHumidity = 0, 100
        windSpeed = 0, 120, mile_per_hour
        pressure = 24, 34.5, inHg

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

#   This section controls the origin of derived values.

[StdWXCalculate]
    
    ignore_zero_wind = False
    
    [[Calculations]]
        # Derived quantities are calculated by this service. Possible values are:
        #  hardware        - use the value provided by hardware
        #  software        - use the value calculated by weewx
        #  prefer_hardware - use value provide by hardware if available,
        #                      otherwise use value calculated by weewx
        
        pressure = prefer_hardware
        barometer = prefer_hardware
        altimeter = prefer_hardware
        windchill = prefer_hardware
        heatindex = prefer_hardware
        dewpoint = prefer_hardware
        inDewpoint = prefer_hardware
        rainRate = prefer_hardware

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

#   For hardware that supports it, this section controls how often the
#   onboard clock gets updated.

[StdTimeSynch]
    
    # How often to check the weather station clock for drift (in seconds)
    clock_check = 14400
    
    # How much it can drift before we will correct it (in seconds)
    max_drift = 5

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

#   This section is for configuring the archive service.

[StdArchive]
    
    # If the station hardware supports data logging then the archive interval
    # will be downloaded from the station. Otherwise, specify it (in seconds).
    archive_interval = 300
    
    # If possible, new archive records are downloaded from the station
    # hardware. If the hardware does not support this, then new archive
    # records will be generated in software.
    # Set the following to "software" to force software record generation.
    record_generation = software
    
    # Whether to include LOOP data in hi/low statistics
    loop_hilo = True
    
    # The data binding used to save archive records
    data_binding = wx_binding

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

#   This section binds a data store to a database.

[DataBindings]
    
    [[wx_binding]]
        # The database must match one of the sections in [Databases].
        # This is likely to be the only option you would want to change.
        database = archive_sqlite
        # The name of the table within the database
        table_name = archive
        # The manager handles aggregation of data for historical summaries
        manager = weewx.wxmanager.WXDaySummaryManager
        # The schema defines the structure of the database.
        # It is *only* used when the database is created.
        schema = schemas.wview.schema

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

#   This section defines various databases.

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

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

#   This section defines defaults for the different types of databases.

[DatabaseTypes]
    
    # Defaults for SQLite databases
    [[SQLite]]
        driver = weedb.sqlite
        # Directory in which the database files are located
        SQLITE_ROOT = %(WEEWX_ROOT)s/archive
    
    # Defaults for MySQL databases
    [[MySQL]]
        driver = weedb.mysql
        # The host where the database is located
        host = localhost
        # The user name for logging in to the host
        user = weewx
        # The password for the user name (quotes guard against parsing errors)
        password = weewx

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

#   This section configures the internal weewx engine.

[Engine]
    
    [[Services]]
        # This section specifies the services that should be run. They are
        # grouped by type, and the order of services within each group
        # determines the order in which the services will be run.
        prep_services = weewx.engine.StdTimeSynch
        data_services = user.gw1000.Gw1000Service
        process_services = weewx.engine.StdConvert, weewx.engine.StdCalibrate, weewx.engine.StdQC, weewx.wxservices.StdWXCalculate
        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
        report_services = weewx.engine.StdPrint, weewx.engine.StdReport

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

# Options for extension 'GW1000'
[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

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

# Options for extension '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
    
##############################################################################

#examples of json    
#{"time" : "2019-09-13 15:44:52", "brand" : "OS", "model" : "THGR810", "id" : 254, "channel" : 1, "battery" : "OK", "temperature_C" : 27.800, "humidity" : 40}
#{"time" : "2019-09-13 15:45:01", "brand" : "OS", "model" : "THGR810", "id" : 71, "channel" : 2, "battery" : "OK", "temperature_C" : 27.200, "humidity" : 46}

anc...@gmail.com

unread,
May 24, 2021, 4:11:38 PM5/24/21
to weewx-user
If this could be helpful, using a SDR with rtl_433 I get packets like this:

$ rtl_433 -f 868330000 -G 4 -v

time      : 2021-05-24 22:10:03
model     : AmbientWeather-WH31E                   id        : 202
Channel   : 1            Battery   : 0             Temperature: 22.5 C       Humidity  : 255 %         Extra Data: cd00000000    Integrity : CRC

gjr80

unread,
May 24, 2021, 5:17:23 PM5/24/21
to weewx-user
Hi,

When the driver is interrogating your GW1000 the GW1000 is responding with some control codes that differ from those documented in the GW1000 API. Could you provide the firmware version of your GW1000 as reported in the WS View app. It would also help to see some of the raw data coming back from the GW1000. Could you run the following commands:

$ PYTHONPATH=/home/weewx/bin python -m user.gw1000 --firmware-version --debug=3

and

$ PYTHONPATH=/home/weewx/bin python -m user.gw1000 --live-data --debug=3

The above commands should result in a number of lines of debug output appearing in the WeeWX log. Could you provide a copy of the entire log output resulting from those two commands as well as the console output.

Gary

anc...@gmail.com

unread,
May 24, 2021, 6:21:51 PM5/24/21
to weewx-user

Hi Gary,
I'm glad to inform you that I solved the problem upgrading the firmware of the GW1000 directly from the app. Before this upgrade it was running on firmware version GW1000A_V1.5.4, while now it is GW1000A_V1.6.6.
Unfortunately I saw your message after upgrading and so I could not try your commands. Anyway, what happened should be useful for anyone in the future having this issue.
Thank you!

gjr80

unread,
May 24, 2021, 8:44:17 PM5/24/21
to weewx-user
OK, that is an old firmware and the command that was failing is a (relatively) recently implemented one.

The WS View app should nag you to upgrade, but I guess if you don’t regularly use the app it could be missed. Might look at what the driver can do check and advise.

Gary

William Borrelli

unread,
Aug 8, 2021, 8:56:59 PM8/8/21
to weewx-user
OK, I am new to this GW1000 and Ambient WS-2000 thingy.
I stumbled across this thread while trying to figure out why I am having problems.

I would truly appreciate some help figuring this one out.

Thanks.

-Bill


First the initial trouble shooting you will ask for.

=============================================================================================================================================
----@raspberrypi:/usr/share/weewx# PYTHONPATH=/usr/share/weewx python -m user.gw1000 --live-data --ip-address=10.0.0.51 --debug=3
Using configuration file /etc/weewx/weewx.conf
debug level is '3'

IP address obtained from command line options
Port number obtained from station config

Interrogating GW1000 at 10.0.0.51:45000

GW1000 live sensor data (2021-08-08 20:49:26 EDT (1628470166)): absbarometer: 994.7hPa, daymaxwind: 5kph, gustspeed: 0kph, inhumid: 64%, intemp: 28.4°C, light: 0lx, outhumid: 76%, outtemp: 24.9°C, rainday: 0.0mm, rainevent: 0.0mm, rainmonth: 0.0mm, rainrate: 0.0mm/h, rainweek: 0.0mm, rainyear: 0.0mm, relbarometer: 994.7hPa, uv: 0W/m², uvi: 0.0, wh65_batt: 0, wh65_sig: 3, winddir: 130°, windspeed: 0kph
=============================================================================================================================================
------@raspberrypi:/usr/share/weewx# PYTHONPATH=/usr/share/weewx python -m user.gw1000 --firmware-version --debug=3
Using configuration file /etc/weewx/weewx.conf
debug level is '3'

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

Interrogating GW1000 at 10.0.0.51:45000

GW1000 firmware version string: GW1000B_V1.6.8

=============================================================================================================================================
And then what I am seeing in the messages log after systemctl restart weewx  (apt install version)

Aug  8 20:53:57 raspberrypi weewx[14209] INFO __main__: Initializing weewx version 4.5.1
Aug  8 20:53:57 raspberrypi weewx[14209] INFO __main__: Using Python 3.7.3 (default, Jan 22 2021, 20:04:44) #012[GCC 8.3.0]
Aug  8 20:53:57 raspberrypi weewx[14209] INFO __main__: Platform Linux-5.10.52-v7+-armv7l-with-debian-10.10
Aug  8 20:53:57 raspberrypi weewx[14209] INFO __main__: Locale is 'en_US.UTF-8'
Aug  8 20:53:57 raspberrypi weewx[14209] INFO __main__: PID file is /var/run/weewx.pid
Aug  8 20:53:57 raspberrypi weewx[14214] INFO __main__: Using configuration file /etc/weewx/weewx.conf
Aug  8 20:53:57 raspberrypi weewx[14214] INFO __main__: Debug is 1
Aug  8 20:53:57 raspberrypi weewx[14214] INFO weewx.engine: Loading station type GW1000 (user.gw1000)
Aug  8 20:53:57 raspberrypi weewx[14214] INFO user.gw1000: field map is {'co2': 'co2', 'co2_24h_avg': 'co2_24h_avg', 'dateTime': 'datetime', 'daymaxwind': 'daymaxwind', 'dayRain': 'rainday', 'dewpoint': 'dewpoint', 'extraHumid1': 'humid1', 'extraHumid2': 'humid2', 'extraHumid3': 'humid3', 'extraHumid4': 'humid4', 'extraHumid5': 'humid5', 'extraHumid6': 'humid6', 'extraHumid7': 'humid7', 'extraHumid8': 'humid8', 'extraHumid17': 'humid17', 'extraTemp1': 'temp1', 'extraTemp2': 'temp2', 'extraTemp3': 'temp3', 'extraTemp4': 'temp4', 'extraTemp5': 'temp5', 'extraTemp6': 'temp6', 'extraTemp7': 'temp7', 'extraTemp8': 'temp8', 'extraTemp9': 'temp9', 'extraTemp10': 'temp10', 'extraTemp11': 'temp11', 'extraTemp12': 'temp12', 'extraTemp13': 'temp13', 'extraTemp14': 'temp14', 'extraTemp15': 'temp15', 'extraTemp16': 'temp16', 'extraTemp17': 'temp17', 'heatindex': 'heatindex', 'hourRain': 'rainhour', 'inHumidity': 'inhumid', 'inTemp': 'intemp', 'leafWet1': 'leafwet1', 'leafWet2': 'leafwet2', 'leafWet3': 'leafwet3', 'leafWet4': 'leafwet4', 'leafWet5': 'leafwet5', 'leafWet6': 'leafwet6', 'leafWet7': 'leafwet7', 'leafWet8': 'leafwet8', 'leak1': 'leak1', 'leak2': 'leak2', 'leak3': 'leak3', 'leak4': 'leak4', 'lightning_distance': 'lightningdist', 'lightning_last_det_time': 'lightningdettime', 'lightning_strike_count': 'lightning_strike_count', 'lightningcount': 'lightningcount', 'luminosity': 'light', 'monthRain': 'rainmonth', 'outHumidity': 'outhumid', 'outTemp': 'outtemp', 'pm2_5': 'pm251', 'pm2_51_24h_avg': 'pm251_24h_avg', 'pm2_52': 'pm252', 'pm2_52_24h_avg': 'pm252_24h_avg', 'pm2_53': 'pm253', 'pm2_53_24h_avg': 'pm253_24h_avg', 'pm2_54': 'pm254', 'pm2_54_24h_avg': 'pm254_24h_avg', 'pm2_55': 'pm255', 'pm2_55_24h_avg': 'pm255_24h_avg', 'pm10': 'pm10', 'pm10_24h_avg': 'pm10_24h_avg', 'pressure': 'absbarometer', 'rain': 'rain', 'rainRate': 'rainrate', 'relbarometer': 'relbarometer', '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', 'stormRain': 'rainevent', 'totalRain': 'raintotals', 'UV': 'uvi', 'uvradiation': 'uv', 'weekRain': 'rainweek', 'wh25_batt': 'wh25_batt', 'wh25_sig': 'wh25_sig', 'wh26_batt': 'wh26_batt', 'wh26_sig': 'wh26_sig', 'wh31_ch1_batt': 'wh31_ch1_batt', 'wh31_ch1_sig': 'wh31_ch1_sig', 'wh31_ch2_batt': 'wh31_ch2_batt', 'wh31_ch2_sig': 'wh31_ch2_sig', 'wh31_ch3_batt': 'wh31_ch3_batt', 'wh31_ch3_sig': 'wh31_ch3_sig', 'wh31_ch4_batt': 'wh31_ch4_batt', 'wh31_ch4_sig': 'wh31_ch4_sig', 'wh31_ch5_batt': 'wh31_ch5_batt', 'wh31_ch5_sig': 'wh31_ch5_sig', 'wh31_ch6_batt': 'wh31_ch6_batt', 'wh31_ch6_sig': 'wh31_ch6_sig', 'wh31_ch7_batt': 'wh31_ch7_batt', 'wh31_ch7_sig': 'wh31_ch7_sig', 'wh31_ch8_batt': 'wh31_ch8_batt', 'wh31_ch8_sig': 'wh31_ch8_sig', 'wh35_ch1_batt': 'wh35_ch1_batt', 'wh35_ch1_sig': 'wh35_ch1_sig', 'wh35_ch2_batt': 'wh35_ch2_batt', 'wh35_ch2_sig': 'wh35_ch2_sig', 'wh35_ch3_batt': 'wh35_ch3_batt', 'wh35_ch3_sig': 'wh35_ch3_sig', 'wh35_ch4_batt': 'wh35_ch4_batt', 'wh35_ch4_sig': 'wh35_ch4_sig', 'wh35_ch5_batt': 'wh35_ch5_batt', 'wh35_ch5_sig': 'wh35_ch5_sig', 'wh35_ch6_batt': 'wh35_ch6_batt', 'wh35_ch6_sig': 'wh35_ch6_sig', 'wh35_ch7_batt': 'wh35_ch7_batt', 'wh35_ch7_sig': 'wh35_ch7_sig', 'wh35_ch8_batt': 'wh35_ch8_batt', 'wh35_ch8_sig': 'wh35_ch8_sig', 'wh40_batt': 'wh40_batt', 'wh40_sig': 'wh40_sig', 'wh41_ch1_batt': 'wh41_ch1_batt', 'wh41_ch1_sig': 'wh41_ch1_sig', 'wh41_ch2_batt': 'wh41_ch2_batt', 'wh41_ch2_sig': 'wh41_ch2_sig', 'wh41_ch3_batt': 'wh41_ch3_batt', 'wh41_ch3_sig': 'wh41_ch3_sig', 'wh41_ch4_batt': 'wh41_ch4_batt', 'wh41_ch4_sig': 'wh41_ch4_sig', 'wh45_batt': 'wh45_batt', 'wh45_sig': 'wh45_sig', 'wh51_ch1_batt': 'wh51_ch1_batt', 'wh51_ch1_sig': 'wh51_ch1_sig', 'wh51_ch2_batt': 'wh51_ch2_batt', 'wh51_ch2_sig': 'wh51_ch2_sig', 'wh51_ch3_batt': 'wh51_ch3_batt', 'wh51_ch3_sig': 'wh51_ch3_sig', 'wh51_ch4_batt': 'wh51_ch4_batt', 'wh51_ch4_sig': 'wh51_ch4_sig', 'wh51_ch5_batt': 'wh51_ch5_batt', 'wh51_ch5_sig': 'wh51_ch5_sig', 'wh51_ch6_batt': 'wh51_ch6_batt', 'wh51_ch6_sig': 'wh51_ch6_sig', 'wh51_ch7_batt': 'wh51_ch7_batt', 'wh51_ch7_sig': 'wh51_ch7_sig', 'wh51_ch8_batt': 'wh51_ch8_batt', 'wh51_ch8_sig': 'wh51_ch8_sig', 'wh51_ch9_batt': 'wh51_ch9_batt', 'wh51_ch9_sig': 'wh51_ch9_sig', 'wh51_ch10_batt': 'wh51_ch10_batt', 'wh51_ch10_sig': 'wh51_ch10_sig', 'wh51_ch11_batt': 'wh51_ch11_batt', 'wh51_ch11_sig': 'wh51_ch11_sig', 'wh51_ch12_batt': 'wh51_ch12_batt', 'wh51_ch12_sig': 'wh51_ch12_sig', 'wh51_ch13_batt': 'wh51_ch13_batt', 'wh51_ch13_sig': 'wh51_ch13_sig', 'wh51_ch14_batt': 'wh51_ch14_batt', 'wh51_ch14_sig': 'wh51_ch14_sig', 'wh51_ch15_batt': 'wh51_ch15_batt', 'wh51_ch15_sig': 'wh51_ch15_sig', 'wh51_ch16_batt': 'wh51_ch16_batt', 'wh51_ch16_sig': 'wh51_ch16_sig', 'wh55_ch1_batt': 'wh55_ch1_batt', 'wh55_ch1_sig': 'wh55_ch1_sig', 'wh55_ch2_batt': 'wh55_ch2_batt', 'wh55_ch2_sig': 'wh55_ch2_sig', 'wh55_ch3_batt': 'wh55_ch3_batt', 'wh55_ch3_sig': 'wh55_ch3_sig', 'wh55_ch4_batt': 'wh55_ch4_batt', 'wh55_ch4_sig': 'wh55_ch4_sig', 'wh57_batt': 'wh57_batt', 'wh57_sig': 'wh57_sig', 'wh65_batt': 'wh65_batt', 'wh65_sig': 'wh65_sig', 'wh68_batt': 'wh68_batt', 'wh68_sig': 'wh68_sig', 'windchill': 'windchill', 'windDir': 'winddir', 'windGust': 'gustspeed', 'windSpeed': 'windspeed', 'ws80_batt': 'ws80_batt', 'ws80_sig': 'ws80_sig', 'yearRain': 'rainyear'}
Aug  8 20:53:57 raspberrypi weewx[14214] INFO user.gw1000: driver version is 0.3.1
Aug  8 20:53:57 raspberrypi weewx[14214] INFO user.gw1000: GW1000 address is 10.0.0.51:45000
Aug  8 20:53:57 raspberrypi weewx[14214] INFO user.gw1000: poll interval is 60 seconds
Aug  8 20:53:57 raspberrypi weewx[14214] INFO weewx.engine: StdConvert target unit is 0x1
Aug  8 20:53:57 raspberrypi weewx[14214] INFO weewx.engine: Archive will use data binding wx_binding
Aug  8 20:53:57 raspberrypi weewx[14214] INFO weewx.engine: Record generation will be attempted in 'software'
Aug  8 20:53:57 raspberrypi weewx[14214] INFO weewx.engine: Using archive interval of 300 seconds (software record generation)
Aug  8 20:53:57 raspberrypi weewx[14214] INFO weewx.restx: StationRegistry: Registration not requested.
Aug  8 20:53:57 raspberrypi weewx[14214] INFO weewx.restx: Wunderground: Posting not enabled.
Aug  8 20:53:57 raspberrypi weewx[14214] INFO weewx.restx: PWSweather: Posting not enabled.
Aug  8 20:53:57 raspberrypi weewx[14214] INFO weewx.restx: CWOP: Posting not enabled.
Aug  8 20:53:57 raspberrypi weewx[14214] INFO weewx.restx: WOW: Posting not enabled.
Aug  8 20:53:57 raspberrypi weewx[14214] INFO weewx.restx: AWEKAS: Posting not enabled.
Aug  8 20:53:57 raspberrypi weewx[14214] INFO __main__: Starting up weewx version 4.5.1
Aug  8 20:53:57 raspberrypi weewx[14214] INFO weewx.engine: Using binding 'wx_binding' to database 'weewx.sdb'
Aug  8 20:53:57 raspberrypi weewx[14214] INFO weewx.manager: Starting backfill of daily summaries
Aug  8 20:53:57 raspberrypi weewx[14214] INFO weewx.manager: Empty database
Aug  8 20:53:57 raspberrypi weewx[14214] INFO weewx.engine: Starting main packet loop.
Aug  8 20:53:57 raspberrypi weewx[14214] INFO user.gw1000: Using 'rainyear' for rain total
Aug  8 20:53:57 raspberrypi weewx[14214] INFO user.gw1000: skipping rain measurement of 0.0: no last rain
Aug  8 20:53:57 raspberrypi weewx[14214] INFO weewx.engine: Main loop exiting. Shutting engine down.
Aug  8 20:53:58 raspberrypi weewx[14214] INFO user.gw1000: Gw1000Collector thread has been terminated

vince

unread,
Aug 8, 2021, 9:28:42 PM8/8/21
to weewx-user
FWIW, it usually helps if you tell us exactly 'what' problem you are looking for help with....

That said, I guess I'd ask if you have restarted weewx and whether the same things happen basically immediately every time.

You might alternately try commenting out the rain sensor mappings in your weewx.conf (temporarily) to basically tell weewx you have no rain sensor, in order to experiment a little and see if the problem is related to the 'no last rain' message in the log snippet you provided.    Lastly you might try upping the debug level in weewx.conf to 2 or 3 to see if there is anything more verbose the driver can provide.  Some drivers support increased verbosity if you dial up the debug setting.

gjr80

unread,
Aug 8, 2021, 9:59:55 PM8/8/21
to weewx-user
As Vince said it would help to know what symptoms you are seeing, though I am guessing in this case you are not seeing anything other than WeeWX shutting down.

Rather than use debug = 2 or 3 etc which potentially makes everything pretty chatty and consequently the log is near impossible to follow (plus it gets pretty big pretty quick), I've implemented a few GW1000 driver specific debug options. Could I get you to edit weewx.conf and under [GW1000] add the line debug_loop = True, eg:

[GW1000]
    ....
    debug_loop = True

Save weewx.conf and restart WeeWX. WeeWX will likely still fail as per your log extract above, but can you take another log extract from when you just restarted WeeWX through until the shutdown occurs. Post the log extract back here.

Gary

William Borrelli

unread,
Aug 9, 2021, 7:11:33 AM8/9/21
to weewx-user
My bad, I thought it was clear from the log snippet that as soon as I start Weewx, the GW1000 driver kicks in, grabs data, terminates its self and the Weewx process as well.

I added the debug_loop and there is some additional information.
There do not appear to be any errors, just info, so it appears to be a rather odd issue.


Aug  9 07:06:48 raspberrypi weewx[2738] INFO __main__: Initializing weewx version 4.5.1
Aug  9 07:06:48 raspberrypi weewx[2738] INFO __main__: Using Python 3.7.3 (default, Jan 22 2021, 20:04:44) #012[GCC 8.3.0]
Aug  9 07:06:48 raspberrypi weewx[2738] INFO __main__: Platform Linux-5.10.52-v7+-armv7l-with-debian-10.10
Aug  9 07:06:48 raspberrypi weewx[2738] INFO __main__: Locale is 'en_US.UTF-8'
Aug  9 07:06:48 raspberrypi weewx[2738] INFO __main__: PID file is /var/run/weewx.pid
Aug  9 07:06:48 raspberrypi weewx[2742] INFO __main__: Using configuration file /etc/weewx/weewx.conf
Aug  9 07:06:48 raspberrypi weewx[2742] INFO __main__: Debug is 1
Aug  9 07:06:48 raspberrypi weewx[2742] INFO weewx.engine: Loading station type GW1000 (user.gw1000)
Aug  9 07:06:48 raspberrypi weewx[2742] INFO user.gw1000: debug_loop is True
Aug  9 07:06:48 raspberrypi weewx[2742] INFO user.gw1000: field map is {'co2': 'co2', 'co2_24h_avg': 'co2_24h_avg', 'dateTime': 'datetime', 'daymaxwind': 'daymaxwind', 'dayRain': 'rainday', 'dewpoint': 'dewpoint', 'extraHumid1': 'humid1', 'extraHumid2': 'humid2', 'extraHumid3': 'humid3', 'extraHumid4': 'humid4', 'extraHumid5': 'humid5', 'extraHumid6': 'humid6', 'extraHumid7': 'humid7', 'extraHumid8': 'humid8', 'extraHumid17': 'humid17', 'extraTemp1': 'temp1', 'extraTemp2': 'temp2', 'extraTemp3': 'temp3', 'extraTemp4': 'temp4', 'extraTemp5': 'temp5', 'extraTemp6': 'temp6', 'extraTemp7': 'temp7', 'extraTemp8': 'temp8', 'extraTemp9': 'temp9', 'extraTemp10': 'temp10', 'extraTemp11': 'temp11', 'extraTemp12': 'temp12', 'extraTemp13': 'temp13', 'extraTemp14': 'temp14', 'extraTemp15': 'temp15', 'extraTemp16': 'temp16', 'extraTemp17': 'temp17', 'heatindex': 'heatindex', 'hourRain': 'rainhour', 'inHumidity': 'inhumid', 'inTemp': 'intemp', 'leafWet1': 'leafwet1', 'leafWet2': 'leafwet2', 'leafWet3': 'leafwet3', 'leafWet4': 'leafwet4', 'leafWet5': 'leafwet5', 'leafWet6': 'leafwet6', 'leafWet7': 'leafwet7', 'leafWet8': 'leafwet8', 'leak1': 'leak1', 'leak2': 'leak2', 'leak3': 'leak3', 'leak4': 'leak4', 'lightning_distance': 'lightningdist', 'lightning_last_det_time': 'lightningdettime', 'lightning_strike_count': 'lightning_strike_count', 'lightningcount': 'lightningcount', 'luminosity': 'light', 'monthRain': 'rainmonth', 'outHumidity': 'outhumid', 'outTemp': 'outtemp', 'pm2_5': 'pm251', 'pm2_51_24h_avg': 'pm251_24h_avg', 'pm2_52': 'pm252', 'pm2_52_24h_avg': 'pm252_24h_avg', 'pm2_53': 'pm253', 'pm2_53_24h_avg': 'pm253_24h_avg', 'pm2_54': 'pm254', 'pm2_54_24h_avg': 'pm254_24h_avg', 'pm2_55': 'pm255', 'pm2_55_24h_avg': 'pm255_24h_avg', 'pm10': 'pm10', 'pm10_24h_avg': 'pm10_24h_avg', 'pressure': 'absbarometer', 'rain': 'rain', 'rainRate': 'rainrate', 'relbarometer': 'relbarometer', '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', 'stormRain': 'rainevent', 'totalRain': 'raintotals', 'UV': 'uvi', 'uvradiation': 'uv', 'weekRain': 'rainweek', 'wh25_batt': 'wh25_batt', 'wh25_sig': 'wh25_sig', 'wh26_batt': 'wh26_batt', 'wh26_sig': 'wh26_sig', 'wh31_ch1_batt': 'wh31_ch1_batt', 'wh31_ch1_sig': 'wh31_ch1_sig', 'wh31_ch2_batt': 'wh31_ch2_batt', 'wh31_ch2_sig': 'wh31_ch2_sig', 'wh31_ch3_batt': 'wh31_ch3_batt', 'wh31_ch3_sig': 'wh31_ch3_sig', 'wh31_ch4_batt': 'wh31_ch4_batt', 'wh31_ch4_sig': 'wh31_ch4_sig', 'wh31_ch5_batt': 'wh31_ch5_batt', 'wh31_ch5_sig': 'wh31_ch5_sig', 'wh31_ch6_batt': 'wh31_ch6_batt', 'wh31_ch6_sig': 'wh31_ch6_sig', 'wh31_ch7_batt': 'wh31_ch7_batt', 'wh31_ch7_sig': 'wh31_ch7_sig', 'wh31_ch8_batt': 'wh31_ch8_batt', 'wh31_ch8_sig': 'wh31_ch8_sig', 'wh35_ch1_batt': 'wh35_ch1_batt', 'wh35_ch1_sig': 'wh35_ch1_sig', 'wh35_ch2_batt': 'wh35_ch2_batt', 'wh35_ch2_sig': 'wh35_ch2_sig', 'wh35_ch3_batt': 'wh35_ch3_batt', 'wh35_ch3_sig': 'wh35_ch3_sig', 'wh35_ch4_batt': 'wh35_ch4_batt', 'wh35_ch4_sig': 'wh35_ch4_sig', 'wh35_ch5_batt': 'wh35_ch5_batt', 'wh35_ch5_sig': 'wh35_ch5_sig', 'wh35_ch6_batt': 'wh35_ch6_batt', 'wh35_ch6_sig': 'wh35_ch6_sig', 'wh35_ch7_batt': 'wh35_ch7_batt', 'wh35_ch7_sig': 'wh35_ch7_sig', 'wh35_ch8_batt': 'wh35_ch8_batt', 'wh35_ch8_sig': 'wh35_ch8_sig', 'wh40_batt': 'wh40_batt', 'wh40_sig': 'wh40_sig', 'wh41_ch1_batt': 'wh41_ch1_batt', 'wh41_ch1_sig': 'wh41_ch1_sig', 'wh41_ch2_batt': 'wh41_ch2_batt', 'wh41_ch2_sig': 'wh41_ch2_sig', 'wh41_ch3_batt': 'wh41_ch3_batt', 'wh41_ch3_sig': 'wh41_ch3_sig', 'wh41_ch4_batt': 'wh41_ch4_batt', 'wh41_ch4_sig': 'wh41_ch4_sig', 'wh45_batt': 'wh45_batt', 'wh45_sig': 'wh45_sig', 'wh51_ch1_batt': 'wh51_ch1_batt', 'wh51_ch1_sig': 'wh51_ch1_sig', 'wh51_ch2_batt': 'wh51_ch2_batt', 'wh51_ch2_sig': 'wh51_ch2_sig', 'wh51_ch3_batt': 'wh51_ch3_batt', 'wh51_ch3_sig': 'wh51_ch3_sig', 'wh51_ch4_batt': 'wh51_ch4_batt', 'wh51_ch4_sig': 'wh51_ch4_sig', 'wh51_ch5_batt': 'wh51_ch5_batt', 'wh51_ch5_sig': 'wh51_ch5_sig', 'wh51_ch6_batt': 'wh51_ch6_batt', 'wh51_ch6_sig': 'wh51_ch6_sig', 'wh51_ch7_batt': 'wh51_ch7_batt', 'wh51_ch7_sig': 'wh51_ch7_sig', 'wh51_ch8_batt': 'wh51_ch8_batt', 'wh51_ch8_sig': 'wh51_ch8_sig', 'wh51_ch9_batt': 'wh51_ch9_batt', 'wh51_ch9_sig': 'wh51_ch9_sig', 'wh51_ch10_batt': 'wh51_ch10_batt', 'wh51_ch10_sig': 'wh51_ch10_sig', 'wh51_ch11_batt': 'wh51_ch11_batt', 'wh51_ch11_sig': 'wh51_ch11_sig', 'wh51_ch12_batt': 'wh51_ch12_batt', 'wh51_ch12_sig': 'wh51_ch12_sig', 'wh51_ch13_batt': 'wh51_ch13_batt', 'wh51_ch13_sig': 'wh51_ch13_sig', 'wh51_ch14_batt': 'wh51_ch14_batt', 'wh51_ch14_sig': 'wh51_ch14_sig', 'wh51_ch15_batt': 'wh51_ch15_batt', 'wh51_ch15_sig': 'wh51_ch15_sig', 'wh51_ch16_batt': 'wh51_ch16_batt', 'wh51_ch16_sig': 'wh51_ch16_sig', 'wh55_ch1_batt': 'wh55_ch1_batt', 'wh55_ch1_sig': 'wh55_ch1_sig', 'wh55_ch2_batt': 'wh55_ch2_batt', 'wh55_ch2_sig': 'wh55_ch2_sig', 'wh55_ch3_batt': 'wh55_ch3_batt', 'wh55_ch3_sig': 'wh55_ch3_sig', 'wh55_ch4_batt': 'wh55_ch4_batt', 'wh55_ch4_sig': 'wh55_ch4_sig', 'wh57_batt': 'wh57_batt', 'wh57_sig': 'wh57_sig', 'wh65_batt': 'wh65_batt', 'wh65_sig': 'wh65_sig', 'wh68_batt': 'wh68_batt', 'wh68_sig': 'wh68_sig', 'windchill': 'windchill', 'windDir': 'winddir', 'windGust': 'gustspeed', 'windSpeed': 'windspeed', 'ws80_batt': 'ws80_batt', 'ws80_sig': 'ws80_sig', 'yearRain': 'rainyear'}
Aug  9 07:06:48 raspberrypi weewx[2742] INFO user.gw1000: driver version is 0.3.1
Aug  9 07:06:48 raspberrypi weewx[2742] INFO user.gw1000: GW1000 address is 10.0.0.51:45000
Aug  9 07:06:48 raspberrypi weewx[2742] INFO user.gw1000: poll interval is 60 seconds
Aug  9 07:06:48 raspberrypi weewx[2742] INFO weewx.engine: StdConvert target unit is 0x1
Aug  9 07:06:48 raspberrypi weewx[2742] INFO weewx.engine: Archive will use data binding wx_binding
Aug  9 07:06:48 raspberrypi weewx[2742] INFO weewx.engine: Record generation will be attempted in 'software'
Aug  9 07:06:48 raspberrypi weewx[2742] INFO weewx.engine: Using archive interval of 300 seconds (software record generation)
Aug  9 07:06:48 raspberrypi weewx[2742] INFO weewx.restx: StationRegistry: Registration not requested.
Aug  9 07:06:48 raspberrypi weewx[2742] INFO weewx.restx: Wunderground: Posting not enabled.
Aug  9 07:06:48 raspberrypi weewx[2742] INFO weewx.restx: PWSweather: Posting not enabled.
Aug  9 07:06:48 raspberrypi weewx[2742] INFO weewx.restx: CWOP: Posting not enabled.
Aug  9 07:06:48 raspberrypi weewx[2742] INFO weewx.restx: WOW: Posting not enabled.
Aug  9 07:06:48 raspberrypi weewx[2742] INFO weewx.restx: AWEKAS: Posting not enabled.
Aug  9 07:06:48 raspberrypi weewx[2742] INFO __main__: Starting up weewx version 4.5.1
Aug  9 07:06:48 raspberrypi weewx[2742] INFO weewx.engine: Using binding 'wx_binding' to database 'weewx.sdb'
Aug  9 07:06:48 raspberrypi weewx[2742] INFO weewx.manager: Starting backfill of daily summaries
Aug  9 07:06:48 raspberrypi weewx[2742] INFO weewx.manager: Empty database
Aug  9 07:06:48 raspberrypi weewx[2742] INFO weewx.engine: Starting main packet loop.
Aug  9 07:06:48 raspberrypi weewx[2742] INFO user.gw1000: Received GW1000 data: 2021-08-09 07:06:48 EDT (1628507208) {'absbarometer': '997.0', 'datetime': '1628507208', 'daymaxwind': '1.0', 'gustspeed': '0.5', 'inhumid': '71', 'intemp': '25.3', 'light': '5270.0', 'outhumid': '88', 'outtemp': '22.4', 'rainday': '0.0', 'rainevent': '0.0', 'rainmonth': '0.0', 'rainrate': '0.0', 'rainweek': '0.0', 'rainyear': '0.0', 'relbarometer': '997.0', 'uv': '4.4', 'uvi': '0', 'wh65_batt': '0', 'wh65_sig': '4', 'winddir': '114', 'windspeed': '0.3'}
Aug  9 07:06:48 raspberrypi weewx[2742] INFO user.gw1000: Using 'rainyear' for rain total
Aug  9 07:06:48 raspberrypi weewx[2742] INFO user.gw1000: skipping rain measurement of 0.0: no last rain
Aug  9 07:06:48 raspberrypi weewx[2742] INFO user.gw1000: Mapped GW1000 data: {'dateTime': '1628507208', 'daymaxwind': '1.0', 'dayRain': '0.0', 'inHumidity': '71', 'inTemp': '25.3', 'luminosity': '5270.0', 'monthRain': '0.0', 'outHumidity': '88', 'outTemp': '22.4', 'pressure': '997.0', 'rain': 'None', 'rainRate': '0.0', 'relbarometer': '997.0', 'stormRain': '0.0', 'usUnits': '17', 'UV': '0', 'uvradiation': '4.4', 'weekRain': '0.0', 'wh65_batt': '0', 'wh65_sig': '4', 'windDir': '114', 'windGust': '0.5', 'windSpeed': '0.3', 'yearRain': '0.0'}
Aug  9 07:06:48 raspberrypi weewx[2742] INFO user.gw1000: Packet2021-08-09 07:06:48 EDT (1628507208): {'dateTime': '1628507208', 'daymaxwind': '1.0', 'dayRain': '0.0', 'inHumidity': '71', 'inTemp': '25.3', 'luminosity': '5270.0', 'monthRain': '0.0', 'outHumidity': '88', 'outTemp': '22.4', 'pressure': '997.0', 'rain': 'None', 'rainRate': '0.0', 'relbarometer': '997.0', 'stormRain': '0.0', 'usUnits': '17', 'UV': '0', 'uvradiation': '4.4', 'weekRain': '0.0', 'wh65_batt': '0', 'wh65_sig': '4', 'windDir': '114', 'windGust': '0.5', 'windSpeed': '0.3', 'yearRain': '0.0'}
Aug  9 07:06:48 raspberrypi weewx[2742] INFO weewx.engine: Main loop exiting. Shutting engine down.
Aug  9 07:06:49 raspberrypi weewx[2742] INFO user.gw1000: Gw1000Collector thread has been terminated

William Borrelli

unread,
Aug 9, 2021, 7:36:59 AM8/9/21
to weewx-user
For grins and giggles, I commented out the rain mappings, and the same result. Weewx shuts down.

gjr80

unread,
Aug 9, 2021, 8:10:51 AM8/9/21
to weewx-user
As far as I can tell the driver is doing exactly what it should, it creates a packet and the very next statement yields the packet to WeeWX. Looking at the driver code I am not seeing a situation where the driver can cause a shutdown without something being logged (at the INFO level).

I also think there is something screwy going on with the logging. debug = 1 yet we see no debug logging during startup, we should be seeing a whole pile of extra lines in the log when each service is being loaded yet we see none of these. If you look at the third post in this thread you will see log entries for loading and finished loading each service (the log entries are slightly different due to python version differences). I am starting to suspect we are not seeing the full picture here. Not an area of expertise for me but have you set any log level limits?

Might be worth posting a wee_debug report. Before posting the report just check it for any sensitive info, wee_debug should obfuscate user names, passwords, API keys etc but it's not perfect.

Gary

William Borrelli

unread,
Aug 9, 2021, 8:37:35 AM8/9/21
to weewx-user
ARE YOU FREAKING KIDDING ME!!!

So, I switched to use the manual install instead of the apt version, and started messing around with the config, using simulator and interceptor, etc.
It wasn't until I did only /opt/weewx/bin/weewxd  (no other options) that I then saw an error that gave me a breadcrumb.

Turns out if the altitude config has "feet" Weewx has a tendency to crash. Changed it to "foot" launched using /opt/weewx/bin/weewxd, no more error, and the process did not die.

Modified /etc/weewx/weewx.conf, made sure the GW1000 driver was chosen, systemctl restart weewx, and the process continues to run, and I can see data collection in the messages log.

Thanks for not putting that key error in the messages log Weewx. sigh...

Thanks for the help. grrrrrr.

vince

unread,
Aug 9, 2021, 1:28:33 PM8/9/21
to weewx-user
On Monday, August 9, 2021 at 5:37:35 AM UTC-7 william....@gmail.com wrote:
Turns out if the altitude config has "feet" Weewx has a tendency to crash. Changed it to "foot" launched using /opt/weewx/bin/weewxd, no more error, and the process did not die.


FWIW, the correct units to use 'is' well documented but it's good you figured it out and posted what you found.
 
Thanks for not putting that key error in the messages log Weewx. sigh...


A little less attitude would be greatly appreciated in the future.
Everybody is volunteering their precious time+energy here.

I opened issue 687 (link) so this one is on the to-do list for whenever somebody has time+energy to look into possible enhancements.
 

gjr80

unread,
Aug 9, 2021, 1:50:33 PM8/9/21
to weewx-user
As can be seen from the log extract below WeeWX logs such errors just fine. The real problem is, as I alluded to in my earlier post, that your system is not logging anything higher in level than INFO. Hence when WeeWX caught and logged the incorrect unit problem nothing was recorded in the log as the entries were logged at the CRITICAL level.

As I suggested earlier you might like to have a look at your system logging.

Gary

Aug 10 03:36:13 buster31 weewx[746] INFO weewx.engine: Starting main packet loop.
Aug 10 03:36:16 buster31 weewx[746] DEBUG weewx.units: Unable to convert from feet to foot
Aug 10 03:36:16 buster31 weewx[746] INFO weewx.engine: Main loop exiting. Shutting engine down.
Aug 10 03:36:16 buster31 weewx[746] CRITICAL __main__: Caught unrecoverable exception:
Aug 10 03:36:16 buster31 weewx[746] CRITICAL __main__:     ****  'feet'
Aug 10 03:36:16 buster31 weewx[746] CRITICAL __main__:     ****  Traceback (most recent call last):
Aug 10 03:36:16 buster31 weewx[746] CRITICAL __main__:     ****    File "/home/weewx/bin/weewxd", line 157, in main
Aug 10 03:36:16 buster31 weewx[746] CRITICAL __main__:     ****      engine.run()
Aug 10 03:36:16 buster31 weewx[746] CRITICAL __main__:     ****    File "/home/weewx/bin/weewx/engine.py", line 210, in run
Aug 10 03:36:16 buster31 weewx[746] CRITICAL __main__:     ****      self.dispatchEvent(weewx.Event(weewx.NEW_LOOP_PACKET, packet=packet))
Aug 10 03:36:16 buster31 weewx[746] CRITICAL __main__:     ****    File "/home/weewx/bin/weewx/engine.py", line 245, in dispatchEvent
Aug 10 03:36:16 buster31 weewx[746] CRITICAL __main__:     ****      callback(event)
Aug 10 03:36:16 buster31 weewx[746] CRITICAL __main__:     ****    File "/home/weewx/bin/weewx/wxservices.py", line 112, in new_loop_packet
Aug 10 03:36:16 buster31 weewx[746] CRITICAL __main__:     ****      self.do_calculations(event.packet, self.loop_calc_dict)
Aug 10 03:36:16 buster31 weewx[746] CRITICAL __main__:     ****    File "/home/weewx/bin/weewx/wxservices.py", line 137, in do_calculations
Aug 10 03:36:16 buster31 weewx[746] CRITICAL __main__:     ****      new_value = weewx.xtypes.get_scalar(obs_type, data_dict, self.db_manager)
Aug 10 03:36:16 buster31 weewx[746] CRITICAL __main__:     ****    File "/home/weewx/bin/weewx/xtypes.py", line 73, in get_scalar
Aug 10 03:36:16 buster31 weewx[746] CRITICAL __main__:     ****      return xtype.get_scalar(obs_type, record, db_manager)
Aug 10 03:36:16 buster31 weewx[746] CRITICAL __main__:     ****    File "/home/weewx/bin/weewx/wxxtypes.py", line 381, in get_scalar
Aug 10 03:36:16 buster31 weewx[746] CRITICAL __main__:     ****      return self.altimeter(record)
Aug 10 03:36:16 buster31 weewx[746] CRITICAL __main__:     ****    File "/home/weewx/bin/weewx/wxxtypes.py", line 430, in altimeter
Aug 10 03:36:16 buster31 weewx[746] CRITICAL __main__:     ****      altitude = weewx.units.convertStd(self.altitude_vt, record['usUnits'])
Aug 10 03:36:16 buster31 weewx[746] CRITICAL __main__:     ****    File "/home/weewx/bin/weewx/units.py", line 1605, in convertStd
Aug 10 03:36:16 buster31 weewx[746] CRITICAL __main__:     ****      return StdUnitConverters[target_std_unit_system].convert(val_t)
Aug 10 03:36:16 buster31 weewx[746] CRITICAL __main__:     ****    File "/home/weewx/bin/weewx/units.py", line 1023, in convert
Aug 10 03:36:16 buster31 weewx[746] CRITICAL __main__:     ****      new_val_t = convert(val_t, new_unit_type)
Aug 10 03:36:16 buster31 weewx[746] CRITICAL __main__:     ****    File "/home/weewx/bin/weewx/units.py", line 1569, in convert
Aug 10 03:36:16 buster31 weewx[746] CRITICAL __main__:     ****      conversion_func = conversionDict[val_t[1]][target_unit]
Aug 10 03:36:16 buster31 weewx[746] CRITICAL __main__:     ****  KeyError: 'feet'
Aug 10 03:36:16 buster31 weewx[746] CRITICAL __main__:     ****  Exiting.

vince

unread,
Aug 9, 2021, 4:12:51 PM8/9/21
to weewx-user
Thanks Gary - I forgot to read my own FAQ on where logs are located on the pi  (link)

William Borrelli

unread,
Aug 10, 2021, 7:29:48 AM8/10/21
to weewx-user
My god I appreciate all the work that goes into these applications. Without them I would not be able to do what I am doing with them. It's just that sometimes something like this can get very frustrating.

Apparently getting the logging levels in the system is not as simple as just bumping the value in weewx.conf. This is a brand new Buster install on a Raspberry Pi, and I have only added what needs to be on it for Weewx and GW1000 require to function.

And it is from the suggestions in this thread that I even thought about trying weewxd without sending it into daemon mode.

And now I just learned that Debian uses both /var/log/messages (info only apparently) and /var/log/syslog (yep, the DEBUG messages are in there like you mentioned)
I have been mostly a CentOS guy for the last decade, since that is what we use on the systems I support at work. I never thought that Debian would be using both. Seems like a lot of additional I/O overhead.

Again, thank you all for the guidance.
Reply all
Reply to author
Forward
0 new messages