Vlastní chytrá zařízení snadno a rychle: Úvod do ESPHome

Máme server, máme zálohy a díky minulému dílu o vzdáleném přístupu už můžeme dům ovládat odkudkoliv. Doposud jsme se ale v našem seriálu pohybovali v bezpečných vodách hotových produktů. Koupili jsme krabičku, zapojili ji do zásuvky a fungovalo to. Pro většinu lidí to stačí. Ale pokud čtete tento seriál, pravděpodobně vám "většina" nestačí.

Tento díl je věnován všem kutilům, nadšencům a "hračičkám", které láká svět Arduina a vlastního hardwaru. Možná vás štve, že komerční senzor stojí pětistovku, přitom součástky uvnitř mají cenu padesáti korun. Možná potřebujete měřit něco specifického, na co se senzor neprodává. A nebo prostě jen chcete zažít ten pocit vítězství, když vlastnoručně vyrobená elektronika poprvé ožije.

Vítejte u ESPHome. Toto je nástroj, který boří bariéru mezi složitým programováním mikrokontrolérů a chytrou domácností. Umožní vám postavit si vlastní zařízení na míru, aniž byste museli být vystudovaní elektrotechnici.

V tomto a příštím díle si postavíme vlastní chytré zařízení. Nebojte, ještě nebudeme žhavit páječku ani leptat plošné spoje. Začneme s tím, co se pravděpodobně mnoha z vás válí v šuplíku – s vývojovou deskou (třeba z nějakého staršího pokusu s Arduinem). Naším cílem bude vytvořit zařízení s jednou LED diodou a jedním tlačítkem, které bude plně komunikovat s Home Assistantem.

Proč ESPHome (a proč ne C++)

Možná máte představu, že výroba elektroniky vyžaduje, abyste byli zdatní programátoři. Běžně se totiž mikrokontroléry programují v jazyce C nebo C++.

Pokud byste šli touto "klasickou" cestou (známou z prostředí Arduino IDE), čekalo by vás:

  1. Studování knihoven: Místo samotného tvoření byste trávili hodiny hledáním správných knihoven pro každou součástku a studováním jejich dokumentace. Jedna knihovna pro teploměr, druhá pro displej, třetí pro Wi-Fi... a pak byste řešili, proč si ty knihovny navzájem nerozumí.
  2. Složitý kód: Ruční psaní logiky pro připojení k Wi-Fi, ošetřování výpadků sítě, řešení asynchronní komunikace a správa paměti, aby se čip nezasekával.
  3. Dvojí práce: To nejhorší nakonec – museli byste programovat obě strany. Naprogramovat čip, aby posílal data (např. přes protokol MQTT), a poté ručně konfigurovat Home Assistant, aby tato data uměl přijmout a zobrazit. Jakákoliv změna by znamenala úpravu na dvou místech.

ESPHome na to jde jinak. Funguje jako chytrý generátor. Vy mu pomocí přehledné konfigurace (YAML) pouze nadefinujete parametry ("Tlačítko je na pinu 5, dioda na pinu 2"). ESPHome si tento "recept" přečte a všechnu tu špinavou práci v C++ udělá na pozadí za vás. Hlavní výhodou je centralizace. V jednom souboru definujete chování čipu i to, jak se má tvářit v Home Assistantovi. O zbytek se postará "Native API", díky kterému se zařízení spáruje a nastaví úplně samo.

A je tu ještě jedna revoluční vlastnost: OTA (Over-The-Air) aktualizace. Zatímco u klasického Arduina musíte pro každou změnu v kódu fyzicky dojít k zařízení a připojit ho kabelem k počítači, u ESPHome kabel použijete jen poprvé. Jakmile je zařízení k vašemu serveru Home Assistant, všechny další úpravy (třeba změnu citlivosti senzoru) posíláte pohodlně přes Wi-Fi i když je senzor zavřený v krabici na půdě.

Podporované rodiny čipů

Projekt ESPHome původně vznikl s jasným cílem – ovládnout čipy od společnosti Espressif. Právě legendární ESP8266 a jeho modernější a výkonnější nástupce ESP32 jsou dodnes absolutním základem většiny kutilských IoT projektů. Pokud doma otevřete chytrou zásuvku nebo žárovku, je velká šance, že uvnitř najdete právě jeden z těchto čipů.

