aboutsummaryrefslogtreecommitdiff
path: root/server.py
diff options
context:
space:
mode:
Diffstat (limited to 'server.py')
-rw-r--r--server.py46
1 files changed, 19 insertions, 27 deletions
diff --git a/server.py b/server.py
index 766cc5f..4159736 100644
--- a/server.py
+++ b/server.py
@@ -6,49 +6,41 @@ import tornado.options
6import tornado.process 6import tornado.process
7import tornado.template 7import tornado.template
8import tornado.httpserver 8import tornado.httpserver
9from mfiapi import MFiAPI
9from tornado.options import define, options 10from tornado.options import define, options
10 11
11define("port", default=8888, help="run on the given port", type=int) 12define("port", default=8888, help="run on the given port", type=int)
12 13
13 14
14STATUSES = {
15 'relay1': True, # Fan
16 'relay2': False, # Light
17 'relay3': False,
18}
19
20
21# for relay in STATUSES.keys():
22# caller = subprocess.Popen(["ssh","admin@10.0.1.15",
23# "cat /proc/power/{}".format(relay)], stdout=subprocess.PIPE)
24# output = caller.communicate()[0]
25# STATUSES[relay] = output.startswith("1")
26
27
28class PowerStatusHandler(tornado.web.RequestHandler): 15class PowerStatusHandler(tornado.web.RequestHandler):
29 16
30 def get(self): 17 def __init__(self, *args, **kwargs):
31 self.finish(STATUSES) 18 self.api = MFiAPI('172.16.0.38:6443')
19 super(PowerStatusHandler, self).__init__(*args, **kwargs)
32 20
33 @tornado.web.asynchronous 21 def get(self):
34 def _trigger_relay(self, relay, value): 22 self.api.login('admin', 'password')
35 STATUSES[relay] = value 23 self.finish(self.api.port_status())
36 value = 1 if value is True else 0
37 tornado.process.Subprocess(["ssh","admin@10.0.1.15",
38 "echo {} > /proc/power/{}".format(value, relay)],
39 stdout=tornado.process.Subprocess.STREAM)
40 24
41 def post(self): 25 def post(self):
42 for key, value in self.request.arguments.items(): 26 self.api.login('admin', 'password')
43 self._trigger_relay(key, value[0] == "on")
44 27
45 self.finish(STATUSES) 28 for key, value in self.request.arguments.items():
29 self.api.toggle_port(key)
46 30
47 31
48class IndexHandler(tornado.web.RequestHandler): 32class IndexHandler(tornado.web.RequestHandler):
49 33
34 def __init__(self, *args, **kwargs):
35 self.api = MFiAPI('172.16.0.38:6443')
36 super(IndexHandler, self).__init__(*args, **kwargs)
37
50 def get(self): 38 def get(self):
51 self.render("index.html") 39 self.api.login('admin', 'password')
40
41 ports = [(port, port.replace(" ", "_").replace("'", "-")) for port in self.api.port_status().keys()]
42
43 self.render("index.html", ports=ports)
52 44
53 45
54class Application(tornado.web.Application): 46class Application(tornado.web.Application):