:-)

I discussed it with ChatGPT :-D and I solved it now.

$time.strftime("%d.%m.%Y %H:%M:%S", $time.localtime($current.lightning_last_det_time.raw))

did the trick...

Extra-Credits to Vince...! :-)

Regards,
Christian

Am 21.08.26 um 23:59 schrieb [email protected]:
Thanks. I would have gotten there eventually…. but Vince deserves the
credit.

re: lightning_last_det_time
What are you ‘using’ (skin, application…) to display it? Ideally that would
do the formatting…
rich

On Friday, 21 August 2026 at 17:04:14 UTC-4 Christian Peters wrote:

Rich,

you nailed it, now it's working.
Here is my working config:

## Ecowitt Lighting sensor WH57 via GW1200A MQTT

[[[ecowitt/gw1000]]] # The topic you are subscribing to
subscribe = True
ignore = True #THIS - we are ignoring everything by default
[[[[message]]]]
type = keyword
keyword_delimiter = & # THIS, which we already fixed
# map MQTT field to WeeWX database field
[[[[lightning]]]]
name = lightning_dist
ignore = False # THIS, we are opting in to this field
[[[[lightning_num]]]]
name = lightning_strike_count
ignore = False # THIS, we are opting in to this field
[[[[lightning_time]]]]
name = lightning_last_det_time
ignore = False # THIS, we are opting in to this field

Thanks for your help Vince and Rich!

One additional question:

"lightning_last_det_time" seems to be unix time!? Is there a way to get
the readable time somehow nicely displayed in my index.html.tmpl file
(e.g. 1787332508,000000 to 21.08.2026 - 19:15:08)...!?

Regards,

Christian




Am 21.08.26 um 22:03 schrieb [email protected]:
So, that looks like what I expected. We just need to ignore the 'header'
information. Basically invert your config to ignore everything and then
specify what you want.
Vince noted this here,
https://groups.google.com/g/weewx-user/c/TWhDFldWAYU/m/4I9bPfHVAAAJ
Which references https://groups.google.com/g/weewx-user/c/eLWbFnfWEfg
Which has an attachment to start from

Note the important high level points are

[[topics]]
unit_system = US # NOTE, use your unit system of interest
[[[GW1200]]] # NOTE, use your topic
subscribe = True
ignore = True #THIS - we are ignoring everything by default
[[[[message]]]]
type = keyword
keyword_delimiter = & # THIS, which we already fixed

[[[[tempinf]]]] # NOTE, use your field(s) of interest
name = inTemp
ignore = False # THIS, we are opting in to this field

rich

On Friday, 21 August 2026 at 15:50:13 UTC-4 Christian Peters wrote:

Vince,

thanks for the suggestion, but sadly still not working with changed
quoting:

2026-08-21T21:41:42.854096+02:00 weewx weewxd[2092923]: 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=1868641&heap=88084&dateutc=2026-08-21+19%3A41%3A42&dns_err_cnt=2&cdnflg=1&adc=1007,987,987,987,988&freq_volt=758&tempinf=73.40&humidityin=44&baromrelin=29.914&baromabsin=28.443&lightning_num=1&lightning=14&lightning_time=1787332508&wh57batt=5&freq=868M&model=GW1200A&interval=0'
2026-08-21T21:41:42.854498+02:00 weewx weewxd[2092923]: ERROR
user.MQTTSubscribe: (Service) MessageCallbackProvider on_message_keyword
failed to find separator: &
2026-08-21T21:41:42.854745+02:00 weewx weewxd[2092923]: 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>
<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-21T21:41:42.854849+02:00 weewx weewxd[2092923]: ERROR
user.MQTTSubscribe: (Service) MessageCallbackProvider on_message_keyword
failed to find separator: &
2026-08-21T21:41:42.854927+02:00 weewx weewxd[2092923]: ERROR
user.MQTTSubscribe: (Service) **** MessageCallbackProvider Skipping
field=0
2026-08-21T21:41:42.855017+02:00 weewx weewxd[2092923]: ERROR
user.MQTTSubscribe: (Service) MessageCallbackProvider on_message_keyword
failed to find data in: 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=1868641&heap=88084&dateutc=2026-08-21+19%3A41%3A42&dns_err_cnt=2&cdnflg=1&adc=1007,987,987,987,988&freq_volt=758&tempinf=73.40&humidityin=44&baromrelin=29.914&baromabsin=28.443&lightning_num=1&lightning=14&lightning_time=1787332508&wh57batt=5&freq=868M&model=GW1200A&interval=0'

