Toon posts:

[Tutorial] Migratie van Hue Bridge naar Z2M + HA (docker)

Pagina: 1
Acties:

Acties:
  • +8 Henk 'm!

Verwijderd

Topicstarter
In september 2023 heeft Philips Hue (Signify) aangekondigd dat je verplicht een Hue Account moet koppelen aan je bridge om je devices te kunnen blijven aansturen.

Aangezien dat inhoudt dat je bridge gekoppeld moet zijn aan het internet, met alle risico's (en data gathering door Signify/Philips) van dien, tijd om een alternatief op te zetten.

Deze tutorial is in geen zins bedoeld als complete guide (wellicht dat we als GoT dat wel gezamenlijk voor elkaar krijgen, input welkom!).
De tutorial is bedoeld om een eerste aanzet te geven o.b.v. mijn eigen ervaring en uitzoekwerk.

Deze tutorial is samengesteld door wat ik online heb kunnen vinden over het opzetten van onderstaande.

Afbeeldingslocatie: https://tweakers.net/i/mW9jR9cTchhWIVM4nS34H_W-hJk=/234x176/filters:strip_exif()/f/image/5A6sUBueSqL3kgTNWH8ym3NI.png?f=fotoalbum_medium

Om discussies te voorkomen over het feit dat je Bridge al internet nodig heeft voor de buiten huisbediening van je verlichting:
Philips geeft inderdaad aan dat ze dat graag willen. Echter is dat ook geen vereiste.
Wanneer je je Hue Bridge geen internet toegang geeft, kun je middels een VPN naar je eigen huis (je hebt dan wel een VPN-server nodig) alsnog verbinding te maken met de Hue Bridge en het e.a. bedienen.

Goed, dat gezegd hebbende... hoe kom je van die Bridge af?

Een kort boodschappenlijstje:Aangezien ik al een Pi had draaien met Docker, heb ik gekozen voor HomeAssistant Supervised.
En daar gaat deze handleiding dan ook over. Er zijn meerdere wegen die naar Rome leiden.
Deze tutorial kan je daarin wellicht helpen.

Qua software gebruik ik het volgende:
  • HomeAssistant
  • Docker
  • MQTT
  • Zigbee2MQTT
Wanneer je ervoor kiest om HomeAssistant OS te gebruiken, kun je Docker, Zigbee2MQTT & MQTT overslaan, dat wordt daar geregeld via Add-ons (en op de achtergrond docker & containers).
Daarnaast is HA Supervised niet de aanbevolen methode als je weinig kennis hebt van Linux, e.d.
Deze tutorial gaat ervan uit dat je ook van het e.a. af weet qua randzaken wat dat betreft.

Ik ga ervan uit dat je bekend bent (of bereid bent om dat te worden) met de Raspberry Pi, deze op een x64 build draait, up-to-date is & een vast-IP heeft. Dat gedeelte sla ik hier over. Genoeg online bronnen die je daarbij kunnen helpen.
De Pi heeft (tijdelijk) internet access nodig om de benodigde packages te kunnen downloaden.

Installatie handleiding voor:Om je wat verder op weg te helpen, hieronder wat code die je je SSH-sessie naar je Pi kunt gebruiken voor installatie van je setup.

Docker:
code:
1
2
3
4
5
6
sudo mkdir /dockervolumes
sudo curl -sSL https://get.docker.com | sh
sudo usermod -aG docker pi
logout

sudo systemctl enable docker


MQTT:
code:
1
2
3
4
5
6
7
sudo mkdir /dockervolumes/mosquitto
sudo mkdir /dockervolumes/mosquitto/config
sudo mkdir /dockervolumes/mosquitto/data
sudo mkdir /dockervolumes/mosquitto/log
sudo touch /dockervolumes/mosquitto/config/mosquitto.conf

sudo nano /dockervolumes/mosquitto/config/mosquitto.conf


Vul in:
code:
1
2
3
4
5
allow_anonymous true
listener 1883 0.0.0.0
persistence true
persistence_location /mosquitto/data/
log_dest file /mosquitto/log/mosquitto.log


