blog.vyoralek.cz

Centrum chytré domácnosti – HomeAssistant (Hass.io) – 1 část

Představte si situaci, že máte nakoupeno spoustu různých „chytrých“ IoT zařízeních od různých výrobců, které byste chtěli ovládat z jednoho místa. Právě tohle je základní úloha systému HomeAssistant, který je integrátorem všemožných jak hardwarových IoT zařízeních (různé chytré žárovky, spínače atp) tak i služeb (předpověď počasí, hlasové ovládání atp).

Tímto článkem začnu větší sérii a tom jak si toto chytré integrační centrum připravit a později i hlavně jak to všechno dohromady propojit.

První díl bude věnován čistě instalaci, jelikož je hned několik možností a může se i lišit na základě použitého hardwaru.

Instalace Hass.Io z image

V první části se podíváme jak nainstalovat HomeAssistant jako tzv. Hassio, což je předpřipravený Docker image. Ukážeme si několik možností instalace pro různé desky.

1. Raspberry Pi – Hass.OS image

Nejjednodušším způsob pro Raspberry PI je stažení hotových diskových obrazů, tzv. image. Ty jsou k dispozici na základě typu pro:

Raspberry Pi Zero W
  • Raspberry Pi 1 Model B (již se neprodává)
  • Raspberry Pi 2 Model B (deska k dostání na např. Alza)
  • Raspberry Pi 3 Model B (deska k dostání na např. Alza, AliExpress) a B+ (Alza, AliExpress)
Raspberry Pi 3 Model B

Ze stánek projektu home-asisstant si pouze stáhneme hotový obraz, který pak pomocí např. aplikace etcher.io nahrajeme na SD kartu a tím máme hotovo.

2. Raspberry Pi – Raspbian + docker

Pokud plánujete na Raspberry provozovat ještě další systémy, které nejsou obsažené v Hass.IO ani v jeho addonech, pak je lepší volbou nainstalovat klasický operační systém – v případě Raspberry zvolíme Raspbian.

V tomhle případě má pak instalace více kroků a je poněkud komplikovanější. Nicméně popíšu všechny kroky detailně.

Základní instalace Raspbianu

  1. Stáhneme Raspbian Stretch Lite ze stránek Raspbianu.
  2. Image nahrajeme pomocí např. aplikace Etcher na připravenou SD kartu.
  3. SD kartu zasuneme do Raspberry a nabootujeme
  4. Pro přihlášení použijeme jméno pi a heslo raspberry
  5. (volitelně) Pokud plánujeme přihlašovat se na Raspberry vzdáleně tak povolíme SSH server pomocí utility raspi-config.
  6. (volitelně) Pokud si nejsme jistí IP adresou přidělenou Raspberry můžeme použít například příkaz ifconfig.

Instalace Dockeru

Než začneme se samotnou instalací dockeru je dobré provést veškeré aktualizace pomocí kombinace:

sudo apt update && sudo apt upgrade

Jakmile máme hotovo můžeme se vrhnout na instalaci dockeru se všemi závislostmi

sudo apt install avahi-daemon jq 
sudo apt install apparmor
sudo apt install network-manager

Jelikož nám nebude stačit docker, který je ve standardním repositáři Raspbianu stáhneme si instalační skript:

curl -fsSL https://get.docker.com -o get-docker.sh

… který se o celou instalaci postará. Spustíme ho pomocí:

sudo sh get-docker.sh

Instalace Hass.Io

Stáhneme si instalační skript a rovnou ho spustíme:

curl -sL https://raw.githubusercontent.com/home-assistant/hassio-installer/master/hassio_install.sh | bash -s -- -m raspberrypi3

Pokud chceme nainstalovat hass.io na jiný stroj než Raspberry PI 3 pak poslední hodnotu nahradíme dle desky jednou z následujících:

  • intel-nuc
  • odroid-c2
  • odroid-xu
  • orangepi-prime
  • qemuarm
  • qemuarm-64
  • qemux86
  • qemux86-64
  • raspberrypi
  • raspberrypi2
  • raspberrypi3
  • raspberrypi3-64
  • tinker

Na konci úspěšné instalace by poslední řádek měl být Run Hass.io.

