battery check
continuous-integration/drone/push Build is failing Details

This commit is contained in:
Tobias Brunner 2023-06-04 21:59:37 +02:00
parent 7afd16849b
commit 8952064147
Signed by: tobru
SSH Key Fingerprint: SHA256:kywVhvCA+MIxL6eBgoQa+BfC/ROJqcfD2bpy1PR6Ebk
1 changed files with 28 additions and 10 deletions

View File

@ -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}&timestamp={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()