A techie blog

IT, Smart Home

Smart Home – Raspberry Pi als Temperaturüberwachung Teil 2

In diesem Projekt erweitern wir den vorhandenen Raspberry Pi mit dem DHT-Temperatur- und Feuchtigkeitssensor, dahingehend, dass er die Messwerte regelmäßig an einen MQTT Broker sendet. Dadurch können Anwendungen wie Home Assistant die Daten abonnieren und importieren.

Voraussetzungen

Hardware

  • Ein Raspberry Pi (beliebiges Modell) mit z. B. Raspberry OS auf der SD-Karte
  • Ein DHT11- oder DHT22-Sensor
  • Einige Verbindungskabel
  • Ein 5-10 kOhm Widerstand
  • Ein Server mit einem laufenden MQTT-Broker

Software

Folgende Software muss am Raspberry Pi vorab installiert werden:

sudo apt install build-essential python-dev python3-pip
sudo pip3 install Adafruit_Python_DHT paho.mqtt

Grundsätzliche Einrichtung

Falls der DHT Sensor bisher noch nicht mit dem Raspberry Pi verbunden ist, empfehle ich, zuvor den ersten Teil zu lesen.

Repository klonen

Softwaremässig ist es super einfach, man muss nur noch mein GIT Repository klonen und kann damit sofort los legen.

git clone git@bitbucket.org:manuelmanhartit/raspi-temp-and-humidity.git

Skript konfigurieren

Kopieren Sie eine der Beispiel-Konfigurationsdateien (z. B. example-mqtt-config.json) und passen Sie diese nach Bedarf an. Speichern Sie die Datei als config.json oder {HOSTNAME}-config.json.

Verfügbare Beispiele:

  • example-local-config.json: Gibt die Ergebnisse im JSON-Format auf der Kommandozeile aus.
  • example-mqtt-config.json: Gibt die Ergebnisse im JSON-Format aus und sendet sie an einen MQTT-Broker. MQTT ist ein leichtgewichtiges Protokoll, das oft in IoT-Projekten verwendet wird.

Wir nehmen hier das mqtt file, und passen die IP Adresse, den Port und das Thema an. Das Thema ist am Ende wichtig, wenn wir die Daten automatisch in den Homeassisstant importieren wollen.

Skript testen

Nun führen wir das Skript aus, um die Funktion zu überprüfen:

python3 read-DHT22-and-send-to-mqtt.py

Das Skript liest die Konfigurationsdatei und liest einmalig den Sensor aus, und sendet an den MQTT Broker.

Automatischen Betrieb einrichten

Um das Skript regelmäßig auszuführen, fügen wir folgenden Befehl aus um einen Eintrag zur Crontab zu erstellen:

crontab -e

Nun wird folgende Zeile hinzugefügt um die Temperatur alle 10 Minuten zu übertragen (username mit dem echten Usernamen ersetzen):

*/10 * * * * python3 /home/username/read-dht-send-mqtt.py

Speichern Sie die Datei mit CTRL + X, Y und ENTER. Das Skript wird nun alle 10 Minuten ausgeführt und sendet die Messwerte an den MQTT-Broker.

Zusätzliche Tipps

Verbindungsleitungen erstellen

Wenn Sie mehrere Sensoren in Ihrem Zuhause verwenden möchten, kann eine ordentliche und austauschbare Verkabelung hilfreich sein. Ich habe dafür Verbindungskabel gelötet, welche ich einerseits am Raspberry Pi an den PINs anschliesse und auf der anderen Seite einfach den DHT Sensor einstecke (Bilder folgen).

Konfigurationsdatei sichern

Sichern Sie Ihre Konfigurationsdatei an einem sicheren Ort, um eine erneute Einrichtung zu beschleunigen.

Einrichtung im Homeassistant

Nun steigen wir in den Homeassistant Server ein, gehen auf Einstellungen und dann auf Integrationen.

Dort gehen wir auf MQTT bzw. falls dieses noch nicht existiert fügen wir es zunächst über den “Integration hinzufügen” Button hinzu.

Dann auf Konfigurieren, und das Thema abonnieren, welches wir zuvor im Konfigurations Script hinterlegt haben.

Danach sollten die Entitäten verfügbar und in der Sensor Card verwendbar sein.

Ich habe alles gerne in Konfigurationsdateien abgelegt und daher editiere ich immer die sensor.yaml Datei im Homeassistant config Verzeichnis.

Ein Block sieht wie folgt aus:

  - platform: mqtt
    name: "Wohnzimmer Temperatur"
    state_topic: "home/wohnzimmer"
    unit_of_measurement: '°C'
    value_template: "{{ value_json.temperature }}"  
  - platform: mqtt
    name: "Wohnzimmer Luftfeuchte"
    state_topic: "home/wohnzimmer"
    unit_of_measurement: '%'
    value_template: "{{ value_json.humidity }}"
    scan_interval: 60

Damit ist sind die Entitäten nach einem Neuladen der Konfiguration im Homeassistant verfügbar.

Fazit

Nun erhalten wir immer die aktuellen Temperatur- und Luftfeuchte Werte und können auf Basis derer Automatisierungen starten.

Quellen

Raspberry Pi einrichten

Tutorial um DHT22 anzuschließen (en)

Was ist MQTT?

Eclipse Mosquitto – MQTT Broker