Mercurial > code > home > repos > homeauto
annotate service/arduinoNode/devices.py @ 991:c6989dcf1f4f
temp sensor try to work with idle loop (but there are still stutters)
Ignore-this: d3d33548db6ce6c329f8aef2cd83403a
darcs-hash:20150708082102-312f9-ea553ff8ce011065b93ed3dae5dbc8fa057ca0d8
author | drewp <drewp@bigasterisk.com> |
---|---|
date | Wed, 08 Jul 2015 01:21:02 -0700 |
parents | 11fff6301027 |
children | 6c6897a139da |
rev | line source |
---|---|
974
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
1 from __future__ import division |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
2 import itertools |
971
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
3 from rdflib import Namespace, RDF, URIRef, Literal |
981
d9bbbd8d86f6
arduinoNode: use -v for logging; support a PUT with subj+pred in query, obj in body
drewp <drewp@bigasterisk.com>
parents:
977
diff
changeset
|
4 import time |
969 | 5 |
6 ROOM = Namespace('http://projects.bigasterisk.com/room/') | |
974
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
7 XSD = Namespace('http://www.w3.org/2001/XMLSchema#') |
969 | 8 |
971
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
9 def readLine(read): |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
10 buf = '' |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
11 for c in iter(lambda: read(1), '\n'): |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
12 buf += c |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
13 return buf |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
14 |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
15 class DeviceType(object): |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
16 deviceType = None |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
17 @classmethod |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
18 def findInstances(cls, graph, board): |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
19 """ |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
20 return any number of instances of this class for all the separately |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
21 controlled devices on the board. Two LEDS makes two instances, |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
22 but two sensors on the same onewire bus makes only one device |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
23 (which yields more statements). |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
24 """ |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
25 for row in graph.query("""SELECT ?dev ?pinNumber WHERE { |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
26 ?board :hasPin ?pin . |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
27 ?pin :pinNumber ?pinNumber; |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
28 :connectedTo ?dev . |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
29 ?dev a ?thisType . |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
30 } ORDER BY ?dev""", |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
31 initBindings=dict(board=board, |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
32 thisType=cls.deviceType), |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
33 initNs={'': ROOM}): |
974
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
34 yield cls(graph, row.dev, int(row.pinNumber)) |
971
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
35 |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
36 # subclasses may add args to this |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
37 def __init__(self, graph, uri, pinNumber): |
969 | 38 self.graph, self.uri = graph, uri |
971
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
39 self.pinNumber = pinNumber |
975
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
40 |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
41 def description(self): |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
42 return { |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
43 'uri': self.uri, |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
44 'className': self.__class__.__name__, |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
45 'pinNumber': self.pinNumber, |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
46 'outputPatterns': self.outputPatterns(), |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
47 'watchPrefixes': self.watchPrefixes(), |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
48 'outputWidgets': self.outputWidgets(), |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
49 } |
969 | 50 |
51 def readFromPoll(self, read): | |
52 """ | |
53 read an update message returned as part of a poll bundle. This may | |
54 consume a varying number of bytes depending on the type of | |
55 input (e.g. IR receiver). | |
56 Returns rdf statements. | |
57 """ | |
971
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
58 raise NotImplementedError('readFromPoll in %s' % self.__class__) |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
59 |
975
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
60 def watchPrefixes(self): |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
61 """ |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
62 subj,pred pairs of the statements that might be returned from |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
63 readFromPoll, so the dashboard knows what it should |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
64 watch. This should be eliminated, as the dashboard should just |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
65 always watch the whole tree of statements starting self.uri |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
66 """ |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
67 return [] |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
68 |
971
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
69 def generateIncludes(self): |
975
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
70 """filenames of .h files to #include""" |
971
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
71 return [] |
969 | 72 |
971
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
73 def generateArduinoLibs(self): |
975
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
74 """names of libraries for the ARDUINO_LIBS line in the makefile""" |
971
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
75 return [] |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
76 |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
77 def generateGlobalCode(self): |
990
11fff6301027
support for device code in the idle loop
drewp <drewp@bigasterisk.com>
parents:
981
diff
changeset
|
78 """C code to emit in the global section. |
11fff6301027
support for device code in the idle loop
drewp <drewp@bigasterisk.com>
parents:
981
diff
changeset
|
79 |
11fff6301027
support for device code in the idle loop
drewp <drewp@bigasterisk.com>
parents:
981
diff
changeset
|
80 Note that 'frame' (uint8) is available and increments each frame. |
11fff6301027
support for device code in the idle loop
drewp <drewp@bigasterisk.com>
parents:
981
diff
changeset
|
81 """ |
971
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
82 return '' |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
83 |
969 | 84 def generateSetupCode(self): |
975
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
85 """C code to emit in setup()""" |
969 | 86 return '' |
87 | |
990
11fff6301027
support for device code in the idle loop
drewp <drewp@bigasterisk.com>
parents:
981
diff
changeset
|
88 def generateIdleCode(self): |
11fff6301027
support for device code in the idle loop
drewp <drewp@bigasterisk.com>
parents:
981
diff
changeset
|
89 """C code to emit in the serial-read loop""" |
11fff6301027
support for device code in the idle loop
drewp <drewp@bigasterisk.com>
parents:
981
diff
changeset
|
90 return '' |
11fff6301027
support for device code in the idle loop
drewp <drewp@bigasterisk.com>
parents:
981
diff
changeset
|
91 |
969 | 92 def generatePollCode(self): |
975
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
93 """ |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
94 C code to run a poll update. This should Serial.write its output |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
95 for readFromPoll to consume. If this returns nothing, we don't |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
96 try to poll this device. |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
97 """ |
969 | 98 return '' |
99 | |
971
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
100 def generateActionCode(self): |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
101 """ |
974
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
102 If the host side runs sendOutput, this C code will be run on the |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
103 board to receive whatever sendOutput writes. Each sendOutput |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
104 write(buf) call should be matched with len(buf) Serial.read() |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
105 calls in here. |
971
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
106 """ |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
107 return '' |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
108 |
974
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
109 def outputPatterns(self): |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
110 """ |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
111 Triple patterns, using None as a wildcard, that should be routed |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
112 to sendOutput |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
113 """ |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
114 return [] |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
115 |
975
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
116 def outputWidgets(self): |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
117 """ |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
118 structs to make output widgets on the dashboard. ~1 of these per |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
119 handler you have in sendOutput |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
120 """ |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
121 return [] |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
122 |
974
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
123 def sendOutput(self, statements, write, read): |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
124 """ |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
125 If we got statements that match this class's outputPatterns, this |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
126 will be called with the statements that matched, and a serial |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
127 write method. What you write here will be available as |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
128 Serial.read in the generateActionCode C code. |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
129 |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
130 Todo: it would be fine to read back confirmations or |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
131 whatever. Just need a way to collect them into graph statements. |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
132 """ |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
133 raise NotImplementedError |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
134 |
971
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
135 _knownTypes = set() |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
136 def register(deviceType): |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
137 _knownTypes.add(deviceType) |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
138 return deviceType |
969 | 139 |
971
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
140 @register |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
141 class PingInput(DeviceType): |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
142 @classmethod |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
143 def findInstances(cls, graph, board): |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
144 return [cls(graph, board, None)] |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
145 |
969 | 146 def generatePollCode(self): |
147 return "Serial.write('k');" | |
975
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
148 |
969 | 149 def readFromPoll(self, read): |
150 if read(1) != 'k': | |
151 raise ValueError('invalid ping response') | |
152 return [(self.uri, ROOM['ping'], ROOM['ok'])] | |
153 | |
975
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
154 def watchPrefixes(self): |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
155 return [(self.uri, ROOM['ping'])] |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
156 |
971
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
157 @register |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
158 class MotionSensorInput(DeviceType): |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
159 deviceType = ROOM['MotionSensor'] |
969 | 160 def generateSetupCode(self): |
161 return 'pinMode(%(pin)d, INPUT); digitalWrite(%(pin)d, LOW);' % { | |
974
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
162 'pin': self.pinNumber, |
969 | 163 } |
164 | |
165 def generatePollCode(self): | |
166 return "Serial.write(digitalRead(%(pin)d) ? 'y' : 'n');" % { | |
974
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
167 'pin': self.pinNumber |
969 | 168 } |
169 | |
170 def readFromPoll(self, read): | |
171 b = read(1) | |
172 if b not in 'yn': | |
173 raise ValueError('unexpected response %r' % b) | |
174 motion = b == 'y' | |
981
d9bbbd8d86f6
arduinoNode: use -v for logging; support a PUT with subj+pred in query, obj in body
drewp <drewp@bigasterisk.com>
parents:
977
diff
changeset
|
175 |
d9bbbd8d86f6
arduinoNode: use -v for logging; support a PUT with subj+pred in query, obj in body
drewp <drewp@bigasterisk.com>
parents:
977
diff
changeset
|
176 return [ |
d9bbbd8d86f6
arduinoNode: use -v for logging; support a PUT with subj+pred in query, obj in body
drewp <drewp@bigasterisk.com>
parents:
977
diff
changeset
|
177 (self.uri, ROOM['sees'], |
d9bbbd8d86f6
arduinoNode: use -v for logging; support a PUT with subj+pred in query, obj in body
drewp <drewp@bigasterisk.com>
parents:
977
diff
changeset
|
178 ROOM['motion'] if motion else ROOM['noMotion']), |
d9bbbd8d86f6
arduinoNode: use -v for logging; support a PUT with subj+pred in query, obj in body
drewp <drewp@bigasterisk.com>
parents:
977
diff
changeset
|
179 self.recentMotionStatement(motion), |
d9bbbd8d86f6
arduinoNode: use -v for logging; support a PUT with subj+pred in query, obj in body
drewp <drewp@bigasterisk.com>
parents:
977
diff
changeset
|
180 ] |
969 | 181 |
981
d9bbbd8d86f6
arduinoNode: use -v for logging; support a PUT with subj+pred in query, obj in body
drewp <drewp@bigasterisk.com>
parents:
977
diff
changeset
|
182 def recentMotionStatement(self, motion): |
d9bbbd8d86f6
arduinoNode: use -v for logging; support a PUT with subj+pred in query, obj in body
drewp <drewp@bigasterisk.com>
parents:
977
diff
changeset
|
183 if not hasattr(self, 'lastMotionTime'): |
d9bbbd8d86f6
arduinoNode: use -v for logging; support a PUT with subj+pred in query, obj in body
drewp <drewp@bigasterisk.com>
parents:
977
diff
changeset
|
184 self.lastMotionTime = 0 |
d9bbbd8d86f6
arduinoNode: use -v for logging; support a PUT with subj+pred in query, obj in body
drewp <drewp@bigasterisk.com>
parents:
977
diff
changeset
|
185 now = time.time() |
d9bbbd8d86f6
arduinoNode: use -v for logging; support a PUT with subj+pred in query, obj in body
drewp <drewp@bigasterisk.com>
parents:
977
diff
changeset
|
186 if motion: |
d9bbbd8d86f6
arduinoNode: use -v for logging; support a PUT with subj+pred in query, obj in body
drewp <drewp@bigasterisk.com>
parents:
977
diff
changeset
|
187 self.lastMotionTime = now |
d9bbbd8d86f6
arduinoNode: use -v for logging; support a PUT with subj+pred in query, obj in body
drewp <drewp@bigasterisk.com>
parents:
977
diff
changeset
|
188 recentMotion = now - self.lastMotionTime < 60 * 10 |
d9bbbd8d86f6
arduinoNode: use -v for logging; support a PUT with subj+pred in query, obj in body
drewp <drewp@bigasterisk.com>
parents:
977
diff
changeset
|
189 return (self.uri, ROOM['seesRecently'], |
d9bbbd8d86f6
arduinoNode: use -v for logging; support a PUT with subj+pred in query, obj in body
drewp <drewp@bigasterisk.com>
parents:
977
diff
changeset
|
190 ROOM['motion'] if recentMotion else ROOM['noMotion']) |
d9bbbd8d86f6
arduinoNode: use -v for logging; support a PUT with subj+pred in query, obj in body
drewp <drewp@bigasterisk.com>
parents:
977
diff
changeset
|
191 |
975
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
192 def watchPrefixes(self): |
981
d9bbbd8d86f6
arduinoNode: use -v for logging; support a PUT with subj+pred in query, obj in body
drewp <drewp@bigasterisk.com>
parents:
977
diff
changeset
|
193 return [ |
d9bbbd8d86f6
arduinoNode: use -v for logging; support a PUT with subj+pred in query, obj in body
drewp <drewp@bigasterisk.com>
parents:
977
diff
changeset
|
194 (self.uri, ROOM['sees']), |
d9bbbd8d86f6
arduinoNode: use -v for logging; support a PUT with subj+pred in query, obj in body
drewp <drewp@bigasterisk.com>
parents:
977
diff
changeset
|
195 (self.uri, ROOM['seesRecently']), |
d9bbbd8d86f6
arduinoNode: use -v for logging; support a PUT with subj+pred in query, obj in body
drewp <drewp@bigasterisk.com>
parents:
977
diff
changeset
|
196 ] |
975
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
197 |
971
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
198 @register |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
199 class OneWire(DeviceType): |
975
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
200 """ |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
201 A OW bus with temperature sensors (and maybe other devices, which |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
202 are also to be handled under this object) |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
203 """ |
971
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
204 deviceType = ROOM['OneWire'] |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
205 |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
206 def generateIncludes(self): |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
207 return ['OneWire.h', 'DallasTemperature.h'] |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
208 |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
209 def generateArduinoLibs(self): |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
210 return ['OneWire', 'DallasTemperature'] |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
211 |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
212 def generateGlobalCode(self): |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
213 # not yet isolated to support multiple OW buses |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
214 return ''' |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
215 OneWire oneWire(%(pinNumber)s); |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
216 DallasTemperature sensors(&oneWire); |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
217 DeviceAddress tempSensorAddress; |
974
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
218 #define NUM_TEMPERATURE_RETRIES 2 |
971
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
219 |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
220 void initSensors() { |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
221 sensors.begin(); |
991
c6989dcf1f4f
temp sensor try to work with idle loop (but there are still stutters)
drewp <drewp@bigasterisk.com>
parents:
990
diff
changeset
|
222 sensors.setWaitForConversion(false); |
971
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
223 sensors.getAddress(tempSensorAddress, 0); |
991
c6989dcf1f4f
temp sensor try to work with idle loop (but there are still stutters)
drewp <drewp@bigasterisk.com>
parents:
990
diff
changeset
|
224 sensors.setResolution(tempSensorAddress, 9); // down from 12 to avoid flicker |
971
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
225 } |
974
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
226 ''' % dict(pinNumber=self.pinNumber) |
991
c6989dcf1f4f
temp sensor try to work with idle loop (but there are still stutters)
drewp <drewp@bigasterisk.com>
parents:
990
diff
changeset
|
227 |
c6989dcf1f4f
temp sensor try to work with idle loop (but there are still stutters)
drewp <drewp@bigasterisk.com>
parents:
990
diff
changeset
|
228 def generateSetupCode(self): |
c6989dcf1f4f
temp sensor try to work with idle loop (but there are still stutters)
drewp <drewp@bigasterisk.com>
parents:
990
diff
changeset
|
229 return 'initSensors();' |
c6989dcf1f4f
temp sensor try to work with idle loop (but there are still stutters)
drewp <drewp@bigasterisk.com>
parents:
990
diff
changeset
|
230 |
971
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
231 def generatePollCode(self): |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
232 return r''' |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
233 for (int i=0; i<NUM_TEMPERATURE_RETRIES; i++) { |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
234 sensors.requestTemperatures(); |
991
c6989dcf1f4f
temp sensor try to work with idle loop (but there are still stutters)
drewp <drewp@bigasterisk.com>
parents:
990
diff
changeset
|
235 // not waiting for conversion at all is fine- the temps will update soon |
c6989dcf1f4f
temp sensor try to work with idle loop (but there are still stutters)
drewp <drewp@bigasterisk.com>
parents:
990
diff
changeset
|
236 //unsigned long until = millis() + 750; while(millis() < until) {idle();} |
971
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
237 float newTemp = sensors.getTempF(tempSensorAddress); |
991
c6989dcf1f4f
temp sensor try to work with idle loop (but there are still stutters)
drewp <drewp@bigasterisk.com>
parents:
990
diff
changeset
|
238 idle(); |
971
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
239 if (i < NUM_TEMPERATURE_RETRIES-1 && |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
240 (newTemp < -100 || newTemp > 180)) { |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
241 // too many errors that were fixed by restarting arduino. |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
242 // trying repeating this much init |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
243 initSensors(); |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
244 continue; |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
245 } |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
246 Serial.print(newTemp); |
991
c6989dcf1f4f
temp sensor try to work with idle loop (but there are still stutters)
drewp <drewp@bigasterisk.com>
parents:
990
diff
changeset
|
247 idle(); |
971
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
248 Serial.print('\n'); |
991
c6989dcf1f4f
temp sensor try to work with idle loop (but there are still stutters)
drewp <drewp@bigasterisk.com>
parents:
990
diff
changeset
|
249 idle(); |
971
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
250 Serial.print((char)i); |
991
c6989dcf1f4f
temp sensor try to work with idle loop (but there are still stutters)
drewp <drewp@bigasterisk.com>
parents:
990
diff
changeset
|
251 idle(); |
971
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
252 break; |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
253 } |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
254 ''' |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
255 |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
256 def readFromPoll(self, read): |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
257 newTemp = readLine(read) |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
258 retries = ord(read(1)) |
975
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
259 # uri will change; there could (likely) be multiple connected sensors |
971
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
260 return [ |
974
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
261 (self.uri, ROOM['temperatureF'], |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
262 Literal(newTemp, datatype=XSD['decimal'])), |
971
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
263 (self.uri, ROOM['temperatureRetries'], Literal(retries)), |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
264 ] |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
265 |
975
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
266 def watchPrefixes(self): |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
267 # these uris will become dynamic! see note on watchPrefixes |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
268 # about eliminating it. |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
269 return [(self.uri, ROOM['temperatureF']), |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
270 (self.uri, ROOM['temperatureRetries']), |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
271 ] |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
272 |
974
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
273 def byteFromFloat(f): |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
274 return chr(int(min(255, max(0, f * 255)))) |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
275 |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
276 @register |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
277 class LedOutput(DeviceType): |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
278 deviceType = ROOM['LedOutput'] |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
279 def generateSetupCode(self): |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
280 return 'pinMode(%(pin)d, OUTPUT); digitalWrite(%(pin)d, LOW);' % { |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
281 'pin': self.pinNumber, |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
282 } |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
283 |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
284 def outputPatterns(self): |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
285 return [(self.uri, ROOM['brightness'], None)] |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
286 |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
287 def sendOutput(self, statements, write, read): |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
288 assert len(statements) == 1 |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
289 assert statements[0][:2] == (self.uri, ROOM['brightness']) |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
290 value = float(statements[0][2]) |
977
03cfee8f9154
obey ActiveLowOutput correctly
drewp <drewp@bigasterisk.com>
parents:
975
diff
changeset
|
291 if (self.uri, RDF.type, ROOM['ActiveLowOutput']) in self.graph: |
974
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
292 value = 1 - value |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
293 write(byteFromFloat(value)) |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
294 |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
295 def generateActionCode(self): |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
296 return r''' |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
297 while(Serial.available() < 1) NULL; |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
298 analogWrite(%(pin)d, Serial.read()); |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
299 ''' % dict(pin=self.pinNumber) |
975
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
300 |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
301 def outputWidgets(self): |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
302 return [{ |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
303 'element': 'output-slider', |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
304 'min': 0, |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
305 'max': 1, |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
306 'step': 1 / 255, |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
307 'subj': self.uri, |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
308 'pred': ROOM['brightness'], |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
309 }] |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
310 |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
311 @register |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
312 class DigitalOutput(DeviceType): |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
313 deviceType = ROOM['DigitalOutput'] |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
314 def generateSetupCode(self): |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
315 return 'pinMode(%(pin)d, OUTPUT); digitalWrite(%(pin)d, LOW);' % { |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
316 'pin': self.pinNumber, |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
317 } |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
318 |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
319 def outputPatterns(self): |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
320 return [(self.uri, ROOM['level'], None)] |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
321 |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
322 def sendOutput(self, statements, write, read): |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
323 assert len(statements) == 1 |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
324 assert statements[0][:2] == (self.uri, ROOM['level']) |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
325 value = {"high": 1, "low": 0}[str(statements[0][2])] |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
326 write(chr(value)) |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
327 |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
328 def generateActionCode(self): |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
329 return r''' |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
330 while(Serial.available() < 1) NULL; |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
331 digitalWrite(%(pin)d, Serial.read()); |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
332 ''' % dict(pin=self.pinNumber) |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
333 |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
334 def outputWidgets(self): |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
335 return [{ |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
336 'element': 'output-switch', |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
337 'subj': self.uri, |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
338 'pred': ROOM['level'], |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
339 }] |
974
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
340 |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
341 @register |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
342 class ST7576Lcd(DeviceType): |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
343 deviceType = ROOM['ST7565Lcd'] |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
344 @classmethod |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
345 def findInstances(cls, graph, board): |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
346 grouped = itertools.groupby( |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
347 graph.query("""SELECT DISTINCT ?dev ?pred ?pinNumber WHERE { |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
348 ?board :hasPin ?pin . |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
349 ?pin :pinNumber ?pinNumber; |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
350 :connectedTo ?devPin . |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
351 ?dev a :ST7565Lcd . |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
352 ?dev ?pred ?devPin . |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
353 } ORDER BY ?dev""", |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
354 initBindings=dict(board=board, |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
355 thisType=cls.deviceType), |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
356 initNs={'': ROOM}), |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
357 lambda row: row.dev) |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
358 for dev, connections in grouped: |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
359 connections = dict((role, int(num)) for unused_dev, role, num |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
360 in connections) |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
361 yield cls(graph, dev, connections=connections) |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
362 |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
363 def __init__(self, graph, dev, connections): |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
364 super(ST7576Lcd, self).__init__(graph, dev, pinNumber=None) |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
365 self.connections = connections |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
366 |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
367 def generateIncludes(self): |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
368 return ['ST7565.h'] |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
369 |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
370 def generateArduinoLibs(self): |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
371 return ['ST7565'] |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
372 |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
373 def generateGlobalCode(self): |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
374 return ''' |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
375 ST7565 glcd(%(SID)d, %(SCLK)d, %(A0)d, %(RST)d, %(CS)d); |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
376 char newtxt[21*8+1]; |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
377 unsigned int written; |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
378 ''' % dict(SID=self.connections[ROOM['lcdSID']], |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
379 SCLK=self.connections[ROOM['lcdSCLK']], |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
380 A0=self.connections[ROOM['lcdA0']], |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
381 RST=self.connections[ROOM['lcdRST']], |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
382 CS=self.connections[ROOM['lcdCS']]) |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
383 |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
384 def generateSetupCode(self): |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
385 return ''' |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
386 glcd.st7565_init(); |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
387 glcd.st7565_command(CMD_DISPLAY_ON); |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
388 glcd.st7565_command(CMD_SET_ALLPTS_NORMAL); |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
389 glcd.st7565_set_brightness(0x18); |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
390 |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
391 glcd.display(); // show splashscreen |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
392 ''' |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
393 |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
394 def outputPatterns(self): |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
395 return [(self.uri, ROOM['text'], None)] |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
396 |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
397 def sendOutput(self, statements, write, read): |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
398 assert len(statements) == 1 |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
399 assert statements[0][:2] == (self.uri, ROOM['text']) |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
400 value = str(statements[0][2]) |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
401 assert len(value) < 254, repr(value) |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
402 write(chr(len(value)) + value) |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
403 |
975
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
404 def outputWidgets(self): |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
405 return [{ |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
406 'element': 'output-fixed-text', |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
407 'cols': 21, |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
408 'rows': 8, |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
409 'subj': self.uri, |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
410 'pred': ROOM['text'], |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
411 }] |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
412 |
974
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
413 def generateActionCode(self): |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
414 return ''' |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
415 while(Serial.available() < 1) NULL; |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
416 byte bufSize = Serial.read(); |
975
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
417 for (byte i = 0; i < bufSize; ++i) { |
974
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
418 while(Serial.available() < 1) NULL; |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
419 newtxt[i] = Serial.read(); |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
420 } |
975
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
421 for (byte i = bufSize; i < sizeof(newtxt); ++i) { |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
422 newtxt[i] = 0; |
f3023410d875
polymer board debug page with working output widgets
drewp <drewp@bigasterisk.com>
parents:
974
diff
changeset
|
423 } |
974
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
424 glcd.clear(); |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
425 glcd.drawstring(0,0, newtxt); |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
426 glcd.display(); |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
427 ''' |
f707210c13bd
new /output to post statements which devices can handle. led and lcd output working
drewp <drewp@bigasterisk.com>
parents:
971
diff
changeset
|
428 |
971
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
429 def makeDevices(graph, board): |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
430 out = [] |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
431 for dt in sorted(_knownTypes, key=lambda cls: cls.__name__): |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
432 out.extend(dt.findInstances(graph, board)) |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
433 return out |
fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
drewp <drewp@bigasterisk.com>
parents:
969
diff
changeset
|
434 |