-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbl_server.py
82 lines (61 loc) · 1.99 KB
/
bl_server.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
75
76
77
78
79
80
81
82
#!/usr/bin/env python
"""
Very simple HTTP server in python.
Usage::
./dummy-web-server.py [<port>]
"""
from __future__ import division
import sys
if sys.version_info[0] < 3:
# python 2 import
from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
else:
# python 3 import
from http.server import BaseHTTPRequestHandler, HTTPServer
import rpi_backlight as bl
def get_brightness():
return bl.get_actual_brightness()
def set_brightness(new_value):
if new_value < 50:
new_value = 50
elif new_value > 255:
new_value = 255
current_value = get_brightness()
diff = abs(current_value - new_value)
duration = diff / 50
if duration < 0.2:
duration = 0
bl.set_brightness(new_value, smooth=True, duration=duration)
return get_brightness()
class BaseServer(BaseHTTPRequestHandler):
def _set_headers(self, status_code=200):
self.send_response(status_code)
self.send_header('Content-type', 'text')
self.end_headers()
def do_GET(self):
self._set_headers()
self.wfile.write(str(get_brightness()).encode('utf-8'))
def do_HEAD(self):
self._set_headers()
def do_POST(self):
content_length = int(self.headers['Content-Length'])
post_data = self.rfile.read(content_length).strip()
try:
new_value = int(post_data)
brightness = set_brightness(new_value)
self._set_headers(200)
self.wfile.write(str(brightness).encode('utf-8'))
except Exception as e:
self._set_headers(500)
self.wfile.write(str(e).encode('utf-8'))
def run(server_class=HTTPServer, handler_class=BaseServer, port=80):
server_address = ('', port)
httpd = server_class(server_address, handler_class)
print('HTTP server running on port %s' % port)
httpd.serve_forever()
if __name__ == "__main__":
from sys import argv
if len(argv) == 2:
run(port=int(argv[1]))
else:
run()