Project6 - Homeassistant ========================== Im Rahmen dieses Versuchs wird ein Smarthome-System aufgebaut, das verschiedene Kommunikationstechnologien und Geräte integriert. Ziel ist es, ein Zusammenspiel zwischen WLAN- und Zigbee-basierten Komponenten herzustellen und deren Steuerung über Home Assistant zu untersuchen. Der zentrale Knotenpunkt des Systems ist ein **Raspberry Pi**, auf dem **Home Assistant** läuft. Dieser übernimmt die Rolle der Steuerzentrale und verbindet sich mit den übrigen Geräten im Netzwerk. Um realistische Bedingungen zu schaffen, wurde ein separater **WLAN-Router** konfiguriert, der das Heimnetz simuliert und in dem alle Komponenten eingebunden sind. Folgende Geräte wurden in das System integriert: - **Sonoff Mini R2**: Ein kompakter WLAN-Schalter, der hinter einem klassischen Wandschalter installiert werden kann. Er übernimmt die Schaltfunktion der angeschlossenen Lampe und kann sowohl physikalisch als auch per Software gesteuert werden. Für die Nutzung im Versuch wurde das Gerät mit **Tasmota** geflasht. - **MagicHome LED-Controller**: Ein LED-Controller, der handelsübliche 12–24V LED-Streifen ansteuert. Die originale Firmware wurde durch **OpenBeken (OpenBK602)** ersetzt, um die Integration in Home Assistant zu ermöglichen. - **Zigbee-Fernbedienung**: Zur Steuerung von Geräten über das Zigbee-Protokoll wird eine Zigbee-Fernbedienung eingesetzt. Diese wird über einen **Sonoff Zigbee 3.0 USB Dongle Plus** in das System eingebunden. Der Dongle fungiert als Zigbee-Koordinator und ermöglicht die Kommunikation zwischen Zigbee-Geräten und Home Assistant. Verwendete Techniken -------------------- Im Folgenden werden die im Versuch eingesetzten Technologien und Geräte vorgestellt. Eine grundlegende Einführung in MQTT wurde bereits in einem früheren Versuch behandelt und wird daher hier nicht erneut erläutert. Homeassistant ^^^^^^^^^^^^^ Homeassistant ist eine Open-Source-Plattform für die Heimautomatisierung, die lokal betrieben wird und eine Vielzahl von Geräten und Protokollen unterstützt, darunter Zigbee, Z-Wave, WLAN und Bluetooth. Wichtige Funktionen: - Zentrale Benutzeroberfläche für die Steuerung aller verbundenen Geräte - Automatisierungen auf Basis von Zuständen und Zeitplänen Im Versuch dient Home Assistant als Steuerzentrale und Schnittstelle für die Integration aller Geräte, einschließlich der Zigbee-Komponenten über den Sonoff USB-Dongle. **Quelle**: https://www.home-assistant.io/ Sonoff Mini R2 ^^^^^^^^^^^^^^ Der Sonoff Mini R2 ist ein kompakter WLAN-Schalter, der in bestehende Lichtschalter integriert werden kann. Er wird im Versuch mit der alternativen Firmware **Tasmota** geflasht, um die Integration in Home Assistant über MQTT zu ermöglichen. Der Einbau erfolgt typischerweise in einer Unterputzdose hinter dem vorhandenen Lichtschalter. Dabei sind folgende Anschlüsse korrekt zu verbinden: - **L (Phase)**: Eingangsspannung (230 V) - **N (Neutralleiter)**: Rückleiter für die Stromversorgung - **S1 / S2**: Kontakte für einen externen Schalter (z. B. Taster oder Kippschalter) - **LOUT**: Ausgang zur angeschlossenen Lampe (geschaltete Phase) Der angeschlossene Lichtschalter wird zwischen **S1** und **S2** angeschlossen, um eine manuelle Steuerung zu ermöglichen. Über **LOUT** wird die Lampe ein- bzw. ausgeschaltet – entweder über den physischen Schalter oder über MQTT-Kommandos aus Home Assistant. Merkmale: - Steuerbar über WLAN, MQTT oder physikalischen Schalter. - Kompatibel mit Tasmota. - Integrierbar in Home Assistant zur automatisierten Steuerung. - Kompakte Bauform, passend für Standard-Unterputzdosen. **Quelle**: https://sonoff.tech/product/diy-smart-switches/mini-r2/ MagicHome LED-Controller ^^^^^^^^^^^^^^^^^^^^^^^^ Der MagicHome-Controller ist ein LED-Controller, der LED-Streifen mit 12–24V versorgen und individuell steuern kann. Im Versuch wird die Original-Firmware durch **OpenBeken (OpenBK602)** ersetzt, wodurch eine direkte Steuerung über Home Assistant ermöglicht wird. - Steuerung per Webinterface und MQTT. - Unterstützung für RGB(W)-LED-Streifen. - Kompatibel mit Home Assistant nach manueller Konfiguration. **Quelle**: https://openbekeniot.github.io/ OpenBeken ^^^^^^^^^ **OpenBeken** (auch bekannt als OpenBK7231) ist eine alternative Open-Source-Firmware, die speziell für Geräte mit Nicht-ESP-basierten Controllern entwickelt wurde – insbesondere für Chipsätze wie BK7231N, BK7231T oder BL602(dieser Chip wird im Versuch verwendet). Diese Chips werden häufig in günstigen WLAN-Smart-Geräten verwendet, die nicht mit Tasmota oder ESPHome kompatibel sind. OpenBeken bietet ähnliche Funktionen wie Tasmota: - Steuerung über Webinterface und MQTT - Unterstützung für Relais, LEDs, Sensoren u.v.m. - Kompatibilität mit Home Assistant Im Versuch wird OpenBeken auf dem MagicHome LED-Controller mit einem **BK7231T (OpenBK602)** Chip eingesetzt, um diesen in das bestehende Smarthome-Netzwerk zu integrieren. **Quelle**: https://openbekeniot.github.io/ Tasmota ^^^^^^^ Tasmota ist eine alternative Open-Source-Firmware für Geräte mit ESP8266- oder ESP32-Chipsätzen. Sie ermöglicht eine lokale Steuerung über Weboberfläche oder MQTT – ohne Cloud-Abhängigkeit. - Unterstützt viele Geräte wie Schalter, Sensoren und Controller. - Einfache Integration in Home Assistant. - Umfangreiche Dokumentation. **Quelle**: https://tasmota.github.io/docs/ Zigbee ^^^^^^ Zigbee ist ein energieeffizientes, drahtloses Mesh-Netzwerkprotokoll, das sich ideal für Smarthome-Geräte eignet. Zigbee-Geräte kommunizieren direkt oder über Zwischenknoten, was die Reichweite erhöht. Im Versuch wird eine Zigbee-Fernbedienung über einen USB-Zigbee-Koordinator in das System eingebunden. Dadurch können auch Zigbee-Geräte über Home Assistant angesprochen werden. Typische Eigenschaften: - Hohe Energieeffizienz - Mesh-Netzwerkstruktur - Lokale Kommunikation ohne Cloud **Quelle**: https://csa-iot.org/all-solutions/zigbee/ Im Versuch wird derSonoff Zigbee 3.0 USB Dongle Plus eingesetzt mit folgenden Merkmalen: - Unterstützt Zigbee 3.0 (kompatibel mit vielen Herstellern) - Open-Source-freundlich, ideal für den Einsatz in Bastelprojekten - Einfache Integration in Home Assistant - Breite Unterstützung in der Community **Quelle**: https://sonoff.tech/product/smart-home-security/zigbee-dongle-plus/ WLAN-Netzwerk ^^^^^^^^^^^^^ Zur Simulation eines realistischen Heimnetzwerks wurde ein separater WLAN-Router konfiguriert. Alle Komponenten des Versuchsaufbaus – einschließlich Raspberry Pi, Sonoff Mini und MagicHome-Controller – sind darüber miteinander verbunden. Dies ermöglicht die Kommunikation im geschlossenen Testnetz. Dieser Aufbau zeigt die flexible Kombinierbarkeit von WLAN- und Zigbee-Komponenten in einem Smarthome-System. Durch die zentrale Steuerung über Home Assistant und die Nutzung standardisierter Protokolle wird eine robuste, modulare Systemarchitektur geschaffen. Flashen von Sonoff R2 Mini -------------------------- Der Sonoff Mini R2 wird im Versuch über den integrierten **DIY-Modus** mit der alternativen Firmware **Tasmota** geflasht – ganz ohne Löten oder zusätzliche Hardware. Durch längeres Drücken der Taste am Gerät wird der DIY-Modus aktiviert, wodurch der Schalter in den AP-Modus wechselt. Verbindet man sich mit diesem (Passwort `12345678`), fordert der Sonoff einen auf, ein WLAN mit Passwort einzugeben. .. image:: img/project6/Sonoff-Aufforderung.png :alt: Sonoff WLAN-Konfiguration Im angegebenen Netz wird über das offizielle **DIY-Tool von Sonoff** die zuvor heruntergeladene **Tasmota `.bin`-Datei** auf das Gerät übertragen. .. image:: img/project6/Sonoff-DIYTool.png :alt: Sonoff DIY Tool .. image:: img/project6/Sonoff-Flashen.png :alt: Flash-Vorgang im DIY Tool Nach dem erfolgreichen Flashen konnte der Schalter wie gewohnt eingerichtet werden. Wenn der OTA-Flash-Vorgang (over-the-air) nicht funktioniert, so ist Löten angesagt. Dafür wird die Platine aus dem Gehäuse entnommen und auf der Rückseite die 4 Lötpunkte mit Jumperkabeln verbunden. .. image:: img/project6/Sonoff-löten.jpeg :alt: Lötpunkte am Sonoff Mini R2 Der Controller basiert auf einem ESP und spricht UART. Dafür wird ein USB-UART-Adapter benötigt. Wichtig ist zu beachten, dass man TX auf RX verbindet und beim Einschalten den Button gedrückt hält, damit der Flashmodus aktiviert wird. Dann kann man ihn mit `esptool` und einer kompatiblen `.bin`-Datei flashen. Die weitere Einrichtung und MQTT-Anbindung wurde bereits in einem früheren Versuch behandelt und wird hier nicht erneut beschrieben. Als einzige Neuheit kommt hinzu, dass man den richtigen GPIO-Pin vom Controller als Switch konfigurieren muss. .. image:: img/project6/Sonoff-Pin.png :alt: GPIO-Pin-Konfiguration in Tasmota Flashen eines Magichome LED-Controller -------------------------------------- Um den MagicHome LED-Controller in das Smarthome-System über MQTT und Home Assistant zu integrieren, wurde die originale Firmware durch **OpenBeken** ersetzt. Dieser Controller basiert auf einem **BL602-Chip** (kein ESP), weshalb ein spezieller Flash-Vorgang notwendig ist – z.B. mithilfe des **Bouffalo Lab Dev Cube Tools** unter Windows. Benötigte Materialien: ^^^^^^^^^^^^^^^^^^^^^^ - MagicHome LED-Controller mit BL602-Chip - USB-zu-Seriell-Adapter (z.B. FTDI-Modul, 3.3V) - Jumper-Kabel - Optional: Widerstand oder Taster für BOOT-Modus - PC mit Windows + Bouffalo Lab Dev Cube (https://dev.bouffalolab.com/download) Anschluss der Pins: ^^^^^^^^^^^^^^^^^^^ Der Controller muss über folgende Pins mit dem USB-Adapter verbunden werden: - **TXD** → an **RX** des Adapters - **RXD** → an **TX** des Adapters - **GND** → an **GND** - **VCC / VDD** → an **3.3V** (kein 5V!) - **BOOT** → während des Einschaltens auf **GND ziehen** (z.B. mit einem Widerstand) .. image:: /img/project6/Platine.jpg :alt: Anschlussplan der Verdrahtung .. image:: /img/project6/FTDI.jpg :alt: Anschlussplan der Verdrahtung Flashen mit Bouffalo Lab Dev Cube: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1. **Tool starten**: - Bouffalo Lab Dev Cube entpacken und starten (`BLDevCube.exe`) - „BL602/604“ als Chip auswählen 2. **Verbindung konfigurieren**: - **Interface**: `UART` - **COM Port**: Den richtigen Port des FTDI-Adapters wählen (z.B. COM4) - **UART Rate**: `2000000` - **Board**: `IoTKitA` - **Xtal**: `40M` - Optional: `Chip Erase = False` 3. **Firmware-Dateien auswählen**: - `Factory Params`: Datei mit Parametern (z.B. `.dts`) - `Partition Table`, `Boot2 Bin`, `Firmware Bin`: aus OpenBeken-Ordner - Die Datei `OpenBL602_x.xx.xxx.bin` bei „Firmware Bin“ auswählen .. image:: /img/project6/Programm.png :alt: Bouffalo Lab Dev Cube – Konfiguration 4. **Flash-Vorgang starten**: - Stromversorgung sicherstellen - BOOT mit GND verbinden (gedrückt halten oder über Widerstand) - **„Download“** klicken und warten, bis „success“ im Log erscheint - Verbindung trennen, BOOT-Verbindung entfernen und Gerät neustarten Nach dem Neustart erscheint ein WLAN-Netzwerk (z.B. `OpenBK_XXXX`). Über dieses kann das Gerät eingerichtet werden (z.B. WLAN, MQTT, LED-Pins). Die Einrichtung wurde in einem früheren Versuch behandelt, da sie gleich ist zur Tasmota Einrichtung. Auch hier muss wieder eine Pinkonfiguration vorgenommen werden. .. image:: img/project6/led-pin.png :alt: LED-Pinbelegung im Webinterface Installation des Raspberry -------------------------- Für die installation des RaspberryPi4 stehen zwei Optionen zur verfügung. Entweder man installiert eine Linux Distribution, wie RaspbianOS und setzt Home Assistant und Zigbee2MQTT über Docker auf oder man Installiert das HomeAssistantOS und fügt Zigbee2MQTT dort als Plugin hinzu. Methode 1: Installation über Raspbian mit Docker ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ #. **Raspberry Pi OS installieren** - Herunterladen des Raspberry Pi Imager. - Installieren von Raspberry Pi OS auf einer MikroSD. - Aktivieren von SSH durch eine leere Datei `ssh` im Boot-Verzeichnis. - Pi starten und per SSH verbinden. #. **System vorbereiten** .. code-block:: bash sudo apt update && sudo apt upgrade -y sudo apt install -y docker.io docker-compose git sudo usermod -aG docker $USER reboot #. **Home Assistant Container einrichten** .. code-block:: yaml version: "3.7" services: homeassistant: container_name: homeassistant image: ghcr.io/home-assistant/home-assistant:stable volumes: - ./homeassistant_config:/config - /etc/localtime:/etc/localtime:ro restart: unless-stopped privileged: true network_mode: host #. **Zigbee2MQTT Container einrichten** .. code-block:: yaml version: "3.7" services: zigbee2mqtt: container_name: zigbee2mqtt image: koenkk/zigbee2mqtt volumes: - ./zigbee2mqtt_data:/app/data - /run/udev:/run/udev:ro devices: - "/dev/ttyUSB0:/dev/ttyUSB0" restart: unless-stopped network_mode: host environment: - TZ=Europe/Berlin #. **Docker-Container starten** .. code-block:: bash docker-compose up -d #. **Zugriff** - Home Assistant: http://:8123 - Zigbee2MQTT: http://:8080 Methode 2: Installation über Home Assistant OS ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Dies ist der einfachste und stabilste Weg, Home Assistant inklusive dem Addon Zigbee2MQTT zu betreiben. #. **Home Assistant OS flashen** - Herunterladen des Raspberry Pi Imager. - Installieren von HomeAssistantOS auf einer MikroSD. .. image:: ./img/project6/rpi_image.png :alt: RPi Imager #. **Erster Start** - Einsetzen der SD-Karte und eines Netzwerkkabels in den Pi und starten. - Warten bis Installation abgeschlossen ist. - Aufruf über: http://homeassistant.local:8123 oder IP-Adresse. .. image:: ./img/project6/hass.png :alt: Erster Start #. **Zigbee2MQTT installieren** - Gehe im UI zu **Einstellungen > Add-ons > Add-on Store** - Hinzufügen des Repository `https://github.com/zigbee2mqtt/hassio-zigbee2mqtt` - Installieren des Add-on Zigbee2MQTT - Installation des Mosquito Brokers ebenfalls aus dem Addin Store .. image:: ./img/project6/Addon_store.png :alt: Addon Store #. **Zigbee2MQTT konfigurieren** - In Mosquito Broker muss ein User und das Passwort zur Verbindungsherstellung angegebn werden .. code-block:: yaml logins: - username: user password: passwd - In Zigbee2MQTT muss noch der Port des Zigbee USB Dongles angegeben werden .. code-block:: yaml port: /dev/ttyUSB0 Geräte verbinden --------------------- Da dies nun geschehen ist müssen die MQTT Daten noch auf den beiden Controllern eingerichtet werden, damit diese sich mit dem Broker verbinden können. Hierfür muss lediglich die Broker IP Adresse und die zuvor konfigurierten Nutzerdaten zur Verbindungsherstellung angegeben werden. Die IP Adresse für die Weboberfläche der Controller finden wir ganz einfach über die Verbindungsliste unseres Routers heraus. Wenn die Einstellungen gesetzt sind findet der Home Assistant die Geräte automatisch unter **Einstellungen > Geräte & Dienste**. Sobald die Geräte verbunden sind und einen Namen bekommen haben werden diese für den Home Assistant steuerbar gemacht und liefern Daten über den aktuellen Zustand. .. image:: img/project6/image_led.png :alt: LED-Device .. image:: img/project6/lampe_tasmota.png :alt: Lampensteuerung Damit diese aber nun auch gestert werden können fügen wir noch eine Fernbedienung hinzu. Da diese aber nur über Zigbee funktioniert nutzen wir das installierte Zigbee2MQTT Addon. In diesem Addon kann der Kopplungsmodus aktiviert werden, welcher auch auf der Fernbendienung aktiviert werden muss. Sobald sich die Geräte dann verbunden haben wird auch die Fernbedienung als steuerbares Gerät im Home Assistant Hinzugefügt. .. image:: img/project6/hue_switch.png :alt: Fernbedienung Erstellung der Automationen ----------------------------- Damit die Lichter nun auch ein und ausgeschaltet werden können benötigt man Automationen. Diese können unter **Einstellungen > Automationen und Szenen** erstellt werden. Mit einem einfachen Auswahlsystem können hier vier Automationen angelegt werden: - Licht ein - Licht aus - Licht heller - Licht dunkler Nun sind die Lichter durch die Knöpfe des Schalters bedienbar. Erstellung eines Dashboards ----------------------------- Um die Lichter aber auch ohne Schalter bedienen zu können kann man sogenannte Dashboards bauen. Das sind selbstgestaltete Benutzeroberflächen, um Gerätedaten an zu zeigen oder Geräte zu steuern. Die Dashboards können mit einem einfachen Editor eingerichtet werden. .. image:: img/project6/dashboard.png :alt: Fernbedienung Quellen -------- - [Raspberry Pi Imager](https://www.raspberrypi.com/software/) - [Docker] (https://www.docker.com/what-docker) - [Home Assistant](https://www.home-assistant.io/installation/) - [Zigbee2MQTT](https://www.zigbee2mqtt.io/) - [Mosquito Broker](https://mosquitto.org/) - [MagicHome-Controller](https://www.youtube.com/watch?v=bs0ylC6xRs0) - [sonoff ota] (https://github.com/rynardtspies/Tasmota-Sonoff) - [sonoff löten] (https://dm1cr.de/sonoff-mini-r2-tasmotizing-und-einbau)