Nadat Home Assistant via docker (compose) is opgestart, wil je hoogstwaarschijnlijk een aantal applicaties beschikbaar hebben zoals
- MQTT-broker
- Node-RED
- Zigbee2MQTT
Deze applicaties kunnen toegevoegd worden als service in het docker-compose.yaml bestand dat gebruikt is voor Home Assistant.
Het docker-compose.yaml bestand voor Home Assistant ziet er alsvolgt uit:
version: "3.7" services: ################## # Home Assistant # ################## homeassistant: image: ghcr.io/home-assistant/home-assistant:stable container_name: homeassistant volumes: - haconfig:/config:rw - /etc/localtime:/etc/localtime:ro network_mode: host environment: - TZ=Europe/Amsterdam privileged: true restart: unless-stopped volumes: haconfig: name: homeassistant
Mosquitto
met een extra service voor de Mosquitto MQTT-Broker wordt dat:
version: "3.7" services: ################## # Home Assistant # ################## homeassistant: image: ghcr.io/home-assistant/home-assistant:stable container_name: homeassistant volumes: - haconfig:/config:rw - /etc/localtime:/etc/localtime:ro network_mode: host environment: - TZ=Europe/Amsterdam privileged: true restart: unless-stopped ############# # mosquitto # ############# mosquitto: image: eclipse-mosquitto container_name: mosquitto volumes: - /opt/mosquitto/config:/mosquitto/config:rw - mosquitto-data:/mosquitto/data:rw - mosquitto-log:/mosquitto/log:rw network_mode: host restart: unless-stopped volumes: haconfig: name: homeassistant mosquitto-data: name: mqtt-data mosquitto-log: name: mqtt-log
Let goed op het inspringen en gebruik daar spaties voor! De ‘host’ als netwerk-type zorgt ervoor dat Mosquitto op het IP adres van Home Assistant, en dus dat van de RPi, bereikbaar is.
Voordat de MQTT broker gestart gaat worden dient de configuratie van mosquitto aangepast te worden. Met een ssh-connectie naar de RPi, geef de volgende commando’s:
sudo mkdir -p /opt/mosquitto/config [enter] cd /opt/mosquitto/config [enter] sudo touch mosquitto.conf [enter] sudo chmod 666 mosquitto.conf [enter] sudo cat << EOF > mosquitto.conf [enter] > persistence true [enter] > persistence_location /mosquitto/data [enter] > log_dest file /mosquitto/log/mosquitto.log [enter] > EOF [enter] cd $HOME [enter]
De applicatie kan toegevoegd worden aan Home Assistant door de docker-compose opnieuw in te lezen en mosquitto te starten met:
docker compose up -d [enter]
Nu kan de MQTT integratie in Home Assistant toegevoegd worden en mosquitto ‘draait’ op de RPi, oftewel op de localhost:
Submit en de MQTT Broker is succesvol toegevoegd.
Node-RED
Op dezelfde manier kan nu Node-RED toegevoegd worden aan de docker-compose.yaml file. Deze ziet er dan in z’n geheel zo uit:
version: "3.7" services: ################## # Home Assistant # ################## homeassistant: image: ghcr.io/home-assistant/home-assistant:stable container_name: homeassistant volumes: - haconfig:/config:rw - /etc/localtime:/etc/localtime:ro network_mode: host environment: - TZ=Europe/Amsterdam privileged: true restart: unless-stopped ############# # mosquitto # ############# mosquitto: image: eclipse-mosquitto container_name: mosquitto volumes: - /opt/mosquitto/config:/mosquitto/config:rw - mosquitto-data:/mosquitto/data:rw - mosquitto-log:/mosquitto/log:rw network_mode: host restart: unless-stopped ############ # node-RED # ############ node-red: image: nodered/node-red:latest container_name: node-red environment: - TZ=Europe/Amsterdam volumes: - node-red-data:/data network_mode: host restart: unless-stopped depends_on: - homeassistant - mosquitto volumes: haconfig: name: homeassistant mosquitto-data: name: mqtt-data mosquitto-log: name: mqtt-log node-red-data: name: node-red
Nagenoeg gelijk aan de andere services met als uitzondering de ‘depends_on:‘ regels die aangeven dat homeassistant en mosquitto eerst actief moeten zijn voordat Node-RED gestart wordt.
Laden van Node-RED met:
docker compose up -d [enter]
Node-RED draait op TCP port 1880 en kan daarom benaderd worden met een browser op: http://raspberrypi.local:1880
Om vanuit Node-RED de Home Assistant nodes te kunnen bereiken is het nodig om de ‘Home Assistant websocket‘ palette te installeren in Node-RED (rechtsboven hamburger-menu -> Manage palette). Hiermee komen dan de Home Assistant nodes beschikbaar maar moet nog wel de Home Assistant server ingesteld worden.
Home Assistant maakt gebruik van een token dat via de websocket in Node-RED gebruikt wordt om daarmee de Home Assistant API te kunnen benaderen. Die dient dus aangemaakt te worden in Home Assistant onder gebruikers-instellingen. In de zij-balk, via je gebruikersnaam en dan onderaan kiezen voor het aanmaken van een ‘Toegangtoken met lange levensduur’. Geef het een naam en kopieer het token want die heb je zo nodig om te koppelen.
Zet een Home Assistant node op de flow en dubbelklik deze om te openen. Hier kan dan de Home Assistant server ingesteld worden op http://localhost:8123 en het token wat zojuist aangemaakt is.
Op dezelfde manier kan een koppeling gemaakt worden vanuit Node-RED naar de Mosquitto MQTT broker. De draait ook op dezelfde RPi, dus de servernaam in de mqtt-nodes wordt dan: localhost (poort 1883).
Zigbee2MQTT
Voor Zigbee devices dient een Zigbee-gateway aanwezig te zijn in de orm van een zigbee switch/gateway of een USB-dongle van bijvoorbeeld Home Assistant, de SkyConnect
Om de USB poort via docker-compose door te sturen van de RPi naar Zigbee2MQTT wordt er een device toegevoegd aan de docker-compose.yaml file:
devices: - /dev/ttyACM0:/dev/ttyACM0
Ervan uitgaan de dat de USB-dongle op die poort is aangesloten op de RPi.
De totale docker-compose.yaml zier er dan zo uit:
version: "3.7" services: ################## # Home Assistant # ################## homeassistant: image: ghcr.io/home-assistant/home-assistant:stable container_name: homeassistant volumes: - haconfig:/config:rw - /etc/localtime:/etc/localtime:ro network_mode: host environment: - TZ=Europe/Amsterdam privileged: true restart: unless-stopped ############# # mosquitto # ############# mosquitto: image: eclipse-mosquitto container_name: mosquitto volumes: - /opt/mosquitto/config:/mosquitto/config:rw - mosquitto-data:/mosquitto/data:rw - mosquitto-log:/mosquitto/log:rw network_mode: host restart: unless-stopped ############ # node-RED # ############ node-red: image: nodered/node-red:latest container_name: node-red environment: - TZ=Europe/Amsterdam volumes: - node-red-data:/data network_mode: host restart: unless-stopped depends_on: - homeassistant - mosquitto ################# ## Zigbee2MQTT ## ################# zigbee2mqtt: image: koenkk/zigbee2mqtt container_name: zigbee2mqtt environment: - TZ=Europe/Amsterdam volumes: - z2m-data:/app/data - /run/udev:/run/udev:ro network_mode: host devices: - /dev/ttyACM0:/dev/ttyACM0 restart: unless-stopped depends_on: - mosquitto volumes: haconfig: name: homeassistant mosquitto-data: name: mqtt-data mosquitto-log: name: mqtt-log node-red-data: name: node-red z2m-data: name: z2m-data
Hierbij de voorwaarde dat mosquitto reeds gestart is (depends_on:)
Opstarten wederom met
docker compose up -d [enter]
Zigbee2MQTT draait op TCP poort 8080 dus de user interface kan bereikt worden via http://raspberrypi.local:8080
Via SETTINGS kan Home Assistant ingesteld worden:
Hiermee worden de Zigbee devices doorgevoerd naar Home Assistant.