Mercurial > code > home > repos > homeauto
comparison service/piNode/devices.py @ 1150:2b3079126b81
switch to pigpio for reading DHT sensor
Ignore-this: 32b960f125848261c3896802ed7bcfb4
darcs-hash:7f2ed33c66df0b57d21f3b0ba8e6cd19ba90c973
author | drewp <drewp@bigasterisk.com> |
---|---|
date | Sun, 15 Apr 2018 04:14:33 -0700 |
parents | d1bc88f67969 |
children | 6aa5beb63d9e |
comparison
equal
deleted
inserted
replaced
1149:163042261ef1 | 1150:2b3079126b81 |
---|---|
265 deviceType = ROOM['TempHumidSensor'] | 265 deviceType = ROOM['TempHumidSensor'] |
266 pollPeriod = 5 | 266 pollPeriod = 5 |
267 | 267 |
268 def __init__(self, *a, **kw): | 268 def __init__(self, *a, **kw): |
269 DeviceType.__init__(self, *a, **kw) | 269 DeviceType.__init__(self, *a, **kw) |
270 import Adafruit_DHT | 270 import DHT22 |
271 self.mod = Adafruit_DHT | 271 self.sens = DHT22.sensor(self.pi, self.pinNumber) |
272 | 272 |
273 def poll(self): | 273 def poll(self): |
274 for tries in range(1): | |
275 # fails a lot, but I don't want to add too much delay in | |
276 # here- the next poll is coming soon | |
277 humid, tempC = self.mod.read(self.mod.DHT22, self.pinNumber) | |
278 if humid and tempC: | |
279 break | |
280 | |
281 stmts = set() | 274 stmts = set() |
282 if humid is not None: | 275 |
283 stmts.add((self.uri, ROOM['humidity'], Literal(round(humid, 2)))) | 276 if self.sens.staleness() < self.pollPeriod * 2: |
277 humid, tempC = self.sens.humidity(), self.sens.temperature() | |
278 if humid > -999: | |
279 stmts.add((self.uri, ROOM['humidity'], Literal(round(humid, 2)))) | |
280 else: | |
281 stmts.add((self.uri, RDFS['comment'], Literal('No recent humidity measurement'))) | |
282 if tempC > -999: | |
283 stmts.add((self.uri, ROOM['temperatureF'], | |
284 # see round() note in arduinoNode/devices.py | |
285 Literal(round(tempC * 9 / 5 + 32, 2)))) | |
286 else: | |
287 stmts.add((self.uri, RDFS['comment'], Literal('No recent temperature measurement'))) | |
284 else: | 288 else: |
285 stmts.add((self.uri, RDFS['comment'], | 289 stmts.add((self.uri, RDFS['comment'], |
286 Literal('DHT read returned None'))) | 290 Literal('No recent DHT response (%.02f sec old)' % self.sens.staleness()))) |
287 if tempC is not None: | 291 |
288 stmts.add((self.uri, ROOM['temperatureF'], | 292 self.sens.trigger() |
289 # see round() note in arduinoNode/devices.py | 293 |
290 Literal(round(tempC * 9 / 5 + 32, 2)))) | |
291 else: | |
292 stmts.add((self.uri, RDFS['comment'], | |
293 Literal('DHT read returned None'))) | |
294 return stmts | 294 return stmts |
295 | 295 |
296 def watchPrefixes(self): | 296 def watchPrefixes(self): |
297 return [ | 297 return [ |
298 (self.uri, ROOM['temperatureF']), | 298 (self.uri, ROOM['temperatureF']), |