Mercurial > code > home > repos > homeauto
annotate service/bedroomArduino/bedroomArduino.py @ 1162:52960ea4dfa6
audiolevels now saves multiple frequency bands
Ignore-this: 933a5d32f4d97ee148f15a3c6b12235e
darcs-hash:4cf1710eadb9e815d3ccb1fdbae513774bcd94d1
author | drewp <drewp@bigasterisk.com> |
---|---|
date | Wed, 05 Sep 2018 06:06:25 -0700 |
parents | e4069a2cfcc8 |
children |
rev | line source |
---|---|
834
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
1 #!bin/python |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
2 """ |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
3 talks to bed.pde on an arduino |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
4 """ |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
5 |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
6 from __future__ import division |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
7 |
842
1f69e77411ba
add shiftbrites to bedroom arduino
drewp <drewp@bigasterisk.com>
parents:
834
diff
changeset
|
8 import cyclone.web, json, traceback, os, sys, time, logging, bitstring |
834
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
9 from twisted.internet import reactor, task |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
10 from twisted.web.client import getPage |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
11 sys.path.append("/my/proj/house/frontdoor") |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
12 from loggingserial import LoggingSerial |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
13 sys.path.append("/my/proj/homeauto/lib") |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
14 from cycloneerr import PrettyErrorHandler |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
15 from logsetup import log |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
16 |
842
1f69e77411ba
add shiftbrites to bedroom arduino
drewp <drewp@bigasterisk.com>
parents:
834
diff
changeset
|
17 sys.path.append("/my/proj/pixel/shiftweb") |
1f69e77411ba
add shiftbrites to bedroom arduino
drewp <drewp@bigasterisk.com>
parents:
834
diff
changeset
|
18 from shiftweb import hexFromRgb, rgbFromHex |
1f69e77411ba
add shiftbrites to bedroom arduino
drewp <drewp@bigasterisk.com>
parents:
834
diff
changeset
|
19 |
834
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
20 sys.path.append("/my/site/magma") |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
21 from stategraph import StateGraph |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
22 from rdflib import Namespace |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
23 |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
24 ROOM = Namespace("http://projects.bigasterisk.com/room/") |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
25 DEV = Namespace("http://projects.bigasterisk.com/device/") |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
26 |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
27 class ArduinoBedroom(object): |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
28 def __init__(self, port='/dev/ttyACM0'): |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
29 self.ser = LoggingSerial(port=port, baudrate=115200, timeout=1) |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
30 self.ser.flush() |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
31 |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
32 def ping(self): |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
33 self.ser.write("\x60\x00\x00") |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
34 msg = self.ser.readJson() |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
35 assert msg == {"ok":True}, msg |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
36 |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
37 def poll(self): |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
38 self.ser.write("\x60\x01\x00") |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
39 ret = self.ser.readJson() |
842
1f69e77411ba
add shiftbrites to bedroom arduino
drewp <drewp@bigasterisk.com>
parents:
834
diff
changeset
|
40 ret['motion'] = int(ret['motion'] > 100) |
834
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
41 return ret |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
42 |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
43 def setSpeakerChoice(self, pillow): |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
44 self.ser.write("\x60\x02" + chr(pillow)) |
842
1f69e77411ba
add shiftbrites to bedroom arduino
drewp <drewp@bigasterisk.com>
parents:
834
diff
changeset
|
45 return self.ser.readJson() |
1f69e77411ba
add shiftbrites to bedroom arduino
drewp <drewp@bigasterisk.com>
parents:
834
diff
changeset
|
46 |
1f69e77411ba
add shiftbrites to bedroom arduino
drewp <drewp@bigasterisk.com>
parents:
834
diff
changeset
|
47 def setLeds(self, colors): |
1f69e77411ba
add shiftbrites to bedroom arduino
drewp <drewp@bigasterisk.com>
parents:
834
diff
changeset
|
48 """ |
1f69e77411ba
add shiftbrites to bedroom arduino
drewp <drewp@bigasterisk.com>
parents:
834
diff
changeset
|
49 shift out this sequence of (r,g,b) triples of 10-bit ints |
1f69e77411ba
add shiftbrites to bedroom arduino
drewp <drewp@bigasterisk.com>
parents:
834
diff
changeset
|
50 The nearest led gets color[0], etc. |
1f69e77411ba
add shiftbrites to bedroom arduino
drewp <drewp@bigasterisk.com>
parents:
834
diff
changeset
|
51 """ |
1f69e77411ba
add shiftbrites to bedroom arduino
drewp <drewp@bigasterisk.com>
parents:
834
diff
changeset
|
52 resetCurrent = "".join(bitstring.pack("0b01, uint:10, uint:10, uint:10", |
1f69e77411ba
add shiftbrites to bedroom arduino
drewp <drewp@bigasterisk.com>
parents:
834
diff
changeset
|
53 127, 127, 127).bytes |
1f69e77411ba
add shiftbrites to bedroom arduino
drewp <drewp@bigasterisk.com>
parents:
834
diff
changeset
|
54 for loop in range(len(colors))) |
1f69e77411ba
add shiftbrites to bedroom arduino
drewp <drewp@bigasterisk.com>
parents:
834
diff
changeset
|
55 out = "".join(bitstring.pack("0b00, uint:10, uint:10, uint:10", |
1f69e77411ba
add shiftbrites to bedroom arduino
drewp <drewp@bigasterisk.com>
parents:
834
diff
changeset
|
56 b, r, g).bytes |
1f69e77411ba
add shiftbrites to bedroom arduino
drewp <drewp@bigasterisk.com>
parents:
834
diff
changeset
|
57 for r,g,b in reversed(colors)) |
1f69e77411ba
add shiftbrites to bedroom arduino
drewp <drewp@bigasterisk.com>
parents:
834
diff
changeset
|
58 out = resetCurrent + out |
1f69e77411ba
add shiftbrites to bedroom arduino
drewp <drewp@bigasterisk.com>
parents:
834
diff
changeset
|
59 self.ser.write("\x60\x03" + chr(len(out)) + out) |
1f69e77411ba
add shiftbrites to bedroom arduino
drewp <drewp@bigasterisk.com>
parents:
834
diff
changeset
|
60 msg = self.ser.readJson() |
1f69e77411ba
add shiftbrites to bedroom arduino
drewp <drewp@bigasterisk.com>
parents:
834
diff
changeset
|
61 assert msg == {"ok":1}, msg |
834
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
62 |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
63 class Index(PrettyErrorHandler, cyclone.web.RequestHandler): |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
64 def get(self): |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
65 """ |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
66 this is an acceptable status check since it makes a round-trip |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
67 to the arduino before returning success |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
68 """ |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
69 self.settings.arduino.ping() |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
70 |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
71 self.set_header("Content-Type", "application/xhtml+xml") |
922 | 72 self.write(open("index.xhtml").read()) |
834
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
73 |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
74 class SpeakerChoice(PrettyErrorHandler, cyclone.web.RequestHandler): |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
75 def put(self): |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
76 ret = self.settings.arduino.setSpeakerChoice(int(self.get_argument('pillow'))) |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
77 self.write(ret) |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
78 |
842
1f69e77411ba
add shiftbrites to bedroom arduino
drewp <drewp@bigasterisk.com>
parents:
834
diff
changeset
|
79 class Brite(PrettyErrorHandler, cyclone.web.RequestHandler): |
922 | 80 def get(self, which): |
81 self.set_header("Content-Type", "text/plain") | |
82 self.write(hexFromRgb(self.settings.brites[int(which)])) | |
83 | |
842
1f69e77411ba
add shiftbrites to bedroom arduino
drewp <drewp@bigasterisk.com>
parents:
834
diff
changeset
|
84 def put(self, which): |
1f69e77411ba
add shiftbrites to bedroom arduino
drewp <drewp@bigasterisk.com>
parents:
834
diff
changeset
|
85 which = int(which) |
1f69e77411ba
add shiftbrites to bedroom arduino
drewp <drewp@bigasterisk.com>
parents:
834
diff
changeset
|
86 brites = self.settings.brites |
1f69e77411ba
add shiftbrites to bedroom arduino
drewp <drewp@bigasterisk.com>
parents:
834
diff
changeset
|
87 if which + 1 > len(brites): |
1f69e77411ba
add shiftbrites to bedroom arduino
drewp <drewp@bigasterisk.com>
parents:
834
diff
changeset
|
88 brites.extend([(0,0,0)] * (which + 1 - len(brites))) |
1f69e77411ba
add shiftbrites to bedroom arduino
drewp <drewp@bigasterisk.com>
parents:
834
diff
changeset
|
89 brites[which] = rgbFromHex(self.request.body) |
1f69e77411ba
add shiftbrites to bedroom arduino
drewp <drewp@bigasterisk.com>
parents:
834
diff
changeset
|
90 |
1f69e77411ba
add shiftbrites to bedroom arduino
drewp <drewp@bigasterisk.com>
parents:
834
diff
changeset
|
91 self.settings.arduino.setLeds(brites) |
1f69e77411ba
add shiftbrites to bedroom arduino
drewp <drewp@bigasterisk.com>
parents:
834
diff
changeset
|
92 self.set_header("Content-Type", "text/plain") |
1f69e77411ba
add shiftbrites to bedroom arduino
drewp <drewp@bigasterisk.com>
parents:
834
diff
changeset
|
93 self.write("ok") |
1f69e77411ba
add shiftbrites to bedroom arduino
drewp <drewp@bigasterisk.com>
parents:
834
diff
changeset
|
94 |
834
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
95 class GraphPage(PrettyErrorHandler, cyclone.web.RequestHandler): |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
96 def get(self): |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
97 self.set_header("Content-Type", "application/x-trig") |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
98 g = StateGraph(ROOM['bedroomArduino']) |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
99 self.settings.poller.assertIsCurrent() |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
100 g.add((DEV['bedroomMotion'], ROOM['state'], |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
101 ROOM['motion'] if self.settings.poller.lastValues['motion'] else |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
102 ROOM['noMotion'])) |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
103 self.write(g.asTrig()) |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
104 |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
105 class Poller(object): |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
106 """ |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
107 Watches sensor values |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
108 """ |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
109 def __init__(self, config, ard, period): |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
110 self.config, self.ard = config, ard |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
111 self.period = period |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
112 self.lastValues = None |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
113 self.lastPollTime = 0 |
842
1f69e77411ba
add shiftbrites to bedroom arduino
drewp <drewp@bigasterisk.com>
parents:
834
diff
changeset
|
114 self.lastMotion = None |
834
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
115 |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
116 def assertIsCurrent(self): |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
117 """raise an error if the poll data is not fresh""" |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
118 dt = time.time() - self.lastPollTime |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
119 if dt > period * 2: |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
120 raise ValueError("last poll time was too old: %.1f sec ago" % dt) |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
121 |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
122 def poll(self): |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
123 now = time.time() |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
124 try: |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
125 try: |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
126 newData = ard.poll() |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
127 except ValueError, e: |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
128 print e |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
129 else: |
842
1f69e77411ba
add shiftbrites to bedroom arduino
drewp <drewp@bigasterisk.com>
parents:
834
diff
changeset
|
130 #print newData # for testing |
1f69e77411ba
add shiftbrites to bedroom arduino
drewp <drewp@bigasterisk.com>
parents:
834
diff
changeset
|
131 |
834
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
132 self.lastPollTime = now |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
133 self.lastValues = newData # for other data besides the blinks |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
134 self.processMotion(newData['motion']) |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
135 |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
136 except (IOError, OSError): |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
137 os.abort() |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
138 except Exception, e: |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
139 print "poll error", e |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
140 traceback.print_exc() |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
141 |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
142 def processMotion(self, state): |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
143 if state == self.lastMotion: |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
144 return |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
145 self.lastMotion = state |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
146 msg = json.dumps(dict(board=self.config['boardName'], |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
147 name="bedroomMotion", state=state)) |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
148 getPage('http://bang.bigasterisk.com:9069/inputChange', |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
149 method="POST", |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
150 postdata=msg, |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
151 headers={'Content-Type' : 'application/json'} |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
152 ).addErrback(self.reportError, msg) |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
153 |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
154 def reportError(self, msg, *args): |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
155 print "post error", msg, args |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
156 |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
157 if __name__ == '__main__': |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
158 |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
159 config = { # to be read from a file |
842
1f69e77411ba
add shiftbrites to bedroom arduino
drewp <drewp@bigasterisk.com>
parents:
834
diff
changeset
|
160 'arduinoPort': '/dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A4001nIu-if00-port0', |
834
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
161 'servePort' : 9088, |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
162 'pollFrequency' : 6, |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
163 'boardName' : 'bedroom', # gets sent with updates |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
164 } |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
165 |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
166 from twisted.python import log as twlog |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
167 #twlog.startLogging(sys.stdout) |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
168 |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
169 log.setLevel(logging.DEBUG) |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
170 |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
171 ard = ArduinoBedroom(port=config['arduinoPort']) |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
172 |
922 | 173 period = 1 / config['pollFrequency'] |
834
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
174 p = Poller(config, ard, period) |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
175 task.LoopingCall(p.poll).start(period) |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
176 |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
177 reactor.listenTCP(config['servePort'], cyclone.web.Application([ |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
178 (r"/", Index), |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
179 (r"/graph", GraphPage), |
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
180 (r'/speakerChoice', SpeakerChoice), |
842
1f69e77411ba
add shiftbrites to bedroom arduino
drewp <drewp@bigasterisk.com>
parents:
834
diff
changeset
|
181 (r'/brite/(\d+)', Brite), |
1f69e77411ba
add shiftbrites to bedroom arduino
drewp <drewp@bigasterisk.com>
parents:
834
diff
changeset
|
182 ], arduino=ard, poller=p, brites=[])) |
834
a87cae710556
bedroomarduino project started. web server isn't ready
drewp <drewp@bigasterisk.com>
parents:
diff
changeset
|
183 reactor.run() |