[Info] Install supervisor Docker container
[Info] Install supervisor startup scripts
Created symlink /etc/systemd/system/multi-user.target.wants/hassio-supervisor.service → /etc/systemd/system/hassio-supervisor.service.
[Info] Install AppArmor scripts
Created symlink /etc/systemd/system/multi-user.target.wants/hassio-apparmor.service → /etc/systemd/system/hassio-apparmor.service.
[Info] Run Hass.io

Zadáme http://<IPAdresaServeru>:8123 a měli bychom vidět, že Hass.io se momentálně připravuje, což může trvat až 20minut.

Zvědavci a nebo v případě problému se můžou kouknout na Git repositář instalačního skriptu Hass.io.

3. Orange PI – Armbian s Ubuntu + docker

V případě Orange PI je instalace poněkud delší, jelikož nejsou k dispozici oficiální diskové obrazy, ale i tak není instalace nějak šíleně komplikovaná.

Orange Pi Zero +2 H5
Příklad Orange Pi desky v provedení Zero +2 H5
(tuhle desku mimochodem používám já)

Nejprve si stáhneme diskový obraz Armbianu, který např. pomocí etcher.io nahrajeme na SD kartu.

Dále nainstalujeme docker + potřebné balíčky

add-apt-repository universe && sudo apt-get update
apt-get install docker.io avahi-daemon jq
apt install apparmor

… stáhneme si instalační skript pro Hass.io:

curl -sL https://raw.githubusercontent.com/home-assistant/hassio-installer/master/hassio_install.sh > hassio_install

… a instalaci spustíme:

chmod 775 ./hassio_install
# Pro 64bit verzi Orange Pi
./hassio_install -m qemuarm-64

# nebo pro 32bit verzi Orange Pi
./hassio_install -m qemuarm

Po dokončení instalace zadáme http://<IPAdresaServeru>:8123 a měli bychom vidět, že Hass.io se momentálně připravuje, což může trvat až 20minut.

Instalace HomeAssistant z Python balíčků

Alternativním způsobem k diskové image či docker image je instalace z balíčků Pythonu.

Tenhle způsob má snad pouze jedinou výhodu a to univerzálnost – postup instalace by měl být totožný pro všechny desky bez ohledu na výrobce. Jediným předpokladem je tak Ubuntu či Debian nějaké novější verze.

Na druhou stranu nedostanete plnou funkcionalitu jako u Hass.Io – zejména pak možnost doinstalovávat balíčky přímo z webového prostředí a složitější způsob aktualizace. Nicméně i přesto pojďme si tenhle postup ukázat také.

Nejprve si předpřipravíme všechny závislosti:

sudo apt-get install python3 python3-venv python3-pip

Pro větší bezpečí si založíme speciálního uživatele homeassistant, pod kterým celá služba poběží a vytvoříme základní adresář:

sudo useradd -rm homeassistant -G dialout,gpio
cd /opt
sudo mkdir homeassistant
sudo chown homeassistant:homeassistant homeassistant

Dalším krokem je pak vytvoření virtuální prostředí Pythonu pro Homeassistant, což vytvoříme pod homeassistant uživatelem:

sudo -u homeassistant -H -s
cd /opt/homeassistant
python3 -m venv .
source bin/activate

… a v již virtuálním prostředí spustíme:

python3 -m pip install wheel
pip3 install homeassistant

Homeassistant pak můžeme spustit pomocí příkazu hass a nebo si lépe připravíme službu, kterou necháme spustit při startu systému. Vytvoříme proto nový soubor /etc/systemd/system/home-assistant.service:

[Unit]
Description=Home Assistant
After=network-online.target

[Service]
Type=simple
User=homeassistant
ExecStart=/opt/homeassistant/bin/hass -c "/home/homeassistant/.homeassistant"

[Install]
WantedBy=multi-user.target

.. a zapneme službu:

sudo systemctl enable home-assistant.service

Můžeme pak buď systém restartovat a nebo rovnou službu spustit:

sudo service start home-assistant

Inicializace po prvotním startu

Po úspěšné inicializaci vyskočí obrazovka s vytvořením přihlašovacího účtu

Do výzvy k přihlášení vyplníme uživatelský účet, který jsme právě vytvořili a měli bychom se dostat na úvodní dashboard.

Na mém dashboardu už se automaticky přidalo ovládání na Bose reproduktor.

