windGust no longer recorded (but appears in LOOP) - GW2000 station

94 views
Skip to first unread message

Pascal Hingamp

unread,
Nov 23, 2022, 6:30:27 AM11/23/22
to weewx-user
Hi,

I'm running weewx 4.9.1 with a dual station setup : a WMR88 station via the USB weewx.drivers.wmr100 (logging for many years) together with a GW2000 ecoWitt station running as a service (logging for a week). I remapped the old Oregon station wind related variables by adding a '2' suffix in the wmr100.py driver, in order to replace wind reading with those from the new GW2000 station.

Logging and display have been working just fine for the last week, but last night wind gusts (speed and dir) suddently stopped being recorded/displayed, as seen in the weewx archve table :
dateTime    datetime(dateTime, 'unixepoch')  windGust    windGustDir  windSpeed         windDir        
----------  -------------------------------  ----------  -----------  ----------------  ---------------
1669139400  2022-11-22 17:50:00                                       7.22532218176395  280.95215157232
1669139100  2022-11-22 17:45:00                                       7.60560229659364  284.20981561621
1669138800  2022-11-22 17:40:00                                       7.30734338300173  295.54055722354
1669138500  2022-11-22 17:35:00                                       7.75473175338959  281.18064855675
1669138200  2022-11-22 17:30:00                                       7.42257978143496  299.06003904900
1669137900  2022-11-22 17:25:00                                       8.00825182994271  283.46629857763
1669137600  2022-11-22 17:20:00                                       8.61222612996632  276.67245304845
1669137300  2022-11-22 17:15:00                                       7.68016702499161  280.37147072165
1669137000  2022-11-22 17:10:00                                       6.66608671877913  302.74299652088
1669136700  2022-11-22 17:05:00              13.6453452  306.0        7.15821392620577  294.39581036261
1669136400  2022-11-22 17:00:00              18.3429231  269.0        7.44582073574083  298.16933154622
1669136100  2022-11-22 16:55:00              13.6453452  296.0        6.48713137062398  272.48533838493
1669135800  2022-11-22 16:50:00              17.2244522  328.0        7.54168967225251  290.03102191181
1669135500  2022-11-22 16:45:00              22.8168068  294.0        7.7050219344576   294.12339871788
1669135200  2022-11-22 16:40:00              12.5268743  347.0        6.87859619471336  301.56943730000
1669134900  2022-11-22 16:35:00              17.2244522  295.0        8.27668485217543  285.00269131716
1669134600  2022-11-22 16:30:00              11.4084034  285.0        5.1449662594604   296.24143220485
1669134300  2022-11-22 16:25:00              15.8822871  293.0        7.45647283979768  285.24507027328
1669134000  2022-11-22 16:20:00              15.8822871  302.0        7.90386121018554  293.94660274085
I confess I was fiddling with the weewx.conf and Seasons skin.conf files around that time 😟, but to the best of my knowledge I wasn't playing with anything to do with wind gusts !
One thing I've just noticed on the GW2000 web interface "Live data" web page, is that I'm only seing "Gust Speed" displayed, not "Gust Dir", and indeed only "windGust" and not "windGustDir" is appearing in the LOOP data. Could it be that gust LOOP data is only recorded in the DB if the pair is present in LOOP ? That would explain why it is no longer recorded in the DB, but leases the question open as to why the GW2000 is no longer providing gust dir ?

I rebooted the GW2000, but still no gust dir on its Live web interface. Maybe its firmware was updated last night (Current version:V2.2.0), with gust dir being dropped in the new firmware ? But I can't get a list of firmware updates (with dates or changelogs) from the ecoWitt web site, as the station only has a "automatic" network update feature, no manual firmware update via the web interface.

In a desperate hack attempt, I added a line in the [[Corrections]] section of  weewx.conf to copy windGustDir from windDir (copy below). To no avail, still no gust data being recorded.

Any hints as to why gusts may have been dropped most welcome 😀
Kind regards,
Pascal
Log is attached (debug=2)
Weewx installed via debian package on a raspberry
Extracts for driver and service from the weewx.conf:
##############################################################################

[WMR100]
    # This section is for the Oregon Scientific WMR100
   
    # The station model, e.g., WMR100, WMR100N, WMRS200
    model = WMR100
   
    # How long a wind record can be used to calculate wind chill (in seconds)
    stale_wind = 360
   
    # The driver to use:
    driver = weewx.drivers.wmr100
##############################################################################

#   This section can adjust data using calibration expressions.

