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__):