matthewwall / weewx-sdr

weewx driver for software-defined radio
GNU General Public License v3.0
114 stars 74 forks source link

Shutting engine down when first data arrives #98

Closed W11T closed 3 years ago

W11T commented 3 years ago

user.sdr suffers timeouts apparantly as soon as a first results is being returned by rtl_433. At my site rtl_433 delivers results each 30 seconds or more.

Oct 16 23:02:38 weewx[18855] INFO main: Using configuration file /weewx.conf Oct 16 23:02:38 weewx[18855] INFO main: Debug is 1 Oct 16 23:02:38 weewx[18855] DEBUG main: Initializing engine Oct 16 23:02:38 weewx[18855] INFO weewx.engine: Loading station type SDR (user.sdr) Oct 16 23:02:38 weewx[18855] INFO user.sdr: driver version is 0.77.1 Oct 16 23:02:38 weewx[18855] INFO user.sdr: sensor map is {'outHumidity': 'humidity.228.FOWHx080Packet', 'outTemp': 'temperature.228.FOWHx080Packet', 'dateTime': "dateTime': 1602800188", 'windDir': 'wind_dir.228.FOWHx080Packet', 'rainTotal': 'rain_total.228.FOWHx080Packet', 'windSpeed': 'wind_speed.228.FOWHx080Packet', 'windGust': 'wind_gust.228.FOWHx080Packet', 'usUnits': ["usUnits': 16"], 'outTempBatteryStatus': 'battery.228.FOWHx080Packet'} Oct 16 23:02:38 weewx[18855] INFO user.sdr: deltas is {'rain': 'rain_total', 'strikes': 'strikes_total'} Oct 16 23:02:38 weewx[18855] INFO user.sdr: startup process '/usr/local/bin/rtl_433 -f 868300000 -s 250000 -R 32 -g 49.6 -M time -F json' Oct 16 23:02:38 weewx[18855] DEBUG user.sdr: start async reader for stdout-thread Oct 16 23:02:38 weewx[18855] DEBUG user.sdr: start async reader for stderr-thread Oct 16 23:02:38 weewx[18855] DEBUG weewx.engine: Loading service weewx.engine.StdTimeSynch Oct 16 23:02:38 weewx[18855] DEBUG weewx.engine: Finished loading service weewx.engine.StdTimeSynch Oct 16 23:02:38 weewx[18855] DEBUG weewx.engine: Loading service weewx.engine.StdConvert Oct 16 23:02:38 weewx[18855] INFO weewx.engine: StdConvert target unit is 0x11 Oct 16 23:02:38 weewx[18855] DEBUG weewx.engine: Finished loading service weewx.engine.StdConvert Oct 16 23:02:38 weewx[18855] DEBUG weewx.engine: Loading service weewx.engine.StdCalibrate Oct 16 23:02:38 weewx[18855] DEBUG weewx.engine: Finished loading service weewx.engine.StdCalibrate Oct 16 23:02:38 weewx[18855] DEBUG weewx.engine: Loading service weewx.engine.StdQC Oct 16 23:02:38 weewx[18855] DEBUG weewx.engine: Finished loading service weewx.engine.StdQC Oct 16 23:02:38 weewx[18855] DEBUG weewx.engine: Loading service weewx.wxservices.StdWXCalculate Oct 16 23:02:39 weewx[18855] DEBUG weewx.manager: Daily summary version is 2.0 Oct 16 23:02:39 weewx[18855] 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 Oct 16 23:02:39 weewx[18855] INFO weewx.wxservices: The following algorithms will be used for calculations: altimeter=aaASOS, maxSolarRad=RS Oct 16 23:02:39 weewx[18855] DEBUG weewx.engine: Finished loading service weewx.wxservices.StdWXCalculate Oct 16 23:02:39 weewx[18855] DEBUG weewx.engine: Loading service user.csv.CSV Oct 16 23:02:39 weewx[18855] DEBUG weewx.engine: Finished loading service user.csv.CSV Oct 16 23:02:39 weewx[18855] DEBUG weewx.engine: Loading service weewx.engine.StdArchive Oct 16 23:02:39 weewx[18855] INFO weewx.engine: Archive will use data binding wx_binding Oct 16 23:02:39 weewx[18855] INFO weewx.engine: Record generation will be attempted in 'software' Oct 16 23:02:39 weewx[18855] INFO weewx.engine: Using archive interval of 300 seconds (software record generation) Oct 16 23:02:39 weewx[18855] DEBUG weewx.engine: Use LOOP data in hi/low calculations: 1 Oct 16 23:02:39 weewx[18855] DEBUG weewx.engine: Finished loading service weewx.engine.StdArchive Oct 16 23:02:39 weewx[18855] DEBUG weewx.engine: Loading service weewx.restx.StdStationRegistry Oct 16 23:02:39 weewx[18855] INFO weewx.restx: StationRegistry: Registration not requested. Oct 16 23:02:39 weewx[18855] DEBUG weewx.engine: Finished loading service weewx.restx.StdStationRegistry Oct 16 23:02:39 weewx[18855] DEBUG weewx.engine: Loading service weewx.restx.StdWunderground Oct 16 23:02:39 weewx[18855] INFO weewx.restx: Wunderground: Posting not enabled. Oct 16 23:02:39 weewx[18855] DEBUG weewx.engine: Finished loading service weewx.restx.StdWunderground Oct 16 23:02:39 weewx[18855] DEBUG weewx.engine: Loading service weewx.restx.StdPWSweather Oct 16 23:02:39 weewx[18855] INFO weewx.restx: PWSweather: Posting not enabled. Oct 16 23:02:39 weewx[18855] DEBUG weewx.engine: Finished loading service weewx.restx.StdPWSweather Oct 16 23:02:39 weewx[18855] DEBUG weewx.engine: Loading service weewx.restx.StdCWOP Oct 16 23:02:39 weewx[18855] INFO weewx.restx: CWOP: Posting not enabled. Oct 16 23:02:39 weewx[18855] DEBUG weewx.engine: Finished loading service weewx.restx.StdCWOP Oct 16 23:02:39 weewx[18855] DEBUG weewx.engine: Loading service weewx.restx.StdWOW Oct 16 23:02:39 weewx[18855] INFO weewx.restx: WOW: Posting not enabled. Oct 16 23:02:39 weewx[18855] DEBUG weewx.engine: Finished loading service weewx.restx.StdWOW Oct 16 23:02:39 weewx[18855] DEBUG weewx.engine: Loading service weewx.restx.StdAWEKAS Oct 16 23:02:39 weewx[18855] INFO weewx.restx: AWEKAS: Posting not enabled. Oct 16 23:02:39 weewx[18855] DEBUG weewx.engine: Finished loading service weewx.restx.StdAWEKAS Oct 16 23:02:39 weewx[18855] DEBUG weewx.engine: Loading service weewx.engine.StdPrint Oct 16 23:02:39 weewx[18855] DEBUG weewx.engine: Finished loading service weewx.engine.StdPrint Oct 16 23:02:39 weewx[18855] DEBUG weewx.engine: Loading service weewx.engine.StdReport Oct 16 23:02:39 weewx[18855] DEBUG weewx.engine: Finished loading service weewx.engine.StdReport Oct 16 23:02:39 weewx[18855] INFO main: Starting up weewx version 4.1.1 Oct 16 23:02:39 weewx[18855] DEBUG weewx.engine: Station does not support reading the time Oct 16 23:02:39 weewx[18855] INFO weewx.engine: Using binding 'wx_binding' to database 'weewx' Oct 16 23:02:39 weewx[18855] INFO weewx.manager: Starting backfill of daily summaries Oct 16 23:02:39 weewx[18855] INFO weewx.engine: Starting main packet loop. Oct 16 23:02:42 weewx[18855] DEBUG user.sdr: lines=[] Oct 16 23:02:45 weewx[18855] DEBUG user.sdr: lines=[] Oct 16 23:02:48 weewx[18855] DEBUG user.sdr: lines=[] Oct 16 23:02:51 weewx[18855] DEBUG user.sdr: lines=[] Oct 16 23:02:54 weewx[18855] DEBUG user.sdr: lines=[] Oct 16 23:02:59 weewx[18855] DEBUG user.sdr: lines=['{"time" : "2020-10-16 23:02:56", "model" : "Fineoffset-WHx080", "subtype" : 0, "id" : 228, "battery_ok" : 1, "temperature_C" : 5.200, "humidity" : 99, "wind_dir_deg" : 0, "wind_avg_km_h" : 0.000, "wind_max_km_h" : 0.000, "rain_mm" : 1013.100, "mic" : "CRC"}\n', '{"time" : "2020-10-16 23:02:56", "model" : "Fineoffset-WHx080", "subtype" : 0, "id" : 228, "battery_ok" : 1, "temperature_C" : 5.200, "humidity" : 99, "wind_dir_deg" : 0, "wind_avg_km_h" : 0.000, "wind_max_km_h" : 0.000, "rain_mm" : 1013.100, "mic" : "CRC"}\n'] Oct 16 23:02:59 weewx[18855] INFO weewx.engine: Main loop exiting. Shutting engine down. Oct 16 23:02:59 weewx[18855] INFO user.sdr: shutdown process /usr/local/bin/rtl_433 -f 868300000 -s 250000 -R 32 -g 49.6 -M time -F json Oct 16 23:02:59 weewx[18855] DEBUG user.sdr: waiting for stdout-thread Oct 16 23:03:09 weewx[18855] INFO user.sdr: timed out waiting for stdout-thread Oct 16 23:03:09 weewx[18855] DEBUG user.sdr: waiting for stderr-thread Oct 16 23:03:19 weewx[18855] INFO user.sdr: timed out waiting for stderr-thread Oct 16 23:03:19 weewx[18855] DEBUG user.sdr: close stdout Oct 16 23:03:44 weewx[18855] DEBUG user.sdr: close stderr Oct 16 23:04:33 weewx[18855] DEBUG user.sdr: kill process Oct 16 23:04:33 weewx[18855] CRITICAL main: Caught unrecoverable exception: Oct 16 23:04:33 weewx[18855] CRITICAL main: unhashable type: 'list' Oct 16 23:04:33 weewx[18855] CRITICAL main: Traceback (most recent call last): Oct 16 23:04:33 weewx[18855] CRITICAL main: File "/bin/weewxd", line 154, in main Oct 16 23:04:33 weewx[18855] CRITICAL main: engine.run() Oct 16 23:04:33 weewx[18855] CRITICAL main: File "/bin/weewx/engine.py", line 188, in run Oct 16 23:04:33 weewx[18855] CRITICAL main: for packet in self.console.genLoopPackets(): Oct 16 23:04:33 weewx[18855] CRITICAL main: File "/bin/user/sdr.py", line 2693, in genLoopPackets Oct 16 23:04:33 weewx[18855] CRITICAL main: pkt = self.map_to_fields(packet, self._sensor_map) Oct 16 23:04:33 weewx[18855] CRITICAL main: File "/bin/user/sdr.py", line 2738, in map_to_fields Oct 16 23:04:33 weewx[18855] CRITICAL main: label = SDRDriver._find_match(sensor_map[n], pkt.keys()) Oct 16 23:04:33 weewx[18855] CRITICAL main: File "/bin/user/sdr.py", line 2752, in _find_match Oct 16 23:04:33 weewx[18855] CRITICAL main: if pattern in keylist: Oct 16 23:04:33 weewx[18855] CRITICAL main: TypeError: unhashable type: 'list' Oct 16 23:04:33 weewx[18855] CRITICAL main: Exiting.

