comparison service/piNode/devices.py @ 205:40000fafad94

piNode onboard temp Ignore-this: 2e603499925ff5a114273057a07fb36a
author drewp@bigasterisk.com
date Sat, 07 Nov 2015 09:50:00 -0800
parents 634d6e477953
children 61094b3ee0e0
comparison
equal deleted inserted replaced
204:9a3b8f1aaf78 205:40000fafad94
174 'element': 'output-rgb', 174 'element': 'output-rgb',
175 'subj': self.uri, 175 'subj': self.uri,
176 'pred': ROOM['color'], 176 'pred': ROOM['color'],
177 }] 177 }]
178 178
179 @register
180 class OnboardTemperature(DeviceType):
181 deviceType = ROOM['OnboardTemperature']
182 @classmethod
183 def findInstances(cls, graph, board, pi):
184 for row in graph.query('''SELECT DISTINCT ?dev WHERE {
185 ?board :onboardDevice ?uri .
186 ?uri a :OnboardTemperature .
187 }'''):
188 yield cls(graph, row.uri, pi, pinNumber=None)
189
190 def readFromPoll(self):
191 milliC = open('/sys/class/thermal/thermal_zone0/temp').read().strip()
192 c = float(milliC) / 1000.
193 f = c * 1.8 + 32
194 return [
195 (self.uri, ROOM['temperatureF'], Literal(f, datatype=XSD['decimal'])),
196 ]
197
198 def watchPrefixes(self):
199 # these uris will become dynamic! see note on watchPrefixes
200 # about eliminating it.
201 return [(self.uri, ROOM['temperatureF']),
202 ]
203
179 def makeDevices(graph, board, pi): 204 def makeDevices(graph, board, pi):
180 out = [] 205 out = []
181 for dt in sorted(_knownTypes, key=lambda cls: cls.__name__): 206 for dt in sorted(_knownTypes, key=lambda cls: cls.__name__):
182 out.extend(dt.findInstances(graph, board, pi)) 207 out.extend(dt.findInstances(graph, board, pi))
183 return out 208 return out