Hi Rich,

Hah, that works great and I can throw away my script now

                type = keyword

                keyword_delimiter = "&"

Cheers
James
On Friday, 25 July 2025 at 23:33:00 UTC+1 [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/88c25f01-95c4-4968-b151-5ab761a865b0n%40googlegroups.com.

Reply via email to