SmartHome mit HomeAssistant: Unterschied zwischen den Versionen

Aus LT42-Wiki
Zur Navigation springenZur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 5: Zeile 5:
Wir hatten zunächst auch die Heizungssteuerung der Fritz!SmartHome-Komponenten über HomeAssistant vorgenommen. Da mir nicht ganz klar war, welches System nun welches inwieweit steuert, da die Fritz!Box selbst zu festgelegten Zeiten in verschiedene Temperatur-Szenen fährt, haben wir die Integration wieder zurückgebaut.
Wir hatten zunächst auch die Heizungssteuerung der Fritz!SmartHome-Komponenten über HomeAssistant vorgenommen. Da mir nicht ganz klar war, welches System nun welches inwieweit steuert, da die Fritz!Box selbst zu festgelegten Zeiten in verschiedene Temperatur-Szenen fährt, haben wir die Integration wieder zurückgebaut.


== Temperatur auslesen mit Raspberry Pi und DHT22 ==
Die Quantität und Qualität der folgenden Artikel wächst mit der Zeit:
Für die Feststellung der Luftfeuchtigkeit und Temperatur an verschiedensten Stellen kamen bisher die Fernbedienungen von Fritz! zum Einsatz. Da wir nach und nach komplett auf andere Systeme migrieren, ist das eine zeitnah abzulösende Option. Spannend ist nach Anleitung im [https://tyzbit.blog/my-experience-and-thoughts-on-home-assistant Tyzbit-Blog] eine Integration des [https://www.berrybase.de/dht22-digitaler-temperatur-und-luftfeuchtesensor DHT22] als Temperatur- und Wärmesensor auf Raspberry Pi per MQTT am HomeAssistant.


=== Einbindung von Mosquitto in HomeAssistant ===
[[HomeAssistant Temperatur auslesen mit Raspberry Pi und DHT22]]
Wir nutzen HomeAssistant als MQTT-Broker, sodass hier nicht zusätzlich ein Server für laufen muss. Dies ist über das Add-On "Mosquitto Broker" möglich, das über den Add-On Store direkt in Home Assistant installiert werden kann. Nach einem Klick auf "Install" wird das Add-On installiert und kann konfiguriert werden. Da wir die Verbindungen absichern wollen und hierfür nicht den Standard-Nutzer von HomeAssistant nutzen, muss ein dedizierter Account erstellt werden. Hierfür zunächst die erweiterte Ansicht im eigenen Nutzerprofil durch Klick auf den Namen > "Erweiterter Modus" aktivieren.
 
Anschließend über Einstellungen > Personen > Tab: Benutzer einen Benutzer "mqttio" mit dazugehörigem Passwort erstellen. Der Nutzer benötigt keine weiteren Rechte. Das Passwort wird dann auf allen einliefernden Clients eingetragen. Prinzipiell kann für jeden Client ein eigener Account erstellt werden. Dies ist in größeren Installation dann empfehlenswert, wenn nicht sichergestellt werden kann, dass die Geräte nicht aus der eigenen Hand geraten und schlecht durch Fremdzugriff geschützt sind. Für den Heimgebrauch reicht mir ein Account aus.
 
Die Konfiguration des Addons erfolgt dann über Einstellungen > Add-Ons > Mosquitto Broker > Tab: Konfiguration. Hier ist unter "Logins" zunächst der eben erstellte Account zu hinterlegen:
- username: mqttio
  password: PASSWORD
 
Weitere Einstellungen erfolgen in der Integration, die über Einstellungen > Geräte und Dienste schon möglich sein sollte. Hier zunächst über das Zahnrad neben "MQTT" in die Konfiguration wechseln und anschließend die Entität core-mosquitto konfigurieren -> "MQTT neu konfigurieren" -> den Dialog mit den Zugangsdaten weiterklicken. Da die automatische Konfiguration bei mir sowieso nicht korrekt funktioniert hat, habe ich sie hier deaktiviert.
 
=== Installation des RPi ===
Zunächst ist auf dem Raspberry Pi die Installation von [https://www.raspberrypi.com/software/ Raspberry Pi OS] nötig. Eine gute Anleitung dafür findet sich auf der Herstellerseite. Nach Abschluss der Installation und Erstkonfiguration ist über ein Terminal mittels
sudo raspi-config
unter "Interface Options" -> "SSH" der SSH-Server zu aktivieren, sodass ein Fernzugriff möglich ist.
 
Die IP-Adresse des Pis kann entweder mittels "ip a" im Terminal oder über den netzinternen DHCP-Server ausgelesen werden.
 
Anschließend muss der Pi ausgeschaltet und der Sensor verbunden werden. Ich nutze für den Anschluss die [https://de.pinout.xyz/ Pins] 4 für VCC, 6 für GND und 12 (GPIO 18) für Data/OUT. Nach dem Verbinden kann der Pi wieder gestartet werden.
 
=== Konfiguration des RPi  ===
Auf dem Pi soll ein MQTT-Publisher installiert werden, der in konfigurierbaren Abständen die Temperatur und den Luftfeuchtigkeitswert an HomeAssistant übermittelt. Dafür ist Python in der Version >=3.6 nötig. Hierfür steht dann über Pip der mqtt-io zur Verfügung.
sudo pip3 install mqtt-io
 
Diese Konfiguration installiert mqtt-io global, Tyzbit.blog stellt noch eine Lösung in einem Virtual Python Environment vor.
 
Für den Betrieb von mqtt-io ist dann eine Konfiguration nötig, die unter /etc/mqtt-io.yaml Platz findet:
<syntaxhighlight lang="yaml" line>
mqtt:
  host: 192.168.178.10 # IP der HomeAssistant-Instanz
  topic_prefix: wz/raspberrypi # Zu veröffentlichendes Topic (dies sollte eine Struktur folgen, zB Raum / Gerät)
  status_payload_running: available
  status_payload_stopped: unavailable
  status_payload_dead: unavailable
  user: USER # oben angelegter Account für mqtt
  password: PASSWORD # Passwort des Accounts
 
sensor_modules:
- name: dht22_sensor
  module: dht22
  type: dht22
  pin: 18  # ggf. anzupassen, falls anderer GPIO-Pin verwendet (GPIO ID, nicht Index des Pins(!), siehe Link oben)
 
sensor_inputs:
- name: wz_temperature # Name, ggf. anzupassen
  module: dht22_sensor
  digits: 2 # Nachkommastellen
  interval: 5 # Interval der Veröffentlichung in Sekunden
  type: temperature
- name: wz_humidity
  module: dht22_sensor
  digits: 2
  interval: 5
  type: humidity
</syntaxhighlight>
 
Ein Test ist dann mittels
python3.9 -m mqtt_io /etc/mqtt-io.yaml
möglich. Hierbei sollte der Pi bereits Daten an HomeAssistant übertragen sowie die veröffentlichten Werte auf der Konsole ausgeben:
Jun 27 18:39:25 HOSTNAME python3[1706]: 2023-06-27 18:39:25 mqtt_io.server [INFO] Read sensor 'wz_humidity' value of 43.9
Jun 27 18:39:29 HOSTNAME python3[1706]: 2023-06-27 18:39:29 mqtt_io.server [INFO] Read sensor 'wz_temperature' value of 22.9
 
Ist das erfolgreich, kann ein Systemd-Service definiert werden, der die MQTT-Instanz automatisch startet, sodass das System automatisch Werte an HomeAssistant übermittelt. Unter /etc/systemd/system/mqttio.service ist folgender Inhalt zu hinterlegen:
 
<syntaxhighlight lang="bash" line>
[Unit]
Description=MQTT-IO
After=network.target
Wants=network-online.target
 
[Service]
Restart=always
Type=simple
ExecStart=/usr/bin/python3 -m mqtt_io /etc/mqtt-io.yaml
User=root
Environment=
 
[Install]
WantedBy=multi-user.target
</syntaxhighlight>
 
Anschließend muss systemd über die Änderungen informiert werden:
sudo systemctl daemon-reload
sudo systemctl enable mqttio
sudo systemctl start mqttio
 
Verläuft das erfolgreich, ist der Status des Services mittels
sudo systemctl status mqttio
abrufbar.
 
Über journald kann zudem die aktuelle Übertragung angeschaut werden:
journalctl -t python3 -f
 
=== Integration in HomeAssistant ===
Sobald der Pi Daten veröffentlicht, können diese auch in HomeAssistant abgefragt werden. Dazu muss zunächst der Sensor konfiguriert werden. Über den Add-On Store kann das Add-On "File Editor" installiert werden, das eine direkte Bearbeitung der Konfigurationsdateien im Browser möglich macht. Nach der Installation ist das Add-on links in der Sidebar aufrufbar. Über den Ordner kann die configuration.yaml aufgerufen werden. Hier sind folgende Zeilen einzufügen:
 
<syntaxhighlight lang="yaml" line>
mqtt:
  sensor:
  - name: "WZ Temperature"
    unique_id: 5ae12d30-c4a7-44b5-8868-785ba3ec527c # this can be anything unique
    state_topic: "wz/raspberrypi/sensor/wz_temperature" # ggf. anzupassen!
    unit_of_measurement: "°C"
  - name: "WZ Humidity"
    unique_id: 0134ce78-6374-49a0-9114-7b2af2fb7cac # muss eindeutig sein (zB über uuidgen)
    state_topic: "wz/raspberrypi/sensor/wz_humidity" # ggf. anzupassen!
    unit_of_measurement: "%"
</syntaxhighlight>
 
Anschließend die Datei speichern und über das Zahnrad oben rechts HomeAssistant neu starten. Ist das erfolgt, kann der Sensor im Dashboard angezeigt und in Automationen genutzt werden.
 
=== Weblinks ===
https://tyzbit.blog/connecting-a-dht-22-sensor-to-home-assistant - Originale Dokumentation
 
https://smarthomeyourself.de/wiki/homeassistant/home-assistant-fehler-deine-manuell-konfigurierten-mqtt-sensoren-erfordert-aufmerksamkeit/ Beschreibung der neuen Sensor-Konfiguration
 
https://github.com/flyte/mqtt-io/wiki/MQTT-Configuration MQTT-Konfigurationsparameter

Version vom 27. Juni 2023, 19:13 Uhr

Die neue Wohnung soll in einigen Teilen smart sein. Im ersten Schritt wollen wir hierbei die Lichtsteuerung über das Smartphone und ausgewählte Schalter vornehmen. Dabei kommen unterschiedliche Systeme (Fritz!, IKEA TRADFRI, Funksteckdosen) zum Einsatz. Ziel ist es also, ein System zu finden, das alle Systeme ansteuern kann.

Mit einem Tipp von Sven Koch bin ich hierbei auf HomeAssistant gestoßen, das additiv an bestehende Systeme angeschlossen werden kann. Die folgenden Artikel sollen die Einrichtung und einige Anwendungsfälle dokumentieren. Dieser Artikel entsteht, während das System schon läuft. Die Grundeinrichtung erfolgte über die Installationsanleitung via KVM in einer virtuellen Maschine auf meinem PVE.

Wir hatten zunächst auch die Heizungssteuerung der Fritz!SmartHome-Komponenten über HomeAssistant vorgenommen. Da mir nicht ganz klar war, welches System nun welches inwieweit steuert, da die Fritz!Box selbst zu festgelegten Zeiten in verschiedene Temperatur-Szenen fährt, haben wir die Integration wieder zurückgebaut.

Die Quantität und Qualität der folgenden Artikel wächst mit der Zeit:

HomeAssistant Temperatur auslesen mit Raspberry Pi und DHT22