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/9d3f1c35-bcaf-400c-b9b3-36a16a374653n%40googlegroups.com.

Reply via email to