Mein Smarthome Pi ist etwas in die Jahre gekommen, daher baue ich ihn mit Home Assistant auf einem Raspberry Pi 5 und Docker neu auf.
Ist- und Soll-zustand
Statt der üblichen Materialliste zeige ich dir kurz, von wo nach wo die Reise gehen soll.
Ist-Zustand | Soll-Zustand | |
---|---|---|
Board | Raspberry Pi 4B / 8GB | Raspberry Pi 5 / 8 GB |
Gehäuse | Armor Dual Fan | 52pi Heatsink |
Software | OpenHAB | Homeassistant |
Speicher | 32GB | 64GB |
Z-Wave Controller | Aeon Labs z-Stick S2 | Aeotec Z-Stick 7 / ZWA010 |
Dies soll gleich mehrere Problemchen beheben:
- Der Speicher auf der Speicherkarte reicht nicht mehr aus.
- Ich bin mit OpenHAB nicht mehr zufrieden.
- Der z-Stick S2 besitzt eine interne nicht wechselbare Batterie, da die leer ist, kann ich keine neuen Geräte in die bestehende Anlage aufnehmen.
- Die Lüfter des Armor Dual Fan Gehäuses sind nicht mehr vollständig funktionstüchtig.
Aus diesem Grund habe ich mich zu einen Rundumschlag entschlossen. Natürlich ist ein Raspberry Pi 5 für diese Aufgabe allein völlig überdimensioniert, allerdings wird der Raspi im Laufe der Zeit noch weitere Aufgaben übernehmen.
Da die Lüfter der aktuellen Anlage stillgelegt sind, reicht ein passives Gehäuse wie das 52pi Heatsink völlig aus.

Installation des Raspberry Pi
Auf die Speicherkarte flashe ich Raspberry Pi OS 5 und installiere Docker darauf.
Home Assistant
Home Assistant ist in Python geschrieben und steht unter Apache Lizenz.
Da sich eine Installation in Docker bewährt hat, bleibe ich dabei.
Z-Wave
Z-Wave ist ein Funkstandard zur Heimautomation, der vor allem für die private Nutzung ausgelegt ist. Da ich schon seit Jahren damit arbeite, muss ich alle vorhandenen Sensoren und Aktoren vom alten Controller auf den neuen umlernen.
Installation
Neben einem Container mit Home Assistant benötige ich noch einen weiteren mit zwavejs2mqtt , dieses Programm stellt die die Z-Wave Kommunikation per MQTT zur Verfügung, die HomeAssistant dann benutzen kann..
Dazu benötige ich zunächst zwei Verzeichnisse für die Volumes:
sudo mkdir /opt/homeassistant /opt/z-wave-js
Um die beiden Container zu erzeugen habe ich dieses docker-compose.yml verwendet:
---
version: "3.2"
services:
homeassistant:
image: ghcr.io/home-assistant/home-assistant:stable
container_name: homeassistant
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Berlin
volumes:
- /etc/localtime:/etc/localtime:ro
- /opt/homeassistant:/config
ports:
- 8123:8123 #optional
restart: unless-stopped
zwavejs2mqtt:
container_name: zwavejs2mqtt
image: zwavejs/zwavejs2mqtt:latest
restart: always
tty: true
stop_signal: SIGINT
environment:
- SESSION_SECRET=<geheimes_secret>
- ZWAVEJS_EXTERNAL_CONFIG=/usr/src/app/store/.config-db
- TZ=Europe/Berlin
devices:
# Do not use /dev/ttyUSBX serial devices, as those mappings can change over time.
# Instead, use the /dev/serial/by-id/X serial device for your Z-Wave stick.
- '/dev/serial/by-id/usb-Silicon_Labs_CP2102N_USB_to_UART_Bridge_Controller_d4e1c425a584ed11b7dad19f9d1cc348-if00-port0:/dev/zwave'
volumes:
- /opt/z-wave-js/:/usr/src/app/store
ports:
- "8091:8091" # port for web interface
- "3000:3000" # port for Z-Wave JS websocket server
Die Variable SESSION_SECRET
musst du gegen einen eigenen sicheren Wert austauschen. Beispielsweise kannst du dir in der bash einen zufälligen String erzeugen lassen.
tr -dc A-Za-z0-9 </dev/urandom | head -c 16; echo
Hervorheben möchte ich den Eintrag in der devices Sektion: '/dev/serial/by-id/usb-Silicon_Labs_CP2102N_USB_to_UART_Bridge_Controller_d4e1c425a584ed11b7dad19f9d1cc348-if00-port0:/dev/zwave'
. Ich mappe hier den Z-Stick über die ID und nicht über die Gerätedatei, da sich der Name der Gerätedatei durch aus ändern kann. Die Device ID wird bei dir u.U. eine andere sein, du kannst sie mit
ls -l /dev/serial/by-id/
herausfinden. Den Originalkommentar, der mich darauf aufmerksam gemacht hat, habe ich mal mit übernommen.

Die ID ist nur ein Link auf die Gerätedatei, der, so hoffe ich, automatisch aktualisiert wird, sollte sich die Gerätedatei ändern.
Die Container erzeuge ich jetzt mit
docker-compose up -d

Home Assistant konfigurieren
Die Weboberfläche von Home Assistant wird mit http://<hostname:8123
aufgerufen. Dann wird dieser Begrüßungsdialog angezeigt.

Jetzt kann ich mein Smarthome erstellen und klicke dazu auf „Mein Smarthome erstellen“ (irgendwie logisch, oder? 🙂
Zunächst muss ein Benutzer angelegt werden, der das Smarthome verwalten darf.

Z-Wave Integration
Zur Kommunikation mit dem Z-Stick 7, muss eine Integration angelegt werden. Eine Integration stellt die Verbindung zwischen Home Assistant und einer anderen Software ( in diesem Fall zwavejs2mqtt) her.
Im Menü Einstellungen >> Geräte und Dienste find ich unten rechts den Button „+ Integration hinzufügen“. Nach einem Klick darauf öffnet sich eine Liste der verfügbaren Integrationen. Dort ist „ZWave“ recht einfach zu finden.

Danach findet sich die Z-Wave Kachel auf dem Integrationen Screen ein.

Beim Hinzufügen der Z-Wave Integration fragt mich Home Assistant nach einer Websocket Adresse, um die Kommunikation mit zwavejs2mqtt herzustellen, da der Container auf dem gleichen Raspberry Pi läuft, ist der Hostname natürlich localhost. der Port ist oben in der docker-compose.yml konfiguriert.

Sensoren und Aktoren
Jetzt bin ich so weit, meine bestehenden Sensoren und Aktoren vom alten Controller auf den den neuen Umlernen und die Automatisierungen dazu neu erstellen. Da das etwas komplexer ist, lagere ich das in einen weiteren Post aus, da geht es um die Begrifflichkeiten und Grundlagen von Home Assistant.