Přeskočit na obsah

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 !secret se 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