diff --git a/README.md b/README.md index 007460c..d8d885f 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,6 @@ # Python scripts for IoT stuff README missing + +TODO: +* pushover on alarm \ No newline at end of file diff --git a/lgt92.py b/lgt92.py index 5facbc6..87bd192 100644 --- a/lgt92.py +++ b/lgt92.py @@ -3,6 +3,7 @@ import json import os import logging import signal +import requests from datetime import datetime from influxdb import InfluxDBClient from dotenv import find_dotenv, load_dotenv @@ -18,6 +19,7 @@ DST_INFLUX_HOST = os.getenv("DST_INFLUX_HOST") DST_INFLUX_USER = os.getenv("DST_INFLUX_USER") DST_INFLUX_PASS = os.getenv("DST_INFLUX_PASS") DST_INFLUX_DB = os.getenv("DST_INFLUX_DB") +HC_PING_URL = os.getenv("HC_PING_URL") OT_TOPIC="owntracks/tobru/dragino" OT_TID="dragino" @@ -35,7 +37,10 @@ def on_publish_ot(client, userdata, rc): def on_log(client, userdata, level, buf): logging_level = mqtt.LOGGING_LEVEL[level] logging.log(logging_level, buf) - logging.info("got a log message level %s: %s", level, str(buf)) + #logging.info("got a log message level %s: %s", level, str(buf)) + if "PINGRESP" in str(buf): + # report to https://healthchecks.io to tell that the connection is alive + requests.get(HC_PING_URL) # The callback for when a PUBLISH message is received from the server. def on_message_ttn(client, userdata, msg): @@ -46,6 +51,9 @@ def on_message_ttn(client, userdata, msg): # max is 4 volts, 3 volts is considered empty batpercent = round((data["payload_fields"]["batV"] - 3) * 100) + if data["payload_fields"]["alarm"]: + print("ALARM button pressed") + if "latitude" in data["payload_fields"]: # transform received data into OwnTracks format ot_data = json.dumps({ @@ -64,6 +72,9 @@ def on_message_ttn(client, userdata, msg): client_ot.publish(OT_TOPIC,ot_data) else: logging.info("no GPS data / latitude present") + # set GPS data to 0 for InfluxDB + data["payload_fields"]["latitude"] = 0.0 + data["payload_fields"]["longitude"] = 0.0 # write to influxdb logging.info("writing data to influxdb") @@ -111,6 +122,8 @@ if __name__ == '__main__': datefmt='%Y-%m-%d %H:%M:%S %Z' ) + logging.info("Starting ioteer lgt92. V1.0") + # Prepare InfluxDB influxdb = InfluxDBClient( host=DST_INFLUX_HOST,