Am 21.08.26 um 17:53 schrieb Vince Skahan:
Try quoting & so it looks like ‘&’

On Thursday, August 20, 2026 at 10:05:00 PM UTC-7 Christian Peters
wrote:

Rich,

I changed
[[[[message]]]]
type = keyword
keyword_separator = "&"

but still get this...
:
2026-08-21T06:23:41.504828+02:00 weewx weewxd[1997621]: 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=1813561&heap=88084&dateutc=2026-08-21+04%3A23%3A41&dns_err_cnt=2&cdnflg=1&adc=1007,987,987,987,988&freq_volt=758&tempinf=73.58&humidityin=45&baromrelin=29.831&baromabsin=28.367&lightning_num=0&lightning=34&lightning_time=1787171122&wh57batt=5&freq=868M&model=GW1200A&interval=0'
2026-08-21T06:23:41.505265+02:00 weewx weewxd[1997621]: ERROR
user.MQTTSubscribe: (Service) MessageCallbackProvider
on_message_keyword
failed with <class 'user.MQTTSubscribe.ConversionError'> and reason
Failed converting field POST /data/ip_api/ HTTP/1.1#015#012HOST:
cdnrtpdate.ecowitt.net#015#012Connection
<http://cdnrtpdate.ecowitt.net#015%23012Connection>
<http://cdnrtpdate.ecowitt.net#015%23012Connection>
<http://cdnrtpdate.ecowitt.net#015%23012Connection>:
Close#015#012Content-Type:
application/x-www-form-urlencoded#015#012Content-Length:
353#015#012#015#012PASSKEY=7EDF1C083D41E2564A22B916BBD1979C with value


stationtype=GW1200A_V1.4.8&runtime=1813561&heap=88084&dateutc=2026-08-21+04%3A23%3A41&dns_err_cnt=2&cdnflg=1&adc=1007

using 'lambda x: to_float(x)' with reason could not convert string to
float:



'stationtype=GW1200A_V1.4.8&runtime=1813561&heap=88084&dateutc=2026-08-21+04%3A23%3A41&dns_err_cnt=2&cdnflg=1&adc=1007'..
2026-08-21T06:23:41.505668+02:00 weewx weewxd[1997621]: 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=1813561&heap=88084&dateutc=2026-08-21+04%3A23%3A41&dns_err_cnt=2&cdnflg=1&adc=1007,987,987,987,988&freq_volt=758&tempinf=73.58&humidityin=45&baromrelin=29.831&baromabsin=28.367&lightning_num=0&lightning=34&lightning_time=1787171122&wh57batt=5&freq=868M&model=GW1200A&interval=0'
2026-08-21T06:23:41.508993+02:00 weewx weewxd[1997621]: 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=GW1200A_V1.4.8&runtime=1813561&heap=88084&dateutc=2026-08-21+04%3A23%3A41&dns_err_cnt=2&cdnflg=1&adc=1007'#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
POST /data/ip_api/ HTTP/1.1#015#012HOST:
cdnrtpdate.ecowitt.net#015#012Connection
<http://cdnrtpdate.ecowitt.net#015%23012Connection>
<http://cdnrtpdate.ecowitt.net#015%23012Connection>
<http://cdnrtpdate.ecowitt.net#015%23012Connection>:
Close#015#012Content-Type:
application/x-www-form-urlencoded#015#012Content-Length:
353#015#012#015#012PASSKEY=7EDF1C083D41E2564A22B916BBD1979C with value


stationtype=GW1200A_V1.4.8&runtime=1813561&heap=88084&dateutc=2026-08-21+04%3A23%3A41&dns_err_cnt=2&cdnflg=1&adc=1007

using 'lambda x: to_float(x)' with reason could not convert string to
float:



'stationtype=GW1200A_V1.4.8&runtime=1813561&heap=88084&dateutc=2026-08-21+04%3A23%3A41&dns_err_cnt=2&cdnflg=1&adc=1007'.

My config once more, I think it's quit simialr to tho one Vince posted
here, but I can't get the header stuff ignored....!?

[[[ecowitt/gw1000]]] # The topic you are subscribing to
ignore = false
unit_system = METRICWX
[[[[message]]]]
type = keyword
keyword_separator = "&"
# 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

The problem is I run an VP2pro and want' to use a service to only get
the lightning data, not inTemp, barometer which are provided too and
woul normaly map to the values which are reserved by the VP2pro.
As MQTTsubscribe works great here for 3 other sensors I would prefer
this way to map only the lightning data into weeewx.

I changeded to posted config of vinve withe ignore = true in the head
of
the config section, but even no success:

[[[ecowitt/gw1000]]] # The topic you are subscribing to
ignore = true
unit_system = METRICWX
[[[[message]]]]
type = keyword
keyword_separator = &
# map MQTT field to WeeWX database field
[[[[lightning]]]]
name = lightning_dist
[[[[lightning_num]]]]
name = lightning_strike_count
[[[[lightning_time]]]]
name = lightning_last_det_time

but still get:

2026-08-21T06:48:41.813181+02:00 weewx weewxd[1999785]: DEBUG
user.MQTTSubscribe: (Service) MessageCallbackProvider data-> incoming
topic:


application/d11a28e3-f97a-4866-949d-e07ab9aad18e/device/a84041dce189f0e9/event/up,

QOS: 0, retain: False, payload:


b'{"deduplicationId":"b116d097-fea0-491d-8325-ad34cec1d851","time":"2026-08-21T04:48:33.082033+00:00","deviceInfo":{"tenantId":"52f14cd4-c6f1-4fbd-8f87-4025e1d49242","tenantName":"ChirpStack","applicationId":"d11a28e3-f97a-4866-949d-e07ab9aad18e","applicationName":"temp-hum-app","deviceProfileId":"9f4e5931-3788-474a-b996-29471906dee9","deviceProfileName":"Temperatur+Feuchte","deviceName":"LHT65N-1-Gew\xc3\xa4chshaus","devEui":"a84041dce189f0e9","deviceClassEnabled":"CLASS_A","tags":{}},"devAddr":"012b1ebf","adr":true,"dr":5,"fCnt":39440,"fPort":2,"confirmed":false,"data":"ilgE/AMVAgTXf/8=","object":{"TempC_SHT":12.76,"Hum_SHT":78.9,"TempC_TMP117":12.39,"Bat_status":2.0,"BatV":2.648,"Ext_sensor":"Temperature




Sensor"},"rxInfo":[{"gatewayId":"4a364b5196414b32","uplinkId":46593,"gwTime":"2026-08-21T04:48:33.082033+00:00","nsTime":"2026-08-21T04:48:41.593856062+00:00","rssi":-51,"snr":10.0,"channel":3,"location":{},"context":"M0ilZA==","crcStatus":"CRC_OK"}],"txInfo":{"frequency":867100000,"modulation":{"lora":{"bandwidth":125000,"spreadingFactor":7,"codeRate":"CR_4_5"}}},"regionConfigId":"eu868"}'
2026-08-21T06:48:41.813953+02:00 weewx weewxd[1999785]: DEBUG
user.MQTTSubscribe: (Service) TopicManager data-> incoming


application/d11a28e3-f97a-4866-949d-e07ab9aad18e/device/a84041dce189f0e9/event/up:

batteryStatus7: 2.648, extraHumid7: 78.9, extraTemp7: 12.39,
extraTemp8:
12.76
2026-08-21T06:48:41.825132+02:00 weewx weewxd[1999785]: 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=1815061&heap=88084&dateutc=2026-08-21+04%3A48%3A41&dns_err_cnt=2&cdnflg=1&adc=1007,987,987,987,988&freq_volt=758&tempinf=73.22&humidityin=44&baromrelin=29.822&baromabsin=28.358&lightning_num=0&lightning=34&lightning_time=1787171122&wh57batt=5&freq=868M&model=GW1200A&interval=0'
2026-08-21T06:48:41.825628+02:00 weewx weewxd[1999785]: ERROR
user.MQTTSubscribe: (Service) MessageCallbackProvider
on_message_keyword
failed to find separator: &
2026-08-21T06:48:41.825854+02:00 weewx weewxd[1999785]: ERROR
user.MQTTSubscribe: (Service) **** MessageCallbackProvider Skipping
field=987
2026-08-21T06:48:41.825988+02:00 weewx weewxd[1999785]: ERROR
user.MQTTSubscribe: (Service) MessageCallbackProvider
on_message_keyword
failed to find separator: &
2026-08-21T06:48:41.826131+02:00 weewx weewxd[1999785]: ERROR
user.MQTTSubscribe: (Service) **** MessageCallbackProvider Skipping
field=987
2026-08-21T06:48:41.826233+02:00 weewx weewxd[1999785]: ERROR
user.MQTTSubscribe: (Service) MessageCallbackProvider
on_message_keyword
failed to find separator: &
2026-08-21T06:48:41.826379+02:00 weewx weewxd[1999785]: ERROR
user.MQTTSubscribe: (Service) **** MessageCallbackProvider Skipping
field=987
2026-08-21T06:48:41.826475+02:00 weewx weewxd[1999785]: ERROR
user.MQTTSubscribe: (Service) MessageCallbackProvider
on_message_keyword
failed to find data in: 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=1815061&heap=88084&dateutc=2026-08-21+04%3A48%3A41&dns_err_cnt=2&cdnflg=1&adc=1007,987,987,987,988&freq_volt=758&tempinf=73.22&humidityin=44&baromrelin=29.822&baromabsin=28.358&lightning_num=0&lightning=34&lightning_time=1787171122&wh57batt=5&freq=868M&model=GW1200A&interval=0'


...with this config:

[[[ecowitt/gw1000]]] # The topic you are subscribing to
ignore = true
unit_system = METRICWX
[[[[message]]]]
type = keyword
keyword_delimiter = "="
keyword_separator = & # The separator between the

# map MQTT field to WeeWX database field
[[[[lightning]]]]
name = lightning_dist
[[[[lightning_num]]]]
name = lightning_strike_count
[[[[lightning_time]]]]
name = lightning_last_det_time

Debug erreor:
2026-08-21T06:59:41.690810+02:00 weewx weewxd[2001268]: DEBUG
user.MQTTSubscribe: (Service) MessageCallbackProvider data-> incoming
topic:


application/d11a28e3-f97a-4866-949d-e07ab9aad18e/device/a84041dce189f0e9/event/up,

QOS: 0, retain: False, payload:


b'{"deduplicationId":"29498f1a-2764-4c2c-9558-e1ea3cce8cdc","time":"2026-08-21T04:59:32.946960+00:00","deviceInfo":{"tenantId":"52f14cd4-c6f1-4fbd-8f87-4025e1d49242","tenantName":"ChirpStack","applicationId":"d11a28e3-f97a-4866-949d-e07ab9aad18e","applicationName":"temp-hum-app","deviceProfileId":"9f4e5931-3788-474a-b996-29471906dee9","deviceProfileName":"Temperatur+Feuchte","deviceName":"LHT65N-1-Gew\xc3\xa4chshaus","devEui":"a84041dce189f0e9","deviceClassEnabled":"CLASS_A","tags":{}},"devAddr":"012b1ebf","adr":true,"dr":5,"fCnt":39451,"fPort":2,"confirmed":false,"data":"ilcE/wMTAgTRf/8=","object":{"TempC_TMP117":12.33,"TempC_SHT":12.79,"BatV":2.647,"Hum_SHT":78.7,"Bat_status":2.0,"Ext_sensor":"Temperature




Sensor"},"rxInfo":[{"gatewayId":"4a364b5196414b32","uplinkId":17921,"gwTime":"2026-08-21T04:59:32.946960+00:00","nsTime":"2026-08-21T04:59:41.471808901+00:00","rssi":-48,"snr":9.0,"channel":7,"location":{},"context":"Wp11DA==","crcStatus":"CRC_OK"}],"txInfo":{"frequency":867900000,"modulation":{"lora":{"bandwidth":125000,"spreadingFactor":7,"codeRate":"CR_4_5"}}},"regionConfigId":"eu868"}'
2026-08-21T06:59:41.691374+02:00 weewx weewxd[2001268]: DEBUG
user.MQTTSubscribe: (Service) TopicManager data-> incoming


application/d11a28e3-f97a-4866-949d-e07ab9aad18e/device/a84041dce189f0e9/event/up:

batteryStatus7: 2.647, extraHumid7: 78.7, extraTemp7: 12.33,
extraTemp8:
12.79
2026-08-21T06:59:41.825419+02:00 weewx weewxd[2001268]: 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=1815721&heap=88084&dateutc=2026-08-21+04%3A59%3A41&dns_err_cnt=2&cdnflg=1&adc=1007,987,987,987,988&freq_volt=758&tempinf=73.22&humidityin=44&baromrelin=29.831&baromabsin=28.367&lightning_num=0&lightning=34&lightning_time=1787171122&wh57batt=5&freq=868M&model=GW1200A&interval=0'
2026-08-21T06:59:41.825799+02:00 weewx weewxd[2001268]: ERROR
user.MQTTSubscribe: (Service) MessageCallbackProvider
on_message_keyword
failed to find separator: &
2026-08-21T06:59:41.825965+02:00 weewx weewxd[2001268]: 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>
<http://cdnrtpdate.ecowitt.net#015%23012Connection>
<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-21T06:59:41.826091+02:00 weewx weewxd[2001268]: ERROR
user.MQTTSubscribe: (Service) MessageCallbackProvider
on_message_keyword
failed to find separator: &
2026-08-21T06:59:41.826200+02:00 weewx weewxd[2001268]: ERROR
user.MQTTSubscribe: (Service) **** MessageCallbackProvider Skipping
field=0
2026-08-21T06:59:41.826344+02:00 weewx weewxd[2001268]: ERROR
user.MQTTSubscribe: (Service) MessageCallbackProvider
on_message_keyword
failed to find data in: 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=1815721&heap=88084&dateutc=2026-08-21+04%3A59%3A41&dns_err_cnt=2&cdnflg=1&adc=1007,987,987,987,988&freq_volt=758&tempinf=73.22&humidityin=44&baromrelin=29.831&baromabsin=28.367&lightning_num=0&lightning=34&lightning_time=1787171122&wh57batt=5&freq=868M&model=GW1200A&interval=0'



Regards,
Christian

Am 21.08.26 um 02:00 schrieb [email protected]:
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>
<http://cdnrtpdate.ecowitt.net#015%23012Connection>
<http://cdnrtpdate.ecowitt.net#015%23012Connection>
<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/d23b3902-9122-4cb7-8475-d1d03620159e%40googlemail.com.

Reply via email to