Ron,

Would you verify that the following file exists:
/var/www/html/weewx/steelseries/gauge-data.txt

If it does, next you need to determine if it is being updated on every loop record.  Is it changing only on the archive interval (every 5 minutes) or more often (perhaps every two seconds for some devices)?

If gauge-data.txt is working correctly, we can make the changes to point the _javascript_ to the correct file.

On Nov 20, 2025, at 7:26 AM, 'Ron Walker' via weewx-user <[email protected]> wrote:

John,

I'm pretty sure they are mcrossley gauges.

Ron

On Thursday, November 20, 2025 at 10:12:59 AM UTC-5 John Kline wrote:
That looks fine.  The problem might be a mismatched SteelSeries-Weather-Gauges.

I provided you with a link to Mark Crossley’s original repository; but Gary modified that.  Exactly which SteelSeries-Weather-Gauges do you have installed?

On Nov 20, 2025, at 7:03 AM, 'Ron Walker' via weewx-user <[email protected]> wrote:

John,

Here is the Realtime Gauges section of weewx.conf:

[RealtimeGaugeData]
    # Date format to be used in gauge-data.txt. Must be either %d/%m/%Y,
    # %m/%d/%Y or %Y/%m/%d. Separator may be forward slash '/' or a
    # hyphen '-'. Default is %Y/%m/%d.
    date_format = %m/%d/%Y

    # Time format to be used in gauge-data.txt. May be %H:%M or %h:%M.
    # Default is %H:%M
    time_format = %H:%M

    # Path to gauge-data.txt. Relative paths are relative to HTML_ROOT. If
    # empty default is HTML_ROOT. If setting omitted altogether default is
    # /var/tmp
    rtgd_path = /var/www/html/weewx/steelseries

    # File name (only) of file produced by rtgd. Optional, default is
    # gauge-data.txt.
    rtgd_file_name = gauge-data.txt

    # Remote URL to which the gauge-data.txt data will be posted via HTTP POST.
    # Optional, omit to disable HTTP POST.
    # If remote_server_url is specified, do not specify an rsync server.
    # remote_server_url = http://remote/address

    # timeout in seconds for remote URL posts. Optional, default is 2
    timeout = 1

    # Text returned from remote URL indicating success. Optional, default is no
    # response text.
    response_text = success

    # Remote host to which the gauge-data.txt data will be synced via rsync.
    # Optional, omit to disable rsync to remote host.
    # If rsync_server is specified, do not specify a remote_server_url.
    #
    # Note: The rsync feature will only work in WeeWX v.4 and above.  In earlier
    # versions, rsyncing of single files is not supported by WeeWX' rsync
    # help function.
    #
    # To use rsync, passwordless ssh using public/private key must be
    # configured for authentication from the user account that WeeWX runs under on
    # this computer to the user account on the remote machine with write access to
    # the destination directory (rsync_remote_rtgd_dir).
    #
    # If you run logwatch on your system, the following lines will show in the
    # WeeWX section when they are non-zero.  The first line includes any
    # reporting files rsynced (if that is configured).  The others report timeouts
    # and write errors.  Small numbers are expected here as timeouts are purposely
    # defaulted to 1 second.  If taking to long to send, it's better to skip it
    # and send the next (as in fresher) gauge-data.txt file.
    #
    #    rsync: files uploaded                          27206
    #    rsync: gauge-data: IO timeout-data                 7
    #    rsync: gauge-data: connection timeouts            11
    #    rsync: gauge-data: write errors                    1
    #
    #
    # Fill out the following fields:
    #   rsync_server             : The server to which gauge-data.txt will be copied.
    #   rsync_user               : The userid on rsync_server with write
    #                              permission to rsync_remote_rtgd_dir.
    #   rsync_remote_rtgd_dir    : The directory on rsync_server where
    #                              gauge-data.txt will be copied.
    #   rsync_compress           : True to compress the file before sending.
    #                              Default is False.
    #   rsync_log_success        : True to write success with timing messages to
    #                              the log (for debugging).  Default is False.
    #   rsync_ssh_options        : ssh options Default is '-o ConnectTimeout=1'
    #                              (When connecting, time out in 1 second.)
    #   rsync_timeout            : I/O timeout. Default is 1.  (When sending,
    #                              timeout in 1 second.)
    #   rsync_skip_if_older_than : Don't bother to rsync if greater than this
    #                              number of seconds.  Default is 4.  (Skip this
    #                              and move on to the next if this data is older
    #                              than 4 seconds.
    # Use either the post method or the rsync method, not both.
    # [[Rsync]]
    #   rsync_server = emerald.johnkline.com
    #   rsync_user = root
    #   rsync_remote_rtgd_dir = /home/weewx/gauge-data
    #   rsync_compress = False
    #   rsync_log_success = False
    #   rsync_ssh_options = "-o ConnectTimeout=1"
    #   rsync_timeout = 1
    #   rsync_skip_if_older_than = 4

    # Minimum interval (seconds) between file generation. Ideally
    # gauge-data.txt would be generated on receipt of every loop packet (there
    # is no point in generating more frequently than this); however, in some
    # cases the user may wish to generate gauge-data.txt less frequently. The
    # min_interval option sets the minimum time between successive
    # gauge-data.txt generations. Generation will be skipped on arrival of a
    # loop packet if min_interval seconds have NOT elapsed since the last
    # generation. If min_interval is 0 or omitted generation will occur on
    # every loop packet (as will be the case if min_interval < station loop
    # period). Optional, default is 0.
    min_interval = 2

    # Number of compass points to include in WindRoseData, normally
    # 8 or 16. Optional, default 16.
    windrose_points = 16

    # Period over which to calculate WindRoseData in seconds. Optional, default
    # is 86400 (24 hours).
    windrose_period = 86400

    # Binding to use for appTemp data. Optional, default 'wx_binding'.
    apptemp_binding = wx_binding

    # The SteelSeries Weather Gauges displays the content of the gauge-data.txt
    # 'forecast' field in the scrolling text display. The RTGD service can
    # populate the 'forecast' field from a number of sources. The available
    # sources are:
    #
    # 1. a user specified text
    # 2. the first line of a text file
    # 3. Weather Underground forecast from the Weather Underground API
    # 4. Darksky forecast from the Darksky API
    # 5. Zambretti forecast from the WeeWX forecast extension
    #
    # The block to be used is specified using the scroller_source config
    # option. The scroller_source should be set to one of the following strings
    # to use the indicated block:
    # 1. text - to use user specified text
    # 2. file - to user the first line of a text file
    # 3. Weather Underground - to use a Weather Underground forecast
    # 4. Darksky - to use a Darksky forecast
    # 5. Zambretti - to use a Zambretti forecast
    #
    # The scroller_source config option is case insensitive. A corresponding
    # second level config section (ie [[ ]]) is required for the block to be
    # used. Refer to step 4 below for details. If the scroller_source config
    # option is omitted or left blank the 'forecast' field will be blank and no
    # scroller text will be displayed.
    scroller_source = text|file|WU|DS|Zambretti

    # Update windrun value each loop period or just on each archive period.
    # Optional, default is False.
    windrun_loop = false

    # Stations that provide partial packets are supported through a cache that
    # caches packet data. max_cache_age is the maximum age  in seconds for
    # which cached data is retained. Optional, default is 600 seconds.
    max_cache_age = 600
   
    # It is possible to ignore the sensor contact check result for the station
    # and always set the gauge-data.txt SensorContactLost field to 0 (sensor
    # contact not lost). This option should be used with care as it may mask a
    # legitimate sensor lost contact state. Optional, default is False.
    ignore_lost_contact = False

    [[StringFormats]]
        # String formats. Optional.
        degree_C = %.1f
        degree_F = %.1f
        degree_compass = %.0f
        hPa = %.1f
        inHg = %.2f
        inch = %.2f
        inch_per_hour = %.2f
        km_per_hour = %.1f
        km = %.1f
        mbar = %.1f
        meter = %.0f
        meter_per_second = %.1f
        mile_per_hour = %.1f
        mile = %.1f
        mm = %.1f
        mm_per_hour = %.1f
        percent = %.0f
        uv_index = %.1f
        watt_per_meter_squared = %.0f

    [[Groups]]
        # Groups. Optional. Note not all available WeeWX units are supported
        # for each group.
        group_altitude = foot        # Options are 'meter' or 'foot'
        group_pressure = hPa         # Options are 'inHg', 'mbar', or 'hPa'
        group_rain = mm              # Options are 'inch' or 'mm'
        group_speed = km_per_hour    # Options are 'mile_per_hour','km_per_hour' or 'meter_per_second'
        group_temperature = degree_C # Options are 'degree_F' or 'degree_C'


