blog.vyoralek.cz

Centrum chytré domácnosti – HomeAssistant (Hass.io) – 2 část – Integrace Sonoff

V minulé části jsme si ukázali jak nainstalovat HomeAssistant. Dnes navážeme a podíváme se na první integraci a to produkty Sonoff (přehled 1. část, 2. část) za použití modifikovaného firmware Sonoff-Tasmota.

Alternativní firmware ve spínačích Sonoff

Prvním předpokladem pro napojení Sonoff produktů na HomeAssistent je nahrání modifikovaného firmware Sonoff-Tasmota, který jsem již důsledně popsal. Pokud jste to zatím neudělali koukněte na článek a vrhněte se na to.

Alternativa alternativy – ESPHome

Sonoff-Tasmota je skvělý firmware, ale není jediný. Poměrně mladší ESPHome je čistě orientovaný na integraci pro HomeAssistent, což sebou přinaší určité plusy i mínusy. Minimálně pro přehled doporučuji se kouknout i na tuhle alternativu popsanou v 6. části. 

MQTT – Mosquitto broker

Druhým předpokladem je instalace MQTT brokeru, který hraje roli určitého prostředníka mezi firmwarem Sonoff-Tasmota a HomeAssistantem a to za pomocí technologie MQTT, která je navržena speciaálně pro IoT.

Schéma přenosů informace o stavech prostředníctvím MQTT Brokeru
Schéma přenosů informace o stavech prostředníctvím MQTT Brokeru

Pokud máme HomeAsisstant nainstalován jako Hass.io docker image (více o tomhle typu je v předchozím díle) je přidání MQTT brokeru hračka.

V hlavním menu HomeAssistanta najdeme Hass.io a přepneme se do modulu Add-On Store.

Instalace addonů prostřednictvím repositárů Hass.io
Instalace addonů prostřednictvím repositárů Hass.io

V menu pak máme hned dvě možnosti:

  1. Mosquitto broker – rozšíření z oficiálního repozitáře, které obsahuje Mosquitto MQTT brokera.
  2. MQTT Server & Web client – rozšíření z komunitního ropozitáře, které kromě Mosquitto MQTT brokera obsahuje také webové rozhraní Hivemq pro monitorování a posílání MQTT zpráv.

My si zatím vybereme možnost první, i když druhá možnost je zajímavější. Museli bychom ale nastavit SSL komunikaci, což plánuju sepsat v samostatném článku o vzdáleném přístupu, kde už je to nutnost.

Pokud se nyní pokusíme k MQTT brokeru připojit tak dostaneme chybu Not authorized to connect.

Chyba MQTT - Not authorized to connect.

Nyní máme dvě možnosti:

  1. použijeme přihlašování do MQTT stejné jako do HomeAssistant
  2. nadefinujeme speciálního uživatele, které se použije pro MQTT v konfiguraci addonu

Pro první možnost nic upravovat nemusíme – jen použijeme správné uživatelské jméno a heslo. U druhé možnosti změníme konfiguraci:

{
  "logins": [
    {
      "username": "nasuzivatel",
      "password": "naseheslo"
    }
  ],
  "anonymous": false,
 ...
}

V sekci logins nastaveníme username a password

Po použité správného uživatelského jména a hesla bychom již měli být schopni se k brokeru připojit.

Úspěšné připojnení na MQTT brokera
Úspěšné připojení na MQTT brokera

Alternativní MQTT

Pokud z jakéhokoliv důvodu nechcete využít addon HomeAssistanta a máte NAS server od Synology, pak se koukněte na článek jak na to v tomhle případě.

Nastavení Sonoff-Tasmota

Připojíme se na webové rozhraní Sonoff-Tasmota konkrétního zařízení, které chceme nastavit. V menu pak vybereme Nastavení -> Nastavení MQTT.

