Skip to main content

1.5 Zber údajov v Home Assistant

Pridanie zdrojov BTHome

Akonáhle máme pridaný Bluetooth adaptér (hoc aj vo forme Bluetooth proxy), systém Home Assistant automaticky zisťuje nové zariadenia v okolí. Takže v ponuke Nastavenia → Zariadenia a služby už pravdepodobne bude zoznam objavených BTHome zariadení v úvodnej sekcii „Objavené“.

HA zariadenia - objavené BTHome.webp

Zariadenia budú spočiatku pomenované len vo všeobecnom tvare „BTHome sensor XXXX“, kde za XXXX sú posledné 4 číslice z fyzickej adresy zariadenia. V skutočnosti sa pod pojmom „sensor“ môžu skrývať viaceré senzory v jednom zariadení. Ak je zariadenia naše, môžeme ho Pridať, v opačnom prípade Ignorovať. Pri pridávaní zariadenia by sa mal názov automaticky upraviť na zrozumiteľnejší, pokiaľ ho tvorca zariadenia nastavil – systém k nemu opäť bude pripojí koniec adresy, ten však môžeme zmazať.

Nastavenie snímačov

HA zariadenia - vlastnosti.webpSystém automaticky nastaví názov jednotlivých snímačov a formát ich hodnôt. Niekedy je však vhodné vykonať úpravy, napríklad:

  • hodnote tlaku zmeniť jednotku na hPa;
  • hodnote vlhkosti odobrať desatinné miesta;
  • hodnote napätia batérie pridať desatinné miesta;
  • nesprávne pomenovaný senzor premenovať, prípadne mu aj zmeniť ikonu;
  • neaktívne / nepotrebné senzory zakázať.

Dosiahneme to kliknutím na senzor – otvorí sa okno s grafom, ale aj tlačidlom nastavení (ozubené koliesko). Tiež môžeme povoliť „zakázané entity“ v sekcii Diagnostika – napríklad údaj o sile signálu.

HA zariadenie BTHome.webp

Prehľad BTHome zariadení

HA zariadenia - zoznam BTHome.webpZoznam všetkých BTHome zariadení nájdeme cez ponuku Nastavenia → Zariadenia a služby. Po kliknutí na dlaždicu BTHome sa zobrazí zoznam, ktorý je však dvojúrovňový:

  • Prvá úroveň reprezentuje konfiguračnú položku (integráciu) – technické spojenie s konkrétnym fyzickým čipom / MAC adresou, obvykle ponechanú pod pôvodným názvom zariadenia. Tu môžeme zariadenie v prípade potreby zmazať zo systému.
  • Druhá úroveň reprezentuje logické zariadenie – s ním pracujeme, nastavujeme mu vlastný (zrozumiteľný) názov a priraďujeme do konkrétnej miestnosti.

Prečo sa zariadenia zobrazujú dvojmo (v dvoch úrovniach)? Je to mätúce a zbytočné.

Áno, v prípade BTHome je to naozaj zbytočné. Autorom však šlo o zjednotenie prístupu s ostatnými typmi zariadení. Napríklad pri Zigbee zariadeniach je v 1. úrovni len adaptér Zigbee a všetky zariadenia sú v jeho 2. úrovni. Rovnako je to aj pri automaticky pridaných zariadeniach MQTT – v 1. úrovni je server a v jeho 2. úrovni všetky zariadenia. A podobne fungujú aj niektoré cloud služby – napríklad Tuya má v 1. úrovni len účet (prihlásenie do cloud) a všetky k nemu pripojené zariadenia sú v jeho 2. úrovni.

Pridanie zdrojov MQTT

Protokolom MQTT sa budeme zaoberať podrobnejšie neskôr – zatiaľ nám stačí vedieť, že komunikácia prebieha prostredníctvom MQTT servera po bežnej IP sieti. Zariadenie so senzormi sa pripojí k sieti obvykle cez Wi-Fi a namerané hodnoty posiela MQTT serveru v podobe krátkych správ. Zaujímavosťou je, že v správe nie je uvedený odosielateľ a ani príjemca, ale len takzvaná „téma“. Server Home Assistant sa tiež pripojí k MQTT serveru (obvykle po ethernetovej sieti) a odoberá z neho správy na vybrané témy.

Pripojenie k MQTT serveru

V prvom rade musíme vytvoriť spojenie s MQTT serverom, opäť cez ponuku Nastavenia → Zariadenia a služby, tlačidlom Pridať integráciu. Dáme vyhľadať „MQTT“ a zadáme adresu servera (Broker), používateľské meno a heslo.

