changeset 1049:96f0a8b345aa

pi pushbutton device Ignore-this: 5bab6e8ad21fe4f24a2a92e6bc5678f3 darcs-hash:8f18d1b3736fc2abdf13430de797d852ed0e2c16
author drewp <drewp@bigasterisk.com>
date Tue, 02 Feb 2016 22:41:18 -0800
parents f3c7f617c335
children ae0461a50d03
files service/piNode/devices.py
diffstat 1 files changed, 24 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/service/piNode/devices.py	Tue Feb 02 22:37:11 2016 -0800
+++ b/service/piNode/devices.py	Tue Feb 02 22:41:18 2016 -0800
@@ -248,6 +248,30 @@
         ]
 
 @register
+class PushbuttonInput(DeviceType):
+    """add a switch to ground; we'll turn on pullup"""
+    deviceType = ROOM['Pushbutton']
+
+    def __init__(self, *a, **kw):
+        DeviceType.__init__(self, *a, **kw)
+        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)
+
+    def poll(self):
+        closed = not self.pi.read(self.pinNumber)
+        
+        return [
+            (self.uri, ROOM['buttonState'],
+             ROOM['pressed'] if closed else ROOM['notPressed']),
+        ]
+        
+    def watchPrefixes(self):
+        return [
+            (self.uri, ROOM['buttonState']),
+        ]
+        
+@register
 class OneWire(DeviceType):
     """
     Also see /my/proj/ansible/roles/raspi_io_node/tasks/main.yml for