mirror of
https://github.com/supleed2/ELEC60013-ES-CW1.git
synced 2024-11-10 01:35:50 +00:00
49 lines
1.9 KiB
Python
49 lines
1.9 KiB
Python
import requests, json, subprocess, re
|
|
import paho.mqtt.client as mqtt
|
|
|
|
def OpenHayStackLocation():
|
|
# TODO: replace with OpenHaystack script
|
|
return 0, 0
|
|
|
|
def on_connect(client, userdata, flags, rc):
|
|
print("Connected with result code "+str(rc))
|
|
client.subscribe("/data")
|
|
|
|
def on_message(client, userdata, msg):
|
|
if msg.topic == "/data":
|
|
loc_lat, loc_lon = None, None
|
|
try:
|
|
subprocess.run("./OpenHaystack.app/Contents/MacOS/OpenHaystack > extract.txt", capture_outout=True, shell=True, timeout=5)
|
|
except Exception as e:
|
|
pass
|
|
with open("extract.txt", "r") as output:
|
|
lines = output.readlines()
|
|
for line in reversed(lines):
|
|
if "FindMyLocationReport" in line:
|
|
loc_lat = re.findall("latitude: (-?[0-9]*\.[0-9]*)", line)[0]
|
|
loc_lon = re.findall("longitude: (-?[0-9]*\.[0-9]*)", line)[0]
|
|
break
|
|
subprocess.run("pkill OpenHaystack", shell=True)
|
|
data = json.loads(msg.payload)
|
|
firebase_url = "https://leg-barkr.nw.r.appspot.com/readings/save"
|
|
firebase_headers = {
|
|
"Content-Type": "application/json",
|
|
"Device-ID": data["devID"]
|
|
}
|
|
firebase_data = {
|
|
"air_temp": data["air_temp"],
|
|
"cumulative_steps_today": data["day_steps"],
|
|
"humidity": data["hum_perc"],
|
|
"latitude": float(loc_lat),
|
|
"longitude": float(loc_lon),
|
|
"skin_temp": data['pet_temp']
|
|
}
|
|
r = requests.post(url = firebase_url, json = firebase_data, params = None, headers = firebase_headers) # add any other necessary values in request
|
|
print(r.status_code, r.reason, r.text)
|
|
|
|
client = mqtt.Client("DataPuller")
|
|
client.on_connect = on_connect
|
|
client.on_message = on_message
|
|
client.connect("add8.duckdns.org", 8883, 60)
|
|
client.loop_forever()
|