changeset 1429:262ad47a9743

try to workaround pigpio not supporting pullup modes on pi4 yet (didn't work, I think) Ignore-this: f266fdbf505b594a09adfb972dcae289 darcs-hash:e38a247816bd781a909c442831f239408e407d4e
author drewp <drewp@bigasterisk.com>
date Thu, 08 Aug 2019 16:53:31 -0700
parents 56e07d3f0930
children 445e24e8c8bb
files service/piNode/devices.py
diffstat 1 files changed, 16 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/service/piNode/devices.py	Thu Aug 08 16:50:14 2019 -0700
+++ b/service/piNode/devices.py	Thu Aug 08 16:53:31 2019 -0700
@@ -133,6 +133,20 @@
     _knownTypes.add(deviceType)
     return deviceType
 
+def setPud(pi, pinNumber, p):
+    import socket
+    if socket.gethostname() == 'frontdoor':
+        log.warn(
+            'pud currently broken on pi4, using RPi.GPIO.'
+            ' https://github.com/joan2937/pigpio/issues/278#issuecomment-506650549',
+            )
+        import RPi.GPIO as GPIO
+        GPIO.setmode(GPIO.BCM)
+        GPIO.setup(pinNumber, GPIO.IN, pull_up_down={pigpio.PUD_UP:GPIO.PUD_UP,pigpio.PUD_DOWN:GPIO.PUD_DOWN}[p])
+        log.warn('  RPi.GPIO says pin %s is %r', pinNumber, GPIO.input(pinNumber))
+        return
+    pi.set_pull_up_down(pinNumber, p)
+
 @register
 class MotionSensorInput(DeviceType):
     """
@@ -155,7 +169,7 @@
     def __init__(self, graph, uri, pi, pinNumber):
         super(MotionSensorInput, self).__init__(graph, uri, pi, pinNumber)
         self.pi.set_mode(pinNumber, pigpio.INPUT)
-        self.pi.set_pull_up_down(pinNumber, pigpio.PUD_DOWN)
+        setPud(self.pi, pinNumber, pigpio.PUD_DOWN)
 
     def hostStateInit(self):
         self.lastRead = None
@@ -327,7 +341,7 @@
         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)
+        setPud(self.pi, self.pinNumber, pigpio.PUD_UP)
         self.lastClosed = None
         self.invert = (self.uri, ROOM['style'],
                        ROOM['inverted']) in self.graph