[StdCalibrate]
   
    [[Corrections]]
        # For each type, an arbitrary calibration expression can be given.
        # It should be in the units defined in the StdConvert section.
        # Example:
        #foo = foo + 0.2
        radiation = luminosity/126.7 if luminosity is not None else None
        windGustDir = windDir if windDir is not None else None
##############################################################################

#   This section controls the origin of derived values.

[StdWXCalculate]
   
    [[Calculations]]
        # How to calculate derived quantities.  Possible values are:
        #  hardware        - use the value provided by hardware
        #  software        - use the value calculated by weewx
        #  prefer_hardware - use value provide by hardware if available,
        #                      otherwise use value calculated by weewx
       
        pressure = prefer_hardware
        altimeter = prefer_hardware
        appTemp = prefer_hardware
        barometer = 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
##############################################################################

#   This section configures the internal weewx engine.

[Engine]
   
    # The following section specifies which services should be run and in what order.
    [[Services]]
        prep_services = weewx.engine.StdTimeSynch
        data_services = user.gw1000.GatewayService
        process_services = weewx.engine.StdConvert, weewx.engine.StdCalibrate, weewx.engine.StdQC, weewx.wxservices.StdWXCalculate
        xtype_services = weewx.wxxtypes.StdWXXTypes, weewx.wxxtypes.StdPressureCooker, weewx.wxxtypes.StdRainRater, weewx.wxxtypes.StdDelta
        archive_services = weewx.engine.StdArchive, user.forecast.OWMForecast
        #restful_services = weewx.restx.StdStationRegistry, weewx.restx.StdWunderground, weewx.restx.StdPWSweather, weewx.restx.StdCWOP, weewx.restx.StdWOW, weewx.restx.StdAWEKAS
        restful_services = ,
        report_services = weewx.engine.StdPrint, weewx.engine.StdReport

##############################################################################
[GW1000]
    # This section is for the Ecowitt Gateway driver.
   
    # How often to poll the API, default is every 20 seconds:
    poll_interval = 15
   
    # The driver to use:
    driver = user.gw1000
    ip_address = 192.168.10.31
    max_tries = 2
    retry_wait = 5
    wh32 = True
    log_unknown_fields = True
    debug_rain = False
    debug_wind = False
    debug_sensors = True
    debug_loop = True
    max_age = 60
    lost_contact_log_period = 3600
    [[field_map_extensions]]
        extraHumid3 = inhumid
        extraTemp3 = intemp
        outTempBatteryStatus = wh32_batt
        signal5 = wh32_sig
        #radiation = light
        windBatteryStatus = wh68_batt
        signal1 = wh68_sig
        rainBatteryStatus = wh40_batt
        signal2 = wh40_sig
        batteryStatus3 = wh51_ch1_batt
        signal3 = wh51_ch1_sig
        batteryStatus4 = wh51_ch2_batt
        signal4 = wh51_ch2_sig
        windGust = gustspeed
        #windGustDir = winddir


debug_2_weewx_log.txt

Pascal Hingamp

unread,
Nov 23, 2022, 8:15:46 AM11/23/22
to weewx-user
This should replace any missing LOOP windGustDir by windDir values. Still no Gust speed/dir recorded in DB after applying this patch.
I also tried patch together with removal of the [[Corrections]] windGustDir = windDir if windDir is not None else None
I also tried patch with and without [[Calculations]]windGustDir = software

No luck so far.

Any help most appreciated.

Pascal Hingamp

unread,
Nov 23, 2022, 10:30:36 AM11/23/22
to weewx-user
Update 2: realizing the above patch was superceded by a another patch affecting several files, I git cloned the master branch and am now running weewx 4.9.2a1.
Still neither windGust nor windGustDir recorded in the database. windGust does appear in the LOOP packets, not windGustDir which I expected to be software calculated from windDir.
I attach the log output.
debug_2_weewx_log_4.9.2a1.txt

Pascal Hingamp

unread,
Nov 23, 2022, 1:36:06 PM11/23/22
to weewx-user
In order to test if the issue is with the GW1000 driver or the weewx configuration, I modified the gw1000.py driver to internally create a windGustDir key/value pair each time a windDir key/value appears in a loop (copying the windDir value).

From the log below, this moded driver results in the windGustDir now appearing in the mapped data. But the windGust and windGustDir are still not being stored in the database records.

Am I correct in assuming this means the issue lies in the weewx.conf configurations, which somehow I must have broken in a such a way that wind gust values are no longer recorded, even when both Speed and Dir are present in LOOP packets. I'm attaching my full weewx.conf file.

