blog.vyoralek.cz

Centrum chytré domácnosti – HomeAssistant (Hass.io) – 10 část – vlastní Zigbee gateway

Desátá část o HomeAssistentovi popisuje jak si doma postavit vlastní Zigbee gateway plně integravanou do Hass.io.

Možná se budete ptát proč se vlastně do něčeho takového pouštět, když zde máme hotové produkty jako např. Xiaomi gateway.

Dva základní důvody pro:

  1. vlastní řešení je mnohem obecnější, tj. podporuje mnohem větší množinu Zigbee produktů, které lze s takto připravenou gateway provozovat – namátkou produkty Phillips, Ikea či Xiaomi – kompletní a aktuální přehled najdete zde.
  2. nejste přímo závislí na firmware výrobce gateway a tudíž nemusíte žít ve strachu, zda integrace do Hass.io s další aktualizací firmware přestane fungovat (což se některým již stalo dle komentářů) – tento bod má samozřejmě význam jen pokud gateway integrujete mimo základní ekosystém výrobce

Dva základní důvody proti:

  1. přijdete o podporu ovládání přes aplikaci výrobce, tj. např. v případě prvků od Xiaomi Mija či Aqara je to trochu škoda, jelikož aplikace je poměrně vyvedená
  2. náročnost instalace – oproti hotové zakoupené gataway to v případě vlastní gateway není pouze o tom koupit si HW, zapojit a ono to vše bude fungovat. I samotné párování vzhledem k obecnosti gateway může být poněkud komplikovanější. Nicméně s níže uvedeným návodem to věřím zvládnete – pojďme tedy do toho 🙂

1. Potřebný hardware

Pro samotný Zigbee gateway si vystačíme s USB donglem – konkrétně pro naše potřeby budeme potřebovat verzi CC2531 od Texas Instruments.

💡 Při objednávání si dejte pozor zda skutečně máte vybraný CC2531 a ne CC2540. Oba USB dongly vypadají na první pohled totožně, ale ten druhý je na Bluetooth – tuto chybu jsem udělal já 😎

Zigbee USB dongle - čip CC2531 od Texas Instruments
Zigbee USB dongle – čip CC2531 od Texas Instruments

No čipu tohoto USB donglu však budeme potřebovat nahradit firmware, což přináší potřebu dvou dalších součástek:

  • redukce z 10pinového malého kabelu na větší variantu
  • CC debugger – krabička nutná pro nahrání vlastního firmware do čipu CC2531
10pinová redukce
10pinová redukce
CC debugger – programátor pro CC2531

Pokud by někoho zajímal detailně význam jednotlivých pinů:

PIN schéma
PIN schéma

Nákupní seznam

Zigbee Sniffer Wireless Board CC2531 + 10pin redukce

Samotný Zigbee modul sloužící jako gateway = Zigbee koordinátor

$9.48 AliExpress

CC Debugger – Bluetooth / Zigbee Emulated Programmer

Programátor Bluetooth / Zigbee čipů od firmy Texas Instruments – použijeme pro nahrání firmware do Zigbee modulu.

Alternativně:

SmartRF04EB Programmer

Alternativní Bluetooth / Zigbee programátor pro čipy od firmy Texas Instruments – nemám zatím odzkoušeno.

2. Nahrání firmware do USB dongle CC2531

Pokud máme všechen potřebný hardware můžeme se rovnou pustit do přehrání firmwaru v Zigbee USB donglu. K tomu budeme potřebovat nejprve všechny komponenty spojit dohromady.

10pinový konvertor patří doprostřed a menší kabel zapojíme do USB donglu a ten větší do CC debuggeru. Na obrázku si zkontrolujte červené linky kabelů.

Zapojení všech částí dohromady
Zapojení všech částí dohromady

Pokud jste vše zapojili správně pak po zapojení CC debuggeru do USB počítače by se měl rozstívit jak USB dongle zeleně tak i samotný CC debugger. Pokud by svítil červeně tak zkuste nejprve zmáčknout restart na CC debuggeru a poté donglu – mělo by to být tlačítko dále od USB konektoru.

Nakonec zapojíme i samotný USB dongle do USB počítače – ano budeme mít tak zapojené dva USB konektory, což je poněkud neobyklé v porovnání s fleshováním firmware z předchozích článků.

Dále budeme potřebovat aplikaci pro nahrání firmware. Postupy se poměrně výrazně liší pro Windows a MacOS + Linux, nicméně ukážeme si oba.

2.1 Windows

2.1.1 Instalace aplikace pro nahrání firmware – SmartRF

Aplikaci SmartRF pro Windows si stáhneme přímo ze stránek firmy Texas Instruments – SmartRF Flash Programmer

Smart RF 1.x pro Windows
Smart RF 1.x pro Windows

💡 Pozor – je potřeba si stáhnout verzi 1.x

Aplikace je zdarma, ale budete potřebovat si na stránkách Texas Instruments vytvořit účet. Proces bohužel není úplně nejrychlejší a obsahuje několik kroků.

Jakmile jsme přihlášení vrátíme se k stránce ke stažení SmartRF, aplikaci stáhneme na disk, rozbalíme a spustíme.

Archív aplikace SmartRF
Archív aplikace SmartRF

Samotný průvodce instalací je přímočarý, a tak jen odklikneme několikrát Next a máme hotovo.

Instalační program SmartRF
Instalační program SmartRF

2.1.2 Instalace ovladače CC debuggeru

Tím ale ještě instalace nekončí – budeme potřebovat nainstalovat ovladač CC debuggeru. Ten si opět stáhneme ze stránek Texas Instruments – CC debugger driver.

Obsah archívu s ovladačem CC debuggeru
Obsah archívu s ovladačem CC debuggeru