Vývojáři však nezůstali jen u nich. Podpora se postupně rozšiřuje i na další rodiny mikrokontrolérů. Dnes tak můžete ESPHome nahrát třeba do populárního RP2040 (známého z Raspberry Pi Pico W) nebo do čipů od Nordic Semiconductor (nRF52), Realtek (RTL87xx) či Beken (BK72xx). Tyto "exotičtější" čipy často najdete v nejlevnějších zařízeních z čínských e-shopů, která se dříve nedala jednoduše integrovat.

Je ale dobré mít na paměti, že podpora pro žhavé novinky má vždy určité zpoždění. Než se nejnovější procesor objeví v seznamu podporovaných, chvíli to trvá. Kompletní a aktuální přehled všech podporovaných rodin najdete vždy přímo na úvodní stránce projektu esphome.io.

Co budeme používat my? I když je výběr široký, pro naše návody zůstaneme u osvědčené klasiky – desky s čipem ESP32.

Příprava prostředí: Instalace doplňku

Abychom mohli začít, nainstalujeme si doplněk, který plně nahrazuje klasické Arduino IDE. Obsahuje textový editor, kompilátor i nahrávací nástroj. Vše běží přímo na serveru, takže do svého počítače nemusíte instalovat vůbec nic.

  1. Otevřete Home Assistant.
  2. Jděte do Nastavení -> Doplňky -> Obchod s doplňky.
  3. Do vyhledávání napište ESPHome.
  4. Klikněte na oficiální doplněk ESPHome a dejte Instalovat.
  5. Klikněte na Spustit.

Tip: Po instalaci zapněte přepínač Zobrazit v postranním panelu, ať máte nástroj po ruce. Naopak Spustit při startu a Hlídací pes klidně nechte vypnuté. Doplněk totiž slouží jen jako "vývojová dílna" pro správu a aktualizace – vaše hotová zařízení budou s Home Assistantem komunikovat napřímo, i když je tento doplněk vypnutý.

Nyní v levém menu uvidíte novou položku ESPHome. Když na ni kliknete, otevře se vám dashboard, který bude zatím prázdný.

První nahrání: Oživujeme křemík

Teorie je za námi, doplněk běží. Teď provedeme tzv. prvotní instalaci (initial provisioning). To je proces, kdy do úplně prázdné vývojové desky nahrajeme základní systém ESPHome.

Tento krok je jediný, kdy budeme potřebovat USB kabel. Jakmile se zařízení jednou připojí k Wi-Fi, všechny další úpravy už budeme posílat vzduchem (OTA).

Existuje několik způsobů, jak to udělat:

  1. Přímo z doplňku v Home Assistantovi: Toto je logická volba, ale často narazí na bezpečnostní pravidla prohlížečů. Pokud nemáte Home Assistant na zabezpečeném protokolu (HTTPS), prohlížeč vám nedovolí sáhnout na USB port počítače.
  2. Přes příkazový řádek (CLI): Pro pokročilé uživatele Linuxu nebo macOS.
  3. Přes webový nástroj (web.esphome.io): Oficiální nástroj běžící na HTTPS, který funguje spolehlivě všem.

My si pro tento návod zvolíme třetí možnost – cestu nejmenšího odporu. Je nejméně náchylná k chybám, obejdeme s ní problémy s HTTP a umožní nám nastavit Wi-Fi pohodlně z telefonu.

Krok 1: Nahrání systému přes web

  1. Připojte svou ESP desku USB kabelem k počítači
  2. Otevřete stránku web.esphome.io v prohlížeči Chrome nebo Edge (Firefox nepodporuje funkci WebSerial).
  3. Klikněte na tlačítko Connect.
  4. V seznamu vyberte port, na kterém se deska hlásí (často označen jako USB Serial).
  5. Klikněte na PREPARE FOR FIRST USE a potvrďte instalaci (Install).