Do pole Server vyplníme IP adresu Mosquitto brokeru (HomeAsistenta). Port můžeme nechat tak jak je, pokud jsme ho nezměnili v konfiguraci addonu a do pole uživatel/heslo vypníme učet pod kterým jsme nastavili MQTT zprávy.

Pole Topic nastavíme unikátně v rámci všech přístrojů a budeme ho potřebovat hned v dalším kroku pro nastavení HomeAsisstenta.

Konfigurace MQTT pro Sonoff Tasmota
Konfigurace MQTT pro Sonoff Tasmota

Nastavení uložíme a jdeme na další krok.

Konfigurace HomeAssistenta

V případě Hass.io máme v podstatě dvě možnosti

  1. Použití addonu s webových rozhraním pro konfiguraci
  2. Použití addonu na nastavení sdílení složky s konfigurací

Konfigurace přes webové rozhraní

Podobně jako jsme doinstalovali addon pro MQTT můžeme doinstalovat webové rozhraní pro konfigurátor. Najdeme ho v oficiálním repozitáři pod názvem Configurator.

Pro úspěšný start budeme muset změnit v CONFIG sekci heslo (atribut password) a pro jistotu zkontrolujte i povolené sítě:

 "allowed_networks": [
    "192.168.0.0/16",
    "10.2.1.0/24"
  ],
Addon Configurator

Poté už stačí jen kliknout na Open Web Ui, zadat uživatelské jméno a heslo a UI se načte.

V levém horním rohu klikněte na ikonku složky a najděte soubor configuration.yaml. Tohle je hlavní konfigurační soubor celého HomeAssistenta.

Webové UI editoru konfigurace
Webové UI editoru konfigurace

Konfigurace přes sdílenou složku

Instalace sdílení je možné opět udělat pomocí addonu Hass.io. V oficiálním repozitáři si najdeme balíček Samba.

Addon Samba

Před úspěšným startem budeme potřeba opět změnit sekci CONFIG a konkrétně nastavit heslo (password) + síť (allow_hosts).

{
  "workgroup": "WORKGROUP",
  "username": "hassio",
  "password": "hassio",
  "interface": "",
  "allow_hosts": [
    "10.2.1.0/24"
  ]
}

Po startu bychom již na svém počítači měli vidět v okolních počítačích i stroj na kterém běží HomeAssistant – v mém případě orangepizeroplu. Pro přihlášení použijeme uživatele a heslo z konfigurace addonu.

Seznam sdílených složek z Hass.io
Seznam sdílených složek z Hass.io

Ve sdílené složce s názvem config pak nejdeme všechny potřebné soubory. Jak bylo zmíněno výše pro nás je hlavním souborem configuration.yaml.

Seznam souborů ve sdílené složce config
Seznam souborů ve sdílené složce config

Výhodou použití sdílení je souborový přístup k souborům z počítače na kterém pracujeme – můžeme tak například použít náš oblíbený editor – např. Visual Studio Code.

Editace konfigurace Hass.io pomocí Microsoft Visual Code
Editace konfigurace Hass.io pomocí Microsoft Visual Code

Nevýhou však je, že narozdíl od webového konfigurátoru nám editor zajistí pouze základní syntaktické chyby – webový toho umí odhalit více -> tohle už neplatí, jak popisuji v článku, je možné nyní použít plugin do Visual Studio Code a základní kontroly a navíc doplňování bude fungovat.

Přidání MQTT do HomeAssistenta

Že MQTT broker funguje jsme si vyzkoušeli výše. Nastavíme tedy jeho konfiguraci do HomeAssistanta tak aby s ním uměl komunikovat.

Jak vidíte níže, některé hodnoty začínají řetězcem !secret. Je to z toho důvodu, že tyto hodnoty uložíme do jiného souboru secrets.yaml. To se hodí zejména pokud chceme konfigurací s někým sdílet a vyvarujeme se tak sdílení i přihlašovacích údajů.