Bose reproduktor SoundTouch 20 III

Homeassistant si totiž provádí jakýsi sken zařízení v síti a snaží se je rovnou přidat. Většinu zařízení však budeme muset nakonfigurovat – o tom ale až později.

Konfigurační soubor obsahující vše zatím popsané v této sérii článků můžete zkouknout na mém Github repozitáři.

Kompletní série o HomeAsistentovi obsahuje následující články:

  • 1. část – Představení HomeAsisstent – tento článek
  • 2. částIntegrace Sonoff s firmware Sonoff-Tasmota
  • 3. částIntegrace Homekit
  • 4. částIntegrace Sonoff s firmware Sonoff-Tasmota – 2 část
  • 5. částIntegrace s Wemos D1 a senzory teploty
  • 6. částIntegrace Sonoff s firmware ESPHome
  • 7. částIntegrace Sonoff POW s firmware ESPHome
  • 8. částIntegrace LED Magic Home s firmware ESPHome
  • 9. částIntegrace Xiaomi Mijia a Aqara
  • 10. část – Integrace vlastní Zigbee gateway
  • 11. část – Vzdálený přístup do Hass.io z Internetu
  • 12. část – zobrazení senzorových data pomocí InfluxDB a Grafany
  • 13. část – Hass.io Add-ony, které používám
  • 14. část – Integrace Xiaomi Mi Flora
  • 15. část – Integrace Withings (Nokia)

42 komentářů

Napsat komentář

