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
>>  
>> <https://groups.google.com/d/msgid/weewx-user/dc5f17d5-1799-468e-bf3f-a76f99d0851an%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>> -- 
> 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/83f0924f-3e05-4d37-aff6-6accbd539da2n%40googlegroups.com
>  
> <https://groups.google.com/d/msgid/weewx-user/83f0924f-3e05-4d37-aff6-6accbd539da2n%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>
>

-- 
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/795f2ba8-abb0-46a7-9113-76b01127a7edn%40googlegroups.com.

Reply via email to