Maak nu de MQTT-container aan:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
docker create \
--name mosquitto \
-it \
-p 1883:1883 \
-p 9001:9001 \
--hostname=mosquitto\
-v /dockervolumes/mosquitto/config:/mosquitto/config \
-v /dockervolumes/mosquitto/data:/mosquitto/data \
-v /dockervolumes/mosquitto/log:/mosquitto/log \
-v /etc/timezone:/etc/timezone:ro \
-v /etc/localtime:/etc/localtime:ro \
--restart unless-stopped \
eclipse-mosquitto:latest


Zigbee2MQTT
Indentificeer eerst welk ID jouw Zigbee stick heeft:
code:
1
ls -l /dev/serial/by-id


Daar komt iets uit als:
code:
1
usb-ITEAD_SONOFF_Zigbee_3.0_USB_Dongle_Plus_V2_20230509114723-if00 -> ../../ttyACM1


Het eerste gedeelte vul je hieronder in bij <JOUW DEVICE> het tweede gedeelte bij <PORT>

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
sudo mkdir /dockervolumes/zigbee2mqtt/
sudo mkdir /dockervolumes/zigbee2mqtt/data
docker create \
--name zigbee2mqtt \
--restart=unless-stopped \
--hostname=zigbee2mqtt \
--device=/dev/serial/by-id/<JOUW DEVICE>:/dev/<PORT> \
-p 8181:8080 \
-v /dockervolumes/zigbee2mqtt/data:/app/data \
-v /run/udev:/run/udev:ro \
-v /etc/timezone:/etc/timezone:ro \
-v /etc/localtime:/etc/localtime:ro \
-e TZ=Europe/Amsterdam \
koenkk/zigbee2mqtt


Nadat je deze container gestart hebt, stop je deze weer, om vervolgens de configuratie aan te passen:

code:
1
docker start zigbee2mqtt

code:
1
docker stop zigbee2mqtt


code:
1
sudo nano /dockervolumes/zigbee2mqtt/data/configuration.yaml


Vul in bij:
code:
1
2
3
4
5
server: mqtt://<IP VAN JE PI>:1883
serial:
  port: /dev/<PORT>
advanced:
  network_key: GENERATE


Die key is om de default encryption key van je Zigbee netwerk te resetten.
Wel zo veilig. Ref: https://www.zigbee2mqtt.i...ee-network-encryption-key

Restart daarna de container:

code:
1
docker restart zigbee2mqtt


HomeAssistant:
code:
1
2
3
4
5
6
sudo apt-get install jq wget curl avahi-daemon udisks2 libglib2.0-bin network-manager dbus apparmor systemd-resolved systemd-journal-remote -y  
sudo reboot

wget https://github.com/home-assistant/os-agent/releases/download/1.6.0/os-agent_1.6.0_linux_aarch64.deb 
sudo dpkg -i os-agent_1.6.0_linux_aarch64.deb  
rm os-agent_1.6.0_linux_aarch64.deb


check of het allemaal oké draait:
code:
1
gdbus introspect --system --dest io.hass.os --object-path /io/hass/os


Wanneer je PiHole gebruikt, pas dan dit bestand aan.
code:
1
sudo nano /etc/system/resolved.conf


Uncomment deze regel en vul "no" in:
code:
1
DNSStubListener=no


code:
1
sudo service systemd-resolved restart


code:
1
2
wget https://github.com/home-assistant/supervised-installer/releases/latest/download/homeassistant-supervised.deb  
sudo dpkg -i homeassistant-supervised.deb


Selecteer RaspberryPi x64 tijdens de installatie.
code:
1
rm homeassistant-supervised.deb


Bewerk je bootfile, om apparmor automatisch te laten starten.
code:
1
sudo nano /boot/cmdline.txt


Voeg aan het eind van de regel het volgende toe:
code:
1
apparmor=1 security=apparmor

Voordat je je Pi Reboot, wacht minstens 5 minuten zodat de installatie alle benodige achtergrondprocessen (aanmaken Docker network, containers, etc) heeft afgerond. Duurt ff, boel werk (blijkbaar).
code:
1
sudo reboot


Nu dat draaiend is en je Home Assistant conform de initiële handleiding hebt ingesteld, koppel je HomeAssistant aan MQTT:

Open Home Assistant via: http://<IP VAN JE PI>:8123
- Settings | Devices | Add Integration
- zoek naar MQTT
- Vul het IP van je Pi in & poort 1883
- Listen to a topc: "zigbee2mqtt"
- Publish a packet: "homeassistant"

Afbeeldingslocatie: https://tweakers.net/i/NGPDrzxQ9eY8faYX6J3IQsJ_xrc=/234x176/filters:strip_exif()/f/image/NNiD1Zt6KFTE0nVyWftXhcPb.png?f=fotoalbum_medium Afbeeldingslocatie: https://tweakers.net/i/jUrJktcR0zV5v8HfNpQKFqj16pY=/234x176/filters:strip_exif()/f/image/8F8Hc438gEDOXhkpf7cFVF33.png?f=fotoalbum_medium

Maak nu ook (voor zover niet al gedaan) je ruimtes aan waar je je lampen hebt hangen:
- Settings | Areas | Create Area

Afbeeldingslocatie: https://tweakers.net/i/dN3yIQhRqNyUGQKpkMeOQYO5J2s=/234x176/filters:strip_exif()/f/image/6t6jCZR3qcYSskvlSPsqi51c.png?f=fotoalbum_medium

Zigbee2MQTT open je via http://<IP VAN JE PI>:8181
In Zigbee2MQTT leg je de koppeling naar HomeAssistant:
- Settings | Home Assistant Integration
- Home Assistant (simple), checkbox + click submit.

Afbeeldingslocatie: https://tweakers.net/i/SgTFcWiqanlLvwwFVmWUol-AvoM=/234x176/filters:strip_exif()/f/image/ZUh7oIa1zjjUw6FMFhFBWRA3.png?f=fotoalbum_medium

In Zigbee2MQTT leg je de koppeling naar MQTT:
- Settings | MQTT
- BaseTopic: "zigbee2mqtt"
- MQTT Server: mqtt://<IP van je PI>:1883

Afbeeldingslocatie: https://tweakers.net/i/Ler3sJAarRgMsgCziVL2vEEKZGo=/234x176/filters:strip_exif()/f/image/L7bjK2hmYX9osRuWQ0B8D2tw.png?f=fotoalbum_medium

Zorg dat Zigbee2MQTT nieuwe connecties accepteert:
- Settings | Main
- vinkje bij Permit Join & click Submit

Afbeeldingslocatie: https://tweakers.net/i/WxqiAzYqh-kS9T8p48YaDw2alrE=/234x176/filters:strip_exif()/f/image/y9T2VQGSjI62VdWE1J5ROB7Q.png?f=fotoalbum_medium

Verwijder nu (tip: doe het per set lampen) je lampen nu uit je Philips Hue Bridge (app).
Als het goed is gaan die lampen nu branden (voor zover ze dat nog niet deden).
Wacht 30 seconden. En geef (eventueel) de lampen een power cycle (uit/aan).

In Zigbee2MQTT zie je nu de lampen in je dashboard (of devices tabblad) verschijnen.
Mijn tip is, om ze hier 1 voor 1 van een "Friendly Name" te voorzien en dat te synchroniseren met Home Assistant.

Afbeeldingslocatie: https://tweakers.net/i/qhWvIp5U3MdLn12VztLlPcJdvFs=/234x176/filters:strip_exif()/f/image/diMxZVm5wG6BQNpTWuLHbHTO.png?f=fotoalbum_medium

Verder zou ik in Zigbee2MQTT ook je lampen per groep samenvoegen, zoals je ook in Hue had.
Deze groepen worden ook gepubliceerd in Home Assistant en kun je derhalve ook zo inzetten aldaar.
Zo doende hoeft Home Assistant slechts 1 commando te sturen i.p.v. 3 afzonderlijke lampen aan te sturen.
Is nét even wat efficiënter/logischer.
Daarbij, mocht je ooit van Home Assistant af willen, staan in ieder geval al je groepen nog bij de bron, Zigbee2MQTT.

Afbeeldingslocatie: https://tweakers.net/i/K7fQT8NMHDvJXU_zL4auMCfwCZE=/234x176/filters:strip_exif()/f/image/vWYVIyUFjpRasqNEil5CIbNm.png?f=fotoalbum_medium

Ga terug naar Home Assistant en open:
Settings | Devices
Je ziet nu je lampen & groepen staan met een paars icoon er voor (i.p.v. als je eerder je bridge had gekoppeld aan Hue), het Hue icoon.
(Zoek desgewenst op MQTT).
Klik deze aan, bewerk deze (rechts boven), geef deze een naam & voeg toe aan de ruimte waar de lamp zich bevindt.