Tato stránka používá Akismet k omezení spamu. Podívejte se, jak vaše data z komentářů zpracováváme..

  • Zdravím. Jedu podle vašeho návodu na Raspberry. Nainstaloval jsem Raspberry. Všechno jede. Pak jsem na stávající SD kartu pomocí etcher.io naflashoval hasio image. Etcher se na nic neptal a flashoval. Poté už nejde spustit Raspberry. Mmch, návod pro „Raspberry“ končí odstavcem o „ORANGE PI“, nebo mám něco použít i z něho. Mám za to, že pak po flashi to rovnou naběhne do „inicializace po prvotním startu“, ale u mně se to zaseklo. Jakoby přepsalo systém Raspberry a nic nejede. Dík za rady.

    • Tak vše v pořádku, do návodu je třeba připsat, že Rasp musí být připojen ethernetem. 🙂 1. stránka v pořádku.

      • Díky za odpověď. Já teď budu dva týdny mimo ČR, takže se pomoc hodila 🙂

        • Teď jsem narazil na problém, jak do existujícího hasio přidat wifi. 🙂 Ty 2 týdny budou dlouhá doba. S váma bych to dokončil. 🙂

  • Dík za návody. V souvislosti s HA bych se rád zeptal, jak vyřešit životnost SD karty na Raspberry? Nebo Orange Pi je na tom lépe?

    • Odpovím si sám. Hassio nepodporuje USB. Takže kdo chce provozovat Rsp na SSD musí najít způsob jak to nahrát na SSD bez potřeby SD karty.

    • Dnes jsem se vrátil konečně zpět do ČR a postupně během týdne se pokusím odpovědět i na všechny komentáře. Co se týče SD – zřejmě jste to už slyšel, že se obecně doporučuje koupit kvalitní značky. Určitým „lepším“ řešením by měly být eMMC, které mají obvykle i benefit, že jsou rychlejší, ale konkrétní čísla jsem nikde zatím nanašel. SSD je v tomhle případě nejspolehlivějším a nejrychlejším řešením, ale také nejdražším.

  • Pěkné návody pomalu se pokouším automatizovat dům. Po některých zásazích mě nešel WWW přístup na Hassio. Pomohl až příkaz přes SSH „$ hassio supervisor reload“. Zde je ještě několik užitečných příkazu https://www.home-assistant.io/hassio/commandline/ . Třeba se budou někomu hodit.

  • Chtěl bych doplnit ,že pokud instalujete Raspberry Pi – Raspbian + docker a naistalujete network-manager tak se vám budou každým restartem měnit mac adresy a nebudete schopni nastavit fixní ip pro tento system. Bojoval jsem stím dva dny než jsme na nějakém fóru našel že to dělá tento manager. po odistalovaní vše běží jak má.

      • Však tak to má být, Potřeboval byl ,ale pomoc zda nevíte jak nastavit aby se mi u tracked diveces pres nmap nezobrazoval status home /not:home ale chtěl bych ho změnit na Zapnuto / vypnuto (abych hhezky viděl zda je pc zapnuté či ne , zobrazuje se mu home a to není moc hezké)

        • Myslím ze by to mohlo jít přes Template komponentu, ale nemam teď možnost na to kouknout detailněji

          • ano otom jsme se taky dočetl ,a už stím laboruji druhý den a né to zprovoznit. jsem stracený

  • Dobrý den, nefunguje odkaz na stažení instalačního scriptu Hassio pro instalaci v Dockeru, můžete se na to podívat?

    • Díky za upozornění. Příslušnou část v článku jsem zaaktualizoval. Dejte mi vědět zda to funguje.

      • Tak se mi to nějak nedaří, instaluji to na RPi1, nainstaluji Raspbian Stretch Lite, jedu podle výše popsaného návodu, dostanu se až k instalaci Hassio ale tam končím na chybové hlášce :
        “ pi@raspberrypi:~ $ -sL https://raw.githubusercontent.com/home-assistant/hassio-installer/master/hassio_install.sh | bash -s — -m raspberrypi
        mkdir: cannot create directory ‘/usr/share/hassio’: Permission denied“
        Použiju sudo :
        „pi@raspberrypi:~ $ sudo curl -sL https://raw.githubusercontent.com/home-assistant/hassio-installer/master/hassio_install.sh | bash -s — -m raspberrypi
        mkdir: cannot create directory ‘/usr/share/hassio’: Permission denied“
        Zkusím sudo su :
        „pi@raspberrypi:~ $ sudo su
        root@raspberrypi:/home/pi# curl -sL https://raw.githubusercontent.com/home-assistant/hassio-installer/master/hassio_install.sh | bash -s — -m raspberrypi
        [Info] Install supervisor Docker container
        Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?“
        A tady tedy končím. Dělám něco špatně? Chtěl jsem mít možnost doinstalovat Kodi a Hyperion, proto jsem nepoužil postup instalace stažením image Hassio a řeším to přes Raspbian.

        • Problém bude v tom, že skript je potřeba spustit jako root uživatel a vy jste přihlášen jako „pi“. Zkuste změnit příkaz takto:
          curl -sL https://raw.githubusercontent.com/home-assistant/hassio-installer/master/hassio_install.sh | sudo bash -s -- -m raspberrypi3 .. a dejte mi pak vědět zda to zabralo. Pokud ano, upravím v článku.

          • Tak jsem trochu pogooglil a problém je zřejmě v RaspberryPi1 a použité verzi Dockeru. Pokud jsem nainstaloval starší verzi příkazem sudo apt-get install docker-ce=18.06.2~ce~3-0~raspbian tak jsem se pohnul dále :
            pi@raspberrypi:~ $ sudo su
            root@raspberrypi:/home/pi# curl -sL https://raw.githubusercontent.com/home-assistant/hassio-installer/master/hassio_install.sh | bash -s -- -m raspberrypi
            [Warning] Create DNS settings for Docker to avoid systemd bug!
            [Info] Restart Docker and wait 30 seconds
            [Info] Install supervisor Docker container
            [Info] Install supervisor startup scripts
            Created symlink /etc/systemd/system/multi-user.target.wants/hassio-supervisor.service → /etc/systemd/system/hassio-supervisor.service.
            [Info] Install AppArmor scripts
            Created symlink /etc/systemd/system/multi-user.target.wants/hassio-apparmor.service → /etc/systemd/system/hassio-apparmor.service.
            [Info] Run Hass.io

            Momentálně čekám až to vše naběhne…

          • Jsem si to koukám nepřečetl pořádně 🙂 V té druhé části už je to jako sudo. Takže nakonec vše naběhlo?

  • Dobry den. Existuje verze Home Assistant, kterou by bylo mozno nainstalovat treba na Nas server? Treba od Zyxelu?

    • Dobrý den, obecné požadavky instalace jsou popsány zde. Ohledně NASu existuje návod pro Synology a FreeNAS – najdete je na zmiňovaném odkazu úplně dole. Obávám se, ale že přímo Zyxel zřejmě podporovaný není. Nicméně já jsem například zkoušel mít HomeAssistent zezačátku i na Synology, nicméně pokud nemáte nějaký silnější model s podporou Dockeru, tak budete částečně limitovaný, jelikož kdo zkusí Hass.io (verze HomeAssistenta pro Docker s vlastním „eshopem“ pluginů) tak nechce jinak 🙂

      • Dekuji za odpoved. Poridim ted raspberry pro zacatek. Jeste jsem v App Storu narazil na aplikaci Home assistant. Bohuzel to po me chce zadat adresu http, takze netusim co umi. Nemate s ni zkusenosti? Predem se omlouvam za zacatecnicke dotazy

        • Tato aplikace dovoluje ovládat Hassio přímo s telefonu. Takže je nutný běžící Home assistant bez něj aplikace nefunguje. Po rozbehnuti HA je nutné v configuration. Yaml přidat řádky pro API a vymyslet si heslo. Pak se v telefonu vloží IP adresa HA a vymyšlené heslo. Poté bude moct teprve používat apku v mobilu.

        • Přesně jak píše Jaromír. Já jen dodám, že v základu vám to bude fungovat pouze v lokální síti doma. Pokud budete chtít přístup i z venku tak je potřeba povolit přesměrování portu na routeru s ideálně změnit na šifrované HTTPS

  • Tak pomalu přicházím na to že Home Assistant je opravdu zoufalý. Po asi 2 týdnech jsem přišel na:
    1. nefunguje pořádně vytváření backupů, někdy se záloha nevytvoří. POkud ano tak někdy není plnohodnotná – po obnově přetrvává chyba která byla před backupem. Do backupu se někdy neuloží flow z Node Red.

    jednotlivé doplňky se hroutí – bez jakéhokoli mého zásahu přestal fungovat node-red, doslova sám od sebe
    doplňky a celý HA raději neaktualizovat, je vysoká šance že tam něco umře
    opakované problémy s entitami které prostě sami od sebe zmizí. V configurátoru sice jsou, ale HA je nevidí. Toto je velmi často probíraný problém.

    Mám sto chutí se vrátit zpět čistě na Node Red což by ale byl krok zpět. Nicméně takto zabugovaný a nestabilůní HA používat nechci. Takže nevím co teď s tím.

    • Já aktivně používám už dvě instalace a aktualizuji pravidelně. Obě části – jak samotný home-asisstent (v adresáři config soubor home-assistant.log – lze se do něj podívat i když HA nenaběhne) tak addony (úplně dole je u každého pluginu sekce log) za mě mají poměrně detailní logování, čili pokud nějaký problém nastal, tak to šlo dohledat – problémy jsem, ale měl spíše při instalaci než při aktualizacích. Zkus se tedy mrknout do logu, popř. pošli pokud to není zřejmé čím by to mohlo být.

      Mohlo by to možná nějak souviset s Node Red, jelikož tenhle nepoužívám, ale jinak těch pluginů mám a typů integrací mám poměrně dost a entity tedy zatím nemizí.

      HA ve verzi Hass.io už mám minimálně 7 měsíců, když koukám na stáří tohoto článku a problémů bylo u mě poměrně málo. Ale jak občas zjišťuju mám asi docela štěstí 🙂

      • Příjde mi že změny které udělám v Konfigurátoru občas HA neakceptuje. Je to jako kdyby někde byly pořád uloženy stará data a HA nechce akceptovat nové části kódu napsané do Konfigurátoru.

        A to se týká i Node Red. Tam mám další směšnou chybu kterou jsem měl mimo jiné i před totálním přeinstalováním SD karty s HA.
        V Node R jsem měl pomocí časovače nastaveno aby se mi každý den v 6:00 vytahovaly žaluzie. V NR jsem časovač po několika dnech odstranil a výsledkem je že žaluzie se stále sami vytahují v 6:00.

        Příjde mi, že HA si v pozadí ještě drží nějaký svůj interní konfigurační soubor který se občas neaktualizuje a vznikne tam rozdíl mezi tím co já píšu do Config souboru a z čeho reálně HA bere informaci o tom co má dělat.

    • Mam stejny problem, ale jine komponenty. Proste updatne se Mosquito a naraz se na nej nejde pripojit. Den googleni a je to known issue a musi se odebrat parametr z configu. Ted bojuju s tim, ze to zamrza, proste se to pres noc kousne a tim vytuhne i MQTT a vsechna chytra zarizeni jsou bez prikazu. Nekdy vytuhne i behem delani snapshotu. Obnovit DB ze snapchotu se mi jeste nikde nepodarilo a to sem presel i na MariaDB a to je jeste horsi. Cinskou SD kartu to odrovnalo za 2 mesice. Ted jedu na znackove zatim 3 mesice. Auto updaty se musel komplet povypinat, to je vylozene risk a musim to updatovat az po prostudovani release notes a udelani backupu. Premyslim o tom rozjet jednu stabilni nistalaci na druhem raspberry kde se nebude updatovat a pobezi core pravidla, a druha instalace kde budou vsemozne baliky a podruzne funkce. Ale nevim jestli se nebudou hadat v siti. Kolegovi to ale treba jede pul roku bez jedineho problemu. Ale ten tam zas krome par cidel nic nema. Ja mam Zigbee branu, RF to MQTT branu a desitku cidel a neda se na to spolehnout. Bal bych se si na tom zalozit cely dum, protoze to musi driv nebo pozdeji zacit delat bordel.

      • Je to tak, HomeAssistant je nestabilní křáp, dívám se už po alternativě.

        Dva týdny mi všechno fungovalo a včera přes noc aniž bych se čehokoli dotknul přestal HA reagovat. Když ho restartuju tak po chvíli zamrzne a nebo se restartuje sám.
        Měnil jsem SD kartu, nespočetněkrát jsem kompletně reinstaloval a stále stejné problémy.
        Už nemám vůli hledat kde je zase problém a čekat jak dlouho asi po opravě vydrží fungovat.

  • Uctivě zdravím, Perfektní stránky! Velká chvála! Mam takový dotaz. Experimentuji delší dobu s Amazon Alexou a teď s Google home, ovládaní televize, světla, topení.
    Mam nastavený nějaký plán, ale mam otázku.
    Každý den je jiné světlo, v zimě dřív tma a podobně.
    Například: Mám nastaveno že se mi v 8 rozsvítí světlo. ALE jde mezi tento příkaz dát čidlo aby si světlo řeklo „ne nerozsvítím ještě je světla dost“ ? Děkuji David

  • Už se mi několikrat stalo že jsem pustil raspberry pi3 s Hassio a načíta nějak dlouho a ani nezpustí server a musel jsem kartu zrformatovat a vše dělat znovu,nevíte čím to muže být ? A když jsem flashnul sonoff bridge RF tak ma stejnou adresu jako Hassio a hassio pak změnilo IP adresu na jinou, to musím zase v zařízenich změnit IP adresy ?

      • Hmm, máte dostatečně silný adaptér. Slyšel jsem už poměrně dost případů, kdy Raspberry přestávalo po nějaké době fungovat a pomohla jedině reinstalace. Po dodání tuším 3A zdrojů to šlapalo už jako hodinky. Ale trochu střílím, sám Raspberry mám už jen na hraní.

          • Ok, v tom případě to bude něco jiného. Snad se ozve někdo kdo Raspberry déle používá.

  • tak včera jsem znova nahral Hassio vše nastavil a dnes se zase nezapne,jakto že se IP změnila a ma jinou ?

    • Tak jsem zjistil že IP co měl včera ma dnes tonas. Jak se da IP nastavit na nějakou aby zase s něčím nekolidovala ? A není to problém že pak nenaběhne Hassio když se změnila IP adresa i když se přihlašuji na tu co ukaže router ?

      • Musíte si nastavit statickou adresu. Buď přímo v Linuxu v nastavení síťového adaptéru a nebo pokud to router umožňuje tak podle mě lepší varianta nechat DHCP na Linuxu a nastavit statickou adresu na routeru. Díky tomu budete mít pak pokaždé stejnou.

        • btw. začínáte mít asi podezřele moc komentářů :). Koukám jsem že jich spousta zkončila ve SPAMu. Už by měli být viditelné.

  • Tak jsem zkusil taktéž instalaci na Rapsbian ale hassio mělo přidělenou po instalaci virtuální IP takže se nepodařilo na službu dostat. Mohl by někdo prosím natočit podrobné instalační video na Rapsbian? Díky a ať se daří

%d blogerům se to líbí: