Přeskočit na hlavní obsah

ESPHome - Chytré zařízení z ESP32 za pár minut

ESPHome je open-source framework, který zásadně zjednodušuje vytváření vlastních chytrých zařízení z levných Wi-Fi mikrokontrolérů. Místo složitého programování v C++ stačí jednoduchý YAML konfigurační soubor a ESPHome se postará o zbytek.

ESPHome Device Builder

Aktualizováno pro ESPHome 2026.7

Tenhle článek jsem psal původně na verzi 2025.10 a od té doby se v ESPHome změnilo hodně - nové webové rozhraní Device Builder, ESP-IDF jako výchozí framework a několik breaking changes, které se týkají skoro každého. Všechny postupy a screenshoty jsem ověřil na ESPHome 2026.7.3 (Device Builder 1.7.0) a Home Assistant 2026.7.4.

Pokud jste konfigurace dlouho neaktualizovali, přeskočte prosím rovnou na Co se změnilo od roku 2025 - je tam soupis změn, kvůli kterým vám konfigurace nemusí projít validací.

Co je ESPHome

V podstatě jde o nástroj, který vám umožní:

  • Vytvářet vlastní chytrá zařízení pomocí jednoduchých YAML souborů
  • Bezproblémová integrace s Home Assistant
  • OTA aktualizace - bezdrátové nahrávání firmware
  • Lokální ovládání - žádná závislost na cloudu
  • Téměř 900 komponent - senzory, displeje, relé...
  • Automatizace přímo na zařízení
  • Není potřeba programovat v C++
  • Není potřeba znát Arduino IDE
  • Není potřeba cloud služby
  • Není potřeba složitá konfigurace
ESPHome a Open Home Foundation

ESPHome je součástí Open Home Foundation – stejné organizace, pod kterou spadá i Home Assistant. To zaručuje dlouhodobou podporu a vývoj.

Podporované mikrokontroléry

ESPHome podporuje širokou škálu hardware a za poslední rok se seznam citelně rozrostl:

PlatformaPopisPoužití
ESP32 (classic, S2, S3, C3)Wi-Fi 4 + Bluetooth, umí Arduino i ESP-IDFVětšina projektů
ESP32-C6, C5Wi-Fi 6 + Bluetooth + Thread/Zigbee, jen ESP-IDFModerní projekty, mesh
ESP32-H2Bez Wi-Fi - jen Thread/Zigbee a BLEMesh senzory bez Wi-Fi
ESP32-P4Výkonný, ale bez vlastního rádiaDispleje, zvuk, kamery
ESP8266Starší, pouze Wi-Fi, málo pamětiJednoduché projekty
RP2040 / RP2350Raspberry Pi Pico, od 2026.3 výrazně vylepšená podporaNesíťové i síťové projekty
Nordic nRF52Zephyr / nRF Connect SDK, Zigbee, Thread, běh na bateriiBateriové senzory
LibreTiny (BK72xx, RTL87xx, LN882x)Přeflashování čínských Tuya zařízeníZáchrana hotového HW
Doporučení

Pro nové projekty doporučuji ESP32 - má dost paměti, podporuje Bluetooth a stojí prakticky stejně jako ESP8266.

Pozor ale na jednu věc: Arduino framework je dnes dostupný jen pro ESP32 (classic), C3, S2 a S3. Varianty C2, C5, C6, C61, H2 a P4 umí výhradně ESP-IDF. Pokud v projektu potřebujete komponentu, která existuje jen pro Arduino, nekupujte C6.

CP2102 USB 2.0 to TTL UART Module

  • USB
Momentálně není k dispozici nákup v této zemi

Co se změnilo od roku 2025

Tohle je nejdůležitější část celého článku. Mezi verzemi 2025.11 a 2026.7 proběhla řada změn, které nejsou kosmetické - některé konfigurace prostě přestanou jít zkompilovat a jedna dokáže rozbít nahrávání firmware.

Máte druhou instanci ESPHome starší než 2025.10? Přestane vám nahrávat

ESPHome v 2026.1 zpřísnilo OTA - MD5 autentizace skončila a SHA256 je povinná, aby nešlo protokol podvodně stlačit na slabší variantu. S tím přišlo jedno omezení, které v changelogu stojí takto:

ESPHome versions before 2025.10.0 that use password authentication cannot OTA to devices running 2026.1.0 or later.

