Mercurial > code > home > repos > homeauto
diff service/piNode/devices.py @ 1010:f2d05b425dfa
piNode onboard temp
Ignore-this: 2e603499925ff5a114273057a07fb36a
darcs-hash:20151107175000-312f9-db8b26b04cc6000e49be1eb60c328803b5c36dd5
author | drewp <drewp@bigasterisk.com> |
---|---|
date | Sat, 07 Nov 2015 09:50:00 -0800 |
parents | 63c172316239 |
children | 61094b3ee0e0 |
line wrap: on
line diff
--- a/service/piNode/devices.py Sun Oct 04 04:19:26 2015 -0700 +++ b/service/piNode/devices.py Sat Nov 07 09:50:00 2015 -0800 @@ -176,6 +176,31 @@ 'pred': ROOM['color'], }] +@register +class OnboardTemperature(DeviceType): + deviceType = ROOM['OnboardTemperature'] + @classmethod + def findInstances(cls, graph, board, pi): + for row in graph.query('''SELECT DISTINCT ?dev WHERE { + ?board :onboardDevice ?uri . + ?uri a :OnboardTemperature . + }'''): + yield cls(graph, row.uri, pi, pinNumber=None) + + def readFromPoll(self): + milliC = open('/sys/class/thermal/thermal_zone0/temp').read().strip() + c = float(milliC) / 1000. + f = c * 1.8 + 32 + return [ + (self.uri, ROOM['temperatureF'], Literal(f, datatype=XSD['decimal'])), + ] + + def watchPrefixes(self): + # these uris will become dynamic! see note on watchPrefixes + # about eliminating it. + return [(self.uri, ROOM['temperatureF']), + ] + def makeDevices(graph, board, pi): out = [] for dt in sorted(_knownTypes, key=lambda cls: cls.__name__):