Rich - I posted an example at least twice for this. Basically set ignore True to ignore the header garbage and set the keyword delimiter, then set ignore False for elements you want to use. This is from almost a year ago so your terminology may have changed, but it should hopefully help.
https://groups.google.com/g/weewx-user/c/eLWbFnfWEfg I’ve lost track of the folks who were involved in solving this last year so apologies for not being able to find all those discussions… On Thursday, August 20, 2026 at 5:00:21 PM UTC-7 [email protected] wrote: > OK, lets start with changing keyword_delimeter = “&” to keyword_separator > = “&” and see what errors that gives. > rich > > On Thursday, 20 August 2026 at 19:48:55 UTC-4 [email protected] wrote: > >> Jeesh, its amazing what ‘people’ will ‘stuff’ into an MQTT message…. >> The ‘header information’ (POST, HOST, etc.) is making ‘invalid keyword’ >> data for MQTTSubsribe. It’s obviously not json…. >> It’s gonna’ take a bit of work to figure out how to best parse this. >> rich >> >> >> On Thursday, 20 August 2026 at 17:45:50 UTC-4 Christian Peters wrote: >> >>> ...some more form the debug output: >>> >>> 2026-08-20T23:42:42.285624+02:00 weewx weewxd[1953952]: DEBUG >>> user.MQTTSubscribe: (Service) MessageCallbackProvider data-> incoming >>> topic: ecowitt/gw1000, QOS: 0, retain: False, payload: b'POST /data/ip_api/ >>> HTTP/1.1\r\nHOST: cdnrtpdate.ecowitt.net\r\nConnection: >>> Close\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: >>> 353\r\n\r\nPASSKEY=7EDF1C083D41E2564A22B916BBD1979C&stationtype=GW1200A_V1.4.8&runtime=1789501&heap=88084&dateutc=2026-08-20+21%3A42%3A41&dns_err_cnt=2&cdnflg=1&adc=1007,987,987,987,988&freq_volt=758&tempinf=75.74&humidityin=44&baromrelin=29.849&baromabsin=28.381&lightning_num=0&lightning=34&lightning_time=1787171122&wh57batt=5&freq=868M&model=GW1200A&interval=0' >>> 2026-08-20T23:42:42.286317+02:00 weewx weewxd[1953952]: ERROR >>> user.MQTTSubscribe: (Service) MessageCallbackProvider on_message_keyword >>> failed to find separator: & >>> 2026-08-20T23:42:42.287209+02:00 weewx weewxd[1953952]: ERROR >>> user.MQTTSubscribe: (Service) **** MessageCallbackProvider Skipping >>> field=POST /data/ip_api/ HTTP/1.1#015#012HOST: >>> cdnrtpdate.ecowitt.net#015#012Connection >>> <http://cdnrtpdate.ecowitt.net#015%23012Connection>: >>> Close#015#012Content-Type: >>> application/x-www-form-urlencoded#015#012Content-Length: >>> 353#015#012#015#012PASSKEY >>> 2026-08-20T23:42:42.287600+02:00 weewx weewxd[1953952]: ERROR >>> user.MQTTSubscribe: (Service) MessageCallbackProvider on_message_keyword >>> failed with <class 'user.MQTTSubscribe.ConversionError'> and reason Failed >>> converting field 7EDF1C083D41E2564A22B916BBD1979C with value stationtype >>> using 'lambda x: to_float(x)' with reason could not convert string to >>> float: 'stationtype'.. >>> 2026-08-20T23:42:42.287951+02:00 weewx weewxd[1953952]: ERROR >>> user.MQTTSubscribe: (Service) **** MessageCallbackProvider Ignoring >>> topic=ecowitt/gw1000 and payload=b'POST /data/ip_api/ HTTP/1.1\r\nHOST: >>> cdnrtpdate.ecowitt.net\r\nConnection: Close\r\nContent-Type: >>> application/x-www-form-urlencoded\r\nContent-Length: >>> 353\r\n\r\nPASSKEY=7EDF1C083D41E2564A22B916BBD1979C&stationtype=GW1200A_V1.4.8&runtime=1789501&heap=88084&dateutc=2026-08-20+21%3A42%3A41&dns_err_cnt=2&cdnflg=1&adc=1007,987,987,987,988&freq_volt=758&tempinf=75.74&humidityin=44&baromrelin=29.849&baromabsin=28.381&lightning_num=0&lightning=34&lightning_time=1787171122&wh57batt=5&freq=868M&model=GW1200A&interval=0' >>> 2026-08-20T23:42:42.291204+02:00 weewx weewxd[1953952]: ERROR >>> user.MQTTSubscribe: (Service) **** MessageCallbackProvider Traceback (most >>> recent call last):#012 File "/etc/weewx/bin/user/MQTTSubscribe.py", line >>> 1441, in _convert_value#012 return >>> conversion_func['compiled'](value)#012 >>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^#012 File "<string>", line 1, in >>> <lambda>#012 File "/usr/share/weewx/weeutil/weeutil.py", line 1585, in >>> to_float#012 return float(x) if x is not None else None#012 >>> ~~~~~^^^#012ValueError: could not convert string to float: >>> 'stationtype'#012#012The above exception was the direct cause of the >>> following exception:#012#012Traceback (most recent call last):#012 File >>> "/etc/weewx/bin/user/MQTTSubscribe.py", line 1560, in >>> _on_message_keyword#012 (fieldname, value) = self._update_data(key, >>> field[eq_index + 1:].strip(), fields, fields_conversion_func, >>> unit_system)#012 >>> ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#012 >>> >>> File "/etc/weewx/bin/user/MQTTSubscribe.py", line 1400, in >>> _update_data#012 value = self._convert_value(fields, >>> default_field_conversion_func, orig_name, orig_value)#012 File >>> "/etc/weewx/bin/user/MQTTSubscribe.py", line 1446, in _convert_value#012 >>> raise ConversionError(#012 f"Failed converting field {field} with >>> value {value} using '{conversion_func['source']}' with reason >>> {exception}.")\#012 from >>> exception#012user.MQTTSubscribe.ConversionError: Failed converting field >>> 7EDF1C083D41E2564A22B916BBD1979C with value stationtype using 'lambda x: >>> to_float(x)' with reason could not convert string to float: 'stationtype'. >>> >>> Christian Peters schrieb am Donnerstag, 20. August 2026 um 23:39:14 >>> UTC+2: >>> >>>> Hi all, >>>> >>>> I just tried to integrate a lightning sensor attached to the GW1200 >>>> Gateway into weewx with MQTTSubscribe >>>> <https://github.com/bellrichm/WeeWX-MQTTSubscribe/blob/master/bin/user/MQTTSubscribe.py> >>>> . >>>> I enablede MQTT in the GW1200 but I struggle to get the data parsed. >>>> >>>> The problem seems to be this added header in the MQTT message..?! >>>> Any chance to get it working I didn't find a solution. >>>> >>>> The MQTT message from the GW1200: >>>> >>>> POST /data/ip_api/ HTTP/1.1 >>>> HOST: cdnrtpdate.ecowitt.net >>>> Connection: Close >>>> Content-Type: application/x-www-form-urlencoded >>>> Content-Length: 353 >>>> >>>> >>>> PASSKEY=7EDF1C083D41E2564A22B916BBD1979C&stationtype=GW1200A_V1.4.8&runtime=1788421&heap=88084&dateutc=2026-08-20+21%3A24%3A41&dns_err_cnt=2&cdnflg=1&adc=1007,987,987,987,988&freq_volt=758&tempinf=75.92&humidityin=44&baromrelin=29.840&baromabsin=28.372&lightning_num=0&lightning=34&lightning_time=1787171122&wh57batt=5&freq=868M&model=GW1200A&interval=0 >>>> >>>> My config for MQTTSubscribeService VERSION = '3.1.0-rc01', running as a >>>> service: >>>> >>>> [[[ecowitt/gw1000]]] # The topic you are subscribing to >>>> ignore = false >>>> unit_system = METRICWX # Not sure weather you want >>>> METRICWX or METRIC. See http://weewx.com/docs/customizing.htm#units >>>> >>>> [[[[message]]]] >>>> type = keyword >>>> keyword_delimiter = "&" >>>> # map MQTT field to WeeWX database field >>>> >>>> [[[[PASSKEY]]]] >>>> ignore = True >>>> [[[[stationtype]]]] >>>> ignore = True >>>> [[[[runtime]]]] >>>> ignore = True >>>> [[[[heap]]]] >>>> >>>> ignore = True >>>> [[[[dateutc]]]] >>>> ignore = True >>>> [[[[dns_err_cnt]]]] >>>> ignore = True >>>> [[[[cdnflg]]]] >>>> ignore = True >>>> [[[[adc]]]] >>>> ignore = True >>>> [[[[freq_volt]]]] >>>> ignore = True >>>> [[[[tempinf]]]] >>>> ignore = True >>>> [[[[humidityin]]]] >>>> ignore = True >>>> [[[[baromrelin]]]] >>>> ignore = True >>>> [[[[baromabsin]]]] >>>> ignore = True >>>> [[[[wh57batt]]]] >>>> >>>> ignore = True >>>> [[[[freq]]]] >>>> ignore = True >>>> [[[[model]]]] >>>> ignore = True >>>> [[[[interval]]]] >>>> ignore = True >>>> >>>> [[[[lightning]]]] >>>> name = lightning_dist >>>> [[[[lightning_num]]]] >>>> name = lightning_strike_count >>>> [[[[lightning_time]]]] >>>> name = lightning_last_det_time >>>> >>>> My error/debug output form weewx: >>>> >>>> 2026-08-20T23:11:41.607918+02:00 weewx weewxd[1953952]: DEBUG >>>> user.MQTTSubscribe: (Service) MessageCallbackProvider data-> incoming >>>> topic: ecowitt/gw1000, QOS: 0, retain: False, payload: b'POST >>>> /data/ip_api/ >>>> HTTP/1.1\r\nHOST: cdnrtpdate.ecowitt.net\r\nConnection: >>>> Close\r\nContent-Type: >>>> application/x-www-form-urlencoded\r\nContent-Length: >>>> 353\r\n\r\nPASSKEY=7EDF1C083D41E2564A22B916BBD1979C&stationtype=GW1200A_V1.4.8&runtime=1787641&heap=88084&dateutc=2026-08-20+21%3A11%3A41&dns_err_cnt=2&cdnflg=1&adc=1007,987,987,987,988&freq_volt=758&tempinf=76.10&humidityin=44&baromrelin=29.843&baromabsin=28.375&lightning_num=0&lightning=34&lightning_time=1787171122&wh57batt=5&freq=868M&model=GW1200A&interval=0' >>>> 2026-08-20T23:11:41.608973+02:00 weewx weewxd[1953952]: ERROR >>>> user.MQTTSubscribe: (Service) **** MessageCallbackProvider Ignoring >>>> topic=ecowitt/gw1000 and payload=b'POST /data/ip_api/ HTTP/1.1\r\nHOST: >>>> cdnrtpdate.ecowitt.net\r\nConnection: Close\r\nContent-Type: >>>> application/x-www-form-urlencoded\r\nContent-Length: >>>> 353\r\n\r\nPASSKEY=7EDF1C083D41E2564A22B916BBD1979C&stationtype=GW1200A_V1.4.8&runtime=1787641&heap=88084&dateutc=2026-08-20+21%3A11%3A41&dns_err_cnt=2&cdnflg=1&adc=1007,987,987,987,988&freq_volt=758&tempinf=76.10&humidityin=44&baromrelin=29.843&baromabsin=28.375&lightning_num=0&lightning=34&lightning_time=1787171122&wh57batt=5&freq=868M&model=GW1200A&interval=0' >>>> >>>> Any help would be appreciated. >>>> Maybe bellrichm could give some hints to get it working...!? >>>> >>>> Thanks in advance! >>>> >>>> Christian >>>> >>>> >>>> >>>> >>>> vince schrieb am Freitag, 10. Oktober 2025 um 00:08:29 UTC+2: >>>> >>>>> Just a quick update - the GW1200 with latest V1.4.0 firmware now >>>>> supports posting to MQTT too. >>>>> >>>>> I enabled it for a quick test and poked around a little with >>>>> mosquitto_sub to look at what it sends and it looks like the same data >>>>> elements that I'm getting for Gary's legacy GW1000 driver plus one >>>>> additional element "srain_piezo" which we neglected to make known to his >>>>> driver last year when I was working with him to support the WS85. My >>>>> best >>>>> guess is that it means "state of raining (or not) on the piezo sensor" >>>>> where 0 = not raining, 1 = raining. >>>>> >>>>> Upside is you can set MQTT to send data as frequently as every 10 >>>>> seconds. Downside is the sensors don't send data that often so kinda why >>>>> bother running faster than maybe every 30 seconds. >>>>> >>>>> Re: the use of & my guess is this is WU protocol. If you subscribe to >>>>> topic_name/# you see a header ala: >>>>> >>>>> POST /data/ip_api/ HTTP/1.1 >>>>> HOST: cdnrtpdate.ecowitt.net >>>>> Connection: Close >>>>> Content-Type: application/x-www-form-urlencoded >>>>> Content-Length: 925 >>>>> >>>>> I have never configured my gateway to talk to ecowitt, so I don't know >>>>> if it's actually trying to post data to ecowitt's servers (or not), but >>>>> it >>>>> sure looks fishy to me. >>>>> >>>>> On Friday, August 22, 2025 at 6:24:24 AM UTC-7 Paul R Anderson wrote: >>>>> >>>>> 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. >>>>> >>>>> >>>>> >>>>> >>>> -- 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/8dbbb0ef-61cc-475a-9508-a4b8d9769a08n%40googlegroups.com.
