diff options
Diffstat (limited to 'server.py')
-rw-r--r-- | server.py | 46 |
1 files changed, 19 insertions, 27 deletions
@@ -6,49 +6,41 @@ import tornado.options | |||
6 | import tornado.process | 6 | import tornado.process |
7 | import tornado.template | 7 | import tornado.template |
8 | import tornado.httpserver | 8 | import tornado.httpserver |
9 | from mfiapi import MFiAPI | ||
9 | from tornado.options import define, options | 10 | from tornado.options import define, options |
10 | 11 | ||
11 | define("port", default=8888, help="run on the given port", type=int) | 12 | define("port", default=8888, help="run on the given port", type=int) |
12 | 13 | ||
13 | 14 | ||
14 | STATUSES = { | ||
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 | |||
28 | class PowerStatusHandler(tornado.web.RequestHandler): | 15 | class 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 | ||
48 | class IndexHandler(tornado.web.RequestHandler): | 32 | class 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 | ||
54 | class Application(tornado.web.Application): | 46 | class Application(tornado.web.Application): |