Home-Assistant Docker und deCONZ

Dank zahlreicher Integrationsmöglichkeiten ist Home-Assistant eine einfache Plattform für das Steuern verschiedenster Smart-Home Geräte. Im Vergleich zu ioBroker ist mir der Start mit Home Assistant wesentlich einfacher gefallen. Während ich für ioBroker noch am Suchen war, welches Frontend ich für meine Dashboards verwenden könnte, hatte ich mit Home-Assistant Out of the box ein fertig eingerichtetes System. Die Lovelance Dashboards von Home Assistant können einfach in der GUI zusammengeklickt und für spezielle Anpassungen im Code Editor und mit zusätzlichen Frontend-Paketen nahezu beliebig adaptiert werden.

Docker Basics
Docker ermöglicht es, Applikationen per Befehl in einem sogenannten Container zu starten.
Ein Container ist eine vom Betriebssystem (OS) unabhängige isolierte Umgebung:
Das OS spielt also keine Rolle, vorausgesetzt Docker lässt sich installieren.
Beim ersten Start eines Containers, lädt Docker selbstständig alle notwendigen Quellen
aus dem Internet.
Docker kann unter Windows, macOS oder einer Linux-Distribution installiert werden,
siehe auch: Docker
 

Ich verwende Home-Assistant primär für das Steuern bestimmter Lampen oder der Markise über das Smartphone. Zudem überwache ich damit die Temperatur und Luftfeuchtigkeit von bestimmten Räumen, meine Heizung, die Haustüre, eine NAS und einen Webserver. Außerdem habe ich auf Basis eines alten Smartphones sowas wie eine Wetterstation an die Wand gehängt. Darauf kann ich jetzt als Beispiel den Temperaturverlauf, das Wetter oder andere Werte im Vorbeigehen begutachten oder bestimmte Aktionen darauf starten. 

Home-Assistant - Docker Inbetriebnahme

Um Home-Assistant in Docker zu starten, wird natürlich ein Docker-Setup vorausgesetzt, siehe: Docker. Wer Docker bereits eingerichtet hat, kann damit Home-Assistant mit folgenden Befehlen starten:

docker run -d --name="home-assistant" \
-v ./:/config \
-v /etc/localtime:/etc/localtime:ro \
--net=host \
--restart=always \
homeassistant/home-assistant:stable

Das Netzwerk für Home-Assistant muss laut dem Hersteller auf "--net=host" gestellt werden, die verwendeten Ports können aber auch definiert werden, als Beispiel bei Verwendung eines Reverse-Proxy für den Zugriff aus dem Internet, siehe:  Zugriff aus dem Internet - SSL Let's Encrypt.

Initiale Konfiguration

Nach dem Start des Containers ist Home-Assistant standardmäßig über den Port 8123 erreichbar:

Integration

deCONZ ZigBee Integration

Damit ich meine ZigBee-Geräte über Home-Assistant steuern kann, verwende ich einen ConBee II USB-Stick. Informationen zum Setup, siehe: Conbee 2: Phoscon deCONZ - Docker Inbetriebnahme | Review

Wer also ConBee und Phoscon bereits im Einsatz hat, muss als Vorbereitung für die Verbindung von Home Assistant das Phoscon-GW auf "App verbinden" stellen:

Über die Benachrichtigung meldet Home-Assistant bereits das erkannte deCONZ-Setup: 

Alternativ kann die Integration auch im Menüpunkt Konfiguration hinzugefügt werden: 

Details siehe, https://www.home-assistant.io/integrations/deconz/

Direkter Zugriff auf ConBee2 ohne deCONZ-Gateway (Zigbee Home Automation: ZHA)

Alternativ zur Anbindung des ConBee-Stick über das deCONZ Zigbee Gateway, kann der Stick auch direkt in Home Assistant eingebunden werden, dazu muss Home-Assistant, wie auch der deCONZ-Container, mit dem Parameter "--device" gestartet werden:

docker run -d --name="home-assistant" -v /docker/home-assistant-zigbee:/config -v /etc/localtime:/etc/localtime:ro --net=host --device=/dev/ttyACM0 homeassistant/home-assistant:stable

 

  

Geräte die zuvor in deCONZ eingebunden wurden, könne an dieser Stelle nicht weiter verwendet werden, sie müssen erneut verbunden werden:

Eine weitere Alternative zu deCONZ und ZHA stellt Zigbee2mqtt dar, siehe: https://www.zigbee2mqtt.io/

System Monitor

