Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
pycron
redis
picamera
picamera; platform_machine=='armv7l' or platform_machine=='armv6l'
Adafruit-Blinka
adafruit-circuitpython-dht
adafruit-circuitpython-mcp3xxx
adafruit-circuitpython-bme680
adafruit-circuitpython-debouncer>=1.3.7
smbus
https://github.com/olixr/nanpy/archive/master.zip
git+https://github.com/olixr/Adafruit_CircuitPython_CharLCD.git#egg=adafruit-circuitpython-charlcd
54 changes: 25 additions & 29 deletions sensors/linux/humidity_sensor.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
import json
import sys
import time
import board

import adafruit_dht
import board

from logger.Logger import Logger, LOG_LEVEL
from sensors.linux.sensor import Sensor

from logger.Logger import Logger, LOG_LEVEL

class HumiditySensor(Sensor):
sensor = adafruit_dht.DHT11

def __init__(self, pin, name=None, key=None, model='11', redis_conn=None):
super().__init__(pin, name=name, key=key, redis_conn=redis_conn)
Expand All @@ -26,26 +27,15 @@ def init_sensor(self):
'22': adafruit_dht.DHT22,
'2302': adafruit_dht.DHT22
} # AM2302 = DHT22

if self.type in sensor_types:
self.sensor = sensor_types[self.type]

else:
Logger.log(
LOG_LEVEL["warning"],
'Sensor Model Error: Defaulting to DHT11'
)
self.sensor = adafruit_dht.DHT11

try:
self.dht_device = self.sensor(self.pin_obj)
Logger.log(
LOG_LEVEL["debug"],
'Sensor Initializing: DHT'
)
except Exception as error:
Logger.log(
LOG_LEVEL["error"],
'Sensor Initialize Error: DHT Failed to Init'
)
return

def read(self):
Expand All @@ -58,20 +48,25 @@ def read(self):
humidity = None
temperature_c = None

try:
# Calling temperature or humidity triggers measure()
temperature_c = self.dht_device.temperature
humidity = self.dht_device.humidity
except RuntimeError as error:
# Errors happen fairly often, DHT's are hard to read
Logger.log(LOG_LEVEL["error"], error)
# read_retry() not implemented in new lib
for i in range(15):
dht_device = self.sensor(self.pin_obj)
time.sleep(2)
except Exception as error:
Logger.log(
LOG_LEVEL["error"],
'DHT Device Encountered an Error.'
)
self.dht_device.exit()

try:
dht_device.measure()
temperature_c = dht_device.temperature
humidity = dht_device.humidity
if humidity is not None and temperature_c is not None:
break

except RuntimeError:
# Errors happen fairly often, DHT's are hard to read,
# just keep going:
continue

finally:
dht_device.exit()

if humidity is not None and temperature_c is not None:
self.r.set(
Expand All @@ -87,6 +82,7 @@ def read(self):
}
self.r.set(self.key, json.dumps(readings))
return readings

else:
Logger.log(
LOG_LEVEL["error"],
Expand Down
2 changes: 1 addition & 1 deletion workers/linux/control_worker.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ def init(self):
# conditionally include optional variables below if they exist
control_kwargs = {
'name': control.get('name', None),
'pin': int(control.get('pin')),
'pin': control.get('pin'),
'key': control.get('key', None),
'topic': control.get('topic', None),
'resistor': control.get('resistor', None),
Expand Down