Skip to content

Instantly share code, notes, and snippets.

@Shaw007134
Forked from nhimf/mqtt-to-influx.py
Created February 18, 2021 07:46
Show Gist options
  • Save Shaw007134/b6bbab217aefec11ed8ea6be6d5335ab to your computer and use it in GitHub Desktop.
Save Shaw007134/b6bbab217aefec11ed8ea6be6d5335ab to your computer and use it in GitHub Desktop.
Very crude Python script to transfer data from mqtt to InfluxDB
import paho.mqtt.client as mqtt
from influxdb import InfluxDBClient
import datetime
# The callback for when the client receives a CONNACK response from the server.
def on_connect(client, userdata, flags, rc):
print("Connected with result code "+str(rc))
# Subscribing in on_connect() means that if we lose the connection and
# reconnect then subscriptions will be renewed.
client.subscribe("sensors/#")
# The callback for when a PUBLISH message is received from the server.
def on_message(client, userdata, msg):
current_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
json_body = [
{
"measurement": "temperature",
"tags": {
"host": "aquarium",
},
# "time": str(current_time),
"fields": {
"value": str(msg.payload)
}
}
]
influx_client.write_points(json_body)
print(msg.topic+" "+str(msg.payload))
influx_client = InfluxDBClient('localhost', 8086, database='collectd_db')
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect("192.168.1.3", 1883, 60)
# Blocking call that processes network traffic, dispatches callbacks and
# handles reconnecting.
# Other loop*() functions are available that give a threaded interface and a
# manual interface.
client.loop_forever()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment