-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathwifiunlocker_api.py
75 lines (56 loc) · 1.84 KB
/
wifiunlocker_api.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
68
69
70
71
72
73
74
#!/usr/bin/env python3
import tornado.ioloop
import tornado.web
import tornado.log
import tornado.options
import logging
from tornado.log import enable_pretty_logging
import time
import importlib
import json
import argparse
import re
import uuid
import subprocess
from gpiozero import LED
from time import sleep
enable_pretty_logging()
# https://gist.github.com/mminer/5464753
class DefaultHandler(tornado.web.RequestHandler):
"""Request handler where requests and responses speak JSON."""
def prepare(self):
# Incorporate request JSON into arguments dictionary.
if self.request.body:
try:
json_data = json.loads(self.request.body)
self.request.arguments.update(json_data)
except ValueError:
message = 'Unable to parse JSON.'
self.send_error(400, message=message) # Bad Request
# Set up response dictionary.
self.response = dict()
def set_default_headers(self):
self.set_header('Content-Type', 'application/json')
def output(self):
self.write(self.response)
class
Me(tornado.web.RequestHandler):
def prepare(self):
logging.log(logging.INFO, "Preparing LED 26 ...")
self.relay = LED(26)
def get(self):
self.relay.on()
sleep(1)
self.relay.off()
self.relay.close()
self.write("{\"time\": " + str(time.time()) + "}")
if __name__ == "__main__":
parser = argparse.ArgumentParser(description='WifiUnlocker Web API')
parser.add_argument('-p', '--port', nargs=1, help='Define listen port')
parser.parse_args()
args = parser.parse_args()
application = tornado.web.Application([
(r"/wifiunlocker/open", WifiUnlocker)
], debug=True)
application.listen(args.port[0], "192.168.4.1")
tornado.ioloop.IOLoop.instance().start()