Raspberry Pi DHT22 Sensor als Homie MQTT Device

Aus Laub-Home Wiki

Dieses kleine Script publiziert die Daten im Homie MQTT Convention Standard, dies ermöglicht es zum Beispiel in openHAB die Autodiscovery bei MQTT Devices zu nutzen. Dieses Script lässt den DHT22 Sensor als Homie Device nutzbar werden. Das Script wird durch einen SystemD Service gestartet und läuft als Service auf dem Raspberry Pi. Somit publiziert er im eingestellten Intervall seine Daten an den MQTT Broker.

Mehr Informationen zum DHT22 Sensor, wie zum Beispiel der Verkabelung, und dem Raspberry Pi findet ihr hier:

Installation

Die Scripte können via GitHub heruntergeladen werden. Solltet ihr einen Raspberry Pi Zero w haben, nutzt bitte das dht22-homie-adafruit.py Script, dieses nutzt die alte deprecated Library (hier mehr Infos). Das mit der Adafruit_DHT Library angepasste Script bekommt ihr hier:

Ansonsten könnt ihr einfach wie folgt vorgehen:

apt install python3 python3-pip python3-rpi.gpio libgpiod2 python3-paho-mqtt python3-systemd -y
cd /usr/local/sbin

# Neue Circuit Python Library
pip3 install --user adafruit-circuitpython-dht
wget https://github.com/alaub81/rpi_sensor_scripts/raw/main/dht22-homie.py
chmod +x /usr/local/sbin/dht22-homie.py
nano /usr/local/sbin/dht22-homie.py

# Alte Adafruit_DHT Library für Raspberry Pi zero 1
pip3 install --user Adafruit_DHT
wget https://github.com/alaub81/rpi_sensor_scripts/raw/main/dht22-homie-adafruit.py
chmod +x /usr/local/sbin/dht22-homie-adafruit.py
nano /usr/local/sbin/dht22-homie-adafruit.py

in der Datei dht22-homie.py müsst ihr im oberen Bereich den von euch verwendeten GPIO Pin festlegen und die MQTT Settings anpassen:

# set the variables
dht22gpiopin = "D17"
broker = "FQDN / IP ADDRESS"
port = 8883
mqttclientid = "clientid-dp-homie"
clientid = "clientid-dp"
clientname = "Clientname Display"
nodes="dht22"
username = "mosquitto"
password = "password"
insecure = True
qos = 1
retain_message = True
# Retry to connect to mqtt broker
mqttretry = 5
# how often should be a publish to MQTT (in Seconds)
publishtime = 120
# At which value humidity alarm will be fired (x in %)
humidityalarm = 70

Nun kommen wir zum SystemD Script:

cd /etc/systemd/system
wget https://github.com/alaub81/rpi_sensor_scripts/raw/main/dht22_homie.service
nano dht22_homie.service
systemctl daemon-reload
systemctl enable dht22_homie.service
systemctl start dht22_homie.service

Im Systemd Script dht22_homie.service müsst ihr ggf. den Script Path anpassen, vor allem wenn ihr das dht22-homie-adafruit.py verwenden wollt..

Nach dem nun der Service läuft, kann mit systemctl status dht22_homie.service geprüft werden, solltet ihr im MQTT neue Topics sehen, die mit homie/clientid beginnen. Ebenfalls, solltet ihr über openHAB verfügen, sollte nun in der Inbox ein neues Device auftauchen.

Mehr Informationen über openHAB und MQTT findet ihr hier:

GitHub Repository

Das Script und einige andere Sensoren Scripte findet ihr in diesem GitHub Repository: