# HG changeset patch # User drewp # Date 1565308411 25200 # Node ID 262ad47a97437843110b2e4d15eb626e6e9aa3d3 # Parent 56e07d3f0930d595580408d6dcca1c8113aed812 try to workaround pigpio not supporting pullup modes on pi4 yet (didn't work, I think) Ignore-this: f266fdbf505b594a09adfb972dcae289 darcs-hash:e38a247816bd781a909c442831f239408e407d4e diff -r 56e07d3f0930 -r 262ad47a9743 service/piNode/devices.py --- 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