mqtt:
    broker: !secret mqtt_broker
    port: !secret mqtt_port
    client_id: home-assistant
    keepalive: 60
    username: !secret mqtt_username
    password: !secret mqtt_password
    birth_message: 
        topic: "tele/hass/LWT"
        payload: "Online"
        qos: 1
        retain: true
    will_message:
        topic: "tele/hass/LWT"
        payload: "Offline"
        qos: 1
        retain: true

Po úpravě konfiguračního souboru je potřeba HomeAssistent restartovat a funkčnost propojení si můžeme otestovat pomocí Subscribe na všechny zprávy a měli bychom vidět tzv. birth_message z HomeAssistenta.

Kontrola propojení MQTT s HomeAssistentem
Kontrola propojení MQTT s HomeAssistentem

V nastavení a Integraci bychom pak měli vidět položku MQTT: configuration.yaml, což nám říká, že používáme integraci přes konfigurační soubor.

MQTT integrováno pomocí configuration.yaml
MQTT integrováno pomocí configuration.yaml

Update: Alternativní způsob přidání MQTT do Hass.io

Po shlédnutí videa o budoucnosti HomeAssistenta jsem si všiml jedné věci, že u některých služeb jde nově integraci přidat přímo v Nastavení namísto nutnosti ruční konfigurace v Configuration.yaml. Naštěstí toto se týká i addonu pro MQTT.

Pokud máte tedy přidán MQTT jak je popsáno výše měli byste v menu Nastavení -> Integrace vidět v sekci Objeveno i položku MQTT s tlačítkem Konfigurovat.

Po kliknutí na konfigurovat se objeví následující dialog:

MQTT Broker via Hass.io addon potvrzení

který potvrdíme pomocí Submit. Položka MQTT se nám pak ihned přesune do sekce Zkonfigurováno a co je super, že není potřeba restartovat HomeAssistent. Do budoucna by takovýchto integrací „na kliknutí“ mělo přibývat, což je supr.

Zkonfigurováno MQTT Mosquitto broker

Přidání tlačítka do HomeAssistenta

Už máme nastaveno téměř vše kromě propojení MQTT zpráv ze Sonoff firmwaru a HomeAssistenta.

To uděláme v sekci switch – kde jsou definovány přepínače. U nastavení zpráv je důležité zejména správě nastavit tzv. topic, který jsme nastavovali v Sonoff firmwaru. Ten dáme doprostřed definice všech topiců pro HomeAssistenta.

Zároveň v závislosti na verzi a jazyku Sonoff firmwaru se může lišit formát payloadů pro zapnutí a vypnutí a také texty oznamujicí návratový stav. Níže uvedené konfigurace je platná minimálně pro verzi 6.3.0 v české verzi.

switch:
    - platform: mqtt
      name: "lamp_bed_right"
      state_topic: "stat/sonoff-01/RESULT"
      value_template: '{{ value_json["POWER1"] }}'
      command_topic: "cmnd/sonoff-01/POWER"
      availability_topic: "tele/sonoff-01/LWT"
      payload_on: "ON"
      payload_off: "OFF"
      payload_available: "Aktivní"
      payload_not_available: "Neaktivní"

Jelikož jsme měnili konfigurační soubor zrestartujeme HomeAssistenta a nyní už bychom měli vidět novou sekci spínač a v ní novou položku. Pomocí přepínače vpravo pak můžeme zapínat / vypínat Sonoff spínač.

Vše propojeno - ovládání přepínáše Sonoffu z HomeAssistantu
Vše propojeno – ovládání přepínáče Sonoffu z HomeAssistantu

Toliko k obecnému postupu napojení Sonoff produktů. Pokud Vás to zaujalo a nevíte, který konkrétní produkt si vybrat pak koukněte na mé souhrny – 1. část a 2. část.

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.

V další části už třetí jsme se podívali jak to celé propojit s ekosystémem a hlasovým ovládáním od Applu, tj. na Homekit.

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)

35 komentářů