CC debugger nyní připojíme do USB a spustíme instalaci driveru. Po dokončení doporučuji se podívat do správy počítače, zda tam máme nově položku CC Debugger a neobsahuje nějaké chyby.

CC debugger ve správě počítače
CC debugger ve správě počítače

2.1.3. Nahrávání nového firmware

Stáhneme si nový firmware z adresy https://github.com/Koenkk/Z-Stack-firmware/tree/master/coordinator/Z-Stack_Home_1.2/bin/default

Obsah archívu s novým firmware
Obsah archívu s novým firmware

… a spustíme aplikaci Flash Programmer (což je název pro aplikaci Smart RF).

V aplikaci je potřeba vyplnit pouze dvě položky:

  • Flash image – cesta k hex souboru nového firmware
  • Actions – vybereme Erase, program and verify

Vše spustíme kliknutím na Perform actions.

2.2 MacOS nebo Linux

2.2.1. Instalace balíčků potřebných pro kompilaci

Pro Linux (Ubuntu)

apt install dh-autoreconf libusb-1.0 libboost-all-dev

Pro MacOS

brew install autoconf automake libusb boost pkgconfig libtool

2.2.2. Kompilace CC-Tool – aplikace pro nahrání firmware

Stáhneme si repozitář aplikace CC-Tool a spustíme kompikaci:

git clone https://github.com/dashesy/cc-tool.git
cd cc-tool
./bootstrap
./configure
make

Pokud vše kompikace proběhne vpořádku měli byste vidět následující:

  CXX      src/common/common.o
  CXX      src/common/timer.o
  CXX      src/usb/usb_device.o
  CXX      src/data/binary_file.o
  CXX      src/data/data_section.o
  CXX      src/data/data_section_store.o
  CXX      src/data/file.o
  CXX      src/data/hex_file.o
  CXX      src/data/read_target.o
  CXX      src/data/progress_watcher.o
  CXX      src/programmer/cc_253x_254x.o
  CXX      src/programmer/cc_251x_111x.o
  CXX      src/programmer/cc_243x.o
  CXX      src/programmer/cc_programmer.o
  CXX      src/programmer/cc_unit_driver.o
  CXX      src/programmer/cc_unit_info.o
  CXXLD    cc-tool

💡Pokud se kompilace nepovede a skončí s hláškou ld: symbol(s) not found for architecture x86_64, pak zkontrolujte zda máte poslední verzí Code. Mě aktualizace pomohla a build už byl napodruhé úspěšný.

2.2.3. Záloha stávajícího firmware

Pokud byste se z jakéhokoliv důvodu potřebovali vrátit zpět k původnímu firmware je dobrým zvykem udělat si zálohu.

Nejprve si zkontrolujeme, že máme všechny komponenty propojené a zapojené do USB počítače a poté už můžeme spustit příkaz:

./cc-tool -r backup.bin
  Programmer: CC Debugger
  Target: CC2531
  Reading flash (256 KB)...
  Completed (177.40 s.)

2.2.4. Nahrávání nového firmware

Stáhneme si nový firmware z adresy https://github.com/Koenkk/Z-Stack-firmware/tree/master/coordinator/Z-Stack_Home_1.2/bin

Obsah archívu s novým firmware
Obsah archívu s novým firmware

a z archívu budeme potřebovat soubor s přípnout hex.

Můžeme se vrhnout na nahrání nového firmware:

./cc-tool -e -w CC2531ZNP-Prod.hex
  Programmer: CC Debugger
  Target: CC2531
  Erasing flash...
  Completed
  Writing flash (241 KB)...
  Completed (17.96 s.)

2.5 Nutná aktualizace firmware při addonu >1.5

Po aktualizaci Hass.io addonu přestal USB dongle fungovat. Nějakou dobu mi trvalo než jsem si všiml, že se i poměrně změnila konfigurace.

Pokud jste tedy fleshovali USB dříve a máte aktuálně problém s funkčností pak aktualizujte firmware na poslední dostupnou verzi – mě zafungovalo tato: 20190608. Lokace je stále stejná jako výše a postup nahrávání také.

3. Hass.io – MQTT server

Hardwarovou část už máme kompletně připravenout – jednotlivé komponenty můžeme rozpojit a USB dongle zapojit do počítače na kterém ho budeme provozovat.

Nyní se vrhneme na softwarovou část pro Zigbee. Návod bude kompletně pro Hass.io (Home Assistent), jelikož díky existujícím addonům budeme mít instalaci výrazně zjednodušenou.

💡Pokud už máte MQTT server nainstalovaný můžete kompletně tuto kapitolu přeskočit.

Pro naše účely použijeme jeden z oficiálních addonů Hass.io a to Mosquitto broker.

Najdete ho v sekci Hass.io -> Add-on Store -> Official add-ons -> Mosquitto broker.

MQTT - Mosquitto broker jako addon pro Hass.io
MQTT – Mosquitto broker jako addon pro Hass.io

V konfiguraci oproti výchozímu stavu přidáme do sekce logins informace o MQTT uživateli a heslu – pokud tedy chceme MQTT používat s přihlašovacími udaji.

{
  "logins": [
    {
      "username": "<NAHRADTE_MQTT_UZIVATELEM>",
      "password": "<NAHRADTE_MQTT_HESLEM>"
    }
  ],
  "anonymous": false,
  "customize": {
    "active": false,
    "folder": "mosquitto"
  },
  "certfile": "fullchain.pem",
  "keyfile": "privkey.pem",
  "require_certificate": false,
  "quiet_logs": true
}

Konfiguraci uložíme a addon spustíme. Při úspěšném spuštění bychom měli v logu vidět cca. něco následujícího:

[18:42:30] INFO: Setup mosquitto configuration
[18:42:30] INFO: Found local users inside config
[18:42:31] INFO: Initialize Hass.io Add-on services
[18:42:31] INFO: Initialize Home Assistant discovery
[18:42:31] INFO: Start Mosquitto daemon
1578678151: mosquitto version 1.6.3 starting
1578678151: Config loaded from /etc/mosquitto.conf.
1578678151: Loading plugin: /usr/share/mosquitto/auth-plug.so
1578678151:  ├── Username/password checking enabled.
1578678151:  ├── TLS-PSK checking enabled.
1578678151:  └── Extended authentication not enabled.
1578678151: |-- *** auth-plug: startup
1578678151: Opening ipv4 listen socket on port 1883.
1578678151: Opening ipv6 listen socket on port 1883.
1578678151: Opening websockets listen socket on port 1884.

4. Hass.io – Zigbee2MQTT

Dalším addonem, který budeme potřebovat je Zigbee2MQTT. Jedná se o addon, který obstarává komunikaci mezi Zigbee USB donglem a Home Assistentem prostřednictvím MQTT zpráv.

Jelikož tento addon není součástí standardní instalace Hass.io přidáme nejprve nový zdroj addonů s adresou https://github.com/danielwelch/hassio-zigbee2mqtt

Nový zdroj addonů - Zigbee2mqtt
Nový zdroj addonů – Zigbee2mqtt

Jakmile je zdroj aktivní můžeme rovnou kliknout na addon zigbee2mqtt a nainstalovat ho.

zigbee2mqtt bridge jako addon pro Hass.io
zigbee2mqtt bridge jako addon pro Hass.io

Oproti výchozí konfiguraci přidáme nakonec tři nové položky – mqtt uživatele, (mqtt_user), heslo (mqtt_pass) a pokud nejste masochisti tak doporučuji vypnout i zelenou LEDku (disable_led) na USB dounglu.

4.1 Konfigurace pro addon po verzi 1.4

{
  "data_path": "/share/zigbee2mqtt",
  "homeassistant": true,
  "permit_join": false,
  "mqtt_base_topic": "zigbee2mqtt",
  "mqtt_server": "mqtt://homeassistant",
  "serial_port": "/dev/ttyACM0",
  "devices": [],
  "network_key": [],
  "mqtt_user": "<NAHRADTE_MQTT_UZIVATELEM>",
  "mqtt_pass": "<NAHRADTE_MQTT_HESLEM>",
  "disable_led": false
}

4.2 Konfigurace pro addon od verze 1.5

{
  "data_path": "/share/zigbee2mqtt",
  "devices": "devices.yaml",
  "groups": "groups.yaml",

  # Povinné: integrace do Home Assistant (MQTT discovery)
  "homeassistant": true,

  # Povinné: umožní spárování nových Zigbee zařízení
  #          po nastavení všech zařízení vyplněte
  "permit_join": false,

  "mqtt": {
    "base_topic": "zigbee2mqtt",
    "server": "mqtt://homeassistant",
    "user": "<NAHRADTE_MQTT_UZIVATELEM>",
    "password": "<NAHRADTE_MQTT_HESLEM>"
  },
  "serial": {
    # Povinné: USB lokace CC2531 USB donglu
    "port": "/dev/ttyACM0",
    
    # Volitelné: Můžeme vypnout stavovou zelené LEDku na donglu
    "disable_led": true
  }
}

Konfiguraci uložíme a můžeme startovat.

Pokud bychom při startu dostali chybu při inicializaci USB donglu doporučuji si podívat do sekce Hass.io -> System -> Host system -> Hardware, zda máte v seznamu položku /dev/ttyACM0. Ta je výchozí lokací pro USB donglu i v konfiguraci zigbee2mqtt. Pokud váš PC používá jinou adresu bude potřeba ji změnit v konfiguraci serial_port zigbee2mqtt adddonu.

Seznam sériových portů v Hass.io
Seznam sériových portů v Hass.io

Korektní start by mohl vypadat v logu nějak přibližně takto:

