Home Assistant je další z open-source aplikací pro monitoring a ovládání inteligentní domácnosti. Aplikace je vytvořena v jazyce Python 3 a podporuje mnoho technologií používaných v oblasti domácí automatizace, včetně sady Turris Gadgets.
Home Assistant s implementovanou podporou sady Turris Gadgets je k dispozici v repozitáři Turris OS jako balíček home-assistant-turris-gadgets
, který lze nainstalovat prostřednictvím rozhraní Foris – na záložce Updater vyberte ze seznamu položku Domácí automatizace
a stiskněte tlačítko Uložit změny
.
V současné verzi Home Assistantu není (zatím) k dispozici grafické prostředí pro jeho konfiguraci. Veškerá nastavení se provádí editací souboru configuration.yaml
, který obsahuje kompletní konfiguraci ve formátu YAML a je umístěn v konfiguračním adresáři Home Assistantu. Ukázkový konfigurační soubor lze stáhnout zde configuration.yaml a je možné ho bez dalších úprav použít pro prvotní otestování funkčnosti.
Konfigurační adresář je ve výchozím stavu nastaven na /tmp/home-assistant
. Je tedy umístěn v RAM, aby nedocházelo k nadměrnému opotřebení sytémové NAND flash paměti častými zápisy - Home Assistant do něj ukládá také své logy, statistiky apod. Znamená to ovšem, že po každém restartu routeru Turris budou tato data ztracena. Pro praktické nasazení bude vhodnější jej přemístit na některé energeticky nezávislé úložiště.
Pokud je k routeru Turris připojeno externí paměťové médium (microSD karta či USB disk), je určitě vhodné ho využít. Další řešení tohoto problému může být např. pravidelná záloha konfiguračního adresáře do flash pomocí cronu. Konfiguraci je samozřejmě možné umístit i přímo do systémové NAND flash paměti (např. do /root/home-assistant), toto však doporučujeme pouze v krajním případě.
Umístění konfiguračního adresáře je možné změnit editací souboru /etc/config/home-assistant
.
Na následujících řádcích je uveden detailní popis konfiguračních voleb.
Zde se nastavují základní parametry platné pro celou aplikaci. Význam jednotlivých klíčů je komentován přímo v kódu.
homeassistant: # Name of the location where Home Assistant is running name: Home # Location required to calculate the time the sun rises and sets latitude: 50.0 longitude: 14.5 # C for Celcius, F for Fahrenheit temperature_unit: C # Pick yours from here: http://en.wikipedia.org/wiki/List_of_tz_database_time_zones time_zone: Europe/Prague # Enable WWW frontend frontend: # Password for WWW http: api_password: heslo
Povolíme platformu Turris Gadgets. Jako hodnotu pole port
zadáme sériový port, na kterém se nachází USB dongle. Pokud k routeru Turris nejsou připojeny žádné další převodníky USB na sériový port, bude se zpravidla jednat o zařízení /dev/ttyUSB0
.
# Adds Turris Gadgets platform # Field description: # port: The serial port to use (obligatory) jablo_dongle: port: '/dev/ttyUSB0'
Vloží do aplikace senzory ze sady Gadgets (PIR čidla, magnetické a otřesové snímače atd.). Parametry jednotlivých senzorů je možné nastavit buďto automaticky nebo manuálně.
Do konfiguračního souboru stačí přidat pouze blok switch:
s jediným parametrem - názvem platformy. Po spuštění Home Assistantu se do něj automaticky přidají všechny senzory spárovné s Turris Donglem. Senzorům jsou přiřazovány výchozí názvy ve tvaru:
[MODEL]_[ID]_[VÝSTUP]
V tomto případě se všechny parametry senzorů definují ručně. K výše zmíněným parametrům v sekci switch:
je navíc přidán blok devices:
s identifikátory jednotlivých komponent a jejich požadovaným nastavením. Do Home Assistantu se vloží pouze zařízení zadefinovaná v bloku devices:
, ostatní nebudou uživateli k dispozici.
Mezi automatickou a manuální konfigurací je možné vybírat i u výstupů, termostatu a sirény (viz další podkapitoly).
Příklad - automatická konfigurace:
sensor: platform: jablo_dongle
Příklad - manuální konfigurace:
# The 'devices' block is not necessary, default names and options will be used if omitted # Field description: # name: The custom name of the device (obligatory) # outputs: List of the device's outputs you wish to use (at least one is obligatory) # off_delay: For momentary switches (PIRs etc.) only. # It specifies the delay in seconds after which the sensor will turn off automatically # (optional, default=60, 0=forever) sensor: platform: jablo_dongle devices: 1842835: name: 'Dveře v kuchyni' outputs: ['sensor', 'tamper'] 6662032: name: 'PIR na chodbě' outputs: ['sensor'] off_delay: 5 8337683: name: 'Otřesový senzor v šuplíku' outputs: ['sensor'] off_delay: 10
Vloží do aplikace binární výstupy ENROLL
, PGX
, PGY
a SIREN_LOUD
. Pojmenování výstupů je možné přizpůsobit (manuální), nebo ponechat výchozí názvy (automatická).
# Adds binary outputs and siren # The 'devices' block is not necessary, default names and options will be used if omitted # Available devices: enroll, pgx, pgy, alarm # Field description: # name: The custom name of the switch (obligatory) switch: platform: jablo_dongle devices: pgx: name: 'Stolní lampa' pgy: name: 'LEDka na siréně' alarm: name: 'Siréna, velmi hlasitá!!!'
Vloží do aplikace termostat TP-82N. Jméno termostatu je možné nastavit uživatelsky nebo ponechat výchozí.
# The 'devices' block is not necessary, default names and options will be used if omitted # Field description: # name: The custom name of the thermostat (obligatory) thermostat: platform: jablo_dongle devices: 2439956: name: 'Můj termostatík'
Pípání sirénou je implementováno jako stmívač. Nastavením slideru do cca 50% polohy slideru pípá siréna pomalu, nad tuto hodnotu pípá rychle.
# Adds siren beeping (implemented as dimmable light) :) # No options available (yet) light: platform: jablo_dongle
V této sekci se definují vztahy mezi jednotlivými senzory a výstupy. Výstupy je možné ovládat v závislosti na stavu senzorů, aktuálním čase či východu a západu slunce. Všechny možnosti jsou podrobně vysvětleny na stránkách projektu zde.
# Entity id is name of device in lowercase, with underscores, # without special characters and characters with accents # i.e. Dveře v kuchyni (sensor) -> dvee_v_kuchyni_sensor automation: platform: state state_entity_id: sensor.dvee_v_kuchyni_sensor state_from: 'off' state_to: 'on' execute_service: switch.turn_on service_entity_id: switch.stoln_lampa automation 2: platform: state state_entity_id: sensor.dvee_v_kuchyni_sensor state_from: 'on' state_to: 'off' execute_service: switch.turn_off service_entity_id: switch.stoln_lampa
Komplentní seznam funkcí a technologií podporovaných Home Assistantem lze nalézt na oficiálních stránkách projektu https://home-assistant.io/components/ včetně popisu jejich konfigurace.
Home Assistant spustíme pomocí init skriptu příkazem
/etc/init.d/home-assistant start
Start aplikace může trvat delší dobu (v řádu jednotek až desítek sekund) v závislosti na počtu a typu zvolených funkcí. Pokud chceme, aby se Home Assistant spouštěl automaticky při startu routeru Turris, spustíme navíc příkaz
/etc/init.d/home-assistant enable
Nyní se můžeme pomocí internetového prohlížeče připojit na IP adresu routeru Turris a zvolený port (výchozí je 8123). Měl by se zobrazit přihlašovací formulář.
Po zadání hesla (v ukázkové konfig. 'heslo') již můžeme vidět hlavní okno aplikace se všemi dostupnými senzory a výstupy. Webový frontend využívá technologii WebSockets, díky čemuž zobrazení vždy odpovídá skutečnému stavu aplikace a aktivita jednotlivých komponent je v grafickém prostředí aktualizována v reálném čase.
Mnoho dalších užitečných informací lze nalézt na hlavní stránce projektu.