diff service/piNode/devices.py @ 367:6aa5beb63d9e

kitchen button, device code fixes Ignore-this: 3e0477db8cfa11207b7db9eadf1c7f12
author drewp@bigasterisk.com
date Sun, 11 Nov 2018 23:54:53 -0800
parents d36863e09095
children 194583bd603e
line wrap: on
line diff
--- a/service/piNode/devices.py	Sun Nov 11 23:54:17 2018 -0800
+++ b/service/piNode/devices.py	Sun Nov 11 23:54:53 2018 -0800
@@ -18,10 +18,7 @@
     import pigpio
 except ImportError:
     pigpio = None
-try:
-    import w1thermsensor
-except Exception:
-    w1thermsensor = None
+import w1thermsensor
 try:
     import rpi_ws281x
 except ImportError:
@@ -269,10 +266,16 @@
         DeviceType.__init__(self, *a, **kw)
         import DHT22
         self.sens = DHT22.sensor(self.pi, self.pinNumber)
+        self.recentLowTemp = (0, None) # time, temp
+        self.recentPeriodSec = 30
     
     def poll(self):
         stmts = set()
 
+        now = time.time()
+        if self.recentLowTemp[0] < now - self.recentPeriodSec:
+            self.recentLowTemp = (0, None)
+
         if self.sens.staleness() < self.pollPeriod * 2:
             humid, tempC = self.sens.humidity(), self.sens.temperature()
             if humid > -999:
@@ -280,14 +283,19 @@
             else:
                 stmts.add((self.uri, RDFS['comment'], Literal('No recent humidity measurement')))
             if tempC > -999:
-                stmts.add((self.uri, ROOM['temperatureF'],
-                           # see round() note in arduinoNode/devices.py
-                           Literal(round(tempC * 9 / 5 + 32, 2))))
+                # see round() note in arduinoNode/devices.py
+                tempF = round(tempC * 9 / 5 + 32, 2)
+                stmts.add((self.uri, ROOM['temperatureF'], Literal(tempF)))
+                if self.recentLowTemp[1] is None or tempF < self.recentLowTemp[1]:
+                    self.recentLowTemp = (now, tempF)
             else:
                 stmts.add((self.uri, RDFS['comment'], Literal('No recent temperature measurement')))
         else:
             stmts.add((self.uri, RDFS['comment'],
                        Literal('No recent DHT response (%.02f sec old)' % self.sens.staleness())))
+
+        if self.recentLowTemp[1] is not None:
+            stmts.add((self.uri, ROOM['recentLowTemperatureF'], Literal(self.recentLowTemp[1])))
             
         self.sens.trigger()