RaspberryPI : DHT22 Sensor - Temperatur & Luftfeuchtigkeit monitoren
Wenn man zuhause Temperatur & Luftfeuchtigkeit monitoren will bietet sich der DHT22 an. Ich habe mich für diesen hier entschieden.
Um den Sensor in Betreib zu nehmen benötigen wir erst noch einiges an Software auf dem kleinen.
Dazu werden wir erstmal Admin auf dem Raspberry
Jetzt schließen wir noch den Sensor nach dem unten aufgeführten Schema an.
Adafruit liefert hier ein kleines example mit zum testen.
4 = der gpio Pin an dem die Sensor Leitung hängt
Jetzt bekommen wir Werte vom Sensor um diese aber zu Monitoren brauchen wir noch eine Software die das erledigt. Da ich hier bereits eine fertige Grafana Installation habe verwende ich natürlich diese. Die Werte erhält Grafana bereits über den collectd Agent, deswegen habe ich mich dazu entschieden auch die Temperaturen über diesen Weg zu reporten.
Ich habe bei meinem Skript schon darauf geachtet das der Sensor justiert werden kann (ADJUST SETTINGS DHT22)
Hier mein Skript für collectd, das legt ihr unter dem Namen dht22.py im Pfad /usr/lib/collectd/python ab
Damit collectd das Skript auch verwendet muss es natürlich erstmal konfiguriert sein.
Auszug aus collectd.conf
Um den Sensor in Betreib zu nehmen benötigen wir erst noch einiges an Software auf dem kleinen.
Dazu werden wir erstmal Admin auf dem Raspberry
sudo -sdann installieren wir die benötigten Packete mit
apt install build-essential python-dev python-openssl git-core vimwir benötigen jetzt noch die python module für den sensor das können wir mit dem folgenden Befehl erledigen.
cd ~ && git clone https://github.com/adafruit/Adafruit_Python_DHT.git && cd Adafruit_Python_DHT && python setup.py installjetzt sollte alles installiert sein was wir benötigen.
Jetzt schließen wir noch den Sensor nach dem unten aufgeführten Schema an.
DHT22 an Raspberry PI 3
Adafruit liefert hier ein kleines example mit zum testen.
~/Adafruit_Python_DHT/example/Adafruit.py 22 4Wenn alles richtig gemacht wurde erhällt man jetzt einen Output der so oder so ähnlich aussieht.
~/Adafruit_Python_DHT/examples/AdafruitDHT.py 22 4 Temp=22.7* Humidity=44.5%22 = der Sensor DHT22
4 = der gpio Pin an dem die Sensor Leitung hängt
Jetzt bekommen wir Werte vom Sensor um diese aber zu Monitoren brauchen wir noch eine Software die das erledigt. Da ich hier bereits eine fertige Grafana Installation habe verwende ich natürlich diese. Die Werte erhält Grafana bereits über den collectd Agent, deswegen habe ich mich dazu entschieden auch die Temperaturen über diesen Weg zu reporten.
Ich habe bei meinem Skript schon darauf geachtet das der Sensor justiert werden kann (ADJUST SETTINGS DHT22)
Hier mein Skript für collectd, das legt ihr unter dem Namen dht22.py im Pfad /usr/lib/collectd/python ab
import collectd import Adafruit_DHT from decimal import Decimal SENSOR = Adafruit_DHT.DHT22 PIN = 4 # ADJUST SETTINGS DHT22 # mögliche werte + / - / NULL ADJ_TEMP_DO = "-" ADJ_TEMP_VAR = "1.2" # mögliche werte + / - / NULL ADJ_HUM_DO = "" ADJ_HUM_VAR = "0" def config_func(config): pin_set = False for node in config.children: key = node.key.lower() val = node.values[0] if key == 'gpio_pin': global PIN PIN = val pin_set = True else: collectd.info('DHT22 Plugin: Unknown config key "%s"' % key) if pin_set: collectd.info('DHT22 Plugin : Using override PIN %s' % PIN) else: collectd.info('DHT22 Plugin : Using default PIN %s' % PIN) def read_measurements(): humidity, temperature = Adafruit_DHT.read_retry(SENSOR, PIN) if humidity is not None and temperature is not None: if ADJ_TEMP_DO == "-": _temp = round(Decimal(temperature),2) - round(Decimal(ADJ_TEMP_VAR),2) elif ADJ_TEMP_DO == "+": _temp = round(Decimal(temperature),2) + round(Decimal(ADJ_TEMP_VAR),2) else: _temp = round(Decimal(temperature),2) if ADJ_HUM_DO == "-": _hum = round(Decimal(humidity),2) - round(Decimal(ADJ_HUM_VAR),2) elif ADJ_HUM_DO == "+": _hum = round(Decimal(humidity),2) + round(Decimal(ADJ_HUM_VAR),2) else: _hum = round(Decimal(humidity),2) val = collectd.Values(type='temperature') val.plugin = 'DHT22_SENSOR' val.dispatch(values=[_temp]) val = collectd.Values(type='humidity') val.plugin = 'DHT22_SENSOR' val.dispatch(values=[_hum]) collectd.register_config(config_func) collectd.register_read(read_measurements)
Damit collectd das Skript auch verwendet muss es natürlich erstmal konfiguriert sein.
Auszug aus collectd.conf
..... ..... LoadPlugin python ..... ..... <Plugin python> ModulePath "/usr/lib/collectd/python" Import dht22 <Module dht22> gpio_pin "4" </Module> </python>dann noch einen Restart von collectd
systemctl restart collectdwenn ihr alles richtig gemacht habt könnt ihr jetzt dieses Panel in Grafana anlegen.
DHT22 in Grafana