I had the same problem. It seems to me that weewx does not know string 
values. I tried to send an alarm color value that way, to no success.

Tarmo schrieb am Montag, 8. Februar 2021 um 10:46:40 UTC+1:

> Thank you!
>
> It seems that the attempt to convert string to float still happens. I will 
> attach snippets from log and config here. The field name which is causing 
> trouble is "phenomenon".
>
> [MQTTSubscribeDriver]
>     # This section is for the MQTTSubscribe driver.
>
>     # The driver to use:
>     driver = user.MQTTSubscribe
>
>     # The MQTT server.
>     # Default is localhost.
>     host = localhost
>
>     # The port to connect to.
>     # Default is 1883.
>     port = 1883
>
>     # Maximum period in seconds allowed between communications with the 
> broker.
>     # Default is 60.
>     keepalive = 60
>
>     # username for broker authentication.
>     # Default is None.
>     username = rtl
>
>     # password for broker authentication.
>     # Default is None.
>     password = xx
>
>     # Configuration for the message callback.
>     [[message_callback]]
>         type = individual
>
>     # The topics to subscribe to.
>     [[topics]]
>         unit_system = METRIC
>         use_topic_as_fieldname = true
>         use_server_datetime = true
>
>         [[[rtl_433/lab/devices/Solight-TE44/1/4/temperature_C]]]
>             name = outTemp
>         [[[emhi/26038/uvindex]]]
>             name = UV
>         [[[emhi/26038/airpressure]]]
>             name = pressure
>         [[[emhi/26038/precipitations]]]
>             name = rain
>             contains_total = true
>         [[[emhi/26038/relativehumidity]]]
>             name = outHumidity
>         [[[emhi/26038/winddirection]]]
>             name = windDir
>         [[[emhi/26038/windspeed]]]
>             name = windSpeed
>             units = meter_per_second
>         [[[emhi/26038/windspeedmax]]]
>             name = windGust
>             units = meter_per_second
>         [[[emhi/26038/phenomenon]]]
>             conversion_type = None
>
> [Accumulator]
>     [[phenomenon]]
>         accumulator = firstlast
>         extractor = last
>
>
>
>
>
> Feb  8 11:21:38 pi3 systemd[1]: Starting LSB: weewx weather system...
> Feb  8 11:21:39 pi3 weewx[26841] INFO __main__: Initializing weewx version 
> 4.4.0
> Feb  8 11:21:39 pi3 weewx[26841] INFO __main__: Using Python 3.5.3 
> (default, Nov 18 2020, 21:09:16) #012[GCC 6.3.0 20170516]
> Feb  8 11:21:39 pi3 weewx[26841] INFO __main__: Platform 
> Linux-4.19.66-v7+-armv7l-with-debian-9.13
> Feb  8 11:21:39 pi3 weewx[26841] INFO __main__: Locale is 'en_GB.UTF-8'
> Feb  8 11:21:39 pi3 weewx[26841] INFO __main__: PID file is 
> /var/run/weewx.pid
> Feb  8 11:21:39 pi3 weewx[26845] INFO __main__: Using configuration file 
> /home/weewx/weewx.conf
> Feb  8 11:21:39 pi3 weewx[26845] INFO __main__: Debug is 0
> Feb  8 11:21:39 pi3 weewx[26845] INFO weewx.engine: Loading station type 
> MQTTSubscribeDriver (user.MQTTSubscribe)
> Feb  8 11:21:39 pi3 weewx[26830]: Starting weewx weather system: weewx.
> Feb  8 11:21:39 pi3 systemd[1]: Started LSB: weewx weather system.
> Feb  8 11:21:39 pi3 weewx[26845] INFO user.MQTTSubscribe: (Driver) Version 
> is 1.6.2
> Feb  8 11:21:39 pi3 weewx[26845] INFO user.MQTTSubscribe: (Driver) Log 
> level: 0
> Feb  8 11:21:39 pi3 weewx[26845] INFO user.MQTTSubscribe: (Driver) Log 
> debug setting: 0
> Feb  8 11:21:39 pi3 weewx[26845] INFO user.MQTTSubscribe: (Driver) Log 
> console: False
> Feb  8 11:21:39 pi3 weewx[26845] INFO user.MQTTSubscribe: (Driver) Log 
> file: None
> Feb  8 11:21:39 pi3 weewx[26845] INFO user.MQTTSubscribe: (Driver) overlap 
> is 0.0
> Feb  8 11:21:39 pi3 weewx[26845] INFO user.MQTTSubscribe: (Driver) 
> message_callback_provider_name is user.MQTTSubscribe.MessageCallbackProvider
> Feb  8 11:21:39 pi3 weewx[26845] INFO user.MQTTSubscribe: (Driver) 
> clientid is MQTTSubscribe-9835
> Feb  8 11:21:39 pi3 weewx[26845] INFO user.MQTTSubscribe: (Driver) 
> client_session is True
> Feb  8 11:21:39 pi3 weewx[26845] INFO user.MQTTSubscribe: (Driver) host is 
> localhost
> Feb  8 11:21:39 pi3 weewx[26845] INFO user.MQTTSubscribe: (Driver) port is 
> 1883
> Feb  8 11:21:39 pi3 weewx[26845] INFO user.MQTTSubscribe: (Driver) 
> keepalive is 60
> Feb  8 11:21:39 pi3 weewx[26845] INFO user.MQTTSubscribe: (Driver) 
> username is rtl
> Feb  8 11:21:39 pi3 weewx[26845] INFO user.MQTTSubscribe: (Driver) 
> password is set
> Feb  8 11:21:39 pi3 weewx[26845] INFO user.MQTTSubscribe: (Driver) Archive 
> topic is None
> Feb  8 11:21:39 pi3 weewx[26845] INFO user.MQTTSubscribe: (Driver) Wait 
> before retry is 2
> Feb  8 11:21:39 pi3 weewx[26845] INFO user.MQTTSubscribe: (Driver) 
> Connected with result code 0
> Feb  8 11:21:39 pi3 weewx[26845] INFO user.MQTTSubscribe: (Driver) 
> Connected flags {'session present': 0}
> Feb  8 11:21:39 pi3 weewx[26845] INFO user.MQTTSubscribe: (Driver) 
> Subscribed to mid: 1 is size 1 has a QOS of 0
> Feb  8 11:21:39 pi3 weewx[26845] INFO user.MQTTSubscribe: (Driver) 
> Subscribed to mid: 2 is size 1 has a QOS of 0
> Feb  8 11:21:39 pi3 weewx[26845] INFO user.MQTTSubscribe: (Driver) 
> Subscribed to mid: 3 is size 1 has a QOS of 0
> Feb  8 11:21:39 pi3 weewx[26845] INFO user.MQTTSubscribe: (Driver) 
> Subscribed to mid: 4 is size 1 has a QOS of 0
> Feb  8 11:21:39 pi3 weewx[26845] INFO user.MQTTSubscribe: (Driver) 
> Subscribed to mid: 5 is size 1 has a QOS of 0
> Feb  8 11:21:39 pi3 weewx[26845] INFO user.MQTTSubscribe: (Driver) 
> Subscribed to mid: 6 is size 1 has a QOS of 0
> Feb  8 11:21:39 pi3 weewx[26845] INFO user.MQTTSubscribe: (Driver) 
> Subscribed to mid: 7 is size 1 has a QOS of 0
> Feb  8 11:21:39 pi3 weewx[26845] INFO user.MQTTSubscribe: (Driver) 
> Subscribed to mid: 8 is size 1 has a QOS of 0
> Feb  8 11:21:39 pi3 weewx[26845] INFO user.MQTTSubscribe: (Driver) 
> Subscribed to mid: 9 is size 1 has a QOS of 0
> Feb  8 11:21:39 pi3 weewx[26845] INFO user.MQTTSubscribe: (Driver) 
> Subscribed to mid: 10 is size 1 has a QOS of 0
> Feb  8 11:21:40 pi3 weewx[26845] INFO weewx.engine: StdConvert target unit 
> is 0x1
> Feb  8 11:21:40 pi3 weewx[26845] INFO weewx.engine: Archive will use data 
> binding wx_binding
> Feb  8 11:21:40 pi3 weewx[26845] INFO weewx.engine: Record generation will 
> be attempted in 'hardware'
> Feb  8 11:21:40 pi3 weewx[26845] INFO weewx.engine: Using archive interval 
> of 300 seconds (specified in weewx configuration)
> Feb  8 11:21:40 pi3 weewx[26845] INFO weewx.restx: StationRegistry: 
> Station will be registered.
> Feb  8 11:21:40 pi3 weewx[26845] INFO user.mqtt: service version is 0.22
> Feb  8 11:21:40 pi3 weewx[26845] INFO user.mqtt: binding to loop
> Feb  8 11:21:40 pi3 weewx[26845] INFO user.mqtt: topic is weather
> Feb  8 11:21:40 pi3 weewx[26845] INFO user.mqtt: desired unit system is 
> METRIC
> Feb  8 11:21:40 pi3 weewx[26845] INFO user.mqtt: data will be uploaded to 
> mqtt://ilm:xxx@localhost:1883/
> Feb  8 11:21:40 pi3 weewx[26845] INFO weewx.restx: Wunderground-PWS: Data 
> for station IHARJUMA19 will be posted
> Feb  8 11:21:40 pi3 weewx[26845] INFO user.windy: version is 0.7
> Feb  8 11:21:40 pi3 weewx[26845] INFO user.windy: Data will be uploaded to 
> https://stations.windy.com/pws/update
> Feb  8 11:21:40 pi3 weewx[26845] INFO __main__: Starting up weewx version 
> 4.4.0
> Feb  8 11:21:40 pi3 weewx[26845] INFO weewx.engine: Using binding 
> 'wx_binding' to database 'weewx.sdb'
> Feb  8 11:21:40 pi3 weewx[26845] INFO weewx.manager: Starting backfill of 
> daily summaries
> Feb  8 11:21:40 pi3 weewx[26845] INFO weewx.manager: Daily summaries up to 
> date
> Feb  8 11:21:40 pi3 weewx[26845] INFO weewx.engine: Starting main packet 
> loop.
> Feb  8 11:21:40 pi3 weewx[26845] INFO weewx.engine: Main loop exiting. 
> Shutting engine down.
> Feb  8 11:21:40 pi3 weewx[26845] INFO user.MQTTSubscribe: (Driver) 
> Disconnected with result code 0
> Feb  8 11:21:40 pi3 weewx[26845] CRITICAL __main__: Caught unrecoverable 
> exception:
> Feb  8 11:21:40 pi3 weewx[26845] CRITICAL __main__:     ****  could not 
> convert string to float: 'Light snowfall'
> Feb  8 11:21:40 pi3 weewx[26845] CRITICAL __main__:     ****  Traceback 
> (most recent call last):
> Feb  8 11:21:40 pi3 weewx[26845] CRITICAL __main__:     ****    File 
> "/home/weewx/bin/weewxd", line 157, in main
> Feb  8 11:21:40 pi3 weewx[26845] CRITICAL __main__:     ****      
> engine.run()
> Feb  8 11:21:40 pi3 weewx[26845] CRITICAL __main__:     ****    File 
> "/home/weewx/bin/weewx/engine.py", line 210, in run
> Feb  8 11:21:40 pi3 weewx[26845] CRITICAL __main__:     ****      
> self.dispatchEvent(weewx.Event(weewx.NEW_LOOP_PACKET, packet=packet))
> Feb  8 11:21:40 pi3 weewx[26845] CRITICAL __main__:     ****    File 
> "/home/weewx/bin/weewx/engine.py", line 245, in dispatchEvent
> Feb  8 11:21:40 pi3 weewx[26845] CRITICAL __main__:     ****      
> callback(event)
> Feb  8 11:21:40 pi3 weewx[26845] CRITICAL __main__:     ****    File 
> "/home/weewx/bin/weewx/engine.py", line 594, in new_loop_packet
> Feb  8 11:21:40 pi3 weewx[26845] CRITICAL __main__:     ****      
> self.accumulator.addRecord(event.packet, add_hilo=self.loop_hilo)
> Feb  8 11:21:40 pi3 weewx[26845] CRITICAL __main__:     ****    File 
> "/home/weewx/bin/weewx/accum.py", line 436, in addRecord
> Feb  8 11:21:40 pi3 weewx[26845] CRITICAL __main__:     ****      
> func(self, record, obs_type, add_hilo, weight)
> Feb  8 11:21:40 pi3 weewx[26845] CRITICAL __main__:     ****    File 
> "/home/weewx/bin/weewx/accum.py", line 495, in add_value
> Feb  8 11:21:40 pi3 weewx[26845] CRITICAL __main__:     ****      
> self[obs_type].addHiLo(val, record['dateTime'])
> Feb  8 11:21:40 pi3 weewx[26845] CRITICAL __main__:     ****    File 
> "/home/weewx/bin/weewx/accum.py", line 168, in addHiLo
> Feb  8 11:21:40 pi3 weewx[26845] CRITICAL __main__:     ****      val = 
> to_float(val)
> Feb  8 11:21:40 pi3 weewx[26845] CRITICAL __main__:     ****    File 
> "/home/weewx/bin/weeutil/weeutil.py", line 1250, in to_float
> Feb  8 11:21:40 pi3 weewx[26845] CRITICAL __main__:     ****      return 
> float(x) if x is not None else None
> Feb  8 11:21:40 pi3 weewx[26845] CRITICAL __main__:     ****  ValueError: 
> could not convert string to float: 'Light snowfall'
> Feb  8 11:21:40 pi3 weewx[26845] CRITICAL __main__:     ****  Exiting.
> On Monday, February 8, 2021 at 3:19:36 AM UTC+2 [email protected] wrote:
>
>> It should be doable. I do something similar with a few temperature 
>> sensors/fields. The fact that you are dealing with string data does add 
>> some complexity.
>> First, for the field configuration you will need to set the 
>> conversion_type = None. Although it is not documented on the wiki, see 
>> https://github.com/bellrichm/WeeWX-MQTTSubscribe/wiki/Configuring#conversion_type
>>  
>> This will stop MQTTSubscribe from trying to convert the incoming data.
>>
>> Next, you will need to configure the accumulator for this field/type. 
>>  See, https://github.com/weewx/weewx/wiki/Accumulators. It looks like 
>> for this field/type you want to set accumulator = firstlast and extractor = 
>> last.
>>
>> Now you should be able to access it via $current. field/type name.
>>
>> If you get this working, I’d like to ‘steal’ the details/steps for a wiki 
>> page.
>> -rich
>>
>> On Sunday, 7 February 2021 at 17:05:51 UTC-5 Tarmo wrote:
>>
>>> Can I do it? I have a text in MQTT like "Cloudy with clear spells" which 
>>> I would like to display on my website. Although, there is no need to store 
>>> it in the weewx database. I would like to just to update it at every 
>>> archive interval.
>>>
>>

-- 
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 on the web visit 
https://groups.google.com/d/msgid/weewx-user/ca027ce1-b152-4a7f-aa5a-5ddaee2c7bean%40googlegroups.com.

Reply via email to