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):