Nov 23 19:15:42 raspi weewx[7769] INFO user.gw1000: GatewayService: Processing loop packet: 2022-11-23 19:15:42 CET (1669227342) {'dateTime': '1669227342', 'extraBatteryStatus0': '1', 'extraHumid0': '41.0', 'extraTemp0': '25.8', 'usUnits': '16'}
Nov 23 19:15:42 raspi weewx[7769] INFO user.gw1000: GatewayService: Received queued sensor data: 2022-11-23 19:15:27 CET (1669227327) {'absbarometer': '968.0', 'annual_reset': '0', 'datetime': '1669227327', 'day_reset': '0', 'daymaxwind': '10.7', 'gustspeed': '5.1', 'inhumid': '81', 'intemp': '10.6', 'light': '0.0', 'outhumid': '85', 'outtemp': '10.0', 'rain_source': '1', 'relbarometer': '968.0', 'soilmoist1': '27', 'soilmoist2': '50', 't_rainday': '0.0', 't_rainevent': '0.0', 't_rainhour': '10.0', 't_rainmonth': '7.5', 't_rainrate': '0.0', 't_rainweek': '5.4', 't_rainyear': '7.5', 'uv': '0.0', 'uvi': '0', 'week_reset': '0', 'wh32_batt': '0', 'wh32_sig': '4', 'wh40_batt': '1.45', 'wh40_sig': '4', 'wh51_ch1_batt': '1.6', 'wh51_ch1_sig': '4', 'wh51_ch2_batt': '1.5', 'wh51_ch2_sig': '4', 'wh68_batt': '1.84', 'wh68_sig': '4', 'winddir': '284', 'windspeed': '2.9'}
Nov 23 19:15:42 raspi weewx[7769] DEBUG weewx.manager: Daily summary version is 4.0
Nov 23 19:15:42 raspi weewx[7769] INFO user.gw1000: GatewayService: No queued items to process
Nov 23 19:15:42 raspi weewx[7769] INFO user.gw1000: GatewayService: Mapped GW2000 data: {'batteryStatus3': '1.6', 'batteryStatus4': '1.5', 'daymaxwind': '10.7', 'dayRain': '0.0', 'extraHumid3': '81', 'extraTemp3': '10.6', 'luminosity': '0.0', 'monthRain': '7.5', 'outHumidity': '85', 'outTemp': '10.0', 'outTempBatteryStatus': '0', 'pressure': '968.0', 'rain': '0.0', 'rainBatteryStatus': '1.45', 'rainRate': '0.0', 'relbarometer': '968.0', 'signal1': '4', 'signal2': '4', 'signal3': '4', 'signal4': '4', 'signal5': '4', 'soilMoist1': '27', 'soilMoist2': '50', 'stormRain': '0.0', 'usUnits': '17', 'UV': '0', 'uvradiation': '0.0', 'weekRain': '5.4', 'windBatteryStatus': '1.84', 'windDir': '284', 'windGust': '5.1', 'windGustDir': '284', 'windSpeed': '2.9', 'yearRain': '7.5'}
Nov 23 19:15:42 raspi weewx[7769] INFO user.gw1000: GatewayService: Mapped data will be used to augment loop packet(2022-11-23 19:15:42 CET (1669227342))
Nov 23 19:15:42 raspi weewx[7769] INFO user.gw1000: GatewayService: Converted GW2000 data: {'batteryStatus3': '1.6', 'batteryStatus4': '1.5', 'daymaxwind': '10.7', 'dayRain': '0.0', 'extraHumid3': '81', 'extraTemp3': '10.6', 'luminosity': '0.0', 'monthRain': '0.75', 'outHumidity': '85', 'outTemp': '10.0', 'outTempBatteryStatus': '0', 'pressure': '968.0', 'rain': '0.0', 'rainBatteryStatus': '1.45', 'rainRate': '0.0', 'relbarometer': '968.0', 'signal1': '4', 'signal2': '4', 'signal3': '4', 'signal4': '4', 'signal5': '4', 'soilMoist1': '27', 'soilMoist2': '50', 'stormRain': '0.0', 'UV': '0', 'uvradiation': '0.0', 'weekRain': '5.4', 'windBatteryStatus': '1.84', 'windDir': '284', 'windGust': '18.36', 'windGustDir': '284', 'windSpeed': '10.44', 'yearRain': '0.75'}
Nov 23 19:15:42 raspi weewx[7769] INFO user.gw1000: GatewayService: Augmented packet: 2022-11-23 19:15:42 CET (1669227342) {'batteryStatus3': '1.6', 'batteryStatus4': '1.5', 'dateTime': '1669227342', 'daymaxwind': '10.7', 'dayRain': '0.0', 'extraBatteryStatus0': '1', 'extraHumid0': '41.0', 'extraHumid3': '81', 'extraTemp0': '25.8', 'extraTemp3': '10.6', 'luminosity': '0.0', 'monthRain': '0.75', 'outHumidity': '85', 'outTemp': '10.0', 'outTempBatteryStatus': '0', 'pressure': '968.0', 'rain': '0.0', 'rainBatteryStatus': '1.45', 'rainRate': '0.0', 'relbarometer': '968.0', 'signal1': '4', 'signal2': '4', 'signal3': '4', 'signal4': '4', 'signal5': '4', 'soilMoist1': '27', 'soilMoist2': '50', 'stormRain': '0.0', 'usUnits': '16', 'UV': '0', 'uvradiation': '0.0', 'weekRain': '5.4', 'windBatteryStatus': '1.84', 'windDir': '284', 'windGust': '18.36', 'windGustDir': '284', 'windSpeed': '10.44', 'yearRain': '0.75'}
Nov 23 19:15:43 raspi weewx[7769] DEBUG user.gw1000: Next update in 15 seconds


weewx.conf

Rainer Lang

unread,
Nov 23, 2022, 3:58:40 PM11/23/22
to weewx...@googlegroups.com
I suggest a systematic step-by-step error detecting approach here
including a few question beforehand:

- what do the GW2000 WebUI/WS View Plus app and ecowitt.net show for wind observations ?
- what do you see if you run the Ecowitt Gateway driver (GW1000 API) alone without the USB weewx.drivers.wmr100 (with an unmodified GW1000.py) ?

also, your terminology is not clear - a GW2000 station (by definition: station = console + sensors) does not exist
there is a GW2000 console (gateway), there is a GW2001 station (=GW2000 console + WS90 sensor array)

what you seem to have is a GW2000 console/gateway with a WS68 outdoor sensor array, a WH32 outdoor T/H sensor and a WH40 rain gauge connected
(from your syslog)
So, to repeat the question from above - what does the WS68 report to the console/gateway ? (--> WSView Plus app/GW2000 WebUI)
What does it report to the Ecowitt cloud (assuming you have an account with ecowitt.net and have your GW2000 registered there) ?

If the phenomenon occurred after/during a strong wind event, the WS68 array may need a reset.
The GW2000 console may need a reset (center button 5-9 seconds presed down).

I would first check all this before starting fiddling with the weewx driver software.
Before we look into the software, we have to make sure the hardware is working properly.
if the hardware works fine, have a look into the original (not modified) drivers alone and see what it gives (=what weewx shows/saves into the DB and shows in the Seasons skin).

If the single components work properly alone, then look into your modifications.
Make modifications one by one - otherwise you won't be able to tell what's the cause of unwanted behavior.
Always keep backup copies of your original configuration files (weewx.conf, skin.conf, index.html.tmpl + .inc files) - for comparison and for replacement if necessary.

Right now things look sort of messed up so imho only a systematic approach will help here (or a lucky shot into the blue).
--
You received this message because you are subscribed to the Google Groups "weewx-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to weewx-user+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/weewx-user/f45a0e44-6cd3-47b1-8a97-51e01ccd887en%40googlegroups.com.


Pascal Hingamp

unread,
Nov 24, 2022, 11:01:17 AM11/24/22
to weewx-user
Many thanks for taking the time to help me get this mess ironed out :)

Indeed I forgot to mention that a problem with the wind sensor is ruled out since I can read the values on the GW2000 module direct web interface (and the normal non gust values were indeed looped and recorded fine, just gust missing). The main station is indeed the ecoWitt GW2000 (I have no console, this GW2000 is the only radio collection point for the wind/rain/outdoor temps).The second station (WMR100) I only use for indoor temperatures, its wind and rain sensors are permenantly disconnected, but really need those indoor temps because they are used to control my pellet stove heating...
I think I tried all possible combinations, and in the end the only way to get the gust speed and dir recorded in the database is to use the weewx GW1000 class in "driver" mode (as oppsosed to a "service" together with  the WMR100 as "driver"). This works with the original code in the current git master, no hacking required.

So in the end I have solved this issue by otping for a dual weewx daemon, one for each station both in "driver" modes. The WMR100 daemon just records the "in" temperatures to its archive and nothing else, the GW1000 records all the ecoWitt sensors and also generates the reports.
The alternative would have been to extend the WMR100 class to include a "service" mode, which given the apparent simplicity of the code might be doable. But given the unreliability of the USB WMR100 feed, I'll just get some more ecoWitt temp sensors and in due time retire the WMR alltogether.

[issue solved]

Alltogether great code by the way, kudos ! Even got so far as to convince me Python does have some neat advantages over the other scripting languages I tend to use :)
Kind regards
Reply all
Reply to author
Forward
0 new messages