Po úspešnom pripojení bude v ponuke zariadení funkčná položka s názvom servera. Otvorme jej nastavenia (cez ozubené koliesko) a zvoľme MQTT možnosti. Náš server pri každom pripojení sa k MQTT serveru pošle správu o svojom „narodení“ (birth) a v prípade, že sa s ním stratí spojenie, tak bude automaticky odoslaná správa jeho „poslednej vôle“ (will). V predvolenom nastavení sa obe správy posielajú na MQTT tému „homeassistant/status“. To vyhovuje, pokiaľ máme len jediný server, no ak ich je viac (napríklad pri výučbe), je potrebné, aby každý server posielal svoj stav na svoju vlastnú tému, zadajme ju v tvare „SSND/homeassistant/status/{server}“, kde za {server} doplníme označenie nášho servera – priezvisko bez diakritiky, malými písmenami. Ostatné nastavenia si zatiaľ nevšímajme.

V nastaveniach ešte zostaňme – môžeme skúsiť „Počúvať tému“ – pokiaľ nevieme jej presný názov, môžeme zadať „#“, čo v MQTT jazyku označuje úplne všetky témy. Mali by sme vidieť aj stavové správy o jednotlivých serveroch, aj mnoho správ s výsledkami meraní.

Ručné pridanie MQTT zariadenia

Stlačením tlačidla „Pridanie zariadenia MQTT“ môžeme pridať napríklad multisenzor ovzdušia (merajúci teplotu, vlhkosť, tlak a čistotu vzduchu), vyplniť je potrebné:

  • Názov: pomenovanie samotného zariadenia, napríklad „meteostanica na záhrade“ alebo „merač UST-A2“;
  • Typ entity: skutočný typ zariadenia, v našom prípade „Snímač“;
  • Názov entity: pokiaľ by nešlo o multisenzor, ale o jediný senzor (merajúci napríklad len teplotu), tak by sme ho nechali prázdny, no v našom multisenzore zadáme názov meraného parametra, napríklad „Teplota“;
  • Trieda zariadenia a Jednotka merania: skutočný typ parametra, ktorý pridávame (Teplota) a jeho jednotka („°C“);
  • Trieda stavu: pokiaľ si želáme uchovávanie historických údajov, je potrebné zvoliť „Meranie“;
  • Téma stavu a Šablóna hodnoty: ide o MQTT tému, na ktorú zariadenie odosiela hodnoty požadovaného parametra a definíciu formátu:
    • pokiaľ je v správe len číslo s hodnotou, uvedieme len tému pre tento parameter (napr. „SSND/monitorovanie/UST-A2/teplota“) a šablónu ignorujeme;
    • pokiaľ je v správe JSON štruktúra, uvedieme nielen spoločnú tému multisenzora (napr. „SSND/monitorovanie/UST-A2/ovzdusie“), ale aj šablónu, napríklad pre položku „teplota“ v JSON to bude: „{{ value_json.teplota }}“;
  • Iné nastavenia → Platnosť: môžeme uviesť počet sekúnd, po ktorých bude hodnota pokladaná za neplatnú a senzor označený za neaktívny – napríklad 5-násobok intervalu merania.

Môžem MQTT zariadenie nazvať rovnako ako už existujúce BTHome zariadenie?

Áno, systém HA to dovolí – hoci budú názvy rovnaké, budú sa líšiť identifikátorom. Z praktických dôvodov je však vhodné rozlíšiť názvy, napríklad dodatkom „(MQTT)“, aby sme zariadenia rozlíšili aj my.

Po dokončení sa v MQTT zariadeniach (ponuka Nastavenia → Zariadenia a služby, dlaždica MQTT) zobrazí zoznam, ktorý je až trojúrovňový:HA zariadenia - zoznam MQTT.webp

  • Prvá úroveň reprezentuje konfiguračnú položku (integráciu) – v tomto prípade ide o spojenie na konkrétny MQTT server.
  • Druhá úroveň reprezentuje konfiguráciu zariadenia – celú meraciu krabičku, ktorej môžeme cez ozubené koliesko pridávať ďalšie entity (senzory).
  • Tretia úroveň reprezentuje logické zariadenie s entitami – s ním pracujeme, nastavujeme mu vlastný (zrozumiteľný) názov a priraďujeme do konkrétnej miestnosti.

