-
Notifications
You must be signed in to change notification settings - Fork 0
/
pi_utils.py
67 lines (51 loc) · 1.81 KB
/
pi_utils.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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
"""Raspberry Pi Firebase Utilities
Functions:
get_firebase_app: Returns firebase db reference with given root url
write_measurement: Writes a new measurement entry to database
get_measurement: Retrieves measurement with given unique id m_id
remove_measurement: Removes measurement with given unique id m_id
Attributes:
ROOT_URL: Root url for firebase database
MEASUREMENTS: Path for measurements tree
Exceptions:
Todo:
*
"""
import firebase as firebase
_ROOT_URL = 'https://safe-8cca1.firebaseio.com/'
_MEASUREMENTS = '/measurements'
def get_firebase_app(root_url = _ROOT_URL):
"""Returns firebase db reference with given root_url
Returns:
FirebaseApplication: firebase db
Args:
root_url (str): firebase root url
"""
return firebase.FirebaseApplication(root_url, None);
def write_measurement(distance, image, time):
"""Writes a new measurement entry to database
Args:
distance (str): measured distance
image (str): Base-64 encoding of associated image
time (str): time of recording data
"""
firebase = get_firebase_app()
result = firebase.post(_MEASUREMENTS, {'distance': distance, 'image': image, 'time':time})
# do some kind of error handling here on result
def get_measurement(m_id):
"""Returns dictionary of measurement attributes for measurement with given unique id m_id
Returns:
dict[str:str]: attributes for measurement with given m_id
Args:
m_id (str): unique id
"""
firebase = get_firebase_app()
attributes = firebase.get(_MEASUREMENTS, m_id)
return attributes
def remove_measurement(m_id):
"""Removes measurement with given unique id m_id
Args:
m_id (str): unique id
"""
firebase = get_firebase_app()
firebase.delete(_MEASUREMENTS, m_id)