aboutsummaryrefslogtreecommitdiff
path: root/mfiapi.py
diff options
context:
space:
mode:
Diffstat (limited to 'mfiapi.py')
-rw-r--r--mfiapi.py58
1 files changed, 0 insertions, 58 deletions
diff --git a/mfiapi.py b/mfiapi.py
deleted file mode 100644
index 31f0330..0000000
--- a/mfiapi.py
+++ /dev/null
@@ -1,58 +0,0 @@
1import json
2import urllib2
3import urllib
4from cookielib import CookieJar
5
6def bool_to_bin(value):
7 return 1 if value == True else 0
8
9
10def bin_to_bool(value):
11 return True if int(value) == 1 else False
12
13
14class MFiAPI(object):
15
16 def __init__(self, host):
17 self.host = host
18 self.opener = urllib2.build_opener(
19 urllib2.HTTPCookieProcessor(CookieJar()))
20
21 def _make_url(self, suffix):
22 return 'https://{}/{}'.format(self.host, suffix)
23
24 def login(self, username, password):
25 form_data = urllib.urlencode({
26 'username' : username,
27 'password': password,
28 'login': 'login'
29 })
30
31 self.opener.open(self._make_url('login'), form_data)
32
33 def get_sensor_data(self):
34 resp = self.opener.open(self._make_url('api/v1.0/list/sensors'))
35 return json.load(resp)['data']
36
37 def port_status(self):
38 data = self.get_sensor_data()
39 return dict((i['label'], bin_to_bool(i['output_val'])) for i in data)
40
41 def set_port(self, mac, port, value):
42 data = urllib.urlencode({ "json": json.dumps({
43 "mac": mac,
44 "val": bool_to_bin(value),
45 "port": int(port),
46 "cmd": "mfi-output"
47 })
48 })
49
50 self.opener.open(self._make_url("api/v1.0/cmd/devmgr"), data)
51
52 def toggle_port(self, name):
53 mac, port, status = None, None, None
54
55 for data in self.get_sensor_data():
56 if data['label'] == name:
57 set_to = not bin_to_bool(data['output_val'])
58 self.set_port(data['mac'], data['port'], set_to)