Um das Betriebssystem - auf dem Home Assistant läuft - rudimentär zu überwachen, können in der configuration.yaml zusätzliche Sensoren hinzugefügt werden, als Beispiel Disk und Memory:

configuraton.yaml:

sensor:
  - platform: systemmonitor
    resources:
      - type: disk_use_percent
        arg: /
      - type: disk_use_percent
        arg: /daten
      - type: memory_free    

Template-Sensor

Mit einem Template-Sensor können Sensoren auf Basis bestimmter Werte erstellt werden, z.B. für Sonnenaufgang und Sonnenuntergang:

sensor:
  - platform: template
    sensors:
      nextsunrise:
        friendly_name: 'Sonnenaufgang'
        value_template: >
          {{ as_timestamp(states.sun.sun.attributes.next_rising) | timestamp_custom(' %H:%M') | replace(" 0", "") }}
        icon_template: mdi:weather-sunset-up
      nextsunset:
        friendly_name: 'Sonnenuntergang'
        value_template: >
          {{ as_timestamp(states.sun.sun.attributes.next_setting) | timestamp_custom(' %H:%M') | replace(" 0", "") }}
        icon_template: mdi:weather-sunset-down
      nextsunsetsunrise:
        friendly_name: 'Sonne'
        value_template: >
          {{ as_timestamp(states.sun.sun.attributes.next_rising) | timestamp_custom(' %H:%M') | replace(" 0", "") }} - {{ as_timestamp(states.sun.sun.attributes.next_setting) | timestamp_custom(' %H:%M') | replace(" 0", "") }}
        icon_template: mdi:weather-sunset-up   

Device Tracker OpenWRT

Wer über OpenWRT die Anwesenheit von Geräten tracken will, kann dies mit dem Eintrage device_tracker in der configuration.yaml-Datei:

device_tracker:
  - platform: luci
    host: 192.168.1.2
    username: root
    password: xxx
    interval_seconds: 30
    consider_home: 360
    new_device_defaults:
       track_new_devices: true

Für OpenWRT wird dazu das Paket luci-mod-rpc vorausgesetzt.

Shelly

Nachdem es mit Home Assistant ein leichtes ist, verschiedene Systeme zu verbinden, habe ich neben ZigBee auch einen WLAN-Schalter im Einsatz. Shelly ist ein kleiner Unterputz-WLAN-Schalter für das Steuern z.B. einer Steckdose.

Nach dem Setup wird das Gerät automatisch dem Standard-Home-Dashboard zugewiesen:

Home-Dashboard

Alle eingebundenen Geräte werden automatisch im Home-Dashboard angezeigt.

Die Dashboards können natürlich auch selbst erstellt und angepasst werden.

Verlauf

Im Verlauf werden die historischen Daten der einzelnen Geräte automatisch aufbereitet:

HACS - Installation

Eigentlich wollte ich nur ein RGB-Licht in das Dashboard hinzufügen, geht zwar, aber ohne der Möglichkeit die Farbe zu ändern: An dieser Stelle hätte ich mir mehr erwartet. Die Recherche und Installation einer Integration für das Steuern von Farben hat mich wesentlich mehr Zeit gekostet als die eigentliche Home Assistant Installation. Dafür habe ich mit HACS aber die Grundlage für weitere Anpassungen geschaffen. HACS ist eine Integration um GitHub Repositories über eine Art Softwarekatalog herunterzuladen. 

Installiert habe ich HACS über einen Befehl im Docker-Container:

user@rechner:~$ docker exec -it home-assistant bash
bash-5.0# wget -q -O - https://install.hacs.xyz | bash -

dann auf Einstellungen, Integration 

und im Anschluss muss die Installation auf GitHub registriert werden, siehe: hacs.xyz/docs/configuration/basic

Ist HACS erst mal installiert, geht das Hinzufügen von zusätzlichen Repositories relativ einfach:

Must-have Frontend-Pakete: HACS

Resourcen hinzufügen - RGB Light Card

Wer RGB-Lichter im Einsatz hat, kann für das Ändern der Farben die RGB Light Card verwenden:

 

apexcharts-card

Neben der RGB Light Card, habe ich auch apexcharts-card installiert. Mit diesem Paket können wesentlich ansprechendere Graph-Cards erstellt werden:

Benachrichtigung aufs Handy - Alarm

Die Android-App "Home Assistant" bietet neben zahlreichen Handy-Sensor-Werten in Home Assistant auch eine sehr einfache Möglichkeit Benachrichtigungen aus Home Assistant zu empfangen: https://play.google.com/store/apps/details?id=io.homeassistant.companion.android&hl=de_AT&gl=US.

Wer die App installiert, wird feststellen, dass Home Assistant regelmäßig das Aktualisiern der Handy-Sensoren nach HomeAssistant kundtut:

Aktualisiere Sensoren

Standardmäßig wird alle 15 Minuten eine Benachrichtigung mit "Aktualisiere Sensoren" angezeigt:

Der Hinweis kann ganz einfach durch ein langes Drücken auf die Benachrichtigung und dem Deaktivieren des "SensorWorker" entfernt werden:

Das Deaktivieren des SensorWorker beeinflusst die in den Automatisierungen hinterlegten Benachrichtigungen nicht, diese bleiben dennoch aktiv. Um eine Benachrichtigung beim Eintritt eines Ereignisses zu erhalten, kann dafür eine Automatisierung angelegt werden, dazu auf "Konfiguration" und "Automatisierung":

Benachrichtigung beim Erreichen eines bestimmten Wertes

Als Beispiel habe ich eine Benachrichtigung für das Überwachen der Luftfeuchtigkeit erstellt:

Für diese Meldung habe ich in Konfiguration / Automatisierung eine neue Automatisierung erstellt:

Die Benachrichtigung kann später mit "RUN ACTIONS" getestet werden, zunächst aber zu den Einstellungen dieser Automatisierung:
 

service: notify.mobile_app_sm_a405fn
data:
  title: Luftfeuchtigkeit Bad
  message: >-
    Luftfeuchtigkeit: {{states('sensor.bad_2')}}%
    Temperatur:{{states('sensor.bad')}}°C

