Just in case this is useful for anyone.

This is an example [MQTTSubscribeDriver] stanza to use in conjunction with 
Ecowitt MQTT weather service protocol which is now included in GW2000 and 
GW3000 gateway devices.

##############################################################################

[MQTTSubscribeDriver]
    driver = user.MQTTSubscribe
    host = broker.mqtt.cool
    port = 1883
    keepalive = 60
    username = None
    password = None
    binding = loop
    
    [[topics]]
        unit_system = US
        [[[ecowitt/1C6920E3A8F3]]]
           subscribe = True
           ignore = False
            [[[[message]]]]
                type = keyword
                keyword_delimiter = "&"
            [[[[PASSKEY]]]]
                ignore = True
            [[[[stationtype]]]]
                ignore = True
            [[[[runtime]]]]
                ignore = True
            [[[[dns_err_cnt]]]]
                ignore = True
            [[[[cdnflg]]]]
                ignore = True
            [[[[dateutc]]]]
                ignore = True
            [[[[freq]]]]
                ignore = True
            [[[[model]]]]
                ignore = True
            [[[[baromrelin]]]]
                name = barometer
            [[[[baromabsin]]]]
                name = pressure
            [[[[dailyrainin]]]]
                name = dayRain
            [[[[drain_piezo]]]]
                name = p_dayRain
            [[[[erain_piezo]]]]
                name = p_stormRain
            [[[[eventrainin]]]]
                name = stormRain
            [[[[hourlyrainin]]]]
                name = hourRain
            [[[[hrain_piezo]]]]
                name = p_hourRain
            [[[[humidityin]]]]
                name = inHumidity
            [[[[humidity]]]]
                name = outHumidity
            [[[[last24hrain_piezo]]]]
                name = p_24Rain
            [[[[last24hrainin]]]]
                name = 24Rain
            [[[[lightning]]]]
                name = lightning_dist
            [[[[lightning_num]]]]
                name = lightning_strike_count
            [[[[lightning_time]]]]
                name = lightning_last_det_time
            [[[[monthlyrainin]]]]
                name = monthRain
            [[[[mrain_piezo]]]]
                name = p_monthRain
            [[[[rainratein]]]]
                name = rainRate
            [[[[rrain_piezo]]]]
                name = p_rainRate
            [[[[solarradiation]]]]
               name = radiation
            [[[[srain_piezo]]]]
                name = isRaining
            [[[[tempf]]]]
                name = outTemp
            [[[[tempinf]]]]
               name = inTemp
            [[[[uv]]]]
                name = UV
            [[[[weeklyrainin]]]]
                name = weekRain
            [[[[wrain_piezo]]]]
                name = p_weekRain
            [[[[winddir]]]]
                name = windDir
            [[[[windgustmph]]]]
                name = windGust
            [[[[windspeedmph]]]]
               name = windSpeed
            [[[[yearlyrainin]]]]
                name = yearRain
            [[[[yrain_piezo]]]]
                name = p_yearRain

##############################################################################


> On 11 Aug 2025, at 23:57, 'Ian Millard' via weewx-user 
> <[email protected]> wrote:
> 
> Vince,
> Bingo, you nailed it in one. It worked perfectly.
> As always, thanks very much for your help.
> Ian
> 
>> On 11 Aug 2025, at 23:39, vince <[email protected]> wrote:
>> 
>> I’m sure Rich will chime in but my first impression is you should ignore the 
>> elements within the reply that cannot be mapped to weewx db elements, so 
>> ignore everything to the left of tempinf in the payload
>> On Monday, August 11, 2025 at 3:21:03 PM UTC-7 Ian Millard wrote:
>>> Vince,
>>> Sorry for the delay, I missed your post on my phone whilst away from home.
>>> 
>>> Status as follows: -
>>> 
>>> The new Ecowitt MQTT protocol is publishing to broker with no problem and I 
>>> can see the data arriving in the broker browser.
>>> 
>>> In weewx.conf I have this: -
>>> 
>>> [MQTTSubscribeDriver]
>>>     driver = user.MQTTSubscribe
>>>     host = broker.mqtt.cool
>>>     port = 1883
>>>     keepalive = 60
>>>     username = None
>>>     password = None
>>>     binding = loop
>>>     
>>>     [[topics]]
>>>         unit_system = US
>>>         [[[ecowitt/1C6920E3A8F3]]]
>>>            subscribe = True
>>>            ignore = False
>>>             [[[[message]]]]
>>>                 type = keyword
>>>                 keyword_delimiter = "&"
>>> 
>>> Then, extract from journal log: -
>>> 
>>> Aug 11 23:18:27 dvm weewxd[764736]: INFO __main__: Starting up weewx 
>>> version 5.1.0
>>> Aug 11 23:18:27 dvm weewxd[764736]: DEBUG weewx.engine: Station does not 
>>> support reading the time
>>> Aug 11 23:18:27 dvm weewxd[764736]: INFO weewx.engine: Using binding 
>>> 'wx_binding' to database 'weewx.sdb'
>>> Aug 11 23:18:27 dvm weewxd[764736]: INFO weewx.manager: Starting backfill 
>>> of daily summaries
>>> Aug 11 23:18:27 dvm weewxd[764736]: INFO weewx.manager: Daily summaries up 
>>> to date
>>> Aug 11 23:18:27 dvm weewxd[764736]: DEBUG user.MQTTSubscribe: (Driver) No 
>>> archive topic configured.
>>> Aug 11 23:18:27 dvm weewxd[764736]: INFO weewx.engine: Starting main packet 
>>> loop.
>>> Aug 11 23:18:27 dvm weewxd[764736]: DEBUG user.MQTTSubscribe: (Driver) 
>>> TopicManager starting queue ecowitt/1C6920E3A8F3 size is: 0
>>> Aug 11 23:18:27 dvm weewxd[764736]: DEBUG user.MQTTSubscribe: (Driver) 
>>> TopicManager starting queue 
>>> 1754950706.041299-windGust-windGustDir-windDir-windSpeed size is: 0
>>> Aug 11 23:18:27 dvm weewxd[764736]: DEBUG user.MQTTSubscribe: (Driver) 
>>> Queues are empty.
>>> Aug 11 23:18:29 dvm weewxd[764736]: DEBUG user.MQTTSubscribe: (Driver) 
>>> TopicManager starting queue ecowitt/1C6920E3A8F3 size is: 0
>>> Aug 11 23:18:29 dvm weewxd[764736]: DEBUG user.MQTTSubscribe: (Driver) 
>>> TopicManager starting queue 
>>> 1754950706.041299-windGust-windGustDir-windDir-windSpeed size is: 0
>>> Aug 11 23:18:29 dvm weewxd[764736]: DEBUG user.MQTTSubscribe: (Driver) 
>>> Queues are empty.
>>> Aug 11 23:18:29 dvm weewxd[764736]: DEBUG user.MQTTSubscribe: (Driver) 
>>> MessageCallbackProvider data-> incoming topic: ecowitt/1C6920E3A8F3, QOS: 
>>> 0, retain: False, payload: 
>>> b'PASSKEY=ED62ACE35A6D1A6CBFFC085BAADF1F1A&stationtype=GW3000A_V1.1.0&runtime=638367&heap=73048&dateutc=2025-08-11%2022%3A18%3A29&dns_err_cnt=0&cdnflg=42&tempinf=79.16&humidityin=51&baromrelin=30.064&baromabsin=29.763&tempf=71.78&humidity=60&vpd=0.314&winddir=169&winddir_avg10m=150&windspeedmph=4.25&windgustmph=6.26&maxdailygust=13.20&solarradiation=0.00&uv=0&rainratein=0.000&eventrainin=0.000&hourlyrainin=0.000&last24hrainin=0.000&dailyrainin=0.000&weeklyrainin=0.000&monthlyrainin=0.240&yearlyrainin=6.583&rrain_piezo=0.000&erain_piezo=0.000&hrain_piezo=0.000&last24hrain_piezo=0.000&drain_piezo=0.000&wrain_piezo=0.000&mrain_piezo=0.173&yrain_piezo=11.531&srain_piezo=0&ws90cap_volt=5.4&ws90_ver=143&lightning_num=0&lightning=24&lightning_time=1753979889&wh40batt=1.7&wh57batt=3&wh90batt=3.28&freq=868M&model=GW3000A&interval=60'
>>> Aug 11 23:18:29 dvm weewxd[764736]: ERROR user.MQTTSubscribe: (Driver) 
>>> MessageCallbackProvider on_message_keyword failed with <class 
>>> 'user.MQTTSubscribe.ConversionError'> and reason Failed converting field 
>>> PASSKEY with value ED62ACE35A6D1A6CBFFC085BAADF1F1A using 'lambda x: 
>>> to_float(x)' with reason could not convert string to float: 
>>> 'ED62ACE35A6D1A6CBFFC085BAADF1F1A'..
>>> Aug 11 23:18:29 dvm weewxd[764736]: ERROR user.MQTTSubscribe: (Driver) **** 
>>> MessageCallbackProvider Ignoring topic=ecowitt/1C6920E3A8F3 and 
>>> payload=b'PASSKEY=ED62ACE35A6D1A6CBFFC085BAADF1F1A&stationtype=GW3000A_V1.1.0&runtime=638367&heap=73048&dateutc=2025-08-11%2022%3A18%3A29&dns_err_cnt=0&cdnflg=42&tempinf=79.16&humidityin=51&baromrelin=30.064&baromabsin=29.763&tempf=71.78&humidity=60&vpd=0.314&winddir=169&winddir_avg10m=150&windspeedmph=4.25&windgustmph=6.26&maxdailygust=13.20&solarradiation=0.00&uv=0&rainratein=0.000&eventrainin=0.000&hourlyrainin=0.000&last24hrainin=0.000&dailyrainin=0.000&weeklyrainin=0.000&monthlyrainin=0.240&yearlyrainin=6.583&rrain_piezo=0.000&erain_piezo=0.000&hrain_piezo=0.000&last24hrain_piezo=0.000&drain_piezo=0.000&wrain_piezo=0.000&mrain_piezo=0.173&yrain_piezo=11.531&srain_piezo=0&ws90cap_volt=5.4&ws90_ver=143&lightning_num=0&lightning=24&lightning_time=1753979889&wh40batt=1.7&wh57batt=3&wh90batt=3.28&freq=868M&model=GW3000A&interval=60'
>>> Aug 11 23:18:29 dvm weewxd[764736]: ERROR user.MQTTSubscribe: (Driver) **** 
>>> MessageCallbackProvider Traceback (most recent call last):
>>>                                       File 
>>> "/home/dvm/weewx-data/bin/user/MQTTSubscribe.py", line 1441, in 
>>> _convert_value
>>>                                         return 
>>> conversion_func['compiled'](value)
>>>                                                
>>> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>>>                                       File "<string>", line 1, in <lambda>
>>>                                       File 
>>> "/home/dvm/weewx-venv/lib/python3.11/site-packages/weeutil/weeutil.py", 
>>> line 1584, in to_float
>>>                                         return float(x) if x is not None 
>>> else None
>>>                                                ^^^^^^^^
>>>                                     ValueError: could not convert string to 
>>> float: 'ED62ACE35A6D1A6CBFFC085BAADF1F1A'
>>>                                     
>>>                                     The above exception was the direct 
>>> cause of the following exception:
>>>                                     
>>>                                     Traceback (most recent call last):
>>>                                       File 
>>> "/home/dvm/weewx-data/bin/user/MQTTSubscribe.py", line 1560, in 
>>> _on_message_keyword
>>>                                         (fieldname, value) = 
>>> self._update_data(key, field[eq_index + 1:].strip(), fields, 
>>> fields_conversion_func, unit_system)
>>>                                                              
>>> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>>>                                       File 
>>> "/home/dvm/weewx-data/bin/user/MQTTSubscribe.py", line 1400, in _update_data
>>>                                         value = self._convert_value(fields, 
>>> default_field_conversion_func, orig_name, orig_value)
>>>                                                 
>>> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>>>                                       File 
>>> "/home/dvm/weewx-data/bin/user/MQTTSubscribe.py", line 1446, in 
>>> _convert_value
>>>                                         raise ConversionError(
>>>                                     user.MQTTSubscribe.ConversionError: 
>>> Failed converting field PASSKEY with value ED62ACE35A6D1A6CBFFC085BAADF1F1A 
>>> using 'lambda x: to_float(x)' with reason could not convert string to 
>>> float: 'ED62ACE35A6D1A6CBFFC085BAADF1F1A'.
>>> Aug 11 23:18:31 dvm weewxd[764736]: DEBUG user.MQTTSubscribe: (Driver) 
>>> TopicManager starting queue ecowitt/1C6920E3A8F3 size is: 0
>>> Aug 11 23:18:31 dvm weewxd[764736]: DEBUG user.MQTTSubscribe: (Driver) 
>>> TopicManager starting queue 
>>> 1754950706.041299-windGust-windGustDir-windDir-windSpeed size is: 0
>>> Aug 11 23:18:31 dvm weewxd[764736]: DEBUG user.MQTTSubscribe: (Driver) 
>>> Queues are empty.
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>>> On 7 Aug 2025, at 17:44, vince <[email protected] <>> wrote:
>>>> 
>>> 
>>>> What problems are you running into ?
>>>> 
>>>> Does my MQTT subscribe example not work ? I’ve been subscribing to MQTT 
>>>> ecowitt data for years that way.
>>>> 
>>>> On Thursday, August 7, 2025 at 12:15:47 AM UTC-7 steepleian wrote:
>>>> @james
>>>> Could you share your subscribe configuration please. I have the GW3000 
>>>> publishing directly to a local broker which works fine. I am having 
>>>> problems with getting the settings right for Rich’s MQTTSubscribe. I 
>>>> usually manage to muddle my way through solutions but this one is evading 
>>>> me.
>>>> Many thanks in advance.
>>>> Ian
>>>> 
>>>> 
>>> 
>>>> -- 
>>>> 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/ad201cea-1c12-428f-acd5-2ab88a38bc24n%40googlegroups.com
>>>>  
>>>> <https://groups.google.com/d/msgid/weewx-user/ad201cea-1c12-428f-acd5-2ab88a38bc24n%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] 
>> <mailto:[email protected]>.
>> To view this discussion visit 
>> https://groups.google.com/d/msgid/weewx-user/70e21a4c-c324-40d7-b86f-c8a52eb0a3b0n%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/weewx-user/70e21a4c-c324-40d7-b86f-c8a52eb0a3b0n%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] 
> <mailto:[email protected]>.
> To view this discussion visit 
> https://groups.google.com/d/msgid/weewx-user/F5B4409D-F63E-46B3-A623-D6CCE4079215%40btinternet.com
>  
> <https://groups.google.com/d/msgid/weewx-user/F5B4409D-F63E-46B3-A623-D6CCE4079215%40btinternet.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/F16CFC29-F248-494B-B97F-FD813471CCAF%40btinternet.com.

Reply via email to