Published on Wed Nov 09 2022 14:25:00 GMT+0000 (Coordinated Universal Time) by Teresa
Mnoho moderních zařízení pro chytrou domácnost využívá k připojení protokol Thread, rozhodla jsem se naši chytrou domácnost o tento protokol rozšířit. Jelikož koupit samostatný hub by nebyla taková zábava, rozhodla jsem se jít DIY cestou, jako s celou naší chytrou domácností.
Použitý hardware/software:
- ESP32-C6 - Verze C6 byla vybrána proto, jelikož jako jedna z mála podporuje IEEE 802.15.4, na kterém Thread pracuje. (možné je využít i verzi H2 či některé C5)
- Služby OpenThread Border Router a Matter server
- BILRESA - Chytré tlačítko od IKEA využívající Matter-over-Thread které slouží jako testovací zařízení
- Orange Pi s Home Assistantem (dále jen HA) - srdce celé chytré domácnosti
Nastavení ESP
Nejsem první, kdo se o toto pokouší, takže se dá na internetu sehnat již zkompilovaný Radio Co-Processor pro ESP. Já se rozhodla pro ten od uživatele parhelion publikovaný v jeho návodu na HA fóru. K nahrání jsem použila ESP Home. Jelikož se zbytek jeho konfigurace liší od té mé (využívá HAOS), nemohla jsem jeho návod použít.
Kontejnery pro Thread a Matter
Co to vlastně je Thread a Matter?
Thread (Síťová infrastruktura) - Jedná se o nízkoenergetický bezdrátový protokol založený na architektuře “mesh”. Podobně jako Wi-Fi nebo starší Zigbee se stará čistě o to, aby zařízení měla stabilní spojení. Matter (Aplikační vrstva) - Standardizovaný komunikační protokol, který běží nad sítěmi (nejčastěji právě nad Threadem, ale lze i po Wi-Fi nebo ethernetu). Řeší historický problém, kdy se zařízení různých výrobců nedokázala domluvit.
Kontejner OpenThread Border Router slouží jako síťový směrovač. Jeho hlavním úkolem je překládat standardní IP provoz z domácí Wi-Fi/LAN sítě do nízkoenergetické bezdrátové sítě 802.15.4 (Thread). ESP32-C6 funguje pouze jako fyzická anténa (Radio Co-Processor), zatímco tento kontejner obstarává veškerou logiku routování. Compose:
otbr:
image: openthread/border-router:latest
privileged: true
container_name: otbr
restart: always
cap_add:
- NET_ADMIN
environment:
OT_RCP_DEVICE: "spinel+hdlc+uart:///dev/ttyACM0"
OT_INFRA_IF: "eth0"
OT_THREAD_IF: "wpan0"
OT_REST_LISTEN_ADDR: "0.0.0.0"
#Port pro komunikaci
OT_REST_LISTEN_PORT: "8082"
OT_LOG_LEVEL: 5
OT_WEB_LISTEN_ADDR: "0.0.0.0"
# Port webového rozhraní
OT_WEB_LISTEN_PORT: 8083
devices:
- source: /dev/serial/by-id/usb-Espressif_USB_JTAG_serial_debug_unit_14:C1:9F:E4:B7:78-if00
target: /dev/ttyACM0
- /dev/net/tun
volumes:
- /mnt/dietpi_userdata/otbr/:/data/
network_mode: host
Dále bylo potřeba zprovoznit server pro již zmíněný Matter. Compose:
matter-server:
image: ghcr.io/home-assistant-libs/python-matter-server:stable
container_name: matter-server
restart: unless-stopped
network_mode: host
volumes:
- /mnt/dietpi_userdata/matter-data:/data/
- /run/dbus:/run/dbus:ro
Konfigurace HA
Následne jsem obě služby připojila do HA pomocí oficiálních integrací Open Thread Border Router a Matter. HA by měl oboje najít sám, případně se dají přidat ručně pomocí příslušné integrace a IP s portem - IP + port pro komunikaci pro OTBR a defaultního websocketu (ws://localhost:5580/ws) pro Matter.
Následně stačilo jen synchronizovat přihlašovací údaje Thread sítě do companion aplikace HA v telefonu a pomocí QR připojit zařízení. Zde jsem se setkala s menším problémem - Orange Pi nemělo IPv6 adresu (Thread komunikuje pouze pomocí IPv6, bez ní nefunguje), ale to se dalo změnou konfigurace jednoduše spravit.
