add helper script
This commit is contained in:
parent
ecf6fa1457
commit
9001a0bb2a
|
@ -0,0 +1,4 @@
|
|||
#scripts
|
||||
##inenvmon_collector.py
|
||||
A helper script to listen to mqtt topic and write relevant data into the database.
|
||||
Also takes care of timestamping and reporting source status to web app.
|
|
@ -0,0 +1,69 @@
|
|||
#!/usr/bin/pyhton -u
|
||||
|
||||
import mysql.connector as mariadb
|
||||
import paho.mqtt.client as mqtt
|
||||
import time
|
||||
import datetime
|
||||
import requests
|
||||
|
||||
MQTT_Broker = "127.0.0.1"
|
||||
MQTT_Port =
|
||||
Keep_Alive_Interval = 60
|
||||
MQTT_Topic = ""
|
||||
MQTT_Auth = {'username':"", 'password':""}
|
||||
DB = ""
|
||||
DB_USER = ""
|
||||
DB_PASSWORD = ""
|
||||
API_SECRET = ""
|
||||
|
||||
|
||||
def write_db(sql):
|
||||
dbconn = mariadb.connect(user=DB_USER, password=DB_PASSWORD, database=DB)
|
||||
cursor = dbconn.cursor()
|
||||
|
||||
try:
|
||||
cursor.execute(sql)
|
||||
except mariadb.Error as e:
|
||||
print(e)
|
||||
return False
|
||||
|
||||
dbconn.commit()
|
||||
dbconn.close()
|
||||
return True
|
||||
|
||||
def send_heartbeat():
|
||||
return requests.post("http://localhost:80/api/heartbeat", data={'message':time.time(),'key': API_SECRET})
|
||||
|
||||
def on_connect(client, userdata, flags, rc):
|
||||
print("connected: "+str(rc))
|
||||
mqttc.subscribe(MQTT_Topic, 0)
|
||||
print("subscribed!")
|
||||
|
||||
def on_message(mosq, obj, msg):
|
||||
try:
|
||||
procdm = msg.payload.decode("unicode_escape").split(",")
|
||||
if procdm[4] == -1:
|
||||
procdm[4] = None;
|
||||
except Exception as ex:
|
||||
print("Fug: %s" % ex)
|
||||
|
||||
f = '%Y-%m-%d %H:%M:%S'
|
||||
|
||||
sql = "INSERT INTO envdata (timestamp, temp, hum, pres, co2) VALUES (%s, %s, %s, %s, %s)" % (str("\"%s\"") % datetime.datetime.now().strftime(f), str("\"%s\"") % procdm[1], str("\"%s\"") % procdm[2], str("\"%s\"") % procdm[3], str("\"%s\"") % procdm[4])
|
||||
write_db(sql)
|
||||
send_heartbeat()
|
||||
|
||||
def on_subscribed(mosq, obj, mid, granted_qos):
|
||||
pass
|
||||
|
||||
mqttc = mqtt.Client()
|
||||
|
||||
mqttc.on_message = on_message
|
||||
mqttc.on_connect = on_connect
|
||||
mqttc.on_subscribed = on_subscribed
|
||||
|
||||
mqttc.username_pw_set(MQTT_Auth['username'], MQTT_Auth['password])
|
||||
mqttc.connect(MQTT_Broker, int(MQTT_Port), int(Keep_Alive_Interval))
|
||||
|
||||
mqttc.loop_forever()
|
||||
|
Loading…
Reference in New Issue