Mercurial > code > home > repos > homeauto
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 [