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é“.
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
Systé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.
Prehľad BTHome zariadení
Zoznam 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ý:
- 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",
"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í.
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.


