Projekt: Smarthome mit Homeassistant

Mein Smarthome Pi ist etwas in die Jahre gekommen, daher baue ich ihn mit Homeassistant 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-ZustandSoll-Zustand
BoardRaspberry Pi 4B / 8GBRaspberry Pi 5 / 8 GB
GehäuseArmor Dual Fan52pi Heatsink
SoftwareOpenHABHomeassistant
Speicher32GB256GB
Z-Wave ControllerAeon Labs z-Stick S2Aeotec 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.

Raspberry Pi 5B mit Z-Wave Controller Stick
Olli Graf - raspithek.de
raspi+zwave-stickCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=
Raspberry Pi 5B mit Z-Wave Controller Stick

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 Device-ID des Z-Stick
Olli Graf - raspithek.de
stick-device-idCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=
Die Device-ID des Z-Stick

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
Beide Container wurden erzeugt.
Olli Graf - raspithek.de
containers-upCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=
Beide Container wurden erzeugt.

Home Assistant konfigurieren

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

Willkommensmeldung von HomeAssistant beim ersten Aufruf
Olli Graf - raspithek.de
welcomeCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=
Willkommensmeldung von Home Assistant beim ersten Aufruf

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.

Anlage eines Benutzers
Olli Graf - raspithek.de
create-userCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=
Anlage eines Benutzers

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.

Integration für Z-Wave auswählen
Olli Graf - raspithek.de
add-integration-zwaveCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=
Integration für Z-Wave auswählen

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

Kachel der  Z-Wave Integration
Olli Graf - raspithek.de
integration-zwaveCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=
Kachel der Z-Wave Integration

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.

Konfiguration der Websocket Adresse zu zwavejs2mqtt
Olli Graf - raspithek.de
ws-addressCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=
Konfiguration der Websocket Adresse zu zwavejs2mqtt

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.

Schreibe einen Kommentar

Creative Commons License
Except where otherwise noted, the content on this site is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
Olli Graf - raspithek.de
WordPress Cookie Hinweis von Real Cookie Banner