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")
|
DST_TRACCAR_URL = os.getenv("DST_TRACCAR_URL")
|
||||||
PUSHOVER_TOKEN = os.getenv("PUSHOVER_TOKEN")
|
PUSHOVER_TOKEN = os.getenv("PUSHOVER_TOKEN")
|
||||||
PUSHOVER_USER_KEY = os.getenv("PUSHOVER_USER_KEY")
|
PUSHOVER_USER_KEY = os.getenv("PUSHOVER_USER_KEY")
|
||||||
VERSION = "v1.0"
|
VERSION = "v1.1"
|
||||||
|
|
||||||
OT_TOPIC_PREFIX = "owntracks/things/"
|
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))
|
# 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.
|
# The callback for when a PUBLISH message is received from the server.
|
||||||
def on_message_ttn(client, userdata, msg):
|
def on_message_ttn(client, userdata, msg):
|
||||||
data = json.loads(msg.payload)
|
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)
|
fix = data["uplink_message"]["decoded_payload"].get("fix", 0)
|
||||||
sos = data["uplink_message"]["decoded_payload"].get("sos", 0)
|
sos = data["uplink_message"]["decoded_payload"].get("sos", 0)
|
||||||
alarm = data["uplink_message"]["decoded_payload"].get("alarm", 0)
|
alarm = data["uplink_message"]["decoded_payload"].get("alarm", 0)
|
||||||
|
batt = data["uplink_message"]["decoded_payload"].get("batt", 0)
|
||||||
if fix == 1:
|
if fix == 1:
|
||||||
logging.info("got payload with a fix")
|
logging.info("got payload with a fix")
|
||||||
ot_data = json.dumps(
|
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
|
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
|
# send to traccar
|
||||||
# logging.info("publishing data 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"
|
# 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)
|
# requests.get(traccar_url)
|
||||||
elif sos == 1:
|
elif sos == 1:
|
||||||
logging.info("got payload with a sos")
|
logging.info("got payload with a sos")
|
||||||
requests.post(
|
push_msg(msg=f"Knopf 5 mal gedrückt", device_id=device_id)
|
||||||
"https://api.pushover.net/1/messages.json",
|
|
||||||
data={
|
|
||||||
"token": PUSHOVER_TOKEN,
|
|
||||||
"user": PUSHOVER_USER_KEY,
|
|
||||||
"message": f"SOS from {device_id}",
|
|
||||||
},
|
|
||||||
)
|
|
||||||
elif alarm == 1:
|
elif alarm == 1:
|
||||||
logging.info("got payload with an alarm")
|
logging.info("got payload with an alarm")
|
||||||
else:
|
else:
|
||||||
logging.info("no usable payload - skipping")
|
logging.info("no usable payload - skipping")
|
||||||
|
# check battery
|
||||||
|
check_batt(batt=batt, device_id=device_id)
|
||||||
|
|
||||||
|
|
||||||
def shutdown():
|
def shutdown():
|
||||||
|
@ -131,7 +149,7 @@ if __name__ == "__main__":
|
||||||
datefmt="%Y-%m-%d %H:%M:%S %Z",
|
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
|
# Prepare MQTT for The Things Network
|
||||||
client_ttn = mqtt.Client()
|
client_ttn = mqtt.Client()
|
||||||
|
|
Loading…
Reference in a new issue