On Thursday, November 20, 2025 at 9:29:59 AM UTC-5 John Kline wrote:
I would have thought the js would be looking for gauge-data.txt and not realtimegauges.txt.

Please send the section of weewx.conf for realtime gauges.  Don’t send your entire weewx.conf file.

Also, we still need to get to the bottom of why max_age is a string.  Hacking the code to change it to an int is not a desirable way to work around the issue.  Perhaps when you send the weewx.conf entrees, we’ll get an answer to that question.

On Nov 20, 2025, at 6:16 AM, 'Ron Walker' via weewx-user <[email protected]> wrote:


Hi John,

Here is the output from the console:
/realtimegauges.txt?_=1763647600018:1  Failed to load resource: the server responded with a status of 404 (Not Found)
/realtimegauges.txt?_=1763647600019:1  Failed to load resource: the server responded with a status of 404 (Not Found)
/realtimegauges.txt?_=1763647600020:1  Failed to load resource: the server responded with a status of 404 (Not Found)
/realtimegauges.txt?_=1763647600021:1  Failed to load resource: the server responded with a status of 404 (Not Found)
/realtimegauges.txt?_=1763647600022:1  Failed to load resource: the server responded with a status of 404 (Not Found)
jquery-1.11.1.min.js:4  GET http://localhost/realtimegauges.txt?_=1763647600023 404 (Not Found)
send @ jquery-1.11.1.min.js:4
ajax @ jquery-1.11.1.min.js:4
getRealtime @ gauges.js:2743
jquery-1.11.1.min.js:4  GET http://localhost/realtimegauges.txt?_=1763647600024 404 (Not Found)
send @ jquery-1.11.1.min.js:4
ajax @ jquery-1.11.1.min.js:4
getRealtime @ gauges.js:2743
setTimeout
checkRtError @ gauges.js:2789
(anonymous) @ gauges.js:2751
j @ jquery-1.11.1.min.js:2
fireWith @ jquery-1.11.1.min.js:2
x @ jquery-1.11.1.min.js:4
b @ jquery-1.11.1.min.js:4
XMLHttpRequest.send
send @ jquery-1.11.1.min.js:4
ajax @ jquery-1.11.1.min.js:4
getRealtime @ gauges.js:2743
jquery-1.11.1.min.js:4  GET http://localhost/realtimegauges.txt?_=1763647600025 404 (Not Found)
send @ jquery-1.11.1.min.js:4
ajax @ jquery-1.11.1.min.js:4
getRealtime @ gauges.js:2743
setTimeout
checkRtError @ gauges.js:2789
(anonymous) @ gauges.js:2751
j @ jquery-1.11.1.min.js:2
fireWith @ jquery-1.11.1.min.js:2
x @ jquery-1.11.1.min.js:4
b @ jquery-1.11.1.min.js:4
XMLHttpRequest.send
send @ jquery-1.11.1.min.js:4
ajax @ jquery-1.11.1.min.js:4
getRealtime @ gauges.js:2743
setTimeout
checkRtError @ gauges.js:2789
(anonymous) @ gauges.js:2751
j @ jquery-1.11.1.min.js:2
fireWith @ jquery-1.11.1.min.js:2
x @ jquery-1.11.1.min.js:4
b @ jquery-1.11.1.min.js:4
XMLHttpRequest.send
send @ jquery-1.11.1.min.js:4
ajax @ jquery-1.11.1.min.js:4
getRealtime @ gauges.js:2743
jquery-1.11.1.min.js:4  GET http://localhost/realtimegauges.txt?_=1763647600026 404 (Not Found)
send @ jquery-1.11.1.min.js:4
ajax @ jquery-1.11.1.min.js:4
getRealtime @ gauges.js:2743
setTimeout
checkRtError @ gauges.js:2789
(anonymous) @ gauges.js:2751
j @ jquery-1.11.1.min.js:2
fireWith @ jquery-1.11.1.min.js:2
x @ jquery-1.11.1.min.js:4
b @ jquery-1.11.1.min.js:4
XMLHttpRequest.send
send @ jquery-1.11.1.min.js:4
ajax @ jquery-1.11.1.min.js:4
getRealtime @ gauges.js:2743
setTimeout
checkRtError @ gauges.js:2789
(anonymous) @ gauges.js:2751
j @ jquery-1.11.1.min.js:2
fireWith @ jquery-1.11.1.min.js:2
x @ jquery-1.11.1.min.js:4
b @ jquery-1.11.1.min.js:4
XMLHttpRequest.send
send @ jquery-1.11.1.min.js:4
ajax @ jquery-1.11.1.min.js:4
getRealtime @ gauges.js:2743
setTimeout
checkRtError @ gauges.js:2789
(anonymous) @ gauges.js:2751
j @ jquery-1.11.1.min.js:2
fireWith @ jquery-1.11.1.min.js:2
x @ jquery-1.11.1.min.js:4
b @ jquery-1.11.1.min.js:4
XMLHttpRequest.send
send @ jquery-1.11.1.min.js:4
ajax @ jquery-1.11.1.min.js:4
getRealtime @ gauges.js:2743
jquery-1.11.1.min.js:4  GET http://localhost/realtimegauges.txt?_=1763647600027 404 (Not Found)
send @ jquery-1.11.1.min.js:4
ajax @ jquery-1.11.1.min.js:4
getRealtime @ gauges.js:2743
setTimeout
checkRtError @ gauges.js:2789
(anonymous) @ gauges.js:2751
j @ jquery-1.11.1.min.js:2
fireWith @ jquery-1.11.1.min.js:2
x @ jquery-1.11.1.min.js:4
b @ jquery-1.11.1.min.js:4
XMLHttpRequest.send
send @ jquery-1.11.1.min.js:4
ajax @ jquery-1.11.1.min.js:4
getRealtime @ gauges.js:2743
setTimeout
checkRtError @ gauges.js:2789
(anonymous) @ gauges.js:2751
j @ jquery-1.11.1.min.js:2
fireWith @ jquery-1.11.1.min.js:2
x @ jquery-1.11.1.min.js:4
b @ jquery-1.11.1.min.js:4
XMLHttpRequest.send
send @ jquery-1.11.1.min.js:4
ajax @ jquery-1.11.1.min.js:4
getRealtime @ gauges.js:2743
setTimeout
checkRtError @ gauges.js:2789
(anonymous) @ gauges.js:2751
j @ jquery-1.11.1.min.js:2
fireWith @ jquery-1.11.1.min.js:2
x @ jquery-1.11.1.min.js:4
b @ jquery-1.11.1.min.js:4
XMLHttpRequest.send
send @ jquery-1.11.1.min.js:4
ajax @ jquery-1.11.1.min.js:4
getRealtime @ gauges.js:2743
setTimeout
checkRtError @ gauges.js:2789
(anonymous) @ gauges.js:2751
j @ jquery-1.11.1.min.js:2
fireWith @ jquery-1.11.1.min.js:2
x @ jquery-1.11.1.min.js:4
b @ jquery-1.11.1.min.js:4
XMLHttpRequest.send
send @ jquery-1.11.1.min.js:4
ajax @ jquery-1.11.1.min.js:4
getRealtime @ gauges.js:2743
jquery-1.11.1.min.js:4  GET http://localhost/realtimegauges.txt?_=1763647600028 404 (Not Found)
send @ jquery-1.11.1.min.js:4
ajax @ jquery-1.11.1.min.js:4
getRealtime @ gauges.js:2743
setTimeout
checkRtError @ gauges.js:2789
(anonymous) @ gauges.js:2751
j @ jquery-1.11.1.min.js:2
fireWith @ jquery-1.11.1.min.js:2
x @ jquery-1.11.1.min.js:4
b @ jquery-1.11.1.min.js:4
XMLHttpRequest.send
send @ jquery-1.11.1.min.js:4
ajax @ jquery-1.11.1.min.js:4
getRealtime @ gauges.js:2743
setTimeout
checkRtError @ gauges.js:2789
(anonymous) @ gauges.js:2751
j @ jquery-1.11.1.min.js:2
fireWith @ jquery-1.11.1.min.js:2
x @ jquery-1.11.1.min.js:4
b @ jquery-1.11.1.min.js:4
XMLHttpRequest.send
send @ jquery-1.11.1.min.js:4
ajax @ jquery-1.11.1.min.js:4
getRealtime @ gauges.js:2743
setTimeout
checkRtError @ gauges.js:2789
(anonymous) @ gauges.js:2751
j @ jquery-1.11.1.min.js:2
fireWith @ jquery-1.11.1.min.js:2
x @ jquery-1.11.1.min.js:4
b @ jquery-1.11.1.min.js:4
XMLHttpRequest.send
send @ jquery-1.11.1.min.js:4
ajax @ jquery-1.11.1.min.js:4
getRealtime @ gauges.js:2743
setTimeout
checkRtError @ gauges.js:2789
(anonymous) @ gauges.js:2751
j @ jquery-1.11.1.min.js:2
fireWith @ jquery-1.11.1.min.js:2
x @ jquery-1.11.1.min.js:4
b @ jquery-1.11.1.min.js:4
XMLHttpRequest.send
send @ jquery-1.11.1.min.js:4
ajax @ jquery-1.11.1.min.js:4
getRealtime @ gauges.js:2743
setTimeout
checkRtError @ gauges.js:2789
(anonymous) @ gauges.js:2751
j @ jquery-1.11.1.min.js:2
fireWith @ jquery-1.11.1.min.js:2
x @ jquery-1.11.1.min.js:4
b @ jquery-1.11.1.min.js:4
XMLHttpRequest.send



On Wednesday, November 19, 2025 at 9:55:48 PM UTC-5 John Kline wrote:
As for your current problem, would you look at the _javascript_ console in your browser when the gauges display is displayed?  There should be _javascript_ errors that you can paste here.

On Nov 19, 2025, at 6:53 PM, John Kline <[email protected]> wrote:


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?

On Nov 19, 2025, at 5:13 PM, 'Ron Walker' via weewx-user <[email protected]> wrote:

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

On 19 Nov 2025, at 22:37, 'Ron Walker' via weewx-user <[email protected]> wrote:

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].

--
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].

--
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/32e1c767-3dcc-49a2-a929-c2328f86d168n%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/64018A26-8995-44BD-9EDB-741488C77C8D%40johnkline.com.

Reply via email to