Proč je seznam prázdný? Pokud se v nabídce nic neobjevilo, počítač vaši desku nevidí. Na vině jsou obvykle chybějící ovladače pro USB převodník. Podívejte se do dokumentace k vaší desce (nebo přímo na nápis na malém černém čipu u USB konektoru), zjistěte typ převodníku (nejčastěji CH340 nebo CP2102) a příslušný ovladač doinstalujte.

Nástroj nyní stáhne univerzální verzi ESPHome a nahraje ji do vašeho čipu. Bude to trvat asi 2 minuty.

Pokud se stále nedaří nahrát ESPHome na vaší desku, zkuste to na jiném počítači.

Krok 2: Připojení k Wi-Fi (Provisioning)

Jakmile nahrávání skončí, deska se restartuje. Protože ale ještě nezná heslo k vaší domácí Wi-Fi, začne vysílat svou vlastní síť (hotspot). K té se nyní musíte připojit, abyste vše nastavili – použít k tomu můžete buď mobilní telefon, nebo počítač s Wi-Fi.

  1. V seznamu Wi-Fi sítí vyhledejte síť s názvem esphome-web-xxxxxx.
  2. Připojte se k ní.
  3. Telefon by měl automaticky otevřít přihlašovací stránku pro danou Wi-Fi. Pokud ne, otevřete jakýkoli webový prohlížeč a jděte na adresu http://192.168.4.1
  4. Zde uvidíte seznam dostupných sítí. Vyberte tu vaši domácí, zadejte heslo a uložte kliknutím na Save.

Deska se nyní odpojí a přihlásí se do vaší domácí sítě.

Krok 3: Přidání do Home Assistanta

Nyní máme v síti běžící zařízení, o kterém ale náš Home Assistant zatím "ví jen napůl". Musíme nad ním převzít kontrolu. 

  1. Otevřete Home Assistant a jděte do Nastavení -> Zařízení a služby.
  2. V sekci Zjištěno uvidíte zařízení ESPHome, které Home Assistant našel ve vaší domácí síti.
  3. Klikněte na Přidat (Configure)
  4. Nyní můžeme přejít zpátky do našeho nově nainstalovaného doplňku ESPHome, který budete mít v bočním panelu Home Assistanta
  5. Zde se vám také ukáže Zjištěné nové zařízení. Abyste mohli do zařízení nahrávat vlastní kód, musíte ho i zde přidat kliknutím na Take control
  6. Zařízení pojmenujte tak, abyste věděli, o které se jedná.
  7. ESPHome se vás ještě zeptá na přihlašovací údaje k Wi-Fi, aby je mohl přidávat do konfigurací všech vašich zařízení. Tyto údaje budou uloženy ve společném souboru secrets.yaml, který je přístupný po pravé straně horní lišty doplňku. Kdybyste potom měnili heslo k Wi-Fi, stačí ho změnit pouze na jednom místě a hromadně nahrát do všech zařízení.
  8. ESPHome se vás zeptá, jestli chcete do nového zařízení nahrát vlastní konfiguraci. Zatím to není nutné. Tento krok doporučujeme odložit do doby, než budete mít konfiguraci upravenou podle sebe.

Vaše zařízení je nyní připravené na aktualizace OTA (nahrávaní softwaru přes Wi-Fi).

V dalším díle

Právě jste překonali tu nejvyšší vstupní bariéru. Máte doma vlastní hardware, který je bezpečně připojený do vaší sítě, má svou identitu a Home Assistant s ním umí komunikovat. Od této chvíle je vaše deska připravena přijímat jakékoliv příkazy a vylepšení bezdrátově, přímo z pohodlí vašeho prohlížeče.

V příštím díle už opustíme instalace a vrhneme se čistě na tvorbu. Upravíme konfiguraci našeho zařízení v jazyce YAML a společně vytvoříme naše první skutečně funkční zařízení. Naučíme se, jak z vašeho Home Assistanta ovládat LED diodu a jak do něj přenášet stisky fyzického tlačítka. Tím si postavíme pevné základy pro jakýkoliv váš budoucí projekt, ať už půjde o chytrý zvonek, ovládání čerpadla nebo vlastní termostat.

Další podobné články