Zugriff über das Internet https-ssl (Let's-Encrypt)

Dank Let's Encrypt kann Home Assistant sehr einfach mit einem SSL-Zertifkat versorgt und somit sicher im Internet betrieben werden. Als Voraussetzung dafür habe ich folgendes Setup im Einsatz: nginx-LetsEncrypt Reverse Proxy in der Praxis

Für den Betrieb mit dem Nginx-Reverse-Proxy habe ich folgende Einstellungen in der Konfiguration getroffen:

configuration.yaml:

http:
  server_port: 80
  use_x_forwarded_for: true
  trusted_proxies:
    - 127.0.0.1
    - ::1    
    - 172.18.0.0/16

Ich verwende für meine SmartHome-Container ein eigenes Netzwerk: "smart-home" und für Web-Container, die über den Let`s Encrypt-Reverse-Proxy aus dem Internet erreichbar sind, das Netzwerk "webproxy". Entsprechend habe ich für Home Assistant folgendes docker-compose-File erstellt:

docker-compose.yml

[+]
version: "3"
services:
  hass:
    image: homeassistant/home-assistant:stable
    container_name: home-assistant
    environment:
      VIRTUAL_HOST: 'ha.domain.tld'
      VIRTUAL_PORT: '80'
      LETSENCRYPT_HOST: 'ha.domain.tld'
      LETSENCRYPT_EMAIL: 'email@damain.tld'
    restart: always
    volumes:
      - ./:/config
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    expose:
       - "80"
    networks:
            - default
            - backend
networks:
  default:
    external:
      name: webproxy
  backend:
    external:
      name: smart-home

deCONZ und Home-Assistant in einem docker-compose.yml-File

[+]
version: "3"
services:
  hass:
    image: homeassistant/home-assistant:stable
    container_name: home-assistant
    depends_on:
      - deconz
    environment:
      VIRTUAL_HOST: 'ha.domain.tld'
      VIRTUAL_PORT: '80'
      LETSENCRYPT_HOST: 'ha.domain.tld'
      LETSENCRYPT_EMAIL: 'admin@domain.tld'
    restart: always
    volumes:
      - ./ha:/config
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    expose:
       - "80"
    ports: 
       - 8123:80
    networks:
            - default
            - backend
  deconz:
    image: marthoc/deconz
    container_name: deconz
    environment:
      DECONZ_DEVICE: '/dev/ttyACM0'
      DECONZ_VNC_MODE: '1'
      DECONZ_VNC_PORT: '5900'
      DECONZ_VNC_PASSWORD: 'password'
    restart: always
    volumes:
      - ./deCONZ/:/root/.local/share/dresden-elektronik/deCONZ
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    devices: 
      - /dev/ttyACM0
    ports:
       - 83:80
       - 5983:5900
    networks:
       - backend
networks:
  default:
    external:
      name: webproxy
  backend:
    external:
      name: smart-home

Troubleshooting

Der Konfigurationsfluss konnte nicht geladen werden

Durch den Betrieb von deCONZ in Docker kann sich beim Neustart die IP-Adresse des deCONZ Containers ändern. Homeassistant verwendet nicht den Namen des Containers für die Verbindung, sondern dessen IP-Adresse, daher funktioniert die Verbindung dann nicht mehr:

Die Einstellung in der Datei .storage/core.config_entries zeigt dann auf eine falsche IP-Adresse:

Markisensteuerung - ausgegraut

Ich hatte anfangs das Problem, dass sich meine Markise nur in eine Richtung bewegen ließ.

Bei dem ZigBee-Schalter handelt es sich laut Phoscon um das Modell FB56+CUR17SB2.2 (Heiman)

Für das Anpassen bestimmter Einstellungen wird der erweiterte Modus benötigt.

Einstellungen: Anpassung

Dadurch können in den Einstellungen bestimmte Attribute geändert werden, in meinem Fall "assumed_state"

Die Datei customize.yaml wird dadurch wie folgt befüllt:

cover.window_covering_device_10:
  assumed_state: true

Damit die Einstellungen geladen werden, muss die Datei noch in der configuration.yaml angegeben werden:

homeassistant:
  customize: !include customize.yaml

Dann noch den Docker-Container neugestartet und siehe da, jetzt funktioniert auch die andere Richtung:

Fazit

Dank der schnellen Inbetriebnahme und dem einfachen Umsetzen neuer Ideen, bin ich mit Home Assistant aktuell mehr als zufrieden und gerade dabei, das zuvor erstellte Setup, bestehend aus ioBroker InfluxDB und Grafana, mit Home Assistant abzulösen. Für einen Vergleich mit anderen Smart-Home-Plattformen, siehe: Smart-Home-Plattform: Systeme

positive Bewertung({{pro_count}})
Beitrag bewerten:
{{percentage}} % positiv
negative Bewertung({{con_count}})

DANKE für deine Bewertung!


Top-Artikel in diesem Bereich

Preview Smart-Home-Plattform - Systeme: ioBroker vs. Home-Assistant

Smart-Home-Plattform - Systeme: ioBroker vs. Home-Assistant

geändert: 05.05.2021 von Bernhard (Erstveröffentlichung: 05.11.2020)

Für die Heim-Automatisierung gibt es neben zahlreichen verschiedenen Standards eine große Menge an verschiedenen Plattformen. Open Source Plattformen bieten dabei oft die Möglichkeit verschiedene Automatisierungs-Standards miteinander zu verbinden. Als Beispiel könnte ein kleiner Mini-Computer, ein Raspberry Pi oder eine NAS, ausgestattet mit mehreren Empfängern, verschiedene Automatisierungs-Lösungen über eine Plattform steuern. ... weiterlesen

Preview ioBroker installieren - Docker

ioBroker installieren - Docker

geändert: 13.11.2020 von Bernhard (Erstveröffentlichung: 06.11.2020)

Mit ioBroker können verschiedene Automatisierungslösungen oder Geräte in einem System zusammengefasst werden. Um bestimmte Gateways oder Geräte ansprechen zu können, werden in ioBroker verschiedene Adapter verwendet.  ... weiterlesen

Preview Conbee 2: Phoscon deCONZ - Docker Inbetriebnahme | Review

Conbee 2: Phoscon deCONZ - Docker Inbetriebnahme | Review

geändert: 01.08.2021 von Bernhard (Erstveröffentlichung: 20.08.2020)

Mit dem kleinen USB-Stick Conbee2 habe ich meine NAS um ein Zigbee-Gateway erweitert. Conbee2 kann auf Raspbian, Ubuntu, Docker oder Windows installiert werden. ... weiterlesen


Fragen / Kommentare


(sortiert nach Bewertung / Datum) [alle Kommentare(neueste zuerst)]

✍anonym
erstellt am 30.06.2021 20:06
Ich habe ebenfalls das Problme mit der Fehlermeldung "Der Konfigurationsfluss Der Konfigurationsfluss konnte nicht geladen werden". Home Assistant läuft in Docker auf Raspi 4b. Wo finde ich die oben erwähnte Datei .storage/core.config_entries?

Wir verwenden Cookies, um Inhalte und Anzeigen zu personalisieren, Funktionen für soziale Medien anbieten zu können und die Zugriffe auf unsere Website zu analysieren. Außerdem geben wir Informationen zu Ihrer Nutzung unserer Website an unsere Partner für soziale Medien, Werbung und Analysen weiter. Details anzeigen.