That sounds like a great "work around" for some who use WeeWX. But I really
wish the underlying  issue of using a non standard separator, which does
not comply with the published MQTT standard.could be addressed and fixed.*
Design a device that offers to publish to a MQTT server, make it standard
compliant* , so that it will be easy to subscribe to that topic on a wide
range of MQTT clients.

On Wed, Aug 20, 2025 at 10:23 AM 'steepleian' via weewx-user <
[email protected]> wrote:

> Paul,
> I am just about to release a new service extension which solves this
> issue. It subscribes to the Ecowitt topic and outputs a file in json data
> format. It’s working fine on my test server. Just need to package it up.
> Ian
>
> https://claydonsweather.org.uk
>
> On 20 Aug 2025, at 15:03, [email protected] <[email protected]> wrote:
>
> Rainer,
> I have a GW2000 and notice that when enabled the MQTT protocol uses " & "
> as the Topic level separator. This is problematic, because many MQTT
> clients expect  " / " to be the separator. Many clients such as Home
> Assistant do not allow a means to change the separator. I am aware that " &
> " is the common URL  separator but for MQTT it really should be "  / ".
> This would really help people who want to use the MQQT output in various
> clients.
>
> From MQTT Version 5.0 OASIS Standard 07 March 2019
> 4.7.1.1 Topic level separator
> <https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901243>
>
> The forward slash (‘/’ U+002F) is used to separate each level within a
> topic tree and provide a hierarchical structure to the Topic Names. The use
> of the topic level separator is significant when either of the two wildcard
> characters is encountered in Topic Filters specified by subscribing
> Clients. Topic level separators can appear anywhere in a Topic Filter or
> Topic Name. Adjacent Topic level separators indicate a zero-length topic
> level.
>
> Thanks,
> Paul
>
>
> On Saturday, July 26, 2025 at 2:12:33 AM UTC-4 Rainer Lang wrote:
>
>> the MQTT protocol as a customized server protocol hasn't been rolled out
>> to all Ecowitt consoles (yet)
>> - rolled out to: GW2000, GW3000 so far
>>
>> after having successfully proven itself in the field, it will be rolled
>> out to all IoT enabled consoles.
>>
>> You could have known this if you had consulted the Fine Offset / Ecowitt
>> WiKi which was created to answer such questions -
>> and which has an answer to many Ecowitt (and clone device) related
>> questions:
>> here: http://192.168.1.111/dokuwiki/doku.php?id=start#the_mqtt_protocol
>> On 26.07.2025 06:41, 'steepleian' via weewx-user wrote:
>>
>> @rich,
>> I think that would be an excellent solution to bake the Ecowitt format
>> into your subscribe code.
>>
>> https://claydonsweather.org.uk
>>
>> On 26 Jul 2025, at 05:36, 'steepleian' via weewx-user
>> <[email protected]> wrote:
>>
>>  @Vince, you are correct, it’s only GW2000 and GW3000 devices
>>
>> https://claydonsweather.org.uk
>>
>> On 26 Jul 2025, at 03:24, vince <[email protected]> wrote:
>>
>> update - looks like the gw1200 doesn't support MQTT.  No MQTT option in
>> the customized servers menus in WSView Plus or in the web gui directly.
>> Sigh.
>>
>> On Friday, July 25, 2025 at 4:08:30 PM UTC-7 vince wrote:
>>
>>> James can you share how you set the gateway to post to MQTT ?  I can
>>> check the gw1200 for similar settings and try to duplicate your setup….
>>>
>>> On Friday, July 25, 2025 at 3:33:00 PM UTC-7 [email protected] wrote:
>>>
>>>> I would have tried ‘type=keyword’ with keyword_deliimter of ‘=‘ (the
>>>> default) and keyword_separator of ‘&’.
>>>> If this didn’t work and I was bored and daring, I would try writing my
>>>> own parser,
>>>> https://github.com/bellrichm/WeeWX-MQTTSubscribe/wiki/Handling-different-MQTT-message-formats
>>>> .
>>>> But seriously, if the keyword_separator of ‘&’ doesn’t work, let me
>>>> know. If Ecowitt has their own MQTT format I might be interested in baking
>>>> it into the base MQTTSubscribe code (guessing that more people will be
>>>> looking to use it).
>>>> rich
>>>>
>>>> On Friday, 25 July 2025 at 16:56:08 UTC-4 James Pattinson wrote:
>>>>
>>>>> Hi Vince,
>>>>>
>>>>> Ah, I get it - I think we are doing two slightly different things. I
>>>>> think you are subscribing to the published output of the other WeeWx 
>>>>> rather
>>>>> than the EcoWitt gateway - so your data is already in JSON format.
>>>>>
>>>>> As shown in my first post. the GW3000 doesn't publish it's payload in
>>>>> JSON format, it's separated like URL, So I have a simple script running
>>>>> externally to WeeWx which converts it from:
>>>>>
>>>>>
>>>>> PASSKEY=xxx&stationtype=GW3000A_V1.0.9&runtime=20638&heap=68388&dateutc=2025-07-25%2020%3A54%3A42&dns_err_cnt=0&cdnflg=1&tempinf=71.42&humidityin=68&baromrelin=30.129&baromabsin=29.441&tempf=62.06&humidity=90&vpd=0.056&winddir=216&windspeedmph=0.00&windgustmph=0.00&maxdailygust=5.82&solarradiation=0.02&uv=0&rainratein=0.000&eventrainin=0.000&hourlyrainin=0.000&dailyrainin=0.020&weeklyrainin=0.020&monthlyrainin=0.020&yearlyrainin=0.020&wh65batt=0&freq=868M&model=GW3000A&interval=60
>>>>>
>>>>> to
>>>>>
>>>>> {"PASSKEY": "xxx", "stationtype": "GW3000A_V1.0.9", "runtime":
>>>>> "20646", "heap": "68388", "dateutc": "2025-07-25 20:54:50", "dns_err_cnt":
>>>>> "0", "cdnflg": "1", "tempinf": "71.42", "humidityin": "68", "baromrelin":
>>>>> "30.129", "baromabsin": "29.441", "tempf": "62.06", "humidity": "90",
>>>>> "vpd": "0.056", "winddir": "216", "windspeedmph": "0.00", "windgustmph":
>>>>> "0.00", "maxdailygust": "5.82", "solarradiation": "0.02", "uv": "0",
>>>>> "rainratein": "0.000", "eventrainin": "0.000", "hourlyrainin": "0.000",
>>>>> "dailyrainin": "0.020", "weeklyrainin": "0.020", "monthlyrainin": "0.020",
>>>>> "yearlyrainin": "0.020", "wh65batt": "0", "freq": "868M", "model":
>>>>> "GW3000A", "interval": "60"}
>>>>>
>>>>> Then MQTTSubscribe is happy :)
>>>>>
>>>>> Cheers
>>>>> James
>>>>>
>>>>> On Friday, 25 July 2025 at 21:39:41 UTC+1 vince wrote:
>>>>>
>>>>>> Nope - just use MQTTSubscribe when I want to listen, and MQTT when I
>>>>>> want to publish.  Apply a sensor_map on the subscribe side to map the
>>>>>> elements you want into the weewx db as desired.
>>>>>>
>>>>>> Here's some excerpts from my vp2 (main) instance that subscribes to a
>>>>>> few things from ecowitt/loop
>>>>>>
>>>>>> # dial back some logging a bit for when we set debug=1
>>>>>> [Logging]
>>>>>>     [[loggers]]
>>>>>>         [[[user.MQTTSubscribe]]]
>>>>>>             level = INFO
>>>>>>
>>>>>> [MQTTSubscribeService]
>>>>>>     enable = true
>>>>>>     host = 192.168.1.171
>>>>>>     port = 1883
>>>>>>     keepalive = 60
>>>>>>     username = None
>>>>>>     password = None
>>>>>>     binding = loop
>>>>>>
>>>>>>     [[message_callback]]
>>>>>>         type = json
>>>>>>
>>>>>>     [[topics]]
>>>>>>         unit_system = US
>>>>>>         ignore_start_time = True
>>>>>>         ignore_end_time = True
>>>>>>
>>>>>>         #----- example data ----
>>>>>>
>>>>>>         #     {"dateTime": 1703364600.0, "usUnits": 1.0, "inTemp_F":
>>>>>> 64.03999999999998, "outTemp_F": 40.01600000000001, "inHumidity": 51.0,
>>>>>> "outHumidity": 99.0, "pressure_inHg": 29.9502976554
>>>>>> 16673, "relbarometer": 1025.7333333333336, "extraTemp1_F":
>>>>>> 67.46000000000002, "extraTemp2_F": 70.34000000000002, "extraTemp3_F":
>>>>>> 70.87999999999998, "extraTemp4_F": 70.112, "extraTemp5_F": 50.
>>>>>> 888000000000005, "extraHumid1": 46.53333333333333, "extraHumid2":
>>>>>> 40.0, "extraHumid3": 43.0, "extraHumid4": 46.0, "extraHumid5":
>>>>>> 88.33333333333333, "soilMoist1_centibar": 40.0, "wh32_batt": 0
>>>>>> .0, "wh31_ch1_batt": 0.0, "wh31_ch2_batt": 0.0, "wh31_ch3_batt": 0.0,
>>>>>> "wh31_ch4_batt": 0.0, "wh31_ch5_batt": 0.0, "wh51_ch1_batt": 1.5,
>>>>>> "wh32_sig": 4.0, "wh31_ch1_sig": 4.0, "wh31_ch2_sig": 4
>>>>>> .0, "wh31_ch3_sig": 4.0, "wh31_ch4_sig": 4.0, "wh31_ch5_sig": 4.0,
>>>>>> "wh51_ch1_sig": 4.0, "altimeter_inHg": 30.35012374517868, 
>>>>>> "barometer_inHg":
>>>>>> 30.363289630598434, "cloudbase_foot": 423.695175
>>>>>> 8301455, "dewpoint_F": 39.75774122634734, "heatindex_F":
>>>>>> 39.14293333333334, "humidex_F": 40.01600000000001, "inDewpoint_F":
>>>>>> 45.54133535588047, "maxSolarRad_Wpm2": 228.29873036475112, "rainRat
>>>>>> e_inch_per_hour": 0.0, "interval_minute": 5.0}
>>>>>>
>>>>>>         # we subscribe to ecowitt/loop from a second weewx instance
>>>>>> for that
>>>>>>         [[[ecowitt/loop]]]
>>>>>>
>>>>>>             # items we map to weewx schema elements
>>>>>>             [[[[outTemp_F]]]]
>>>>>>                 name = extraTemp1
>>>>>>                 units = degree_F
>>>>>>             [[[[extraTemp5_F]]]]
>>>>>>                 name = extraTemp5
>>>>>>                 units = degree_F
>>>>>>
>>>>>>             # the rest of the items we ignore, uncertain if this is
>>>>>> needed or not
>>>>>>             # if so - I likely missed ignoring some elements
>>>>>> plus/minus which sensors
>>>>>>             # we've added or deleted from the initial setup
>>>>>>             [[[[dateTime]]]]
>>>>>>                 ignore = True
>>>>>>             [[[[usUnits]]]]
>>>>>>                 ignore = True
>>>>>>             [[[[inTemp_F]]]]
>>>>>>                 ignore = True
>>>>>>             [[[[inHumidity]]]]
>>>>>>                 ignore = True
>>>>>>             [[[[outHumidity]]]]
>>>>>>                 ignore = True
>>>>>>             [[[[pressure_inHg]]]]
>>>>>>                 ignore = True
>>>>>>             [[[[relbarometer]]]]
>>>>>>                 ignore = True
>>>>>>             [[[[extraTemp1_F]]]]
>>>>>>                 ignore = True
>>>>>>             [[[[extraTemp2_F]]]]
>>>>>>                 ignore = True
>>>>>>             [[[[extraTemp3_F]]]]
>>>>>>                 ignore = True
>>>>>>             [[[[extraTemp4_F]]]]
>>>>>>                 ignore = True
>>>>>>             [[[[extraHumid1]]]]
>>>>>>                 ignore = True
>>>>>>             [[[[extraHumid2]]]]
>>>>>>                 ignore = True
>>>>>>             [[[[extraHumid3]]]]
>>>>>>                 ignore = True
>>>>>>             [[[[extraHumid4]]]]
>>>>>>                 ignore = True
>>>>>>             [[[[soilMoist1_centibar]]]]
>>>>>>                 ignore = True
>>>>>>             [[[[wh26_sig]]]]
>>>>>>                 ignore = True
>>>>>>             [[[[wh65_sig]]]]
>>>>>>                 ignore = True
>>>>>>             [[[[wh31_ch1_sig]]]]
>>>>>>                 ignore = True
>>>>>>             [[[[wh31_ch2_sig]]]]
>>>>>>                 ignore = True
>>>>>>             [[[[wh31_ch3_sig]]]]
>>>>>>                 ignore = True
>>>>>>             [[[[wh31_ch4_sig]]]]
>>>>>>                 ignore = True
>>>>>>             [[[[wh31_ch5_sig]]]]
>>>>>>                 ignore = True
>>>>>>             [[[[wh51_ch1_sig]]]]
>>>>>>                 ignore = True
>>>>>>             [[[[altimeter_inHg]]]]
>>>>>>                 ignore = True
>>>>>>             [[[[barometer_inHg]]]]
>>>>>>                 ignore = True
>>>>>>             [[[[cloudbase_foot]]]]
>>>>>>                 ignore = True
>>>>>>             [[[[dewpoint_F]]]]
>>>>>>                 ignore = True
>>>>>>             [[[[heatindex_F]]]]
>>>>>>                 ignore = True
>>>>>>             [[[[humidex_F]]]]
>>>>>>                 ignore = True
>>>>>>             [[[[inDewpoint_F]]]]
>>>>>>                 ignore = True
>>>>>>             [[[[maxSolarRad_Wpm2]]]]
>>>>>>                 ignore = True
>>>>>>             [[[[rainRate_inch_per_hour]]]]
>>>>>>                 ignore = True
>>>>>>             [[[[interval_minute]]]]
>>>>>>                 ignore = True
>>>>>>
>>>>>> On Friday, July 25, 2025 at 1:15:15 PM UTC-7 James Pattinson wrote:
>>>>>>
>>>>>>> Hi Vince,
>>>>>>>
>>>>>>> Did you have to do any customisation at all? I am using
>>>>>>> MQTTSubscribe and it is now working, but I had to write an external 
>>>>>>> python
>>>>>>> script to subscribe to the Ecowitt topic, parse the payload and 
>>>>>>> re-publish
>>>>>>> it in JSON format to another topic, which WeeWx then subscribes to.
>>>>>>>
>>>>>>> Before I did that it was trying to convert the whole string
>>>>>>> (including &s) to a value, even in 'individual' mode.
>>>>>>>
>>>>>>> Cheers
>>>>>>> James
>>>>>>>
>>>>>>> On Friday, 25 July 2025 at 17:07:21 UTC+1 vince wrote:
>>>>>>>
>>>>>>>> Yes. You still will need the ecowitt gateway to publish to a MQTT
>>>>>>>> broker in the middle.  I just run a little docker container on my LAN 
>>>>>>>> for
>>>>>>>> that.
>>>>>>>>
>>>>>>>> In my case I have two weewx instances that both publish to MQTT as
>>>>>>>> ecowitt/loop and vp2/loop (via Matthew's MQTT extension, to later feed
>>>>>>>> influxdb), but the VP2 weewx instance subscribes to the ecowitt data 
>>>>>>>> (via
>>>>>>>> Rich's MQTTSubscribe as a service) to add data to a few extraTempNNN
>>>>>>>> elements so that I can show data from both in my main skin.
>>>>>>>>
>>>>>>>> Rich's MQTTSubscribe works great.  I didn't know until now that it
>>>>>>>> can be run as a driver.  Very cool.
>>>>>>>>
>>>>>>>> On Friday, July 25, 2025 at 7:17:20 AM UTC-7 Steeple Ian wrote:
>>>>>>>>
>>>>>>>>> @Michael
>>>>>>>>> I have not looked at MQTT in any depth before so forgive me if my
>>>>>>>>> question is naive. Using WeeWX-MQTTSubcribe with the Ecowitt MQTT 
>>>>>>>>> protocol,
>>>>>>>>> is there still a requirement for a-man-in-the middle server?
>>>>>>>>> Thanks,
>>>>>>>>> Ian
>>>>>>>>>
>>>>>>>>> On Friday, July 25, 2025 at 2:33:52 PM UTC+1 [email protected]
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>> Take a look into https://github.com/bellrichm/WeeWX-MQTTSubscribe
>>>>>>>>>>
>>>>>>>>>> James Pattinson schrieb am Freitag, 25. Juli 2025 um 13:57:21
>>>>>>>>>> UTC+2:
>>>>>>>>>>
>>>>>>>>>>> Hi All!
>>>>>>>>>>>
>>>>>>>>>>> I am setting up a WeeWx system in a remote location where they
>>>>>>>>>>> do have WiFi but nowhere to actually install the software. Since I 
>>>>>>>>>>> have
>>>>>>>>>>> WeeWx running elsewhere, I'd like to be able to feed into a new 
>>>>>>>>>>> instance of
>>>>>>>>>>> WeeWx under my control.
>>>>>>>>>>>
>>>>>>>>>>> I am used to using Davis stuff, but as these guys are on a
>>>>>>>>>>> budget, we went for EcoWitt. We have a WS69 with LCD display, and a 
>>>>>>>>>>> GW3000.
>>>>>>>>>>>
>>>>>>>>>>> This is my first time using a GW3000, and I was quite happy to
>>>>>>>>>>> see that it supports MQTT so it can push data out in almost real 
>>>>>>>>>>> time (down
>>>>>>>>>>> to 8 seconds). I have this working and I can see the updates coming 
>>>>>>>>>>> into my
>>>>>>>>>>> MQTT server, albeit in a weird HTTP POST style:
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> PASSKEY=xxx&stationtype=GW3000A_V1.0.9&runtime=1124&heap=68736&dateutc=2025-07-25%2011%3A50%3A12&dns_err_cnt=0&cdnflg=1&tempinf=74.12&humidityin=56&baromrelin=29.483&baromabsin=29.483&tempf=72.86&humidity=55&vpd=0.367&winddir=294&windspeedmph=0.00&windgustmph=0.00&maxdailygust=0.00&solarradiation=4.96&uv=0&rainratein=0.000&eventrainin=0.000&hourlyrainin=0.000&dailyrainin=0.000&weeklyrainin=0.000&monthlyrainin=0.000&yearlyrainin=0.000&wh65batt=0&freq=868M&model=GW3000A&interval=60
>>>>>>>>>>>
>>>>>>>>>>> If there was a way of having this MQTT message feed directly
>>>>>>>>>>> into the LOOP of WeeWx, it would make my life SO much easier, as I 
>>>>>>>>>>> can have
>>>>>>>>>>> the GW3000 publish this out to an external MQTT server and connect 
>>>>>>>>>>> WeeWx to
>>>>>>>>>>> the same server. Has anyone got a WeeWx driver to do this?
>>>>>>>>>>>
>>>>>>>>>>> Without this, I think I am looking at the GW1000 API polling
>>>>>>>>>>> driver, which appears to have become unmaintained quite recently. 
>>>>>>>>>>> For that
>>>>>>>>>>> to work I'd need to arrange things such that WeeWx can connect to 
>>>>>>>>>>> the
>>>>>>>>>>> GW3000 over the Internet, which might be challenging without a VPN.
>>>>>>>>>>>
>>>>>>>>>>> Plan B is to tell them they need to buy a Pi or something and do
>>>>>>>>>>> it all locally, but I would really like to be able to get some semi
>>>>>>>>>>> real-time push method doing for this use case.
>>>>>>>>>>>
>>>>>>>>>>> Any other ideas would be appreciated!
>>>>>>>>>>>
>>>>>>>>>>> Cheers
>>>>>>>>>>> James
>>>>>>>>>>>
>>>>>>>>>> --
>> 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/a78a4fbf-706f-4e1c-bc0e-81bc76047dd1n%40googlegroups.com
>> <https://groups.google.com/d/msgid/weewx-user/a78a4fbf-706f-4e1c-bc0e-81bc76047dd1n%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/3D66A697-E189-41D8-9321-1F4007DDBC17%40btinternet.com
>> <https://groups.google.com/d/msgid/weewx-user/3D66A697-E189-41D8-9321-1F4007DDBC17%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/C9593798-D9D6-4310-A78C-6E1DEB9A9C21%40btinternet.com
>> <https://groups.google.com/d/msgid/weewx-user/C9593798-D9D6-4310-A78C-6E1DEB9A9C21%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/59c79a0c-9a8e-47ae-893d-7077be31be80n%40googlegroups.com
> <https://groups.google.com/d/msgid/weewx-user/59c79a0c-9a8e-47ae-893d-7077be31be80n%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/A797AFC0-5007-4443-AA8B-F092A760C36B%40btinternet.com
> <https://groups.google.com/d/msgid/weewx-user/A797AFC0-5007-4443-AA8B-F092A760C36B%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/CAOAVAefvFPYGzpAFAy4Vg1tr3k2gDC6GD8_cNp2D9Ujr7hO%2BDA%40mail.gmail.com.

Reply via email to