Simple json message
If the following is published to a topic of first/topic.
{
"id": 1,
"temp1": “26.7“
}
And the following to a topic of second/topic.
{
"outTemp": 80
}
Then the configuration would look something like this.
[MQTTSubscribeService] or [MQTTSubscribeDriver]
# 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 = None
# password for broker authentication.
# Default is: None
password = None
[[topics]]
# Units for MQTT payloads without unit value.
# Valid values: US, METRIC, METRICWX
# For more information see, https://weewx.com/docs/5.0/reference/units/?h=units
# Default is US
unit_system = US
# Configuration for the message callback
[[[message]]]
# The format of the MQTT payload.
# Currently support: individual, json, keyword
# Must be specified.
type = json
# The first topic to subscribe to.
[[[first/topic]]]
# The incoming field name from MQTT.
[[[[temp1]]]]
# The WeeWX name.
# Default is the name from MQTT.
name = extraTemp1
# True if the incoming data should not be processed into WeeWX.
# Valid values: True, False
# Default is False
ignore = False
# True if the incoming data is cumulative.
# Valid values: True, False
# Default is False
contains_total = False
# The conversion type necessary for WeeWX compatibility
# Valid values: bool, float, int, none
# Default is float
conversion_type = float
# The units of the incoming data.
# Useful if this field's units differ from the topic's unit_system's units.
# Valid values: see, https://weewx.com/docs/5.0/reference/units/
# Default is not set
units = degree_C
[[[[id]]]]
# True if the incoming data should not be processed into WeeWX.
# Valid values: True, False
# Default is False
ignore = True
# The second topic to subscribe to
[[[second/topic]]]
‘Nested’ json message
If the following is published to a topic of first/topic.
{
"wind":
{
"direction: 89,
"speed": 3,
"gustDirection": 90,
"gust": 5
}
}
Then the configuration would look something like this.
[MQTTSubscribeService] or [MQTTSubscribeDriver]
# 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 = None
# password for broker authentication.
# Default is: None
password = None
[[topics]]
# Units for MQTT payloads without unit value.
# Valid values: US, METRIC, METRICWX
# For more information see, https://weewx.com/docs/5.0/reference/units/?h=units
# Default is US
unit_system = US
# Configuration for the message callback.
[[[message]]
# The format of the MQTT payload.
# Currently support: individual, json, keyword
# Must be specified.
type = json
# When the json is nested, the delimiter between the hierarchies.
# Default is _.
f latten_delimiter = "_"
# The first topic to subscribe to.
[[[first/topic]]]
# The incoming field name from MQTT.
[[[[wind_speed]]]]
# The WeeWX name.
# Default is the name from MQTT.
name = windSpeed
[[[[wind_direction]]]]
# The WeeWX name.
# Default is the name from MQTT.
name = windDir
[[[[wind_gust]]]]
# The WeeWX name.
# Default is the name from MQTT.
name = windGust
[[[[wind_gustDirection]]]]
# The WeeWX name.
# Default is the name from MQTT.
name = windGustDir
json message with array
If the following is published to a topic of first/topic.
{
'temps': [
{
'temp1': 70,
'temp2': 60,
},
],
}
Then the configuration would look something like this.
``` [MQTTSubscribeService] or [MQTTSubscribeDriver] # 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 = None
# password for broker authentication.
# Default is: None
password = None
[[topics]]
# Units for MQTT payloads without unit value.
# Valid values: US, METRIC, METRICWX
# For more information sehttps://weewx.com/docs/5.0/reference/units/?h=units=units
# Default is US
unit_system = US
[[first/topic]]]
[[[[message]]]]
# The format of the MQTT payload.
# Currently support: individual, json, keyword
# Must be specified.
type = json
# When the json is nested, the delimiter between the hierarchies.
# Default is _.
flatten_delimiter = "_"
# The incoming field name from MQTT.
[[[[temps]]]]
# 'temps' is actually array.
# 'subfields' will provide a name to each element in the array.
[[[[[subfields]]]]]
# There is only one element in the array.
#We will name it 'temp'.
[[[[[[temp]]]]]]
# The single element in the array named 'temp' in object.
# This object has two properties, 'temp1' and 'temp2'.
# MQTTSubscribe will take the array element name, 'temp'
# and concatenate the object properties to it.
# This will result in two fields named, 'temp_temp1', and 'temp_temp2'.
# These fields can configured like any other field i the json.
[[[[temp_temp1]]]]
# The WeeWX name.
# Default is the name from MQTT.
# In thus case it would have been 'temp_temp1'.
name = temp1
[[[[temp_temp2]]]]
# The WeeWX name.
# Default is the name from MQTT.
# In thus case it would have been 'temp_temp2'.
name = temp2 '''