zigbee2mqtt:info 5/4/2019, 7:03:13 PM Logging to directory: '/share/zigbee2mqtt/log/2019-05-04.19-03-13'
  zigbee2mqtt:info 5/4/2019, 7:03:13 PM Starting zigbee2mqtt version 1.3.1 (commit #unknown)
  zigbee2mqtt:info 5/4/2019, 7:03:13 PM Starting zigbee-shepherd
  zigbee2mqtt:info 5/4/2019, 7:03:14 PM zigbee-shepherd started
  zigbee2mqtt:info 5/4/2019, 7:03:14 PM Coordinator firmware version: '20190223'
  zigbee2mqtt:info 5/4/2019, 7:03:14 PM Currently 1 devices are joined:
  zigbee2mqtt:info 5/4/2019, 7:03:14 PM 0x00158d0002ea764c (0x00158d0002ea764c): WXKG01LM - Xiaomi MiJia wireless switch (EndDevice)
  zigbee2mqtt:info 5/4/2019, 7:03:14 PM Zigbee: disabling joining new devices.
  zigbee2mqtt:info 5/4/2019, 7:03:14 PM Connecting to MQTT server at mqtt://homeassistant
  zigbee2mqtt:info 5/4/2019, 7:03:14 PM zigbee-shepherd ready
  zigbee2mqtt:info 5/4/2019, 7:03:15 PM Connected to MQTT server

Řešení chyby: Failed to start zigbee

Pokud vám Zigbee2MQTT nenaběhne úspěšně, ale naopak skončí s chybou níže:

zigbee2mqtt:info 2020-02-16 22:33:15: Starting zigbee-herdsman...
zigbee2mqtt:error 2020-02-16 22:34:04: Error while starting zigbee-herdsman
zigbee2mqtt:error 2020-02-16 22:34:04: Failed to start zigbee
zigbee2mqtt:error 2020-02-16 22:34:05: Exiting...
zigbee2mqtt:error 2020-02-16 22:34:05: Error: AREQ - SYS - resetInd after 30000ms

… pak dle komentáře čtenáře Lukáše často pomůže dongle pouze restartovat tlačítkem umístěným na samotném donglu.

5. Hass.io – konfigurace

Kromě přidání výše uvedených addonů MQTT a zigbee2mqtt bude potřeba přidat i pár řádků do základní konfigurace Home Assistenta.

5.1 MQTT integrace

💡 Původně jsem zde měl odstavec ohledně ručního přidávání MQTT brokeru do configuration.yaml souboru, což už ale není potřeba, takže si ukážeme novější způsob.

Instalace MQTT addonu nám pouze ulehčuje práci s instalací MQTT serveru, ale ještě přímo neintegruje MQTT server do HomeAssistenta. To je potřeba přidáním pár řádků do configuration.yaml

V Home Assistentovi si najdeme Nastavení / Integrace a tam bychom v sekci Objeveno měli vidět mj. MQTT a u něj klikneme na konfigurovat.

V dalším okně si zatrhneme povolit automatické vyhledávání zařízení:

.. a pokud šlo vše hladce měli bychom vidět informaci o úspěšném přidání brokeru.

5.2 Pomocné entity pro Zigbee2MQTT gateway

Opět do souboru configuration.yaml do příslučných sekcí přidáme tři nové entity:

  • stav Zigbee gateway, tj. zda je online či nikoliv
  • přepínač pro povolení párování Zigbee zařízení
  • čas po kterém se automaticky vypné párovací mód Zigbee gateway
sensor:
 - platform: mqtt
    name: Bridge state
    state_topic: "zigbee2mqtt/bridge/state"
    icon: mdi:router-wireless   

input_boolean:
  zigbee_permit_join:
    name: Povolit párování
    initial: off
    icon: mdi:cellphone-wireless

timer:
  zigbee_permit_join:
    name: Zbývající čas
    duration: 600 # Čas v sekundách, tj. 10min. 

5.3 Automatizace potřebné pro párování Zigbee zařízení

Abychom byli schopni přepínat Zigbee USB dongle do párovacího režimu připravíme si hned několik automatizací, které nám pomůžou.

Kód k automatizacím je poměrně dlouhý, takže ho přímo v článku neuvádím – najdete ho na mém Gitu v souboru configuration.yaml.

5.4 Home Assistent UI

A konečně poslední úpravou je přidání uživatelského rozhraní, pomocí kterého budeme mít přehled o Zigbee donglu.

Já jsem použil úplně novou záložku do systému lovelace, o kterém jsem zatím tuším ještě nepsal. Pokud budete mít nějaké dotazy klidně se zeptejte v komentářích.

---
id: zigbee
title: Zigbee
icon: mdi:zigbee
cards:
  - type: entities
    entities:
    - entity: input_boolean.zigbee_permit_join
    - entity: timer.zigbee_permit_join
    - entity: sensor.bridge_state
    show_header_toggle: false
    title: Zigbee

Vzhledově to pak vypadá nějak takto:

6. Párování Zigbee zařízení

A konečně předposlední kapitolou je samotné párování Zigbee zařízení s naší novou Zigbee gateway.

Nejprve si povolíme párování na Zigbee gateway pomocí přepínače, který jsme si přidali do Hass.io a budeme mít tak 10minut čas na zpárování.

Postup ukážu na příkladě Xiaomi tlačítka, nicméně obecně platí, že by měl být stejné jako s originálním SW, i když s tím rozdílem, že to nebude tak uživatelsky přívětivé – alespoň tedy zatím.

Seznam Xiaomi Zigbee zařízeních s postupem párování jsem sepsal v přechozím článků o ekosystému Xiaomi Miija a Aqara.

Doporučuji tedy začít v Logu zigbee2mqtt, který najdeme v Hass.io -> Dashboard -> zigbee2mqtt -> Log. Bohužel si tedy musíme ručně log refreshovat pomocí tlačítka refresh.

V případe Xiaomi tlačítka si z originálního návodu můžeme zjistit, že zpárování se provádí zmáčknutím a držením resetovacího tlačítka po dobu delší než tři sekundy.

Pokud to takto uděláme s největší pravděpodobností se nám v logu objeví chybová hláška:

  zigbee2mqtt:error 5/4/2019, 5:04:16 PM Cannot get the Node Descriptor of the Device: 0x00158d0002ea764c (Error: Timed out after 10000 ms)

… která nám říká, že se sice zařízení s id 0x00158d0002ea764c pokoušelo zpárovat, ale během 10 sekund systém nedostal plnou odpověď. Celý problém tkví v tom, že při oficiálním párování si aplikace pohlídá aby se zařízení neuspalo. V našem případě to budeme muset udělat manuálně a cca. každou sekundu po prvotním zablikání mačkat resetovací tlačítko do doby, než se nám v logu zobrazí:

  zigbee2mqtt:info 5/4/2019, 5:12:34 PM New device 'undefined' with address 0x00158d0002ea764c connected!
  zigbee2mqtt:info 5/4/2019, 5:12:34 PM MQTT publish: topic 'zigbee2mqtt/bridge/log', payload '{"type":"device_connected","message":"0x00158d0002ea764c","meta":{}}'

Jak dále v logu uvidíme, zařízení se ním automaticky přidá i do HomeAssistenta se všemi podporovanými atributy:

zigbee2mqtt:info 5/4/2019, 5:12:38 PM MQTT publish: topic 'homeassistant/sensor/0x00158d0002ea764c/click/config', payload '{"icon":"mdi:toggle-switch","value_template":"{{ value_json.click }}","expire_after":1,"state_topic":"zigbee2mqtt/0x00158d0002ea764c","json_attributes_topic":"zigbee2mqtt/0x00158d0002ea764c","name":"0x00158d0002ea764c_click","unique_id":"0x00158d0002ea764c_click_zigbee2mqtt","device":{"identifiers":"zigbee2mqtt_0x00158d0002ea764c","name":"0x00158d0002ea764c","sw_version":"Zigbee2mqtt 1.3.1","model":"MiJia wireless switch (WXKG01LM)","manufacturer":"Xiaomi"},"availability_topic":"zigbee2mqtt/bridge/state"}'
zigbee2mqtt:info 5/4/2019, 5:12:38 PM MQTT publish: topic 'homeassistant/sensor/0x00158d0002ea764c/battery/config', payload '{"unit_of_measurement":"%","device_class":"battery","value_template":"{{ value_json.battery }}","state_topic":"zigbee2mqtt/0x00158d0002ea764c","json_attributes_topic":"zigbee2mqtt/0x00158d0002ea764c","name":"0x00158d0002ea764c_battery","unique_id":"0x00158d0002ea764c_battery_zigbee2mqtt","device":{"identifiers":"zigbee2mqtt_0x00158d0002ea764c","name":"0x00158d0002ea764c","sw_version":"Zigbee2mqtt 1.3.1","model":"MiJia wireless switch (WXKG01LM)","manufacturer":"Xiaomi"},"availability_topic":"zigbee2mqtt/bridge/state"}'
zigbee2mqtt:info 5/4/2019, 5:12:38 PM MQTT publish: topic 'homeassistant/sensor/0x00158d0002ea764c/linkquality/config', payload '{"unit_of_measurement":"-","value_template":"{{ value_json.linkquality }}","state_topic":"zigbee2mqtt/0x00158d0002ea764c","json_attributes_topic":"zigbee2mqtt/0x00158d0002ea764c","name":"0x00158d0002ea764c_linkquality","unique_id":"0x00158d0002ea764c_linkquality_zigbee2mqtt","device":{"identifiers":"zigbee2mqtt_0x00158d0002ea764c","name":"0x00158d0002ea764c","sw_version":"Zigbee2mqtt 1.3.1","model":"MiJia wireless switch (WXKG01LM)","manufacturer":"Xiaomi"},"availability_topic":"zigbee2mqtt/bridge/state"}'

Tlačítko je nyní už funkční a pokud na něj klikneme v logu se nám objeví:

 zigbee2mqtt:info 5/4/2019, 5:13:10 PM MQTT publish: topic 'zigbee2mqtt/0x00158d0002ea764c', payload '{"linkquality":110,"duration":1526,"click":"single"}'

Zároveň v Configuration -> Integrations bychom měli vidět položku MQTT:

Zkonfigurovaná MQTT
Zkonfigurovaná MQTT

na kterou když klikneme tak uvidíme námi spárované Xiaomi tlačítko:

MQTT - seznam dostupných entit
MQTT – seznam dostupných entit

Jelikož ID ze Zigbee nejsou úplně ideálně popisné může se nám hodit přejmenování v HomeAssistentovi. To můžeme udělat i přes UI, pokud klikneme na jednu z položek a pak klikneme na ozubené kolo vpravo nahoře:

Přejmenování entity v Hass.io
Přejmenování entity v Hass.io

Po přejmenování pak seznam může vypadat poněkud více popisně:

7. Přidání Zigbee zařízení do UI

Poslední kapitola je už o poněkud obecném přidání zařízení do UI. Z logu zigbee2mqtt nebo výše uvedené integrace MQTT si můžeme zjistit ID zařízení, které pak najdeme mezi entitami v HomeAssistentovi.

Například po vyfiltrování na ID přidaného tlačítka vidíme tři entity typu sensor. Jedna nás informuje o stavu baterie, druhá o typu kliknutí a třetí o kvalitě signálu.

Seznam entit v Hass.io
Seznam entit v Hass.io

V Homeassistentovi pak máme tyto položky i automaticky v states dashboardu:

Položky v UI
Položky v UI

Veškeré konfigurace jako obvykle jsou uložený i na mém Gitu.

💡Pokud máte větší byt a nebo dům mohl by se vám kromě Zigbee koordinátoru ještě hodit silnější router a pokud jste navíc kutilové pak by vás to mohlo i bavit – koukněte na článek o tom jak si postavit vlastní Zigbee router.

Snažil jsem se popsat v článku všechny části poměrně do detailu. Pokud však narazíte na nějaký problém, který zde není popsaný, neváhejte se ozvat v komentářích. Totéž platí pokud máte nějaký zlepšovák 🙂

Kompletní série o HomeAsistantovi obsahuje následující články:

  • 1. část – Představení HomeAsisstent – tento článek
  • 2. částIntegrace Sonoff s firmware Sonoff-Tasmota
  • 3. částIntegrace Homekit
  • 4. částIntegrace Sonoff s firmware Sonoff-Tasmota – 2 část
  • 5. částIntegrace s Wemos D1 a senzory teploty
  • 6. částIntegrace Sonoff s firmware ESPHome
  • 7. částIntegrace Sonoff POW s firmware ESPHome
  • 8. částIntegrace LED Magic Home s firmware ESPHome
  • 9. částIntegrace Xiaomi Mijia a Aqara
  • 10. část – Integrace vlastní Zigbee gateway
  • 11. část – Vzdálený přístup do Hass.io z Internetu
  • 12. část – zobrazení senzorových data pomocí InfluxDB a Grafany
  • 13. část – Hass.io Add-ony, které používám
  • 14. část – Integrace Xiaomi Mi Flora
  • 15. část – Integrace Withings (Nokia)
  • 16. část – náhrada SQLite databází MySQL
  • 17. část – HACS Add-ony – instalace a konfigurace

45 komentářů

Napsat komentář

Tato stránka používá Akismet k omezení spamu. Podívejte se, jak vaše data z komentářů zpracováváme..

  • Dobrý den, takže jestli jsem to dobře pochopil, tak budou fungovat i veškerá další gadget, které Xiaomi nabízí (pohybové, teplotní, dveřní sensory), aniž bych musel kupovat Xiaomi Aqara Smart Home Gateway? Budou na to reagovat automatizace a všechny ostatní?

    • Drobně jsem ještě doplnit první odstavec o link se seznamem podporovaných produktů, čili obecně ano – doporučuji se kouknout do seznamu na https://www.zigbee2mqtt.io/information/supported_devices.html na konkrétní Xiaomi produkt. Co se týče automatizace, jak je uvedeno vytvoří to entity v homeassistentovi, čili s těmito automatizacemi to použít jde. Zapomněl jsem na jedno negativum a to, že přijdete na možnost ovládání přes Xiaomi Home aplikaci, která vůbec není špatná. Čili je to vždy na zvážení pro a proti.

  • Ještě se chci zeptat, co se týče dosahu, když bude zapojeno do USB v Raspberry Pi oproti Xiaomi Aqara Smart Home Gateway, jak to bude s dosahem na ona zařízení, nebude mít Xiaomi gateway větší dosah, když může být umístěna do jakékoli zásuvky? Nebo lze také Zigbee Sniffer zapojit jinak než do Raspberry?

    • Jelikož se jedná o USB dongle tak to můžete provozovat pouze v počítači. Nelze to přímo píchnout do zásuvky. Můžete však použít prodlužovací USB kabel a USB dongle tak od Raspberry Pi posunout, aby vám to vyhovovalo lépe.

      • USB dongle doporučuji na 50 cm kabel mimo RPi a na prodloužení signálu se používá Zigbee router, nebo originál Xiaomi Zigbee zásuvka. Vše je popsáno v dokumentaci. Funguje vše na jedničku.

  • Dobrý den,
    Firmware lze nahrát ardruinem nebo weemosem není třeba kupovat programátor

  • Jsem pouze začátečník (používám HA pár dní), ale zjistil jsem, že v tomho článku je vše umístěné v “configuration.yaml” včetně automatizací jako zapnutí časovače a párování (zigbee_permit_join). Pokud potom chceme nějaké svoje automatizace přes editor (Nastavení – Automatizace – Editor automatizací), tak to hodí chybu, že je nutné použít soubor “automations.yaml”. Tak jsem zkusil tedy v configuration.yaml v řádku automation dopsat !include automations.yaml a časovač včetně permit join jak je výše uvedeno dát sem. Myslím, že je potom výhoda pokud si napíšeme vlastní automatizace, dát pouze “reload automatization” a nerestartovat celý HA. Ale třeba se mýlím 🙂

    • Mě se to zdá zbytečný overkill. Jestli to dobře chápu, tohle je jen deska do které se dá zapojit buď WiFi a nebo Bluetooth modul, který ale není součástí, takže se to ve svém důsledku asi dost prodraží. USB dongle je levný a univerzální. Ale jeslti má někdo zkušenosti a je tam nějaký další přínos prosím o něj.

  • Dobrý den,
    můžu poprosit o kód nějaké jednoduché automatizace která používá ZigBee? Mám podle návodu připojené xiaomi čidlo dveří a zigbee spínač. Přes panel HA vidím že se dveře otevřely a můžu tlačítkem sepnout spínač. Nedaří se mi ale nastavit automatizaci aby při otevření dveří sepl spínač a při zavření rozepl.
    Děkuji

    • Máte pravdu, že to mi tady ještě chybí a myslím, že by se to hodilo napsat do článku.. čili zkusím tento víkend.

    • Dobrý den,

      zdá se mi to stejné jako všechny ostatní, udělal z tlačítka vypínač jednoduše přes gui:

      id: ‘1573754405895’
      alias: ‘Kulaté tlačítko ‘
      description: ”
      trigger:

      entity_id: sensor.0x00158d000359e295_click
      platform: state
      to: single
      condition: []
      action:
      service: light.toggle
      service: switch.toggle

  • Dobrý den chci se zeptat jestli neplánuje vytvořit návod pro xbee + shild pro usb ( raspberry pi).
    Jde mi o dosah mám 2 patrový dum+ zahrada. Děkuji.

    • Dobrý den, zatím nikoliv, jelikož Raspberry Pi používám momentálně jen na testování – v reálném provozu mám NanoPC, kam by se to přímo napasovat nedalo. Nicméně o tom dosahu jsem také uvažoval – je škoda, že neexistuje podobně jednoduché řešení pro Zigbee jako např. pro Bluetooth s ESP32, nebo o něm zatím nevím. Mít kvůli tomu další Raspberry mi momentálně přijde moc.

  • Dobrý den,
    dnes mi přestal dongle 2531, verze zigbee addonu je 1.4.0
    chyba vypadá takto:
    {“message”:”request timeout”,”stack”:”Error: request timeout\n at CcZnp. (/zigbee2mqtt-1.4.0/node_modules/cc-znp/lib/ccznp.js:269:22)\n at Object.onceWrapper (events.js:273:13)\n at CcZnp.emit (events.js:182:13)\n at Timeout. (/zigbee2mqtt-1.4.0/node_modules/cc-znp/lib/ccznp.js:248:18)\n at ontimeout (timers.js:436:11)\n at tryOnTimeout (timers.js:300:5)\n at listOnTimeout (timers.js:263:5)\n at Timer.processTimers (timers.js:223:10)”}
    zigbee2mqtt:error 12/5/2019, 9:14:07 PM Failed to mount the cieApp

    nevíte prosím co se mohlo stát, restarty, odpojování nepomáhá

    • Bude to asi potřebovat více času, ale zkusil bych upgradovat na nejnovější verze. Sám mám stejný dongle aktuálně na verzi 1.7.1, ale bylo potřeba nahradit i firmware v samotném donglu. Postup instalace je ale pořád stejný. Ideální pak mít dongly dva a na jednom si to nejprve vyzkoušet a to samé pak s HomeAssistentem.

  • Ahojte,

    ja som postupoval podla tohto navodu a bezi mi vsetko OK (dakujem za navod). Mam jeden dongle ako coordinator a druhy ako router a pokryvam tak cely byt (86m2) na ktore mam pripojene wall/wifi vypinace, zaves, zasuvky. Teplotne, vodne, dverove senzory mam pripojene na dve xiaomi gatewaye (mam problem, ze mi vypadavaju gw z nicoho nic na 50 minut ale senzory to neovplyvnuje kdezto pri vypinacoch to bol problem, ze nereagovali). Bezim na HASS a raspberry pi 4 4GB.

    Obrazok Zigbee2mqtt mapy:
    https://ibb.co/4TPbV11

    Dakujem za super blog 🙂

    • Ještě dotaz, mám 2ks gateway,budou mi pak k něčemu nebo už na nic.
      Nemohli by být něco jako ten router na posílení signálu ?

      • Tohle je poměrně zajímavý dotaz i pro mě stále. Pokud tomu dobře rozumím, tak zařízení ví s kterou gateway (někdy se tomu také říká koordinátor) komunikovat díky tomu, že jsou spolu spárovány, tj. druhá gateway nemůže sloužit jako posílání signálu, ale je možné na ni zařízení spárovat pokud jsou blíže. Čili nic nebrání mít dvě, ale pro posílání signálu se více hodí tzv. router – brzy sepíšu do článku.

  • Ahojte, mam dva dongle. Jeden coordinator a druhy ako router. Slape to super 🙂

    • Ahoj. Oba jsou v jednom PC? Nebo ten router je někde jinde ? Vysílací výkon je lepší ?
      Máš někde návod ,nebo popis který bych si pročetl ? Dík moc.

      • Mám už na cestě nějaké další komponenty z kterých chci pak udělat routery pro Zigbee, což se bude hodit zejména těm co mají dům. Takže určitě někdy brzy bych rád sdílel mé dojmy i zde 🙂

        • Ahoj. Jak to vypadá . Už něco dorazilo ? Brouzdám po netu,ale moc toho neí ,tak spoléhám více méně na tvůj parádní blog. JK

          • Ještě mě chybí poslední část, ale většinu mám už doma. Myslím že bych to brzy konečně mohl dát dohromady 🙂

          • Tak článek už je venku. Koukal jsem, že jsi to zatím vyřešil jinak, nicméně věřím že to i tak může být inspirativní 🙂

    • Zdravím, prosím o radu jak nastavit dva zigbee dongle. nyní mám jeden, ale uvažuji o rozšíření pokrytí, ale nevím jak to v Home Assistantovi nastavit.
      Díky za rdu

  • Ahoj, konečně dorazil potřebný hardware, ale samozřejmě mám problém 🙁 Přehrání FW atd. proběhl v pořádku, problém jsem objevil až když jsem chtěl spárovat nové zařízení. Zdá se, že nefungují ani ty automatizace, pokud povolím v lovelace párování, ani to nespustí timer a entita sensor.bridge_state také není k dispozici.

    MQTT broker a zegbee2mqtt se zdají podle logu OK. Log z HA už ale ne.

    Config entry for mqtt not ready yet. Retrying in 10 seconds.
    17:39 config_entries.py (WARNING)
    Error handling when_setup callback for mqtt
    17:39 components/mqtt/init.py (ERROR)
    Exception occurred:
    17:39 /usr/local/lib/python3.7/site-packages/zeroconf/init.py (WARNING)
    Error doing job: Task exception was never retrieved
    17:39 components/mqtt/init.py (ERROR)
    Config entry for mqtt not ready yet. Retrying in 5 seconds.
    17:39 config_entries.py (WARNING)

    Dokáže mi někdo poradit ?
    Díky

    • Ahoj, myslím že to mohlo být poněkud zastaralou částí návodu, která už nefunguje správně. Koukni na odstavec 5.1. Celý jsem ho přepsal a podle této verze by to snad mělo šlapat.

      • Ještě před tvou odpovědí se mi to podařilo rozjet, jen přesně nevím jak 😀 Celé jsem to udělal znovu a na základě postupů z jiných webů jsem v configuration.yaml upravil řádek broker: core-mosquitto

        Potom už to aspoň ukazovalo stav Online, ale nemyslím si, že to byl jediný problém.

  • Ahoj , ďakujem za super návod. Dnes je to (HassOS a plugin 1.8.0) zase trošku inak – lepšie. Keď stlačíš párovanie na senzore tak sa automaticky objaví v MQTT bez chýb v logu. Mám na teba ja otázočku. Riešil si že senzory ukazujú stav batérie 100%?

    • Ahoj, ohledně baterie mě to taky trochu štve. Koukal jsem se na to a podle všeho by to mělo jít poměrně odhadnout na základě aktuálního napětí baterie, která se ze zařízení vrací také. Dokonce tam vidím i ve zdrojácích konvertory pro např. Xiaomi Switch button, ale z nějakého důvodu to není aplikované – resp. to vrací stále 100%. Ještě jsem neměl čas se do toho ponořit více, ale řešení by mělo určitě existovat. A tak trochu doufám, že to s nějakou další verzí začne fungovat samo 🙂

      • mě ukazuje 100% jen xiaomi kulaté tlačítko ikea tlačítko i xiaomi teplotní čidlo ne. ale používám verzi “edge” kvůli ikea žárovce která jinak nebylo rozpoznaná.

  • Dobrý den, možná je to jen prkotina, ale všiml jsem si, že při flashování firmwaru je na oficiální stránce:

    https://www.zigbee2mqtt.io/getting_started/flashing_the_cc2531.html

    odškrtnuté “Retain IEEE Adress when reprogramming the chip” a ve Vašem návodu je ponechaná “fajfka”.
    Přiznám se, nevím co tato volba přesně dělá a náhodou nemůže to mít nějaký podstatný vliv na funkci dongelu?
    Děkuji

    • Dobrý večer, koukám na to, jelikož se přiznám jsem si ani nevšiml, že jsem použil jiné nastavení než je na zigbee2mqtt.io, ale vypadá to, že tahle volba v našem případě nehraje roli – SoCs the primary IEEE address located in Information page, which is Read only area.. Jinými slovy IEEE adresa by měla být pouze pro čtení.

  • Vypadá to, že se mi podařilo podle návodu vše spustit, i když jsem docela bojoval s implementaci automatik, ale nedaří se mi absolutně přidat IKEA tlačítko máte někdo zkušenosti s IKEA a funkčností tohoto řešení?

    Děkuji

  • Zdravím všechny DIY borce 🙂

    Dnes jsem rozchodil 2531 se šroubovatelnou anténou za cca 8 dolaru z aliexpress.
    Flash jsem dělal pomocí raspberry pi3b+ ,celkem easy.
    Nemusíš kupovat debuger atd., jen přiletovat 4 drátky ,spojit s RPS a už to maká.
    Rozchodil jsem všechna čidla od xiaomi co doma mám. Jen jsem některé musel demontovat a donést blíž pro spárování ,ale pak jsem je dal z5 a signál je třeba kolem 20 ti ,hlavní je že zatím není třeba router na rozšíření signálu.
    To nakonec vyřeším sonoffem zigbee .
    Každopádně moc zajímavá věcička. Už nejedu přes China servery 🙂
    Díky za inspiraci a přeji všem hodně úspěchů při bastlení .

  • Dobrý den,
    potřeboval bych opět poradit. Postupoval jsem podle návodu. Přehraní firmwaru se mi podařilo bez problému Mqtt server rozjet taktéž bez problému. Problém začíná v konfiguraci zigbee2mqtt addonu. Po nastavení je mi zigbee nerozjede log vypadá takto:


    zigbee2mqtt@1.10.0 start /zigbee2mqtt-1.10.0
    node index.js
    zigbee2mqtt:info 2020-02-16 22:33:15: Logging to console and directory: '/share/zigbee2mqtt/log/2020-02-16.22-33-15' filename: log.txt
    zigbee2mqtt:info 2020-02-16 22:33:15: Starting zigbee2mqtt version 1.10.0 (commit #unknown)
    zigbee2mqtt:info 2020-02-16 22:33:15: Starting zigbee-herdsman...
    zigbee2mqtt:error 2020-02-16 22:34:04: Error while starting zigbee-herdsman
    zigbee2mqtt:error 2020-02-16 22:34:04: Failed to start zigbee
    zigbee2mqtt:error 2020-02-16 22:34:05: Exiting...
    zigbee2mqtt:error 2020-02-16 22:34:05: Error: AREQ - SYS - resetInd after 30000ms
    at Timeout._onTimeout (/zigbee2mqtt-1.10.0/node_modules/zigbee-herdsman/dist/utils/waitress.js:44:24)
    at listOnTimeout (internal/timers.js:531:17)
    at processTimers (internal/timers.js:475:7)
    npm
    ERR! code ELIFECYCLE
    npm ERR! errno 1
    npm ERR! zigbee2mqtt@1.10.0 start:
    node index.js
    npm ERR! Exit status 1
    npm ERR!
    npm ERR!
    Failed at the zigbee2mqtt@1.10.0 start script.
    npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
    npm ERR! A complete log of this run can be found in:
    npm ERR! /root/.npm/_logs/2020-02-16T21_34_05_064Z-debug.log
    2020-02-16T22:34:06: PM2 log: App [npm:0] exited with code [1] via signal [SIGINT]
    2020-02-16T22:34:06: PM2 log: App [npm:0] starting in -fork mode-
    2020-02-16T22:34:06: PM2 log: App [npm:0] online

    Mockrát děkuji za pomoc

    • Ahoj, tak jsem na HA foru vyčetl, že občas pomuže reset donglu přímo tlačítkem. Tak už jsem připojen k mqtt a jdu pokračovat dále.

      Lukáš

      • Ahoj Lukáši. S tímhle jsem se ještě nesetkal, a pravda že chybová hláška není zrovna užitečná. Díval jsi se předtím ještě jestli vidíš dongle v Hass.io sekci Hardware jako /dev/ttyACM0? Každopádně přidám i přímo do článku, kdyby na to někdo také narazil ať má řešení. Díky.

  • Mam vlastni zigbee usb , sparovane tlacitko , v UI ho vidim a reaguje. Jak ho pridam do Node-red abych snim mohl pracovat a odecitat hodnoty ?

  • Ahoj,

    už jsem to sem jednou psal, ale asi se to nepřídalo…

    Při konfiguraci jak Mosquitto broker, tak zigbee2mqttt addonu mi nejde zadat konfigurace způsobem nasdíleným v návodu. jedná se o to, že to neakceptuje ony složené závorky a uvozovky… – musím vymýšlet, jak to tam napsat, aby to addon akceptoval, nevíte čím to může být? díky!

    • Vyřešeno….

      Nevíte náhodou, jak přidat zařízení LanControll a jeho chytré sensory? podporuje HTTP, nebo MQTT…

%d blogerům se to líbí: