Mercurial > code > home > repos > homeauto
comparison service/piNode/devices.py @ 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 | 42dab8c6200a |
comparison
equal
deleted
inserted
replaced
1428:56e07d3f0930 | 1429:262ad47a9743 |
---|---|
130 | 130 |
131 _knownTypes = set() | 131 _knownTypes = set() |
132 def register(deviceType): | 132 def register(deviceType): |
133 _knownTypes.add(deviceType) | 133 _knownTypes.add(deviceType) |
134 return deviceType | 134 return deviceType |
135 | |
136 def setPud(pi, pinNumber, p): | |
137 import socket | |
138 if socket.gethostname() == 'frontdoor': | |
139 log.warn( | |
140 'pud currently broken on pi4, using RPi.GPIO.' | |
141 ' https://github.com/joan2937/pigpio/issues/278#issuecomment-506650549', | |
142 ) | |
143 import RPi.GPIO as GPIO | |
144 GPIO.setmode(GPIO.BCM) | |
145 GPIO.setup(pinNumber, GPIO.IN, pull_up_down={pigpio.PUD_UP:GPIO.PUD_UP,pigpio.PUD_DOWN:GPIO.PUD_DOWN}[p]) | |
146 log.warn(' RPi.GPIO says pin %s is %r', pinNumber, GPIO.input(pinNumber)) | |
147 return | |
148 pi.set_pull_up_down(pinNumber, p) | |
135 | 149 |
136 @register | 150 @register |
137 class MotionSensorInput(DeviceType): | 151 class MotionSensorInput(DeviceType): |
138 """ | 152 """ |
139 Triggering all the time? Try 5V VCC, per https://electronics.stackexchange.com/a/416295 | 153 Triggering all the time? Try 5V VCC, per https://electronics.stackexchange.com/a/416295 |
153 deviceType = ROOM['MotionSensor'] | 167 deviceType = ROOM['MotionSensor'] |
154 | 168 |
155 def __init__(self, graph, uri, pi, pinNumber): | 169 def __init__(self, graph, uri, pi, pinNumber): |
156 super(MotionSensorInput, self).__init__(graph, uri, pi, pinNumber) | 170 super(MotionSensorInput, self).__init__(graph, uri, pi, pinNumber) |
157 self.pi.set_mode(pinNumber, pigpio.INPUT) | 171 self.pi.set_mode(pinNumber, pigpio.INPUT) |
158 self.pi.set_pull_up_down(pinNumber, pigpio.PUD_DOWN) | 172 setPud(self.pi, pinNumber, pigpio.PUD_DOWN) |
159 | 173 |
160 def hostStateInit(self): | 174 def hostStateInit(self): |
161 self.lastRead = None | 175 self.lastRead = None |
162 self.lastMotionStart30 = 0 | 176 self.lastMotionStart30 = 0 |
163 self.lastMotionStart90 = 0 | 177 self.lastMotionStart90 = 0 |
325 | 339 |
326 def __init__(self, *a, **kw): | 340 def __init__(self, *a, **kw): |
327 DeviceType.__init__(self, *a, **kw) | 341 DeviceType.__init__(self, *a, **kw) |
328 log.debug("setup switch on %r", self.pinNumber) | 342 log.debug("setup switch on %r", self.pinNumber) |
329 self.pi.set_mode(self.pinNumber, pigpio.INPUT) | 343 self.pi.set_mode(self.pinNumber, pigpio.INPUT) |
330 self.pi.set_pull_up_down(self.pinNumber, pigpio.PUD_UP) | 344 setPud(self.pi, self.pinNumber, pigpio.PUD_UP) |
331 self.lastClosed = None | 345 self.lastClosed = None |
332 self.invert = (self.uri, ROOM['style'], | 346 self.invert = (self.uri, ROOM['style'], |
333 ROOM['inverted']) in self.graph | 347 ROOM['inverted']) in self.graph |
334 | 348 |
335 def poll(self): | 349 def poll(self): |