Uživatelské nástroje

Nástroje pro tento web


Home Assistant

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.

Instalace

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.

Konfigurace

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.

1. Obecná nastavení

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

2. Přidání periferií Turris Gadgets

2.1. Platforma

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'

2.2. Senzory

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ě.

Automatická konfigurace

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]
Manuální konfigurace

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

2.3. Výstupy

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á!!!'

2.4. Termostat

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'

2.5. Siréna

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

3. Automatizace

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.

Příklad:

  • Ovládání výstupu PGX, pojmenovaného jako „Stolní lampa“, magnetickým kontaktem. Výstup bude kopírovat stav senzoru.
# 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

4. Další funkce

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.

Historie

Zobrazuje historii událostí v podobě časových os.

history:

Logbook

Zobrazuje historii událostí v podobě textového záznamu - logu.

logbook:

Spuštění

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.

Další informace

Mnoho dalších užitečných informací lze nalézt na hlavní stránce projektu.