Home-Assistant

integrácia open-source systému pre automatizáciu domácnosti

About

Home-Assistant je open-source nástroj na správu inteligentnej domácnosti. Je napísaný v jazyku Python a je široko konfigurovateľný. Je obľúbený aj vďaka integrácii veľkého množstva zariadení určených pre inteligentnú domácnosť. Príklady jeho použitia si môže pozrieť na demo stránke.

My si dnes vyskúšame do neho integrovať vlastné zariadenia, ktoré budú komunikovať prostredníctvom protokolu MQTT - jednoduchý teplotný senzor a jednoduchý spínač.

Goals

  • zoznámiť sa so základmi používania aplikácie Home-Assistant
  • vytvoriť dashboard senzorov inteligentného laboratória OpenLab
  • naučiť sa vytvárať vlastné MQTT ovládače

Content

Get Ready

V prvom kroku rozšírime konfiguráciu nášho docker-compose.yaml súboru a vykonáme prvotnú konfiguráciu tohto nástroja.

Task

Rozšírte svoj súbor docker-compose.yaml o nástroj Home-Assistant.

  • obraz homeassistant/home-assistant:stable
  • volume pre nastavenie rovnakého času ako na hosťovskom počítači /etc/localtime:/etc/localtime:ro
  • volume konfiguráciu v lokálnom priečinku ./homeassistant:/config
  • sieť spoločná s ostatnými kontajnermi v kompozícii
  • zverejnený port 8123

Task

Spustite kompozíciu.

Výsledkom spustenia sa v priečinku spustenia vytvorí priečinok homeassistant/, ktorý obsahuje aktuálnu konfiguráciu HA.

Task

Otvorte prehliadač na adrese http://localhost:8123 a prejdite prvotnou konfiguráciou.

  • vytvorte si účet používateľa zadaním prihlasovacieho mena a hesla
  • nastavte svoju lokáciu
  • v zozname nájdených zariadení (integrácií) zvoľte možnosť More a pridajte integráciu MQTT
  • nastavte adresu MQTT broker-a na openlab.kpi.fei.tuke.sk
  • potvrďte zariadenia, ktoré sa HA podarilo zistiť pri prvom spustení
Home-Assistant: Nastavenie integrácie MQTT pri prvom spustení

Task

Rozhliadnite sa v prostredí systému.

Home-Assistant: Prvé spustenie

Task

Skontrolujte, či je pridaná a nastavená integrácia MQTT

Integrácie nájdete v Configuration -> Devices & Services. Po stlačení tlačidla Configure môžete skontrolovať nastavenie integrácie MQTT.

Home-Assistant: Nastavenie integrácií cez nastavenia

Ak tam integráciu nemáte, pridajte ju a nastavte adresu MQTT broker-a na openlab.kpi.fei.tuke.sk. Integráciu je možné pridať priamo na obrazovke integrácií tlačidlom Add integration, alebo je možné integráciu pridať manuálne v ďalšom kroku.

Task

Otvorte súbor s konfiguráciou configuration.yaml v priečinku homeassistant/.

V tomto súbore sa nachádza manuálna konfigurácia HA.

Ak ste predtým nepridali integráciu MQTT cez webové rozhranie HA, pridajte do konfigurácie časť mqtt, kde špecifikujete MQTT broker (openlab.kpi.fei.tuke.sk).

mqtt:
  broker: openlab.kpi.fei.tuke.sk
  discovery: false

Pre aplikovanie zmien v manuálnej konfigurácii reštartujte HA pomocou menu Configuration > Server Controls > Restart.

Creating a MQTT Sensor Device

V tomto kroku využijeme senzory, ktoré nám ponúka OpenLab.

Task

Do manuálnej konfigurácie HA pridajte do časti sensor senzor reprezentujúci teplotný senzor OpenLab-u.

sensor:
  - platform: mqtt
    state_topic: "openlab/sensorkits/<MAC>/atmp"
    name: "OpenLab Temperature Sensor"

Namiesto časti <MAC> je potrebné doplniť MAC adresu senzora v OpenLab-e, ktorý ste si vybrali. Informácie o senzoroch nájdete v dokumentácii OpenLab-u.

Task

Overte, či bol senzor naozaj vytvorený.

Po reštartovaní by sa vám senzor mal zobraziť na prehľadovej obrazovke HA.

Home-Assistant: Teplotný senzor po prvom spustení

Task

Vytvorte entity v HA aj pre ďalšie senzory OpenLab-u

Okrem teploty OpenLab ponúka aj meranie:

  • intenzity svetla
  • atmosférického tlaku
  • vlhkosti
  • hluku

OpenLab Floorplan

Aby veci vyzerali ešte zaujímavejšie, umožňuje HomeAssistant vytvoriť aj náhľad vašej domácnosti pomocou obrázkového podkladu. Ak tento obrázok predstavuje pôdorys domácnosti, viete naň umiestniť jednotlivé senzory a zariadenia na ich presné lokácie. V tomto kroku si ukážeme, ako na to.

Task

Do panelu Prehľad vložte kartu Obrázkový element.

HomeAssistant: Pridanie obrázkového podkladu

Task

Upravte konfiguráciu Obrázkového elemtu pridaním pôdorysu podlahy OpenLab-u a jednotlivých senzorov a akčných členov, ktoré máte nakonfigurované.

Obrázok pôdorysu OpenLab-u vo formáte .svg môžete získať z tejto adresy.

