Well, I screwed up the line I wanted you to add. Then end of that line should have been:
(ts, type(ts), self.cache[obs][‘ts’], type(self.cache[obs][‘ts’]), max_age, type(max_age)))
As I mentioned, the only way you could get this is if max_age is a string. Are you sure you don’t have max_cache_age = “600” (i.e., the 600 in quotes) in weewx.conf? Ian, Glen, John,
I made the changes that Ian suggested and that seems to have done the trick! I've pasted the log from the restart. I've waited a couple of report periods, but there is no change in the gauges. Thank you all for the progress so far!
Started weewx.service - WeeWX. INFO __main__: Initializing weewxd version 5.2.0 INFO __main__: Command line: /usr/share/weewx/weewxd.py /etc/weewx/weewx.conf INFO __main__: Using Python: 3.13.5 (main, Jun 25 2025, 18:55:22) [GCC 14.2.0] INFO __main__: Located at: /usr/bin/python3 INFO __main__: Platform: Linux-6.12.47+rpt-rpi-v8-aarch64-with-glibc2.41 INFO __main__: Locale: 'en_US' INFO __main__: Entry path: /usr/share/weewx/weewxd.py INFO __main__: WEEWX_ROOT: /etc/weewx INFO __main__: Config file: /etc/weewx/weewx.conf INFO __main__: User module: /etc/weewx/bin/user INFO __main__: Debug: 1 INFO __main__: User: weewx INFO __main__: Group: weewx INFO __main__: Groups: weewx DEBUG __main__: loop_on_init: False DEBUG __main__: Initializing engine INFO weewx.engine: Loading station type FileParse (user.fileparse) INFO user.fileparse: Data file is /var/tmp/weewx/data.csv INFO user.fileparse: Polling interval is 10.0 INFO user.fileparse: Label map is {'pressure': 'pressure', 'outTemp': 'outTemp', 'inTemp': 'inTemp', 'outHumidity': 'outHumidity', 'inHumidity': 'inHumidity', 'windSpeed': 'windSpeed', 'windDir': 'windDir', 'windGust': 'windGust', 'windGustDir': 'windGustDir', 'supplyVoltage': 'supplyVoltage', 'lightLevel': 'radiation', 'rain': 'rain'} DEBUG weewx.engine: Loading service weewx.engine.StdTimeSynch DEBUG weewx.engine: Finished loading service weewx.engine.StdTimeSynch DEBUG weewx.engine: Loading service weewx.engine.StdConvert INFO weewx.engine: StdConvert target unit is 0x1 DEBUG weewx.engine: Finished loading service weewx.engine.StdConvert DEBUG weewx.engine: Loading service weewx.engine.StdCalibrate DEBUG weewx.engine: Finished loading service weewx.engine.StdCalibrate DEBUG weewx.engine: Loading service weewx.engine.StdQC DEBUG weewx.engine: Finished loading service weewx.engine.StdQC DEBUG weewx.engine: Loading service weewx.wxservices.StdWXCalculate INFO weewx.wxservices: StdWXCalculate will use data binding wx_binding DEBUG weewx.manager: Daily summary version is 4.0 DEBUG weewx.engine: Finished loading service weewx.wxservices.StdWXCalculate DEBUG weewx.engine: Loading service weewx.wxxtypes.StdWXXTypes DEBUG weewx.engine: Finished loading service weewx.wxxtypes.StdWXXTypes DEBUG weewx.engine: Loading service weewx.wxxtypes.StdPressureCooker DEBUG weewx.engine: Finished loading service weewx.wxxtypes.StdPressureCooker DEBUG weewx.engine: Loading service weewx.wxxtypes.StdRainRater DEBUG weewx.engine: Finished loading service weewx.wxxtypes.StdRainRater DEBUG weewx.engine: Loading service weewx.wxxtypes.StdDelta DEBUG weewx.engine: Finished loading service weewx.wxxtypes.StdDelta DEBUG weewx.engine: Loading service weewx.engine.StdArchive INFO weewx.engine: Archive will use data binding wx_binding INFO weewx.engine: Record generation will be attempted in 'hardware' INFO weewx.engine: Using archive interval of 300 seconds (specified in weewx configuration) DEBUG weewx.engine: Use LOOP data in hi/low calculations: 1 DEBUG weewx.engine: Finished loading service weewx.engine.StdArchive DEBUG weewx.engine: Loading service weewx.restx.StdStationRegistry INFO weewx.restx: StationRegistry: Registration not requested. DEBUG weewx.engine: Finished loading service weewx.restx.StdStationRegistry DEBUG weewx.engine: Loading service weewx.restx.StdWunderground INFO weewx.restx: Wunderground: Posting not enabled. DEBUG weewx.engine: Finished loading service weewx.restx.StdWunderground DEBUG weewx.engine: Loading service weewx.restx.StdPWSweather INFO weewx.restx: PWSweather: Posting not enabled. DEBUG weewx.engine: Finished loading service weewx.restx.StdPWSweather DEBUG weewx.engine: Loading service weewx.restx.StdCWOP INFO weewx.restx: CWOP: Posting not enabled. DEBUG weewx.engine: Finished loading service weewx.restx.StdCWOP DEBUG weewx.engine: Loading service weewx.restx.StdWOW INFO weewx.restx: WOW: Posting not enabled. DEBUG weewx.engine: Finished loading service weewx.restx.StdWOW DEBUG weewx.engine: Loading service weewx.restx.StdWOWBE INFO weewx.restx: WOW-BE: Posting not enabled. DEBUG weewx.engine: Finished loading service weewx.restx.StdWOWBE DEBUG weewx.engine: Loading service weewx.restx.StdAWEKAS INFO weewx.restx: AWEKAS: Posting not enabled. DEBUG weewx.engine: Finished loading service weewx.restx.StdAWEKAS DEBUG weewx.engine: Loading service weewx.engine.StdPrint DEBUG weewx.engine: Finished loading service weewx.engine.StdPrint DEBUG weewx.engine: Loading service weewx.engine.StdReport INFO weewx.engine: 'pyephem' detected, extended almanac data is available DEBUG weewx.engine: Finished loading service weewx.engine.StdReport DEBUG weewx.engine: Loading service user.rtgd.RealtimeGaugeData INFO user.rtgd: version is 0.5.5 DEBUG weewx.manager: Daily summary version is 4.0 INFO user.rtgd: Unknown block specified for scroller_text INFO user.rtgd: gauge-data.txt will not be exported. INFO user.rtgd: '/var/www/html/weewx/steelseries/gauge-data.txt' will be generated. min_interval is 2 seconds DEBUG weewx.engine: Finished loading service user.rtgd.RealtimeGaugeData INFO __main__: Starting up weewx version 5.2.0 DEBUG weewx.engine: Station does not support reading the time INFO weewx.engine: Using binding 'wx_binding' to database 'weewx.sdb' INFO weewx.manager: Starting backfill of daily summaries INFO weewx.manager: Daily summaries up to date INFO weewx.engine: Starting main packet loop. DEBUG weewx.manager: Daily summary version is 4.0 DEBUG weewx.manager: Daily summary version is 4.0 INFO user.rtgd: ts: 1763600590 (1763600590), self.cache[obs]['ts']: 1763600590 (1763600590), max_age: 600 (600) INFO user.rtgd: ts: 1763600590 (1763600590), self.cache[obs]['ts']: 1763600400 (1763600400), max_age: 600 (600) INFO user.rtgd: ts: 1763600590 (1763600590), self.cache[obs]['ts']: 1763600400 (1763600400), max_age: 600 (600) INFO user.rtgd: ts: 1763600590 (1763600590), self.cache[obs]['ts']: 1763600590 (1763600590), max_age: 600 (600) INFO user.rtgd: ts: 1763600590 (1763600590), self.cache[obs]['ts']: 1763600590 (1763600590), max_age: 600 (600) INFO user.rtgd: ts: 1763600590 (1763600590), self.cache[obs]['ts']: 1763600590 (1763600590), max_age: 600 (600) INFO user.rtgd: ts: 1763600590 (1763600590), self.cache[obs]['ts']: 1763600590 (1763600590), max_age: 600 (600) INFO user.rtgd: ts: 1763600590 (1763600590), self.cache[obs]['ts']: 1763600590 (1763600590), max_age: 600 (600) INFO user.rtgd: ts: 1763600590 (1763600590), self.cache[obs]['ts']: 1763600590 (1763600590), max_age: 600 (600) INFO user.rtgd: ts: 1763600590 (1763600590), self.cache[obs]['ts']: 1763600590 (1763600590), max_age: 600 (600) INFO user.rtgd: ts: 1763600590 (1763600590), self.cache[obs]['ts']: 1763600590 (1763600590), max_age: 600 (600) INFO user.rtgd: ts: 1763600590 (1763600590), self.cache[obs]['ts']: 1763600590 (1763600590), max_age: 600 (600) INFO user.rtgd: ts: 1763600590 (1763600590), self.cache[obs]['ts']: 1763600590 (1763600590), max_age: 600 (600) INFO user.rtgd: ts: 1763600590 (1763600590), self.cache[obs]['ts']: 1763600590 (1763600590), max_age: 600 (600) INFO user.rtgd: ts: 1763600590 (1763600590), self.cache[obs]['ts']: 1763600590 (1763600590), max_age: 600 (600) INFO user.rtgd: ts: 1763600590 (1763600590), self.cache[obs]['ts']: 1763600590 (1763600590), max_age: 600 (600) INFO user.rtgd: ts: 1763600590 (1763600590), self.cache[obs]['ts']: 1763600590 (1763600590), max_age: 600 (600) INFO user.rtgd: ts: 1763600590 (1763600590), self.cache[obs]['ts']: 1763600400 (1763600400), max_age: 600 (600) INFO user.rtgd: ts: 1763600590 (1763600590), self.cache[obs]['ts']: 1763600590 (1763600590), max_age: 600 (600) INFO user.rtgd: ts: 1763600590 (1763600590), self.cache[obs]['ts']: 1763600590 (1763600590), max_age: 600 (600) INFO user.rtgd: ts: 1763600590 (1763600590), self.cache[obs]['ts']: 1763600590 (1763600590), max_age: 600 (600) INFO user.rtgd: ts: 1763600590 (1763600590), self.cache[obs]['ts']: 1763600590 (1763600590), max_age: 600 (600) INFO user.rtgd: ts: 1763600590 (1763600590), self.cache[obs]['ts']: 1763600590 (1763600590), max_age: 600 (600) INFO user.rtgd: ts: 1763600590 (1763600590), self.cache[obs]['ts']: 1763600590 (1763600590), max_age: 600 (600) INFO user.rtgd: ts: 1763600590 (1763600590), self.cache[obs]['ts']: 1763600590 (1763600590), max_age: 600 (600) INFO user.rtgd: ts: 1763600590 (1763600590), self.cache[obs]['ts']: 1763600590 (1763600590), max_age: 600 (600) INFO user.rtgd: ts: 1763600590 (1763600590), self.cache[obs]['ts']: 1763600590 (1763600590), max_age: 600 (600)
On Wednesday, November 19, 2025 at 6:55:25 PM UTC-5 Ian Millard wrote:
Hi,
The error in your WeeWX log shows a type mismatch in the RealtimeGaugeData extension. The issue is that max_age is being treated as a string instead of an integer when comparing timestamps.
Find the problematic line (around line 2894): if obs in self.cache and ts - self.cache[obs]['ts'] <= max_age: Modify it to ensure integer comparison: if obs in self.cache and ts - self.cache[obs]['ts'] <= int(max_age):
Also check the calling function (around line 2908) and ensure the max_age parameter is passed as integer: packet[obs] = self.get_value(obs, ts, int(max_age)) Cheers, Ian
Started weewx.service - WeeWX. INFO __main__: Initializing weewxd version 5.2.0 INFO __main__: Command line: /usr/share/weewx/weewxd.py /etc/weewx/weewx.conf INFO __main__: Using Python: 3.13.5 (main, Jun 25 2025, 18:55:22) [GCC 14.2.0] INFO __main__: Located at: /usr/bin/python3 INFO __main__: Platform: Linux-6.12.47+rpt-rpi-v8-aarch64-with-glibc2.41 INFO __main__: Locale: 'en_US' INFO __main__: Entry path: /usr/share/weewx/weewxd.py INFO __main__: WEEWX_ROOT: /etc/weewx INFO __main__: Config file: /etc/weewx/weewx.conf INFO __main__: User module: /etc/weewx/bin/user INFO __main__: Debug: 1 INFO __main__: User: weewx INFO __main__: Group: weewx INFO __main__: Groups: weewx DEBUG __main__: loop_on_init: False DEBUG __main__: Initializing engine INFO weewx.engine: Loading station type FileParse (user.fileparse) INFO user.fileparse: Data file is /var/tmp/weewx/data.csv INFO user.fileparse: Polling interval is 10.0 INFO user.fileparse: Label map is {'pressure': 'pressure', 'outTemp': 'outTemp', 'inTemp': 'inTemp', 'outHumidity': 'outHumidity', 'inHumidity': 'inHumidity', 'windSpeed': 'windSpeed', 'windDir': 'windDir', 'windGust': 'windGust', 'windGustDir': 'windGustDir', 'supplyVoltage': 'supplyVoltage', 'lightLevel': 'radiation', 'rain': 'rain'} DEBUG weewx.engine: Loading service weewx.engine.StdTimeSynch DEBUG weewx.engine: Finished loading service weewx.engine.StdTimeSynch DEBUG weewx.engine: Loading service weewx.engine.StdConvert INFO weewx.engine: StdConvert target unit is 0x1 DEBUG weewx.engine: Finished loading service weewx.engine.StdConvert DEBUG weewx.engine: Loading service weewx.engine.StdCalibrate DEBUG weewx.engine: Finished loading service weewx.engine.StdCalibrate DEBUG weewx.engine: Loading service weewx.engine.StdQC DEBUG weewx.engine: Finished loading service weewx.engine.StdQC DEBUG weewx.engine: Loading service weewx.wxservices.StdWXCalculate INFO weewx.wxservices: StdWXCalculate will use data binding wx_binding DEBUG weewx.manager: Daily summary version is 4.0 DEBUG weewx.engine: Finished loading service weewx.wxservices.StdWXCalculate DEBUG weewx.engine: Loading service weewx.wxxtypes.StdWXXTypes DEBUG weewx.engine: Finished loading service weewx.wxxtypes.StdWXXTypes DEBUG weewx.engine: Loading service weewx.wxxtypes.StdPressureCooker DEBUG weewx.engine: Finished loading service weewx.wxxtypes.StdPressureCooker DEBUG weewx.engine: Loading service weewx.wxxtypes.StdRainRater DEBUG weewx.engine: Finished loading service weewx.wxxtypes.StdRainRater DEBUG weewx.engine: Loading service weewx.wxxtypes.StdDelta DEBUG weewx.engine: Finished loading service weewx.wxxtypes.StdDelta DEBUG weewx.engine: Loading service weewx.engine.StdArchive INFO weewx.engine: Archive will use data binding wx_binding INFO weewx.engine: Record generation will be attempted in 'hardware' INFO weewx.engine: Using archive interval of 300 seconds (specified in weewx configuration) DEBUG weewx.engine: Use LOOP data in hi/low calculations: 1 DEBUG weewx.engine: Finished loading service weewx.engine.StdArchive DEBUG weewx.engine: Loading service weewx.restx.StdStationRegistry INFO weewx.restx: StationRegistry: Registration not requested. DEBUG weewx.engine: Finished loading service weewx.restx.StdStationRegistry DEBUG weewx.engine: Loading service weewx.restx.StdWunderground INFO weewx.restx: Wunderground: Posting not enabled. DEBUG weewx.engine: Finished loading service weewx.restx.StdWunderground DEBUG weewx.engine: Loading service weewx.restx.StdPWSweather INFO weewx.restx: PWSweather: Posting not enabled. DEBUG weewx.engine: Finished loading service weewx.restx.StdPWSweather DEBUG weewx.engine: Loading service weewx.restx.StdCWOP INFO weewx.restx: CWOP: Posting not enabled. DEBUG weewx.engine: Finished loading service weewx.restx.StdCWOP DEBUG weewx.engine: Loading service weewx.restx.StdWOW INFO weewx.restx: WOW: Posting not enabled. DEBUG weewx.engine: Finished loading service weewx.restx.StdWOW DEBUG weewx.engine: Loading service weewx.restx.StdWOWBE INFO weewx.restx: WOW-BE: Posting not enabled. DEBUG weewx.engine: Finished loading service weewx.restx.StdWOWBE DEBUG weewx.engine: Loading service weewx.restx.StdAWEKAS INFO weewx.restx: AWEKAS: Posting not enabled. DEBUG weewx.engine: Finished loading service weewx.restx.StdAWEKAS DEBUG weewx.engine: Loading service weewx.engine.StdPrint DEBUG weewx.engine: Finished loading service weewx.engine.StdPrint DEBUG weewx.engine: Loading service weewx.engine.StdReport INFO weewx.engine: 'pyephem' detected, extended almanac data is available DEBUG weewx.engine: Finished loading service weewx.engine.StdReport DEBUG weewx.engine: Loading service user.rtgd.RealtimeGaugeData INFO user.rtgd: version is 0.5.5 DEBUG weewx.manager: Daily summary version is 4.0 INFO user.rtgd: Unknown block specified for scroller_text INFO user.rtgd: gauge-data.txt will not be exported. INFO user.rtgd: '/var/www/html/weewx/steelseries/gauge-data.txt' will be generated. min_interval is 2 seconds DEBUG weewx.engine: Finished loading service user.rtgd.RealtimeGaugeData INFO __main__: Starting up weewx version 5.2.0 DEBUG weewx.engine: Station does not support reading the time INFO weewx.engine: Using binding 'wx_binding' to database 'weewx.sdb' INFO weewx.manager: Starting backfill of daily summaries INFO weewx.manager: Daily summaries up to date INFO weewx.engine: Starting main packet loop. DEBUG weewx.manager: Daily summary version is 4.0 DEBUG weewx.manager: Daily summary version is 4.0 INFO user.rtgd: ts: 1763588923 (1763588923), self.cache[obs]['ts']: 1763588923 (1763588923), max_age: 600 (600) CRITICAL user.rtgd: Unexpected exception of type <class 'TypeError'> DEBUG user.rtgd: rtgdthread: **** Traceback (most recent call last): DEBUG user.rtgd: rtgdthread: **** File "/etc/weewx/bin/user/rtgd.py", line 1825, in run DEBUG user.rtgd: rtgdthread: **** self.process_packet(_package['payload']) DEBUG user.rtgd: rtgdthread: **** ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ DEBUG user.rtgd: rtgdthread: **** File "/etc/weewx/bin/user/rtgd.py", line 1880, in process_packet DEBUG user.rtgd: rtgdthread: **** cached_packet = self.packet_cache.get_packet(_conv_packet['dateTime'], DEBUG user.rtgd: rtgdthread: **** self.max_cache_age) DEBUG user.rtgd: rtgdthread: **** File "/etc/weewx/bin/user/rtgd.py", line 2908, in get_packet DEBUG user.rtgd: rtgdthread: **** packet[obs] = self.get_value(obs, ts, max_age) DEBUG user.rtgd: rtgdthread: **** ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^ DEBUG user.rtgd: rtgdthread: **** File "/etc/weewx/bin/user/rtgd.py", line 2894, in get_value DEBUG user.rtgd: rtgdthread: **** if obs in self.cache and ts - self.cache[obs]['ts'] <= max_age: DEBUG user.rtgd: rtgdthread: **** ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ DEBUG user.rtgd: rtgdthread: **** TypeError: '<=' not supported between instances of 'int' and 'str' CRITICAL user.rtgd: Thread exiting. Reason: '<=' not supported between instances of 'int' and 'str' INFO weewx.manager: Added record 2025-11-19 16:50:00 EST (1763589000) to database 'weewx.sdb' INFO weewx.manager: Added record 2025-11-19 16:50:00 EST (1763589000) to daily summary in 'weewx.sdb'
--
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 [email protected].
To view this discussion visit https://groups.google.com/d/msgid/weewx-user/dc5f17d5-1799-468e-bf3f-a76f99d0851an%40googlegroups.com.
--
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 [email protected].
To view this discussion visit https://groups.google.com/d/msgid/weewx-user/87F4FCEE-7B7F-46D8-8AB7-1E710380D33E%40johnkline.com.
|