This repository was archived by the owner on Jun 26, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapiCalls.py
42 lines (39 loc) · 1.48 KB
/
apiCalls.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import json
import pandas as pd
import urllib
# apiURL = 'http://localhost:8080/' # local - only when running api locally at this port
# apiURL = 'https://colabtest01.pace.edu/api/v1/' # test - only on pace vpn
# apiURL = 'https://colabprod01.pace.edu/api/v1/' # prod - this works everywhere
apiURL = 'http://api.bluecolab.cc/'
def getSensors() -> pd.DataFrame:
# return all sensors
call = 'v2/sensors/'
try:
sensors = pd.read_json(apiURL + call)
return sensors
except Exception as e:
print(e)
return pd.DataFrame()
def getDataStreamDelta(station:str,days:int,hrs:int=None,mins:int=None):
# returns a stream of sensor data for a given station name and time delta
# returns an error string if station doesn't exist
queryString = 'stream=true&days={days}'
qsargs = {'days': days}
if hrs is not None:
queryString += '&hours={hrs}'
qsargs['hrs'] = hrs
if mins is not None:
queryString += '&minutes={mins}'
qsargs['mins'] = mins
args = {'station': station, 'queryString': queryString.format(**qsargs)}
call = 'influx/sensordata/{station}/delta/?{queryString}'.format(**args)
try:
data = None
with urllib.request.urlopen(apiURL + call) as src:
jsonData = json.loads(src.read().decode())
data = pd.json_normalize(jsonData)
return data
except Exception as e:
print(e)
print("error loading new data")
return "can't load new data"