Jednotlivé senzory môžete reprezentovať ako ikony, ktoré zobrazia aktuálnu teplotu po kliknutí na príslušný senzor. HomeAssistant používa Material Design Icons, takže ak chcete napríklad použiť ikonu teplotného senzora, môžete použiť identifikátor mdi:thermometer.

Samozrejme môžete experimentovať aj s inými spôsobmi vizualizácie.

Konfigurácia pre zobrazenie jedného teplotného senzora môže vyzerať napríklad takto:

type: picture-elements
title: OpenLab Floorplan
elements:
  - type: state-icon
    entity: sensor.openlab_temperature_sensor_1
    icon: mdi:thermometer
    style:
      bottom: 5%
      left: 36%
image: http://mirek.s.cnl.sk/download/openlab-podorys.svg

Task

Overte úspešnosť svojej implementácie.

Ak ste postupovali správne, na pôdoryse laboratória uvidíte teplotný senzor, na ktorý ak kliknete, tak sa vám zobrazí jeho aktuálna hodnota.

HomeAssistant: Zobrazenie aktuálnej teploty na teplotnom senzore

Creating an MQTT Device as a Remote Controller

Teraz vytvoríme jednoduchý svetelný ovládač.

Okrem manuálneho pridávania entít do konfigurácie HA môžeme nechať zariadenia sa automaticky „ohlásiť” pri spustení. Využitím špeciálnej MQTT Discovery témy sa zariadenie automaticky pridá do nášho HA.

Task

V Node-RED vytvorte nový flow reprezentujúci ďiaľkový ovládač

Task

V novom flow-e pridajte MQTT uzol na odosielanie Discovery správ

MQTT Discovery téma musí spĺňať špeciálny formát <discovery_prefix>/<component>/[<node_id>/]<object_id>/config.

  • Časť <discovery_prefix> je v základe homeassistant, ale je možné ju nastaviť na inú hodnotu v manuálnej konfigurácii HA.
  • Časť <component> predstavuje typ entity, ako napríklad sensor z predošlého kroku. V tomto prípade však chceme ovládať svetlá, takže komponent sa bude volať light.
  • Časť <node_id> je dobrovoľná pre štruktúrovanie MQTT tém a nemusíme ju využívať.
  • Časť <object_id> je ID zariadenia, ktoré sa má „ohlásiť“. Využíva sa na identifikáciu zariadení, aby bolo jasné, ku ktorému Discovery správa patrí. Pre účely tohto cvičenia použite jednoznačný identifikátor, ako napríklad svoj jedinečný LDAP username.
  • Téma končí kľúčovým slovom config.

Výsledná téma teda bude vyzerať nejak takto: homeassistant/light/<username>/config.

Task

Pridajte uzol inject pre generovanie Discovery správ

Ako Discovery správy budeme posielať konfiguráciu zariadenia, ktorá je identická s tou, ktorú by sme zadávali do manuálnej konfigurácie HA. Na generovanie týchto správ môžeme využiť uzol inject, v ktorom do payload budeme ukladať objekt typu JSON.

Node-RED: Flow pre Discovery správy

Obsah správy môže vyzerať napríklad takto:

{
    "name": "Loidyho svetlo",
    "unique_id": "fg855ni_lights",
    "~": "kpi/iot/fg855ni/lights",
    "command_topic": "~",
    "brightness_command_topic": "~/brightness",
    "rgb_command_topic": "~/rgb",
    "retain": true,
    "qos": 1,
    "icon": "mdi:lightbulb"
}

Task

Overte, či bol ovládač pridaný do panelu HA a či funguje správne.

Na paneli lovelace by sa vám malo automaticky zobraziť tlačidlo pre ovládanie svetiel. Po jeho zapnutí sa vám zobrazí aj paleta farieb pre ovládanie RGB. Ikona entity sa sfarbí podľa stavu svetiel.

Home-Assistant: Ovládanie svetiel

Creating custom Home Assistant dashboard

Na záver vytvoríme panel s vlastnými druhmi kariet.

Task

Pridajte si v prehľade ďalšie karty pre zobrazenie hodnoty z teplotného senzora iným spôsobom.

V pravom hornom rohu prehľadu si rozbaľte menu a vyberte si položku Edit Dashboard. V nej môžete upraviť vzhľad a rozloženie celého prehľadu. Napríklad môžete:

  • zobraziť teplotu vo forme budíka (gauge)
  • zobraziť graf buď pomocou karty History Graph alebo Sensor
Home-Assistant: Karty teploty

Additional Tasks

Task

Vytvorte ovládač pre svetlá v OpenLab-e

Svetlá v OpenLab-e využívajú MQTT tému openlab/lights. Tvar správy je však vo veľmi špecifickom formáte, ako je vysvetlené v dokumentácii OpenLab-u. Ovládanie je možné dosiahnuť dvoma spôsobmi:

  1. Je možné využiť schémy typu template priamo v HA. Šablóny template v HA využívajú šablonovací systém Jinja. Konfigurácia sa môže pridať manuálne do configuration.yaml alebo sa získa automaticky cez Discovery správu.

  2. Druhou možnosťou je vytvoriť adaptér medzi štandardným HA typom správ (využije sa základná schéma) a komunikáciou so svetlami. Toto je možné vytvoriť napríklad aj ako flow v Node-RED s uzlami mqtt in (na príjem správ z HA), function (na konverziu správy na špeciálny formát pre OpenLab) a mqtt out/http request (na ovládanie svetiel). Podobným spôsobom by to malo byť spravené aj opačným smerom pre aktualizáciu stavu svetiel v HA.