|
|
@ -20,7 +20,7 @@ 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") |
|
|
|
VERSION = "V1.1" |
|
|
|
VERSION = "v2.0" |
|
|
|
|
|
|
|
OT_TOPIC="owntracks/tobru/dragino" |
|
|
|
OT_TID="dragino" |
|
|
@ -61,19 +61,19 @@ def on_message_ttn(client, userdata, msg): |
|
|
|
logging.info("received via gw %s", gtw_id) |
|
|
|
|
|
|
|
# max is 4 volts, 3 volts is considered empty |
|
|
|
batpercent = round((data["payload_fields"]["batV"] - 3) * 100) |
|
|
|
batpercent = round((data["payload_fields"]["BatV"] - 3) * 100) |
|
|
|
|
|
|
|
if data["payload_fields"]["alarm"]: |
|
|
|
if data["payload_fields"]["ALARM_status"]: |
|
|
|
print("ALARM button pressed") |
|
|
|
|
|
|
|
got_fix = False |
|
|
|
if "latitude" in data["payload_fields"]: |
|
|
|
if "Latitude" in data["payload_fields"]: |
|
|
|
got_fix = True |
|
|
|
# transform received data into OwnTracks format |
|
|
|
ot_data = json.dumps({ |
|
|
|
"_type": "location", |
|
|
|
"lat": data["payload_fields"]["latitude"], |
|
|
|
"lon": data["payload_fields"]["longitude"], |
|
|
|
"lat": data["payload_fields"]["Latitude"], |
|
|
|
"lon": data["payload_fields"]["Longitude"], |
|
|
|
"batt": batpercent, |
|
|
|
"t": "p", |
|
|
|
"tid": OT_TID, |
|
|
@ -85,11 +85,15 @@ def on_message_ttn(client, userdata, msg): |
|
|
|
logging.info("publishing data to owntracks via mqtt %s", OT_TOPIC) |
|
|
|
client_ot.publish(OT_TOPIC, payload=ot_data, retain=True, qos=1) |
|
|
|
else: |
|
|
|
logging.info("no GPS data / latitude present") |
|
|
|
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 |
|
|
|
data["payload_fields"]["Latitude"] = 0.0 |
|
|
|
data["payload_fields"]["Longitude"] = 0.0 |
|
|
|
|
|
|
|
logging.info("Motion detection: %s", data["payload_fields"]["MD"]) |
|
|
|
logging.info("LED status for position: %s", data["payload_fields"]["LON"]) |
|
|
|
logging.info("Firmware version: %s", data["payload_fields"]["FW"]) |
|
|
|
|
|
|
|
# write to influxdb |
|
|
|
logging.info("writing data to influxdb") |
|
|
|
influxdb.write_points( |
|
|
@ -99,12 +103,12 @@ def on_message_ttn(client, userdata, msg): |
|
|
|
"device": "lgt92", |
|
|
|
}, |
|
|
|
"fields": { |
|
|
|
"bat": float(data["payload_fields"]["batV"]), |
|
|
|
"pitch": float(data["payload_fields"]["pitch"]), |
|
|
|
"roll": float(data["payload_fields"]["roll"]), |
|
|
|
"lat": data["payload_fields"]["latitude"], |
|
|
|
"lon": data["payload_fields"]["longitude"], |
|
|
|
"alarm": int(data["payload_fields"]["alarm"]), |
|
|
|
"bat": float(data["payload_fields"]["BatV"]), |
|
|
|
"pitch": float(data["payload_fields"]["Pitch"]), |
|
|
|
"roll": float(data["payload_fields"]["Roll"]), |
|
|
|
"lat": data["payload_fields"]["Latitude"], |
|
|
|
"lon": data["payload_fields"]["Longitude"], |
|
|
|
"alarm": int(data["payload_fields"]["ALARM_status"]), |
|
|
|
"counter": data["counter"], |
|
|
|
"airtime": data["metadata"]["airtime"], |
|
|
|
"rssi": data["metadata"]["gateways"][0]["rssi"], |
|
|
|