From 89520641479ee6a8c52cf8fe7063f5f1e41b430f Mon Sep 17 00:00:00 2001 From: Tobias Brunner Date: Sun, 4 Jun 2023 21:59:37 +0200 Subject: [PATCH] battery check --- rak2171.py | 38 ++++++++++++++++++++++++++++---------- 1 file changed, 28 insertions(+), 10 deletions(-) diff --git a/rak2171.py b/rak2171.py index d47e70f..0150a68 100644 --- a/rak2171.py +++ b/rak2171.py @@ -18,7 +18,7 @@ DST_MQTT_PASS = os.getenv("DST_MQTT_PASS") DST_TRACCAR_URL = os.getenv("DST_TRACCAR_URL") PUSHOVER_TOKEN = os.getenv("PUSHOVER_TOKEN") PUSHOVER_USER_KEY = os.getenv("PUSHOVER_USER_KEY") -VERSION = "v1.0" +VERSION = "v1.1" OT_TOPIC_PREFIX = "owntracks/things/" @@ -42,6 +42,25 @@ def on_log(client, userdata, level, buf): # logging.info("got a log message level %s: %s", level, str(buf)) +def push_msg(msg, device_id): + requests.post( + "https://api.pushover.net/1/messages.json", + data={ + "token": PUSHOVER_TOKEN, + "user": PUSHOVER_USER_KEY, + "message": msg, + "title": f"Nachricht von {device_id}", + }, + ) + + +def check_batt(batt, device_id): + msg = f"Batterie von {device_id} ist unter 20%" + if batt <= 20 and batt >= 1: + logging.info(msg) + push_msg(msg=msg, device_id=device_id) + + # The callback for when a PUBLISH message is received from the server. def on_message_ttn(client, userdata, msg): data = json.loads(msg.payload) @@ -63,6 +82,7 @@ def on_message_ttn(client, userdata, msg): fix = data["uplink_message"]["decoded_payload"].get("fix", 0) sos = data["uplink_message"]["decoded_payload"].get("sos", 0) alarm = data["uplink_message"]["decoded_payload"].get("alarm", 0) + batt = data["uplink_message"]["decoded_payload"].get("batt", 0) if fix == 1: logging.info("got payload with a fix") ot_data = json.dumps( @@ -88,24 +108,22 @@ def on_message_ttn(client, userdata, msg): OT_TOPIC_PREFIX + device_id, payload=ot_data, retain=True, qos=1 ) + # check battery + check_batt(batt=batt, device_id=device_id) + # send to traccar # logging.info("publishing data to traccar") # traccar_url = f"{DST_TRACCAR_URL}/?id={device_id}&lat={latitude}&lon={longitude}×tamp={timestamp}&hdop={hdop}&altitude={altitude}&speed=0" # requests.get(traccar_url) elif sos == 1: logging.info("got payload with a sos") - requests.post( - "https://api.pushover.net/1/messages.json", - data={ - "token": PUSHOVER_TOKEN, - "user": PUSHOVER_USER_KEY, - "message": f"SOS from {device_id}", - }, - ) + push_msg(msg=f"Knopf 5 mal gedrückt", device_id=device_id) elif alarm == 1: logging.info("got payload with an alarm") else: logging.info("no usable payload - skipping") + # check battery + check_batt(batt=batt, device_id=device_id) def shutdown(): @@ -131,7 +149,7 @@ if __name__ == "__main__": datefmt="%Y-%m-%d %H:%M:%S %Z", ) - logging.info("Starting ioteer rak2171. " + VERSION) + logging.info("Starting ioteer rak2171 - " + VERSION) # Prepare MQTT for The Things Network client_ttn = mqtt.Client()