MQTTSubscriber not saving values to database

79 views
Skip to first unread message

jmltech

unread,
Oct 17, 2019, 1:48:51 AM10/17/19
to weewx-user
HI,
Downloaded the MQTTSubscriber so that I can grab some extra temp and humidity readings from a couple of Arduinos.  They are being published correctly via MQTT, as verified by MQTT-Explorer.
Got the subscription configured okay (no configuration errors) on weewx, however I'm getting an awfull lot of this type of error in the log file:
Oct 16 23:32:23 salida1 weewx[25885]: MQTTSubscribeService: Ignoring record outside of interval 1571290342.000000 1571290344.000000 1571290341.905635 dateTime: 1571290341.91, extraHum4: 8.0, usUnits: 1
Oct 16 23:32:39 salida1 weewx[25885]: MQTTSubscribeService: Ignoring record outside of interval 1571290358.000000 1571290360.000000 1571290357.808515 dateTime: 1571290357.81, extraHum4: 8.0, usUnits: 1
Oct 16 23:32:39 salida1 weewx[25885]: MQTTSubscribeService: Ignoring record outside of interval 1571290358.000000 1571290360.000000 1571290357.866821 dateTime: 1571290357.87, mqttSignal1: -64.0, usUnits: 1

Consequently, I'm not seeing any of the values being written to the database.


Here is what I have in my weewx.conf:
 Options for extension 'MQTTSubscribe'
[MQTTSubscribeService]
 
# This section is for the MQTTSubscribe service.
 
 
# Turn the service on and off.
 
# Default is: true
 
# Only used by the service.
 enable
= True
 
 
# 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
= 50
 
 
# The binding, loop or archive.
 
# Default is: loop
 
# Only used by the service.
 binding
= loop

 
# The clientid to connect with.
 clientid
= weewxMQTT
 
 
# The message handler to use
 
[[message_callback]]
 
# The format of the MQTT payload.
 
# Currently support: individual, json, keyword
 
# Must be specified.
 type
= individual

 
# When it is True, the full topic will be the fieldname. The default will be false.
 full_topic_fieldname
= True

 
[[[label_map]]]
 WX
/RVGarage/Temperature = extraTemp4
 WX
/JoeWorkshop/Temperature = extraTemp5
 WX
/RVGarage/Humidity = extraHum4
 WX
/JoeWorkshop/Humidity = extraHum5
 WX
/RVGarage/Signal = mqttSignal1
 WX
/JoeWorkshop/Signal = mqttSignal2
 
 
# The topics to subscribe to.
 
[[topics]]
 
# Units for MQTT payloads without unit value.
 
# Valid values: US, METRIC, METRICWX
 
# Default is: US
 unit_system
= US

 
# Even if the payload has a datetime, ignore it and use the server datetime
 
# Default is False
 use_server_time
= True

 
# When True, the MQTT datetime will be not be checked that is greater than the last packet processed.
 
# Default is False
 
# Only used by the service.
 
#ignore_start_time = True

 
# When the True, the MQTT data will continue to be processed even if its datetime is greater than the packet's datetime.
 
# Default is False
 
# Only used by the service.
 ignore_end_time
= True

 
# When it is True, the full topic will be the fieldname. The default will be false.
 full_topic_fieldname
= True

 
[[[WX/#]]]

It appears that every published packet is being ignored because of the timestamp. My log file is growing like crazy.
Anyone have any ideas?
Thanks
Joe




Rich Bell

unread,
Oct 17, 2019, 10:38:24 AM10/17/19
to weewx-user
Joe,
In the default configuration, MQTTSubscribe attempts to ensure the data is in an appropriate time range. This works well in my controlled environment, but is probably too strict for most setups. There are a lot of knobs we could turn. Since you are using the server time (use_server_time = true) in addition to setting ignore_end_time to true you could set ignore_start_time to true. This should have the effect of not doing any time checking.
- Rich
Reply all
Reply to author
Forward
0 new messages