Čtěte to prosím pozorně, protože se to snadno pochopí obráceně (což se stalo i mně): omezení je na straně nástroje, který nahrává, ne na straně zařízení. Pokud instalujete z ESPHome starší než 2025.10, které se autentizuje heslem, nedostanete firmware do zařízení, které už na 2026.1+ běží.

Typicky na to narazíte, když máte ESPHome na víc místech - Device Builder v Home Assistantu, k tomu starou VM nebo notebook s esphome CLI zamrzlým na loňské verzi. Changelog to říká natvrdo: „If you use multiple systems to install and/or update your ESPHome devices, be sure they're all up-to-date!"

Pokud se naopak potřebujete vrátit na verzi starší než 2025.10, jděte na to přes 2025.12.x a teprve z ní OTA na starší. U downgradu na opravdu staré ESPHome navíc nejdřív přepněte ota: na version: 1.

Změny, které se týkají skoro každého

VerzeZměnaCo s tím
2025.11PSRAM se už neaktivuje samaPřidejte blok psram:, u ESP32-S3 je navíc povinný mode (octal / quad)
2025.11Skripty s mode: queued mají defaultně max_runs: 5 místo neomezeněZabraňuje pádům z nedostatku paměti. Skriptů s mode: parallel se to netýká
2025.11priority u Wi-Fi bere jen celá číslapriority: 5.5 změňte na priority: 5
2026.1ESP-IDF je výchozí framework pro ESP32/C3/S2/S3Binárky až o 40 % menší, kompilace 2-3× rychlejší. Kdo potřebuje Arduino, musí ho napsat explicitně
2026.1api: password: bylo odstraněnoNutná migrace na api: encryption: key: - jinak konfigurace neprojde validací
2026.1OTA vyžaduje SHA256, MD5 skončiloViz varování výše - týká se to instancí, ze kterých nahráváte
2026.4ESP32, S2, S3 a C5 jedou defaultně na 240 MHzRychlejší API, ale vyšší spotřeba. Na baterii nastavte cpu_frequency: 160MHZ
2026.5api: max_connections sníženo z 8 na 5Pokud na zařízení visí víc klientů (HA + logy + web), zvyšte ručně
2026.6ESP8266 má defaultně min_auth_mode: WPA2Srovnalo se to s ESP32, který to má už roky. Kdo má starý router jen s WPA, musí to u ESP8266 napsat ručně
2026.6Složka custom_components/ už se nenačítáPřejděte na external_components:
2026.7Nativní toolchain místo PlatformIOBez toolchain: v konfiguraci se staví nativním ESP-IDF. Zpět se vrátíte přes toolchain: platformio
2026.7Zrušen starý dashboard (Tornado)Zůstává jen nový Device Builder, viz níže
2026.7Jeden !include u packages: musí být v seznamupackages: [!include muj.yaml]. Pojmenované balíčky (mapping) se změna netýká
Dobrá zpráva pro majitele NSPanelu

Konfigurace s pojmenovanými balíčky (packages: remote_package: url: ...), což je přesně způsob, jakým se připojuje NSPanel Easy, zůstává v pořádku. Změna v 2026.7 se týká jen zápisu, kdy je za packages: jediný !include bez odrážky.

Novinky, které se vyplatí využít

  • Vizuální editor komponent v Device Builderu - konfiguraci naklikáte, YAML se dopisuje sám
  • Backtrace z pádu bez sériového kabelu (2026.3 pro ESP32, 2026.4 pro ESP8266) - zařízení si crash uloží přes restart a pošle ho přes API
  • esphome analyze-memory - rozpad spotřeby paměti po komponentách, konečně se nemusí hádat
  • OTA umí přepsat partition table i bootloader (2026.5) - a safe_mode se dokáže nabootovat do factory partition, takže i po nepovedené OTA nemusíte hned sahat na kabel
  • Wi-Fi roaming (2026.1) - zařízení po připojení přeskočí na lepší AP, místo aby viselo na vzdáleném
  • BLE proxy je výrazně méně náročné na CPU - API i přeposílání advertisementů dohromady zabírají podle changelogu 2026.4 asi 1,8 % běhu hlavní smyčky (měřeno na ESP32-C3), BLE tracker ubral 85 % CPU (2026.2). Na paměti to ale nic nemění, viz varování u Bluetooth Proxy
  • Bezpečnostní vrstva pro EN18031 (2026.7) - šifrování NVS, ochrana proti downgradu OTA, komponenta provisioning

Instalace ESPHome do Home Assistant

Doplňky se dnes jmenují Aplikace

V aktuálním Home Assistantu (ověřeno na 2026.7.4) už v Nastavení nenajdete Doplňky, ale Aplikace. Starý postup „Nastavení → Doplňky → Obchod s doplňky" tedy už neodpovídá tomu, co uvidíte, i když vede na to samé místo.

Krok 1: Instalace aplikace

  1. V Home Assistant jděte do NastaveníAplikace
  2. Klikněte na Nainstalovat aplikaci (vpravo dole)
  3. Vyhledejte ESPHome
  4. U položky ESPHome Device Builder klikněte na Instalovat

Obchod s aplikacemi - ESPHome

Tři varianty - chcete tu bez přípony

V obchodě uvidíte ESPHome Device Builder, (beta) a (dev). Obě označené Experimentální jsou určené pro testování nových verzí. Pro běžné použití chcete tu bez přípony - beta ani dev vám žádnou funkci nepřinesou, jen dřív odhalí chyby.

Čas instalace

Instalace může trvat několik minut v závislosti na rychlosti vašeho připojení a výkonu systému.

Krok 2: Spuštění aplikace

  1. Po instalaci klikněte na Spustit
  2. Počkejte, až se aplikace rozjede (stav Běží)
  3. Klikněte na Otevřít webové rozhraní

Detail aplikace ESPHome Device Builder

Zapnutou volbou Zobrazit v postranním panelu si ušetříte klikání - do Device Builderu se pak dostanete jednou položkou v levém menu.

Automatickou aktualizaci nechte vypnutou

Vypadá to lákavě, ale ESPHome vydává novou verzi každý měsíc a občas s breaking change (viz tabulka výše). Když se aplikace aktualizuje sama a vy pak necháte přeložit firmware, může se stát, že vám konfigurace neprojde validací ve chvíli, kdy to nejméně potřebujete.

ESPHome Device Builder - nové rozhraní

Tohle je největší viditelná změna. V 2026.5 přišel nový Device Builder jako volitelná beta vedle starého dashboardu, v 2026.6 dosáhl verze 1.0 a stal se výchozím a v 2026.7 se ten původní odstranil úplně - takže se s novým rozhraním setkáte, ať chcete nebo ne.

Na úvodní stránce najdete seznam zařízení. Nově je tu vyhledávání, přepínání mezi kartami, tabulkou a hledáním v YAML, filtry (podle štítků, platformy, stavu, dostupných aktualizací) a hromadné operace přes Select multiple.

ESPHome Device Builder - přehled zařízení

U každého zařízení vidíte stav (Online / Offline), název konfiguračního souboru a tlačítka Edit, Install a Logs (druhá dvě jen jako ikony). Číslo verze samotného Device Builderu i ESPHome je dole v patičce - to se hodí, když někam hlásíte chybu.

Vytvoření nového zařízení

Tlačítko Create device vpravo dole otevře dialog Create configuration:

Vytvoření nové konfigurace

Create new project vás provede průvodcem - vyberete desku (nebo starter kit), zadáte název a Wi-Fi údaje. Za povšimnutí stojí i to, že sem můžete přetáhnout existující .yaml soubor nebo bundle - pokud máte konfiguraci z jiné instance, nemusíte ji kopírovat přes Studio Code Server.

Vizuální editor komponent

Kliknutím na Edit se otevře editor, a tady je ta hlavní novinka. Vlevo je Device navigator, který konfiguraci člení na Core configuration (jméno, Wi-Fi, OTA, API), Components (senzory, spínače, displeje) a Automations. Vpravo je rozcestník na tyhle tři části; když v navigátoru na něco kliknete, otevře se tam detail té položky. YAML editor si zapnete přepínačem vpravo nahoře - na screenshotu je záměrně skrytý, aby se do záběru nedostaly klíče ani názvy Wi-Fi sítí.

Vizuální editor komponent v Device Builderu

Na screenshotu je konfigurace mého Bluetooth proxy s rozbalenou sekcí Components - navigátor pěkně ukazuje, co v ní je: ESP32 Bluetooth, Bluetooth Proxy, tři senzory, tři textové senzory a dva buttony. U každé položky se dá kliknout a upravit ji ve formuláři, bez psaní YAML.

Tlačítko Add component otevře katalog. A tady je hezky vidět, o jak velký projekt jde:

Katalog komponent - 889 položek

889 komponent dostupných pro ESP32 desku, rozdělených do kategorií, s obrázkem, popisem a odkazem na dokumentaci. Nejpočetnější kategorie jsou senzory a binární senzory. Kompletní seznam včetně dokumentace ke každé komponentě najdete i na esphome.io/components.

Pozor na tlačítko Reveal sensitive values

V editoru je tlačítko Reveal sensitive values, které dočasně rozbalí hodnoty z secrets.yaml. Používejte ho s rozmyslem - pokud si třeba nahráváte obrazovku nebo někomu posíláte screenshot, klíč k API se objeví v čitelné podobě.

První zařízení - krok za krokem

Pojďme si vytvořit vaše první ESPHome zařízení!

Co budete potřebovat

Hardware:

  • ESP32 nebo ESP8266 vývojová deska
  • USB kabel (datový, ne jen nabíjecí!)
  • Počítač s USB portem

Software:

  • Home Assistant s nainstalovaným ESPHome
  • Webový prohlížeč (Chrome nebo Edge)

Vytvoření konfigurace

  1. V Device Builderu klikněte na „Create device"

  2. Zvolte „Create new project" a průvodce vás povede:

    • Zadejte název zařízení (např. „test-esp32")
    • Vyberte desku (ESP32, ESP8266, C6...)
    • Zadejte Wi-Fi SSID a heslo
  3. ESPHome vytvoří základní konfiguraci

Výsledný YAML soubor bude vypadat nějak takto:

esphome:
name: test-esp32
friendly_name: Test ESP32

esp32:
board: esp32dev
# framework ani toolchain psát nemusíte - od 2026.1 je výchozí ESP-IDF,
# od 2026.7 se staví nativním toolchainem bez PlatformIO

# Povolit logování
logger:

# Povolit Home Assistant API - šifrování je dnes jediná možnost,
# volba api: password: byla v 2026.1 odstraněna
api:
encryption:
key: !secret api_encryption_key

# Povolit OTA aktualizace
ota:
- platform: esphome
password: !secret ota_password

wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password

# Fallback hotspot
ap:
ssid: "Test-Esp32 Fallback"
password: !secret fallback_password
Secrets

ESPHome podporuje !secret pro ukládání citlivých údajů mimo konfiguraci. Tyto údaje se ukládají do souboru secrets.yaml, který otevřete z nabídky ⋮ vpravo nahoře v Device Builderu.

Jeden praktický poznatek: editor secrets v ESPHome přepisuje celý soubor. Pokud do secrets.yaml dopisujete něco jinou cestou (třeba přes SSH), další uložení z webového rozhraní vám to smaže.

Počítadlo safe mode dejte do RTC

Pokud stavíte zařízení, na které pak nebude snadné dosáhnout, přidejte si tenhle blok:

safe_mode:
storage: rtc

ESPHome standardně počítá neúspěšné starty ve flash (NVS) a to počítadlo přežije i přeflashování - zařízení pak umanutě naskakuje do safe mode. V RTC paměti ho vymaže obyčejné vytažení ze zásuvky. Tuhle lekci jsem zaplatil na NSPanelu a rozebírám ji v článku Když NSPanel po aktualizaci nenaběhne.

Nahrání firmware - první instalace

Pro první nahrání firmware je potřeba použít USB kabel. Dialog Install dnes rovnou pozná, že zařízení ještě nikdy nahrané nebylo, a napíše vám to:

Dialog pro instalaci firmware

Máte tři možnosti:

VolbaKdy ji použít
Plug into this computerESP máte v USB tohoto počítače. Otevře se webový flasher v novém tabu, firmware zůstane v prohlížeči a flashuje se 100 % lokálně
Plug into your Home Assistant serverESP je v USB portu serveru s Home Assistantem
On the networkPřeloží firmware, ale nahrát ho půjde až po první instalaci přes USB
První flashování

První nahrání firmware musí být přes USB. Až poté fungují OTA (bezdrátové) aktualizace.

Ke Plug into this computer potřebujete Chrome nebo Edge a zabezpečené připojení - Web Serial API v prohlížeči nefunguje přes http:// na jiné adrese než localhost. Pokud na Home Assistant chodíte po HTTP, použijte volbu s USB portem serveru.

Připojení k Home Assistant

Po úspěšném nahrání a připojení k Wi-Fi by se zařízení mělo automaticky objevit v Home Assistant:

  1. Jděte do NastaveníZařízení a služby
  2. V sekci Objeveno by mělo být vaše ESPHome zařízení
  3. Klikněte na Konfigurovat
  4. Zadejte šifrovací klíč z konfigurace (pokud je vyžadován)
  5. Potvrďte přidání

Po přidání najdete všechna svá ESPHome zařízení pohromadě na stránce integrace:

Integrace ESPHome v Home Assistant

Přidání komponent

Teď, když máte základní zařízení funkční, můžeme přidat nějaké užitečné komponenty!

Příklad: GPIO spínač

Přidejte do konfigurace ovládání relé nebo LED:

switch:
- platform: gpio
name: "Relé 1"
pin: GPIO5
id: relay_1

Příklad: Binární senzor (tlačítko)

Přidejte sledování stavu tlačítka nebo door/window senzoru:

binary_sensor:
- platform: gpio
name: "Tlačítko 1"
pin:
number: GPIO0
inverted: true
mode:
input: true
pullup: true
# Od 2026.3 se zákmity mechanického kontaktu dostanou až do automatizací -
# dřív je pohltilo časování hlavní smyčky. U spínačů si přidejte filtr:
filters:
- delayed_on_off: 20ms

Příklad: Teplotní senzor DHT22

sensor:
- platform: dht
pin: GPIO4
temperature:
name: "Teplota"
humidity:
name: "Vlhkost"
model: DHT22
update_interval: 60s

Aktualizace zařízení

Po úpravě konfigurace:

  1. Klikněte na „Save" v editoru
  2. Klikněte na „Install"
  3. Tentokrát vyberte „On the network" - není potřeba USB! ⚡

Když vyjde nová verze ESPHome, nemusíte do Device Builderu chodit vůbec - aktualizace se u zařízení objeví přímo v Home Assistantu v Nastavení → Aktualizace:

Dostupná aktualizace ESPHome zařízení v Home Assistantu

OTA aktualizace

Po první instalaci přes USB už všechny další aktualizace probíhají bezdrátově přes Wi-Fi. Je to rychlé a pohodlné!

Sledování logů

Tlačítko Logs u zařízení otevře stejný typ dialogu jako instalace - vyberete On the network a naskočí živý výpis:

Živé logy zařízení

Kromě přepnutí na plnou obrazovku, stažení logu do souboru a přepínače States (ukazuje změny stavů entit) je tu jedna věc, kterou se vyplatí přečíst hned na začátku. Na screenshotu je vidět reálné hlášení z mého Bluetooth proxy:

[W][app:190]: Bootloader too old for OTA rollback and SRAM1 as IRAM (+40KB).
Flash via USB once to update the bootloader

Zařízení běží dobře, ale starý bootloader mu bere dvě věci: možnost vrátit se po nepovedené OTA na předchozí firmware a 40 kB IRAM navíc. ESPHome doporučuje jedno přeflashování přes USB; od verze 2026.5 se dá bootloader poslat i po síti přes esphome upload --bootloader.

Pokročilé funkce

Automatizace přímo na zařízení

ESPHome umožňuje spouštět automatizace přímo na ESP chipu, bez nutnosti komunikace s Home Assistant:

binary_sensor:
- platform: gpio
name: "Tlačítko"
pin: GPIO0
on_press:
- switch.toggle: relay_1

Bluetooth Proxy

ESP32 může fungovat jako Bluetooth Proxy pro rozšíření BLE pokrytí. A tady musím upravit, co jsem psal dřív - konfigurace se za rok zjednodušila:

# Výchozí scan parametry stačí, blok scan_parameters tu záměrně NENÍ
esp32_ble_tracker:

bluetooth_proxy:
# active: true je dnes výchozí hodnota, psát se nemusí
# connection_slots: 3 je výchozí, každý slot ~1 kB RAM
Nepřepisujte scan_parameters

V mém původním příkladu bylo interval: 1100ms / window: 1100ms. Dokumentace se k tomu dnes vyjadřuje docela jednoznačně:

The default scan parameters are recommended for most users. Changing interval or window from their defaults typically provides no meaningful benefit while increasing CPU usage and network traffic.

Nastavení 1100/1100 znamená nepřetržité skenování a má smysl jen u proxy na Ethernetu, kde nesoupeří s Wi-Fi o rádio. Na Wi-Fi vám rozhodí příjem. Pokud ho v konfiguraci máte, smažte ho.

Bluetooth proxy nedávejte na zařízení, které dělá i něco jiného

BLE controller si svoji paměť vyřízne z celkového poolu už při linkování, ne až za běhu. Na NSPanelu mi to sebralo víc než polovinu volné interní DRAM a po jedné aktualizaci ESPHome, která binárku o kousek nafoukla, zbývající rezerva zmizela a panel skončil černý.

Celé měření i průběh diagnostiky rozebírám v článcích Sonoff NSPanel a Když NSPanel po aktualizaci nenaběhne.

Doporučení: dejte proxy na samostatnou ESP32. Deska za necelou stovku do USB nabíječky má celou paměť pro sebe, umístíte si ji podle pokrytí BLE a hotový firmware nahrajete přes webový instalátor bez psaní YAML.

tip

Více o Bluetooth Proxy najdete v mém článku Bluetooth Proxy.

Webový server

Můžete povolit vestavěný web server pro přímé ovládání:

web_server:
port: 80
# Od 2026.7, pokud na stránku sáhne něco z jiné domény:
# allowed_origins:
# - http://homeassistant.local:8123
# Adresu dosaďte podle své instance - nové instalace Home Assistant OS běží na portu 80, tedy bez :8123
Paměť

Web server zabírá hodně paměti. Nedoporučuji jej používat současně s Bluetooth Proxy!

Změna adres v 2026.1

Web server dnes používá v URL přímo jména entit místo dřívějších object ID. Konečně to spravilo kolize u názvů s diakritikou, ale znamená to dvě omezení: jméno nesmí obsahovat / a je omezené na 120 znaků. Pokud jste si na staré adresy odkazovali z něčeho externího, přestanou fungovat.

Paměť a diagnostika

Tuhle sekci jsem do článku přidal, protože většina problémů, do kterých jsem za ta léta spadl, byla nakonec o paměti.

Změřte si ji, nehádejte

Do konfigurace se dá přidat komponenta debug, která vystrčí spotřebu paměti jako normální entity do Home Assistanta:

debug:
update_interval: 60s

sensor:
- platform: debug
free:
name: "Free Heap"
min_free:
name: "Min Free Heap"
block:
name: "Largest Free Block"

text_sensor:
- platform: debug
reset_reason:
name: "Reset Reason"

Min Free Heap je z těch tří nejužitečnější - řekne vám, jak hluboko zařízení kdy spadlo, tedy jak velká je skutečná rezerva. A Reset Reason odpoví na otázku, jestli se restartovalo kvůli watchdogu, nebo mu jen někdo vytáhl napájení.

esphome analyze-memory

Nová utilita z verze 2025.11. Přeloží konfiguraci a vypíše rozpad spotřeby po komponentách - tedy přesně to, co potřebujete vědět, když se rozhodujete, co z konfigurace vyhodit.

Backtrace bez sériového kabelu

Dřív platilo, že když zařízení padá, musíte k němu s USB-TTL převodníkem. Od 2026.3 (ESP32) a 2026.4 (ESP8266) si zařízení backtrace z pádu uloží přes restart a pošle ho přes API - crash tedy uvidíte v logu v Device Builderu.

Dekódování backtrace potřebuje build stroj

Samotné číslo adresy vám nic neřekne, na překlad na jméno funkce je potřeba addr2line a soubor firmware.elf z build složky. Pokud používáte remote build server, ta složka je na něm, ne na počítači, ze kterého se koukáte.

Zabezpečení

Verze 2026.7 přinesla první vlnu funkcí mířících na evropskou normu EN18031, a stojí za to o nich vědět, i když nic neprodáváte:

  • Šifrování NVS - nepovinné šifrování úložiště přes HMAC periferii (S2, S3, C3, C5, C6, H2, P4)
  • Ochrana proti downgradu OTA - zařízení odmítne podepsaný firmware se starší verzí projektu
  • Komponenta provisioning - spravuje okno pro první nastavení u zařízení, která se prodávají nenastavená

K tomu se přidávají dvě starší změny, které se týkají všech: API se šifruje povinně (heslo skončilo v 2026.1) a OTA umí podepsané aktualizace i bez Secure Boot (2026.4).

Klíč z api: encryption: neměňte, pokud nemusíte

Hodnotu klíče můžete v klidu přesunout do secrets.yaml - to na fungování nic nemění. Ale pokud vygenerujete nový klíč, Home Assistant zařízení přestane poznávat a vyžádá si ho zadat znovu. Samo o sobě je to jen nepříjemnost, entity ani historie tím netrpí.

Horší je krok, ke kterému se v takové situaci lidi často uchýlí: smazat integraci a přidat ji znovu. Tam už o historii přijdete a entity se můžou vrátit se suffixem _2. Když si klíč potřebujete jen připomenout, najdete ho v secrets.yaml, ne v Home Assistantu.

Tipy a triky

Framework a toolchain

Tady se za poslední rok převrátilo úplně všechno. Původně jsem psal, že pro pokročilé projekty doporučuji přepnout na ESP-IDF. Dnes už to nemusíte řešit vůbec:

esp32:
board: esp32dev
# Od 2026.1 je ESP-IDF výchozí framework, od 2026.7 se navíc
# staví nativním toolchainem místo PlatformIO. Nic psát nemusíte.

Kdo potřebuje jít proti proudu:

esp32:
toolchain: platformio # zpět na PlatformIO (2026.7+)
framework:
type: arduino # zpět na Arduino, jen ESP32/C3/S2/S3

Proč byl ten přechod dobrý:

  • Binárky až o 40 % menší
  • Kompilace 2-3× rychlejší
  • Nižší spotřeba paměti a stabilnější Bluetooth
Změna frameworku a OTA

Původně jsem tady měl kategorické varování, že přepnutí arduinoesp-idf vyžaduje USB, protože se mění partition table. Od 2026.5 už to platí jen zčásti - OTA se naučila partition table přepsat a safe_mode se umí nabootovat do factory partition, takže i nepovedený pokus se dá zachránit bez kabelu.

Pořád ale platí, že je to ta nejriskantnější operace, kterou na zařízení uděláte. U něčeho, k čemu se dostanete jedním šroubovákem, bych sáhl po USB. U zazděného panelu se dnes dá jít přes OTA. Že se takový panel přeflashovat čistě po Wi-Fi dá, ukazuju na migraci NSPanelu - tam se ale framework nemění, takže je to o stupeň bezpečnější operace než tahle.

Secrets soubor

Pro citlivá data používejte secrets.yaml:

# V konfiguračním souboru:
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password

# V souboru secrets.yaml:
wifi_ssid: "MojeWiFi"
wifi_password: "SuperTajneHeslo123"

Debug logování

Pro řešení problémů zvyšte úroveň logování:

logger:
level: DEBUG # nebo VERBOSE pro ještě více detailů
VERBOSE není zdarma

Podrobné logování zabírá flash i RAM a u zařízení, které je na hranici paměti, dokáže samo způsobit pád. Zapněte ho na dobu ladění a pak vraťte na INFO.

Řešení problémů

Konfigurace neprojde validací po aktualizaci

Nejčastější příčiny jsou v tabulce změn. Rychlý průchod:

  1. Máte v api: ještě password:? Nahraďte encryption: key:
  2. Používáte PSRAM bez bloku psram:?
  3. Máte za packages: jediný !include bez odrážky?
  4. Máte komponenty ve složce custom_components/? Přejděte na external_components:

Zařízení se neobjevilo v Home Assistant

  1. Zkontrolujte, že je zařízení připojené k Wi-Fi (podívejte se do routeru)
  2. Zkontrolujte logy v Device Builderu (tlačítko Logs)
  3. Zkuste manuální přidání přes IP adresu
  4. Restartujte Home Assistant

Zařízení se nepřipojí k Wi-Fi po aktualizaci

Na ESP32 vyžaduje ESPHome minimálně WPA2 už roky, ESP8266 se k tomu přidal v 2026.6. Pokud vás to zaskočilo po aktualizaci ESP8266 a máte starší router:

wifi:
min_auth_mode: WPA

Druhá častá příčina: .local adresy dnes potřebují zapnuté mDNS. Bez něj se připojení zdrží o víc než deset sekund.

OTA aktualizace selhává

  1. Zkontrolujte verzi ESPHome, ze kterého nahráváte - starší než 2025.10 s heslovou autentizací nedostane firmware do zařízení na 2026.1+ (viz varování). Pokud máte ESPHome na víc místech, aktualizujte je všechna
  2. Zkontrolujte stabilitu Wi-Fi signálu
  3. Zkontrolujte dostupnou paměť v logu
  4. Zkuste aktualizovat přes USB
Když upload dojde na 100 % a pak spadne

Hlášení esp_ota_end failed (err=0x1503) znamená, že se data přenesla, ale cílový oddíl zůstal prázdný - ESPHome novou binárku odmítl ověřit. Opakování OTA nepomůže, tohle už chce sériový flash. Bývá za tím vadný nebo přeznačený flash čip, případně ochranné bity v jeho status registru.

Zařízení se neustále restartuje

  1. Problém s napájením - zkuste jiný USB zdroj
  2. Nedostatek paměti - zakažte Web Server nebo snižte počet komponent, změřte si min_free heap
  3. Chyba v konfiguraci - zkontrolujte logy, backtrace dnes najdete i bez kabelu

Bateriové zařízení najednou vydrží citelně méně

Od 2026.4 jedou ESP32, S2, S3 a C5 defaultně na 240 MHz místo dřívějších 160 MHz. Vraťte to:

esp32:
cpu_frequency: 160MHZ

Logy nebo web server se nepřipojí, i když zařízení běží

Od 2026.5 je výchozí api: max_connections pět místo osmi. Když na zařízení současně visí Home Assistant, okno s logy, webové rozhraní a něco dalšího, limit se dá vyčerpat:

api:
max_connections: 8

Praktické projekty

Teploměr do pokoje

sensor:
- platform: dht
pin: GPIO4
temperature:
name: "Teplota obývák"
humidity:
name: "Vlhkost obývák"
model: DHT22
update_interval: 60s

Chytrý spínač s LED indikací

switch:
- platform: gpio
name: "Hlavní světlo"
pin: GPIO5
id: main_light
on_turn_on:
- light.turn_on: led_status
on_turn_off:
- light.turn_off: led_status

light:
- platform: status_led
name: "LED stav"
id: led_status
pin: GPIO2

Door/Window senzor s časovým logováním

binary_sensor:
- platform: gpio
name: "Hlavní dveře"
pin:
number: GPIO0
mode:
input: true
pullup: true
inverted: true
filters:
- delayed_on_off: 20ms
on_press:
then:
- logger.log: "Dveře otevřeny!"
on_release:
then:
- logger.log: "Dveře zavřeny!"

Zhodnocení

Po několika letech používání ESPHome můžu říct, že je to jeden z nejlepších nástrojů pro DIY chytrou domácnost. A rok, který uplynul od původní verze tohoto článku, na tom nic nezměnil - naopak. Nový Device Builder posunul ESPHome blíž k lidem, kteří YAML nechtějí psát vůbec, a přechod na ESP-IDF udělal z kompilace záležitost minut místo desítek minut.

✅ Hlavní výhody

  • Jednoduchá konfigurace - YAML, nebo dnes i klikání
  • Perfektní integrace s Home Assistant
  • OTA aktualizace - dnes i partition table a bootloader
  • Obrovská komunita - tisíce projektů
  • Lokální ovládání - žádný cloud
  • Aktivní vývoj - každý měsíc nová verze
  • Levný hardware - ESP32 za pár korun

⚠️ Co by mohlo být lepší

  • Breaking changes - měsíční kadence znamená, že konfiguraci musíte občas dohnat
  • Omezená paměť ESP8266 pro složité projekty
  • První flashování vyžaduje USB kabel
  • Víc instancí ESPHome se musí držet spolu - stará instalace už do aktuálních zařízení nenahraje

Doporučení

ESPHome vřele doporučuji pokud:

  • ✅ Používáte Home Assistant
  • ✅ Chcete si vytvořit vlastní senzory/spínače
  • ✅ Nechcete se učit programovat v C++
  • ✅ Oceníte lokální ovládání bez cloudu
  • ✅ Chcete ušetřit oproti komerčním řešením

Nedoporučuji pokud:

  • ❌ Jste absolutní začátečník (začněte radši s hotovými Zigbee/Wi-Fi zařízeními)
  • ❌ Chcete plug-and-play řešení bez jakékoliv konfigurace
  • ❌ Nepoužíváte Home Assistant (pak zvažte Tasmota)
Jedna rada na závěr

Aktualizujte zařízení pravidelně a po jednom, ne všechna hromadně po roce. Měsíční kadence ESPHome znamená, že když necháte konfiguraci stát dva roky, dohánět budete deset breaking changes najednou - a hledat, který z nich shodil kompilaci, je výrazně horší práce než je řešit jeden po druhém.

Související články

Další zdroje

Pomohl vám tenhle návod?

Návody tu píšu ve volném čase a udržuju je aktuální. Když vám některý ušetřil čas, můžete přispět.

Jednorázově, kartou nebo Apple Pay. Částku lze na další stránce změnit.

Nechcete posílat peníze? Kupujte podle návodů přes moje odkazy na produkty. Cena je pro vás stejná a pomůže to taky.

Komentáře