andylittle commented 3 years ago

@W11T can you post your sensor map from weewx.conf please. Remove usUnits and dateTime from your map if it is there.

Should match this except your id is 228 instead of 14.

    outHumidity = humidity.14.FOWHx080Packet
    outTemp = temperature.14.FOWHx080Packet
    windDir = wind_dir.14.FOWHx080Packet
    rainTotal = rain_total.14.FOWHx080Packet
    windSpeed = wind_speed.14.FOWHx080Packet
    windGust = wind_gust.14.FOWHx080Packet
    windTempBatteryStatus = battery.14.FOWHx080Packet
W11T commented 3 years ago

@andylittle Thanks, you made my day! I had typos in my sensor map! This is my sensor map now:

log_unknown_sensors = True
log_unmapped_sensors = True
[[sensor_map]]
    outHumidity = humidity.201.FOWHx080Packet
    outTemp = temperature.201.FOWHx080Packet
    windDir = wind_dir.201.FOWHx080Packet
    rainTotal = rain_total.201.FOWHx080Packet
    windSpeed = wind_speed.201.FOWHx080Packet
    windGust = wind_gust.201.FOWHx080Packet
    outTempBatteryStatus = battery.201.FOWHx080Packet

(I restarted my station and its id changed to 201)

W11T commented 3 years ago

@andylittle Thanks, you made my day! I had typos in my sensor map!