This commit is contained in:
parent
7afd16849b
commit
8952064147
38
rak2171.py
38
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()
|
||||
|
|
Loading…
Reference in a new issue