add helper script

This commit is contained in:
2EEEB 2020-04-08 14:48:18 +02:00
parent ecf6fa1457
commit 9001a0bb2a
Signed by: 2EEEB
GPG Key ID: 8F12BD6D9D435DB2
2 changed files with 73 additions and 0 deletions

4
scripts/README.md Normal file
View File

@ -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.

View File

@ -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()