forked from sorki/gpio_srv
/
server.py
executable file
·67 lines (48 loc) · 1.28 KB
/
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
#!/usr/bin/env python
import os
from twisted.internet import reactor, protocol
from twisted.protocols.basic import LineReceiver
from gpio import on, off, setup, valid
def decode(msg):
msg, val = msg[0], msg[1:]
try:
val = int(val)
except:
val = None
return (msg, val)
def handle(msg, val):
if msg == 'e':
if valid(val):
print('enable:{0}'.format(val))
on(val)
else:
print('out of range')
elif msg == 'd':
if valid(val):
print('disable:{0}'.format(val))
off(val)
else:
print('out of range')
else:
print('unknown cmd')
class GPIO(LineReceiver):
def dataReceived(self, data):
status = os.popen("sudo /home/pi/DHT22/dht22 22").read()
self.transport.write(status)
if len(data) >= 2:
msg, val = decode(data)
handle(msg, val)
self.transport.write('ok\n')
else:
self.transport.write('nak\n')
PORT = 8008
def main():
factory = protocol.ServerFactory()
factory.protocol = GPIO
reactor.listenTCP(PORT, factory)
print 'Setup'
setup()
print 'Listening on {0}'.format(PORT)
reactor.run()
if __name__ == '__main__':
main()