Afbeeldingslocatie: https://tweakers.net/i/egZv3H1TzTE6hBDZDRsEpfps3Go=/234x176/filters:strip_exif()/f/image/vhG5c5KvWOz0U6goPtVocRAK.png?f=fotoalbum_medium

Open Settings | Entities
Bewerk elke lamp & groep, voeg deze toe aan de ruimte waar deze zich bevindt.

Afbeeldingslocatie: https://tweakers.net/i/_z9HcyqEsxSHY1eIWwRemxggPzg=/234x176/filters:strip_exif()/f/image/yBfj3xgicw7WUQzM1wAPysco.png?f=fotoalbum_medium

Je kunt nu een dashboard maken met al je lampen erin en ze daarmee aan/uit zetten en (handmatig) kleuren geven. Hoe je een dashboard maakt is een les Home Assistant, al is het intuitief genoeg om het zo te snappen voor de gemiddelde tweaker. Daarom skip ik dat stuk dan ook in de handleiding.

Afbeeldingslocatie: https://tweakers.net/i/vXgEYbB6r_3v_sYDS89Y0xv4his=/234x176/filters:strip_exif()/f/image/rPDp6c4THWwBNrYQKDkzum9l.png?f=fotoalbum_medium

Klaar? Schakel dan in Zigbee2MQTT in onder Settings | Main "Permit & Join" uit.

Wat ik je verder nog aanraad is om een backup te maken van zowel Home Assistant als Zigbee2MQTT.
Dit kun je in Home Assistant inregelen via een Automation. (Settings | Automations)

Afbeeldingslocatie: https://tweakers.net/i/pZdKodioweJab5wkKTO5SKOvPOw=/234x176/filters:strip_exif()/f/image/y2vjYIohojXpx881y110V3Ep.png?f=fotoalbum_medium Afbeeldingslocatie: https://tweakers.net/i/FF3IEjeo_H2jkfGpSGrgZzM_e3s=/234x176/filters:strip_exif()/f/image/6cCVxEcCkIVytjqo9TKaCbce.png?f=fotoalbum_medium

De Zigbee2MQTT backup wordt vreemdgenoeg in je Database opgeslagen.
Derhalve kun je geen los bestand via scripting kopieren.
Daarom kies ik er voor om de container middels een cronjob elke nacht te stoppen en de data folder dan maar weg te kopiëren naar elders.

code:
1
2
3
sudo docker stop zigbee2mqtt
sudo cp -r /dockervolumes/zigbee2mqtt/ /nas.backup/zigbee2mqtt/
sudo docker start zigbee2mqtt


De HomeAssistant backup vind je terug op je Pi in:
code:
1
/usr/share/hassio/backup/


Deze kun je vervolgens weer met een cronjob ergens anders heen kopieren.

Technisch gezien heb je nu alle lampen (en andere sensoren, etc) overgezet naar Home Assistant & Zigbee.
Alle acties/handelingen/scenes zul je echter zelf opnieuw moeten aanmaken.

Om te laten zien wat erbij komt kijken, een voorbeeld van mijn wakeup light in de slaapkamer:
Ga naar Settings | Helpers en maak daar de volgende Date/Time helper (op basis van een tijdstip) aan:

Afbeeldingslocatie: https://tweakers.net/i/Fvr41UwDm_koV4GQFFZd3RUoryk=/234x176/filters:strip_exif()/f/image/HQl78fDaF0Wvuq0h0yMpK6dq.png?f=fotoalbum_medium

Bewerk de nieuwe Helper en stel de tijd in.

Afbeeldingslocatie: https://tweakers.net/i/nqA3yed1S0xW9FdNzZpLN61QN1c=/234x176/filters:strip_exif()/f/image/YSD619kg4ddjbn9k5eIfVVua.png?f=fotoalbum_medium

En voeg vervolgens de helper toe aan de ruimte van toepassing:
Afbeeldingslocatie: https://tweakers.net/i/zSSWG70qYL6yVxByA6F_mfGLs-U=/234x176/filters:strip_exif()/f/image/NiuVSygnO93JNYLvPXBpRFMQ.png?f=fotoalbum_medium

Ga nu naar Settings | Automations en maak een nieuwe automation aan.
Stel de trigger & Condition als volgt in:

Afbeeldingslocatie: https://tweakers.net/i/Mb3t-g33qFMCARU_39ruiOHwndw=/234x176/filters:strip_exif()/f/image/oiRfVmktWirQAM4YpAUgqozU.png?f=fotoalbum_medium

Daarna volgen 5 acties:

#1 Lamp aandoen op de warmste stand en de laagste intensiteit.

Afbeeldingslocatie: https://tweakers.net/i/0vpUz_wnVoqC1GSEmJN-lbeWHEo=/234x176/filters:strip_exif()/f/image/VYL14Zx2elx0xDWUU2J4wAfN.png?f=fotoalbum_medium

#2 2 sec wachttijd.
Afbeeldingslocatie: https://tweakers.net/i/GSS3XXVdlaHKT0mzMTW3xEdgSQE=/234x176/filters:strip_exif()/f/image/b2cDr5pqXYFTj9aBopD0wP5T.png?f=fotoalbum_medium

#3 gedurende 5 minuten het licht steeds koeler van temperatuur en helderheid naar 100% brengen.

Afbeeldingslocatie: https://tweakers.net/i/wESwtdcu1UbyVnrX1zWDnMh_43o=/234x176/filters:strip_exif()/f/image/mSMhIEgX5lz5B1lz1Cxg8UW3.png?f=fotoalbum_medium

#4 & 5 - na 30 minuten de lamp vanzelf uitdoen

Afbeeldingslocatie: https://tweakers.net/i/IODS93sviIVaWdcmQhBTWVndcOs=/234x176/filters:strip_exif()/f/image/20VAFobeCp7YDcf4v3lSYQQ9.png?f=fotoalbum_medium

Yaml code van bovenstaande (lekker makkelijk copy/pasten):
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
alias: "Wakeup Light: Kantoordag"
description: Maandag & Donderdag @ 06:30
trigger:
  - platform: time
    at: input_datetime.alarm_kantoordag
condition:
  - condition: time
    after: "00:00:00"
    before: "23:59:59"
    weekday:
      - mon
      - thu
action:
  - service: light.turn_on
    data:
      color_temp: 500
      brightness_pct: 2
      transition: 5
    target:
      entity_id: light.slaapkamer_lamp_1
  - delay:
      hours: 0
      minutes: 0
      seconds: 2
      milliseconds: 0
  - service: light.turn_on
    data:
      color_temp: 365
      brightness_pct: 100
      transition: 300
    target:
      entity_id: light.slaapkamer_lamp_1
  - delay:
      hours: 0
      minutes: 30
      seconds: 0
      milliseconds: 0
  - service: light.turn_off
    data: {}
    target:
      entity_id: light.slaapkamer_lamp_1
mode: single



Bovenstaande simuleert het sunrise effect uit de Hue Bridge setup, zonder dat die bridge nog bestaat in je omgeving. Er zijn vast efficiëntere manieren/templates/etc, mocht ik dat nog tegenkomen, zal ik dat toevoegen.

Vergelijkbare setups zal je ook voor je motion sensors e.d. moeten aanmaken.
't is allemaal niet over te zetten. Uiteindelijk vind ik het de moeite waard om van de hue-account verplichting af te komen. En 't was ook wel leuk om allemaal uit te zoeken. :)


Overigens bestaan er ook community templates welke je kunt importeren (zelf nog niet toegepast):
https://community.home-assistant.io/c/blueprints-exchange/53
https://epmatt.github.io/...ers/philips_8718699693985
https://community.home-as...itch-rwl020-rwl021/255048

En anders kun je altijd zelf nog gaan bouwen:
https://www.home-assistant.io/integrations/scene/

Indien je je Hue Bridge had gekoppeld aan een Voice Assistant (zoals Google Home/Alexa/etc).
Dan kun je dat (betaald) via Home Assistant Cloud doen, een gratis alternatief.
Home Assistant zelf komt met dit voorstel, waar ik geen fan van ben omdat je dan het e.a. moet open zetten in je eigen firewall: https://www.home-assistant.io/integrations/google_assistant/

Of je gebruikt een Cloudflare tunnel, via deze tutorial:
https://everythingsmartho...ssistant-with-cloudlfare/

[ Voor 103% gewijzigd door Verwijderd op 19-12-2023 13:53 ]

Pagina: 1