Keďže sme pridávali multisenzor, je potrebné pridať aj ďalšie merané parametre – sú vyjadrené vo forme entít. Ozubeným kolieskom pri zariadení dáme „Pridať ďalšiu entitu“ a postupujeme rovnako, ako pri prvej entite, akurát už nevolíme Názov.

Automatické objavenie MQTT zariadenia

Zariadenia odosielajúce MQTT správy môžu počítať s prítomnosťou Home Assistant servera a okrem nameraných hodnôt posielať aj informácie o svojej konfigurácii. Vďaka tomu ich Home Assistant dokáže automaticky nájsť a pridať aj s konfiguráciou – používateľ nemusí prakticky nič riešiť.

Celý trik spočíva v tom, že samotný Home Assistant server sa na MQTT serveri prihlasuje na odber „discovery" témy. K jej názvu sa dostaneme cez nastavenia MQTT servera (ozubené koliesko) → MQTT možnosti. Predvolenou hodnotou pre Discovery prefix je „homeassistant". Je ho možné zmeniť, no zatiaľ ho ponechajme. V ideálnom prípade by naň posielali správy o svojej konfigurácii všetky naše zariadenia vždy po ich spustení. To sa časom aj skutočne naučíme a vytvoríme vlastné zariadenia, ktoré budú posielať svoju konfiguráciu pre Home Assistant.

Teraz sa však vráťme do nastavení MQTT servera a skúsme cezeň publikovať konfiguračnú správu. Pokiaľ máme viac Home Assistant serverov a nemenili sme im prefix na objavovanie zariadení, po odoslaní korektnej správy by sa malo na všetkých serveroch automaticky pridať MQTT zariadenie. Skúsme týmto spôsobom opäť pridať „merač UST-A2“ – správu pošlime do témy „homeassistant/device/merac-ust-a2/config“. Jej formátom sa teraz nebudeme zaoberať – ide o JSON podľa špecifikácií Home Assistant:

{% raw %}
{
  "origin": {
    "name": "merač ovzdušia ZERVAN.INFO"
  },
  "device": {
    "identifiers": ["merac-ust-a2"],
    "name": "merač UST-A2",
    "suggested_area": "UST-A2",
    "model": "merač ovzdušia",
    "hw_version": "ESP32 D1 Mini + DS18B20 + BME680",
    "sw_version": "demo",
    "manufacturer": "ZERVAN.INFO",
    "serial_number": "24:0A:C4:EC:C6:AA"
  },
  "state_topic": "SSND/monitorovanie/UST-A2/ovzdusie",  
  "components": {
    "teplota": {
      "platform": "sensor",
      "device_class": "temperature",
      "unique_id": "merac-ust-a2-teplota",
      "name": "Teplota",
      "value_template": "{{ value_json.teplota }}",
      "suggested_display_precision": 1,  
      "unit_of_measurement": "°C",
      "expire_after": 60
    },
    "vlhkost": {
      "platform": "sensor",
      "device_class": "humidity",
      "unique_id": "merac-ust-a2-vlhkost",
      "name": "Vlhkosť",
      "value_template": "{{ value_json.vlhkost }}",
      "suggested_display_precision": 0,
      "unit_of_measurement": "%",
      "expire_after": 60
    },
    "tlak": {
      "platform": "sensor",
      "device_class": "pressure",
      "unique_id": "merac-ust-a2-tlak",
      "name": "Tlak",
      "value_template": "{{ value_json.tlak }}",
      "suggested_display_precision": 2,
      "unit_of_measurement": "hPa",
      "expire_after": 60
    },
    "vzduch": {
      "platform": "sensor",
      "unique_id": "merac-ust-a2-vzduch",
      "name": "Čistota vzduchu",
      "icon": "mdi:air-filter",
      "value_template": "{{ value_json.vzduch }}",
      "suggested_display_precision": 0,
      "unit_of_measurement": "%",
      "expire_after": 60
    }
  }    
}
{% endraw %}

Takto pridané zariadenie bude mať len dve úrovne v zobrazení.

HA zariadenia - zoznam MQTT-2.webp

Prečo toto automaticky pridané MQTT zariadenie prestane fungovať po reštarte Home Assistant servera?

Pretože server po reštarte nedostane informáciu o konfigurácii zariadenia. Aby to fungovalo aj po reštarte, muselo by meracie zariadenie opäť poslať svoju konfiguráciu alebo by sa musel zapnúť príznak Ponechať (Retain) pri posielaní správy. Ten sme v rámci experimentu nezapínali.