Mercurial > code > home > repos > homeauto
annotate service/arduinoNode/devices.py @ 971:fbe72d44f15a
only recompile if the C code is new. redo Device class api. single temperature sensor is working
Ignore-this: e78106d25dbb2ac8c5e5d8a81d576358
darcs-hash:20150411084359-312f9-7c50d2f4f21dd9d5a0fa8913873a1e6d7d325118
author | drewp <drewp@bigasterisk.com> |
---|---|
date | Sat, 11 Apr 2015 01:43:59 -0700 |
parents | 70a5392b24d3 |
children | d228105749ac |
rev | line source |
---|---|
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
|
1 from rdflib import Namespace, RDF, URIRef, Literal |
969 | 2 |
3 ROOM = Namespace('http://projects.bigasterisk.com/room/') | |
4 | |
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
|
5 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
|
6 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
|
7 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
|
8 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
|
9 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
|
10 |
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 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
|
12 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
|
13 @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
|
14 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
|
15 """ |
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 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
|
17 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
|
18 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
|
19 (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
|
20 """ |
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 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 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
|
23 ?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
|
24 ?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
|
25 :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
|
26 ?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
|
27 } 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
|
28 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
|
29 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
|
30 initNs={'': ROOM}): |
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 instances.append(cls(graph, row.dev, int(row.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
|
32 return 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
|
33 |
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
|
34 # 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
|
35 def __init__(self, graph, uri, pinNumber): |
969 | 36 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
|
37 self.pinNumber = pinNumber |
969 | 38 |
39 def readFromPoll(self, read): | |
40 """ | |
41 read an update message returned as part of a poll bundle. This may | |
42 consume a varying number of bytes depending on the type of | |
43 input (e.g. IR receiver). | |
44 Returns rdf statements. | |
45 """ | |
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
|
46 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
|
47 |
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
|
48 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
|
49 return [] |
969 | 50 |
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
|
51 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
|
52 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
|
53 |
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
|
54 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
|
55 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
|
56 |
969 | 57 def generateSetupCode(self): |
58 return '' | |
59 | |
60 def generatePollCode(self): | |
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
|
61 """if this returns nothing, we don't try to poll this device""" |
969 | 62 return '' |
63 | |
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
|
64 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
|
65 """ |
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
|
66 if you get called to do your action, this code reads the args you |
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
|
67 need and do the right action |
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
|
68 """ |
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 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
|
70 |
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 _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
|
72 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
|
73 _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
|
74 return deviceType |
969 | 75 |
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
|
76 @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
|
77 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
|
78 @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
|
79 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
|
80 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
|
81 |
969 | 82 def generatePollCode(self): |
83 return "Serial.write('k');" | |
84 def readFromPoll(self, read): | |
85 if read(1) != 'k': | |
86 raise ValueError('invalid ping response') | |
87 return [(self.uri, ROOM['ping'], ROOM['ok'])] | |
88 | |
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
|
89 @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
|
90 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
|
91 deviceType = ROOM['MotionSensor'] |
969 | 92 def generateSetupCode(self): |
93 return 'pinMode(%(pin)d, INPUT); digitalWrite(%(pin)d, LOW);' % { | |
94 'pin': self.pinNumber(), | |
95 } | |
96 | |
97 def generatePollCode(self): | |
98 return "Serial.write(digitalRead(%(pin)d) ? 'y' : 'n');" % { | |
99 'pin': self.pinNumber() | |
100 } | |
101 | |
102 def readFromPoll(self, read): | |
103 b = read(1) | |
104 if b not in 'yn': | |
105 raise ValueError('unexpected response %r' % b) | |
106 motion = b == 'y' | |
107 return [(self.uri, ROOM['sees'], | |
108 ROOM['motion'] if motion else ROOM['noMotion'])] | |
109 | |
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
|
110 @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
|
111 class OneWire(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
|
112 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
|
113 |
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
|
114 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
|
115 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
|
116 |
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
|
117 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
|
118 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
|
119 |
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
|
120 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
|
121 # 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
|
122 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
|
123 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
|
124 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
|
125 DeviceAddress tempSensorAddress; |
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
|
126 #define NUM_TEMPERATURE_RETRIES 5 |
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
|
127 |
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
|
128 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
|
129 sensors.begin(); |
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
|
130 sensors.getAddress(tempSensorAddress, 0); |
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
|
131 sensors.setResolution(tempSensorAddress, 12); |
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
|
132 } |
969 | 133 |
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
|
134 ''' % dict(pinNumber=self.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
|
135 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
|
136 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
|
137 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
|
138 sensors.requestTemperatures(); |
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
|
139 float newTemp = sensors.getTempF(tempSensorAddress); |
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 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
|
141 (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
|
142 // 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
|
143 // 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
|
144 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
|
145 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
|
146 } |
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
|
147 Serial.print(newTemp); |
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
|
148 Serial.print('\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
|
149 Serial.print((char)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
|
150 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
|
151 } |
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
|
152 ''' |
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
|
153 |
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
|
154 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
|
155 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
|
156 retries = ord(read(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
|
157 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
|
158 (self.uri, ROOM['temperatureF'], Literal(newTemp)), |
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 (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
|
160 ] |
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
|
161 |
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
|
162 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
|
163 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
|
164 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
|
165 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
|
166 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
|
167 |