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