diff service/piNode/devices.py @ 251:254df9f881a6

start sending oneshot events from some devices Ignore-this: 2c98200e9bab1acca872f4cdcaf88e4d
author drewp@bigasterisk.com
date Fri, 12 Feb 2016 02:41:29 -0800
parents f4e762943c11
children ba1149814877
line wrap: on
line diff
--- a/service/piNode/devices.py	Tue Feb 09 22:10:38 2016 -0800
+++ b/service/piNode/devices.py	Fri Feb 12 02:41:29 2016 -0800
@@ -122,11 +122,11 @@
     def poll(self):
         motion = self.pi.read(17)
         
-        return [
+        return {'latest': [
             (self.uri, ROOM['sees'],
              ROOM['motion'] if motion else ROOM['noMotion']),
             self.recentMotionStatement(motion),
-        ]
+        ], 'oneshot': []}
 
     def recentMotionStatement(self, motion):
         if not hasattr(self, 'lastMotionTime'):
@@ -257,14 +257,25 @@
         log.debug("setup switch on %r", self.pinNumber)
         self.pi.set_mode(self.pinNumber, pigpio.INPUT)
         self.pi.set_pull_up_down(self.pinNumber, pigpio.PUD_UP)
+        self.lastClosed = None
 
     def poll(self):
         closed = not self.pi.read(self.pinNumber)
-        
-        return [
+
+        if self.lastClosed is not None and closed != self.lastClosed:
+            oneshot = [
+                (self.uri, ROOM['buttonState'],
+                 ROOM['press'] if closed else ROOM['release']),
+            ]
+        else:
+            oneshot = []
+        self.lastClosed = closed
+            
+        return {'latest': [
             (self.uri, ROOM['buttonState'],
              ROOM['pressed'] if closed else ROOM['notPressed']),
-        ]
+        ],
+                'oneshot':oneshot}
         
     def watchPrefixes(self):
         return [