ESPHome senzor na ESP32-C6: základy od první konfigurace po baterii
ESPHome je nejrychlejší cesta, jak z desky s ESP32 udělat senzor pro Home Assistant. Projdeme základy na čipu ESP32-C6: konfiguraci v YAML, připojení čidel, měření baterie a hluboký spánek.
ESPHome je otevřený projekt, který z jednoduché konfigurace v YAML vytvoří firmware pro čipy ESP32 a další mikrokontroléry. Nepíšete program, ale popisujete, co je k desce připojené a co se má měřit. ESPHome z toho sestaví firmware, nahraje ho do zařízení a to se pak samo ohlásí Home Assistantu. Je to jeden z nejběžnějších způsobů, jak si postavit vlastní senzor pro Home Assistant.
Proč ESP32-C6
ESP32-C6 je novější čip od Espressifu s jádrem RISC-V. Oproti klasickému ESP32 má několik výhod:
- WiFi 6 (802.11ax) v pásmu 2,4 GHz. S novými routery umí úspornější režimy, které se hodí pro zařízení na baterii.
- Bluetooth LE. Pro nastavení WiFi přes Improv nebo jako proxy pro Bluetooth zařízení.
- Rádio IEEE 802.15.4. Stejné rádio, jaké používají Thread a Zigbee.
- Nízká spotřeba v hlubokém spánku.
ESPHome podporuje ESP32-C6 s frameworkem ESP-IDF. Pokud používáte starší konfigurace pro klasické ESP32 s frameworkem Arduino, je potřeba počítat s tím, že některé starší komponenty a knihovny se mohou chovat jinak.
Jak ESPHome nainstalovat
Nejpohodlnější cesta je doplněk ESPHome Builder v Home Assistantu. Spustíte ho, přidáte nové zařízení, a webové rozhraní vám pomůže s první konfigurací. Alternativně lze ESPHome nainstalovat jako balíček pro Python a pracovat z příkazové řádky.
První nahrání firmwaru proběhne přes USB kabel, přímo z prohlížeče (Chrome nebo Edge umějí komunikovat se sériovým portem). Všechna další nahrání už mohou jít přes WiFi, tedy OTA (over the air).
Minimální konfigurace
Takto vypadá základní konfigurace pro desku s ESP32-C6:
esphome:
name: zahradni-senzor
esp32:
board: esp32-c6-devkitc-1
framework:
type: esp-idf
logger:
api:
ota:
- platform: esphome
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
Co jednotlivé části dělají:
- esphome nastavuje jméno zařízení, pod kterým ho uvidíte v síti a v Home Assistantu.
- esp32 určuje desku a framework.
- logger posílá ladicí výpisy přes USB a WiFi.
- api zapíná nativní rozhraní pro Home Assistant. Díky němu zařízení Home Assistant sám najde a entity se objeví bez dalšího nastavování.
- ota umožní nahrávat nový firmware přes WiFi.
- wifi obsahuje přihlašovací údaje. Hodnoty s
!secretse berou ze souboru secrets.yaml, aby hesla nebyla v konfiguraci.
Připojení čidla přes I2C a Qwiic
Většina moderních čidel komunikuje po sběrnici I2C. Konektor Qwiic (Stemma QT) je malý čtyřpinový konektor, který vede napájení 3,3 V, zem a dva vodiče I2C. Čidlo s tímto konektorem připojíte kabelem bez pájení a můžete jich řetězit víc za sebou.
Příklad s čidlem teploty a vlhkosti SHT40:
i2c:
sda: GPIO6 # piny podle schématu vaší desky
scl: GPIO7
sensor:
- platform: sht4x
temperature:
name: "Teplota vzduchu"
humidity:
name: "Vlhkost vzduchu"
update_interval: 60s
Po nahrání se v Home Assistantu objeví dvě nové entity. Čísla pinů se liší podle desky, vždy je ověřte ve schématu.
Teplotní sonda DS18B20
Sonda DS18B20 komunikuje po jednodrátové sběrnici (1-Wire). Vyrábí se ve vodotěsném nerezovém pouzdře a hodí se do kompostu, do vody nebo do země. V aktuálních verzích ESPHome se konfiguruje takto:
one_wire:
- platform: gpio
pin: GPIO4
sensor:
- platform: dallas_temp
name: "Teplota sondy"
update_interval: 60s
Sběrnice potřebuje pull-up rezistor (typicky 4,7 kOhm) mezi datovým vodičem a napájením. Na hotových deskách bývá osazený, u vlastního zapojení na něj nezapomeňte.
Měření napětí baterie
Napětí článku Li-ion je až 4,2 V, což je víc, než snese vstup převodníku ADC. Proto se měří přes odporový dělič, který napětí sníží, typicky na polovinu. Ve firmwaru se pak hodnota vynásobí zpět:
sensor:
- platform: adc
pin: GPIO2 # vstup ADC připojený na dělič
name: "Napětí baterie"
attenuation: 12db
filters:
- multiply: 2.0
update_interval: 60s
Z napětí lze odhadnout stav nabití. Závislost u článků Li-ion není lineární, ale pro upozornění „brzy nabít“ stačí jednoduchá mez, třeba 3,5 V.
Hluboký spánek
Senzor na baterii nemůže mít WiFi zapnutou nepřetržitě. Řešením je hluboký spánek: zařízení se probudí, připojí se k WiFi, změří, odešle data a zase usne. Většinu času tak spotřebovává jen zlomek proudu.
deep_sleep:
run_duration: 20s
sleep_duration: 10min
Tato konfigurace nechá zařízení 20 sekund běžet a 10 minut spát. Pár věcí, které je dobré vědět:
- OTA a hluboký spánek se nemají rády. Zařízení, které spí, nemůže přijmout nový firmware. ESPHome umí spánek dočasně zakázat (akce
deep_sleep.prevent), například podle pomocníka v Home Assistantu, a pak firmware nahrajete v klidu. - Spícímu zařízení nastavení nepošlete. Home Assistant může změnit třeba interval jen tehdy, když je zařízení vzhůru. Nastavení proto měňte se zakázaným spánkem.
- Výdrž závisí na síle signálu. Při slabé WiFi trvá připojení déle a spotřebuje víc energie.
Improv: nastavení WiFi bez úpravy firmwaru
Pokud chcete zařízení dát někomu dalšímu, nemůžete do firmwaru napevno zapsat svou WiFi. Proto existuje standard Improv. Uživatel zadá jméno a heslo WiFi z prohlížeče přes USB (Improv Serial) nebo přes Bluetooth (Improv BLE), a to i přímo z Home Assistantu. ESPHome podporuje obojí komponentami improv_serial a improv_ble.
Webové rozhraní a MQTT
Komponenta web_server přidá do zařízení jednoduchou webovou stránku s aktuálními hodnotami. Hodí se, když Home Assistant nepoužíváte nebo potřebujete rychlou kontrolu. Pokud máte jiný systém než Home Assistant, ESPHome umí posílat data přes MQTT.
Shrnutí
ESPHome z ESP32-C6 udělá plnohodnotný senzor pro Home Assistant za pár desítek řádků YAML. Čidla připojíte přes Qwiic nebo jednodrátovou sběrnici, napětí baterie změříte přes dělič a hluboký spánek zajistí výdrž. Improv pak umožní nastavit WiFi bez úpravy firmwaru.
Pokud nechcete začínat od holé vývojové desky, podívejte se na Jádro: desku s ESP32-C6, nabíječkou Li-ion, měřením baterie, dvěma konektory Qwiic a konektorem pro vlastní hlavu. Je v předobjednávce a posíláme ji po výrobě první série.
Plošná ryba Jádro, 690 Kč
Stránka výrobku