80 lines
2.2 KiB
Python
80 lines
2.2 KiB
Python
#===========================================================================
|
|
#
|
|
# Convert decoded data to MQTT messages.
|
|
#
|
|
#===========================================================================
|
|
|
|
#===========================================================================
|
|
def convert( config, data ):
|
|
# List of tuples of ( topic, payload ) where payload is a dictionary.
|
|
msgs = []
|
|
|
|
if hasattr( data, "battery" ):
|
|
topic = config.mqttBattery % data.location
|
|
payload = {
|
|
"time" : data.time,
|
|
"battery" : data.battery,
|
|
}
|
|
msgs.append( ( topic, payload ) )
|
|
|
|
if hasattr( data, "signal" ):
|
|
topic = config.mqttRssi % data.location
|
|
payload = {
|
|
"time" : data.time,
|
|
# Input is 0->1, convert to 0->100
|
|
"rssi" : data.signal * 100,
|
|
}
|
|
msgs.append( ( topic, payload ) )
|
|
|
|
if hasattr( data, "humidity" ):
|
|
topic = config.mqttHumidity % data.location
|
|
payload = {
|
|
"time" : data.time,
|
|
"humidity" : data.humidity,
|
|
}
|
|
msgs.append( ( topic, payload ) )
|
|
|
|
if hasattr( data, "temperature" ):
|
|
topic = config.mqttTemp % data.location
|
|
payload = {
|
|
"time" : data.time,
|
|
"temperature" : data.temperature,
|
|
}
|
|
msgs.append( ( topic, payload ) )
|
|
|
|
if hasattr( data, "windSpeed" ):
|
|
topic = config.mqttWindSpeed % data.location
|
|
payload = {
|
|
"time" : data.time,
|
|
"speed" : data.windSpeed,
|
|
}
|
|
msgs.append( ( topic, payload ) )
|
|
|
|
if hasattr( data, "windDir" ):
|
|
topic = config.mqttWindDir % data.location
|
|
payload = {
|
|
"time" : data.time,
|
|
"direction" : data.windDir,
|
|
}
|
|
msgs.append( ( topic, payload ) )
|
|
|
|
if hasattr( data, "pressure" ):
|
|
topic = config.mqttBarometer % data.location
|
|
payload = {
|
|
"time" : data.time,
|
|
"pressure" : data.pressure,
|
|
}
|
|
msgs.append( ( topic, payload ) )
|
|
|
|
if hasattr( data, "rainfall" ):
|
|
topic = config.mqttRain % data.location
|
|
payload = {
|
|
"time" : data.time,
|
|
"rain" : data.rainfall,
|
|
}
|
|
msgs.append( ( topic, payload ) )
|
|
|
|
return msgs
|
|
|
|
#===========================================================================
|