Napsat komentář

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

  • Dobrý den. Potřeboval bych malinko postrčit správným směrem. Začínám si hrát s Hass.io. (ve verzi 0.86.0, zatím pokusně na RPi 1). Povedlo se mi nainstalovat Configurator a Mosquitto Broker. Broker jede (připojím se z MQTT.fx). Pak jsem provedl integraci (z menu „nastavení“). Hassio hlásí MQTT Zkonfigurováno. (Nicméně v configuration.yaml o mqtt nic není) Pak jsem přidal tlačítko. Do configuration.yaml jsem zkopíroval Vaší konfiguraci, kde jsem přepsal topicy dle nastavení v tasmota (v Sonoff S20). Něco ale dělám blbě. V Hassio vidím spínač, ale je neaktivní. Moc prosím o radu kde hledat chybu. Díky! Vladimír Dvořák

    • Dobrý den,

      podle toho co popisujete bude problém nejspíše mímo Hass.io. Zkontroloval bych nejprve samotný Sonoff přes webové rozhraní, zda má správnou IP adresu pro MQTT. Pokud ano tak bych zkusil v MQTT.fx se přihlásit na odběr zpráv – můžete klidně vše pokud toho nemáte hodně přes #. Jestli uvidíte zprávy ze Sonoffu tak tam je zřejmě vše správně a pak už jedině tedy překlep v konfiguraci Sonoffu v Hass.io.

      Dejte vědět jestli vás to někam posunulo 🙂

    • btw. kdyby vám to stále nešlo tak během víkendu bych měl sepsat další pokračování na ESPHome. Před chvíli jsem to zkoušel s Sonoff S20 a funguje je to zdá se výborně. Pro vás by mohlo být zajímavé, že instalace je poněkud přímočařejší a je větší šance, že vám to bude fungovat.

      Článek vyjde zřejmě zítra odpoledne.

      • Dobrý den. Tak jsem se neposunul ani o milimetr. Ano, v MQTT.fx úspěšně odebírám zprávy ze Sonoffu. Řekl bych, že máte pravdu a problém bude v konfiguraci Hass.io. Netuším zda Hass.io komunikuje s Mosquittem (když v configuration.yaml není o MQTT ani slovo). Dovoluji si poslat inkriminovanou část konfigurace a moc prosím o radu. Díky, Vladimír

        Sensor

        sensor:
        # Weather prediction
        - platform: yr

        switch:
        - platform: mqtt
        name: "sonoff_S20_1"
        state_topic: "stat/sonoff_S20_1/RESULT"
        value_template: '{{ value_json["POWER1"] }}'
        command_topic: "cmnd/sonoff_S20_1/POWER"
        availability_topic: "tele/sonoff_S20_1/LWT"
        payload_on: "ON"
        payload_off: "OFF"
        payload_available: "Aktivní"
        payload_not_available: "Neaktivní"

        Text to speech

        tts:
        - platform: google

        • Zkuste změnit hodnotu value_template na:
          value_template: '{{ value_json["POWER"] }}'
          .. tj odstranit tu jedničku.

          • Umázl jsem jedničku, uložil, restartoval Hass.io a bohužel stále totéž. Moc se omlovám, že mi to nejde a votravuju.

          • Hmm, ještě mě napadá jestli máte správně topic name, tj. např. v tomhle stat/sonoff_S20_1/RESULT zda je ten sonoff_S20_1 nastavený takhle i v Tasmotě. A další věc – máte tasmotu v češtině? Jinak je potřeba měnit payload_available a payload_not_available. Můžete sem případně ještě zkusit nakopírovat co je přesně v MQTT zprávě stat/sonoff_S20_1/RESULT. Ale žádnou jasnou chybu tam už nevidím.

          • BINGO! Byla to ta čeština. Místo Aktivní/Neaktivní jsem dal Online/Offline a teď se raduju z prvního funkčního zařízení pod Hassi.io. Jen netuším, proč mám v Hass.io ovládací prvek 2x – jednou v řádce „Spínač“ a podruhé (hned pod tím) u „sonoff_S20_1“ . Oba se chovají stejně (dobře). Díky moc.
            Snažím se proniknout do Hass.io (a MQTT) a ani až tak moc nejde o spínání Sonoffu. Bylo to ale jedné zařízení, na kterém jsem si to mohl trochu vyzkoušet. Mám za lubem něco jiného a moc by mne zajímal Váš názor. Nevím ale, jestli se mám rozepisovat zde.

      • Právě jsem zjistil, že Sonoff můžu ovládat posláním příkazu z nástroje MQTT v Hass.io. Znamená to tedy, že mezi Hass.io a Mosquittem problém není? Díky

  • Zdravím, tak jsem dospěl do bodu, že mám nainstalován Hasio, configurator, Mosquitto broker a Sambu. Po kontrole mi vypíše chybu mqtt:
    Secret mqtt_broker not defined . Potřebuji dosadit název bokeru. Ve vašem návodu to není. Jinak do Sonofu „Celý topic“ jsem napsal toto „tele/hass/LWT“ V Přehledu se mi nezobrazil přepínač. Bohužel jsem začátečník, tak jedu bod po bodu. 🙂 Někde něco chybí. 🙂 Jinak pokud toto já nainstaluji, tak pak už každý. 🙂

  • Dobrý, děkuji za super návod. Vše jsem udělal jak je uvedné výše a teď se peru se zajímavou drobností. V HA spínač S20 zapnu, ale už nevypnu. A stejně tak pokud ho vypnu tlačítkem na přístroji stav se nepřenese do HA. Dokáže mě někdo popostrčit?

    • Můžeš sem hodit nastavení? Tj. ideálně to co máš v Sonoff-Tasmota v sekci Topic a Celý topic a pak jak máš konfiguraci v HomeAssistentovi. Tedy předpokládám, že máš v Sonoffu S20 nahranou Tasmotu že? Já jsem se s ničím takovým ještě nesetkal, ale třebas nám konfigurace napoví.

  • Dobrý den, chci se zeptat, kdy budete dělat článek o vzdáleném přístupu do Home Assistanta?
    Teď s tím trochu bojuji a to přes DuckDNS. Na hlavní obrazovku se přihlásím, ale nedaří se mi dostat do Addonu Configurátor. Za návod budu rád.

    • Dobrý den, mám to v plánu. Rozchodil jsem to u sebe právě přes DuckDNS ale ještě nejsem úplně spokojený s výsledkem. Rád bych zapojil ještě Nginx. Btw vy chcete mít přístup do konfigurace i z venčí? Já to nakonec po úvaze zakázal, jelikož mě to přišlo trochu nebezpečné.

      • No ono je to trochu složitější. Na hlavní obrazovku se dostanu z venku, ale i doma jenom přes „my-domain.duckdns.org“, což by k ovládání stačilo. Bral jsem to tak, že když je to chráněné uživatelským jménem a heslem, tak jsem v klidu a chtěl bych si třeba i vzdáleně dělat úpravy přes onem CONFIGURATOR. Ale to se mi nedaří zajistit, i když mám v routeru povolen port 3128, tak stejně mi to vyhazuje chybu a blokuje IP adresy, chyby jsou:
        Policy not fulfilled
        a v logu configurátoru to vypisuje:
        WARNING:2019-03-15 10:49:32,360:main:Client IP banned.
        INFO:2019-03-15 10:49:32,360:main:213.226.226.92 – „GET / HTTP/1.1“ 420 –

        A další problém je, jelikož mám aktivované SSL přes DuckDNS, tak se ani z domu do configuratoru nedostanu, pouze přes sdílenou složku SAMBY.

        • Myslím, že to odmítnutí připojení bude kvůli konfiguraci addonu, konkrétně je tam tahle sekce:
          "allowed_networks": [
          "192.168.0.0/16",
          "172.30.0.0/16"
          ],

          Dle popisu je to povinný parameter, takže se trochu obávám, že byste tam musel nastavit veškeré adresy, popř. rozsahy adres ze kterých se budete zvenku připojovat.
          Co se týče lokálního přístupu zkuste přepsat DuckDNS adresu na lokální IP a pak byste se měl do konfigurace dostat.

  • Dobrý den,

    na základě Vašich článků začínám a prokousávám se Home Assistantem. Chci do něj přenést řízení bytu které mi teď běží na node red.

    Narazil jsem ale problém s addonem Samba share. Nejsem schopen raspberry vidět v síti. Moje nastavení Samba:

    {
    „workgroup“: „WORKGROUP“,
    „username“: „mirek“,
    „password“: „mirek“,
    „interface“: „“,
    „allow_hosts“: [
    „10.0.0.0/8“,
    „10.2.1.0/24“,
    „172.16.0.0/12“,
    „192.168.0.0/16“,
    „192.168.0.114“
    ]
    }

    Po spuštění mi Log Samba napíše:
    dlouhý log a vněm…..
    Samba name server HASSIO is now a local master browser for workgroup WORKGROUP on subnet 172.17.0.1…..

    Když spustím WinSCP, tak zadám nové připojení

    Protokol: SFTP
    hostitel: 172.17.0.1
    port: 22
    jméno a heslo: mirek a mirek

    násleně naskočí okno:

    Hledání hostitele…
    Spojování s hostitelem…
    Autentizace…
    Používám uživatelské jméno „mirek“
    Autentizace předvyplněným heslem
    Přístup odepřen

    jméno a heslo vždy zadávám správně a vždy přístup odepřen.

    Neřešil jste něko podobný problém?

    Děkuji,
    Mirek

    • Zdravím, sice používáte doplněk samba, ale následně se připojujete přes SFTP. Buďto si nainstalujte doplněk SSH Server, pokud chcete zůstat u WinSCP, anebo, pokud máte Windows, můžete zkusit v průzkuníkovi napsat \192.168.x.x, kde uvedete správnou IP adresu HA.

      • Opravdu, klasicky přes win průzkumníka jsem se tam dostal. Velice děkuji za radu 🙂

    • Díky Pavlovi za odpověď 🙂 Snad vám to pomůže. Je to přesně tak – mixujete dvě různé služby dohromady.

      • Díky za pěkný návody. Jen jak se rychle mění nové verze, tak spousta nastavení ubývá, nebo se naopak mění. Teď jsem se teď trápil 2 dny s Tasmotou a MQQT, ale nakonec se zadařilo. Mam MQTT Broker 4.2 a Tasmotu fw 6.5. Ne a ne to doladit. Z configu muselo vše co se týkalo mqtt pryč a na Tasmotě jsem musel dát „SetOption19“ na ON. Konečně se viděj 🙂

        • Jj, je to progresivní obor :), což je na jednu stranu šílený, ale na druhou stranu zase o to zajímavější. V rámci možností se snažím návody i zpětně aktualizovat, čili díky za každou zpětnou vazbu.

          • Váš návod je super, jen jak říká kolega Tom – aktuálně (Verze 6.5) je třeba v Sonoff device na konzoli zadat „SetOption19 1“ aby proběhlo discovery.

  • Proč mi ve všech konzolích sonoff ukazuje:
    MQT: sonoff-Bridge/tele/RESULT
    a když jsem se díval podle videa tak tam všichni maji:
    MQT: tele/sonoff/RESULT a ja to mam naopak není to pak duvod že mi nekomunikuje Bridge s asistentem ? přitom basic to ma same a ovladani funguje

  • Mam vypínač v přehledu jde ovladat ale když dam automatizaci nebo se podivam do zařízení tak tam není žadné a v device taky nic ,jak jej tam dostanu ?

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