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.