Mikrokontrolery i systemy embedded

ESP32 i Home Assistant – konfiguracja mikrokontrolera i budowa automatyki domowej

Spis treści
ESP32 i Home Assistant – konfiguracja mikrokontrolera i budowa automatyki domowej

ESP32 w połączeniu z Home Assistantem pozwala stworzyć elastyczny, niedrogi i skalowalny system automatyki domowej — od prostych czujników po zaawansowane sterowniki oraz integracje z innymi technologiami.

ESP32 i Home Assistant – dlaczego to połączenie ma sens?

ESP32 to mikrokontroler wyposażony w moduły Wi-Fi i Bluetooth. Dzięki dużej liczbie pinów GPIO, obsłudze interfejsów UART, I2C i SPI oraz przystępnej cenie doskonale sprawdza się w projektach IoT.

Home Assistant jest otwartym systemem automatyki domowej, który integruje setki urządzeń i umożliwia zarządzanie nimi z jednego miejsca. Pozwala także tworzyć rozbudowane automatyzacje, sceny i panele sterowania.

Po zastosowaniu ESPHome lub MQTT moduł ESP32 może działać jako czujnik, sterownik, bramka BLE, interfejs urządzenia przewodowego albo panel sterujący z ekranem TFT.

Architektura rozwiązania – jak ESP32 „rozmawia” z Home Assistantem?

Komunikację między ESP32 a Home Assistantem najczęściej realizuje się na jeden z dwóch sposobów:

Rozwiązanie Sposób działania Najważniejsze zalety Najlepsze zastosowanie
ESPHome z natywnym API Deklaratywna konfiguracja w YAML i komunikacja przez dedykowane API Szybka konfiguracja, szyfrowanie, OTA i gotowe komponenty Urządzenia współpracujące bezpośrednio z Home Assistantem
MQTT Publikowanie i odbieranie danych za pośrednictwem brokera MQTT Duża elastyczność oraz możliwość integracji z wieloma systemami Urządzenia działające niezależnie od Home Assistanta lub współpracujące z innymi aplikacjami

ESPHome jest zwykle najszybszym sposobem rozpoczęcia pracy, szczególnie dla początkujących. Większość popularnych czujników i sterowników można skonfigurować za pomocą gotowych komponentów YAML.

MQTT będzie lepszym wyborem, jeśli urządzenie ma działać również bez Home Assistanta, wymieniać dane z innymi systemami albo korzystać z niestandardowej logiki przygotowanej w Arduino IDE lub PlatformIO.

Przygotowanie środowiska Home Assistant

Do integracji z ESP32 potrzebny jest działający Home Assistant. System można zainstalować między innymi na Raspberry Pi, minikomputerze, serwerze domowym lub maszynie wirtualnej.

Przygotowanie środowiska obejmuje następujące czynności:

  • instalację Home Assistant OS albo odpowiednich kontenerów,
  • konfigurację sieci LAN i stałego adresu IP Home Assistanta, na przykład 192.168.1.100,
  • utworzenie konta użytkownika, ustawienie silnego hasła i dodanie podstawowych integracji.

Warto zapisać adres IP oraz dane logowania do Home Assistanta. Mogą być potrzebne podczas konfigurowania dodatków i interfejsów internetowych urządzeń ESP32.

Instalacja i konfiguracja ESPHome w Home Assistant

ESPHome jest dostępny jako dodatek do Home Assistanta, dzięki czemu zarządzanie modułami ESP32, edycja konfiguracji i instalowanie aktualizacji odbywają się z poziomu jednego interfejsu.

Proces instalacji przebiega następująco:

  1. przejdź do sekcji „Ustawienia → Dodatki → Sklep z dodatkami” w Home Assistant;
  2. wyszukaj ESPHome i zainstaluj stabilną wersję dodatku;
  3. uruchom dodatek, a następnie otwórz jego interfejs internetowy.

W panelu ESPHome można tworzyć projekty, edytować pliki YAML oraz instalować oprogramowanie układowe na ESP32 przez USB lub bezprzewodowo za pomocą mechanizmu OTA.

Tworzenie pierwszego urządzenia ESP32 w ESPHome

Po zainstalowaniu dodatku należy utworzyć konfigurację przeznaczoną dla konkretnego modułu ESP32.

Standardowa konfiguracja urządzenia obejmuje następujące kroki:

  1. wybierz w ESPHome opcję „Nowe urządzenie”;
  2. nadaj urządzeniu czytelną nazwę, na przykład salon_czujniki lub sterownik_rolet;
  3. wybierz platformę ESP32 i właściwy model płytki, na przykład esp32dev, ESP32-C3 lub WROOM-32;
  4. zapisz projekt i przejdź do edytora YAML.

ESPHome wygeneruje podstawowy plik zawierający między innymi sekcje esphome, wifi, logger, api i ota.

Uproszczona konfiguracja może wyglądać następująco:

esphome:
name: salon_czujnik

esp32:
board: esp32dev

wifi:
ssid: "Twoja_Siec_WiFi"
password: "TwojeHasloWiFi"

logger:

api:

ota:
- platform: esphome

Taka konfiguracja umożliwia połączenie ESP32 z Home Assistantem po prawidłowym ustawieniu sieci Wi-Fi i aktywowaniu integracji ESPHome.

Konfiguracja Wi-Fi, API i OTA – bezpieczna komunikacja

Sekcja wifi: definiuje połączenie z siecią lokalną, w której działa Home Assistant. Jej najważniejsze ustawienia to:

  • ssid – nazwa sieci Wi-Fi;
  • password – hasło do sieci;
  • manual_ip – ustawienia stałego adresu IP, bramy i maski podsieci.

Sekcja api: odpowiada za bezpośrednią komunikację z Home Assistantem. Można w niej skonfigurować uwierzytelnianie oraz szyfrowanie za pomocą wygenerowanego klucza.

Sekcja ota: umożliwia zdalne aktualizowanie oprogramowania układowego przez sieć, bez konieczności ponownego podłączania modułu do portu USB.

Rozbudowana konfiguracja sieci i zabezpieczeń może wyglądać tak:

wifi:
ssid: "Domowa_siec"
password: "MocneHaslo123"
manual_ip:
static_ip: 192.168.1.123
gateway: 192.168.1.1
subnet: 255.255.255.0

api:
encryption:
key: "WygenerowanyKluczSzyfrowania"

ota:
- platform: esphome
password: "HasloDoOTA"

Silne hasła oraz szyfrowanie komunikacji są kluczowe dla bezpieczeństwa automatyki domowej. Ograniczają ryzyko przejęcia sterowania przez nieuprawnione osoby mające dostęp do sieci lokalnej.

Dodawanie ESP32 do Home Assistanta

Po skompilowaniu i zainstalowaniu oprogramowania ESPHome Home Assistant powinien automatycznie wykryć nowe urządzenie, jeśli znajduje się ono w tej samej sieci i integracja ESPHome jest aktywna.

Pierwsze uruchomienie urządzenia przebiega następująco:

  1. podłącz ESP32 przewodem USB do komputera obsługującego panel ESPHome i wybierz instalację przez przeglądarkę;
  2. po zainstalowaniu oprogramowania uruchom moduł i zaczekaj, aż połączy się z siecią Wi-Fi;
  3. otwórz w Home Assistant sekcję „Urządzenia i usługi”, dodaj wykryte urządzenie ESPHome i podaj wymagane dane uwierzytelniające.

Od tego momentu encje zdefiniowane w YAML, takie jak czujniki, przyciski i przełączniki, będą widoczne w Home Assistant. Ich identyfikatory mogą mieć postać sensor.salon_czujnik_temperatura.

Dodawanie czujników i sterowników w ESPHome

ESPHome udostępnia gotowe komponenty obsługujące między innymi czujniki temperatury i wilgotności, wejścia binarne, wyjścia PWM, Modbus, przekaźniki, diody LED oraz ekrany TFT.

Czujnik temperatury DS18B20

Przykładowa konfiguracja magistrali 1-Wire i czujnika DS18B20 wygląda następująco:

one_wire:
- platform: gpio
pin: 4

sensor:
- platform: dallas_temp
address: 0x1234567890ABCDEF
name: "Temperatura salon"

Wejście binarne dla przycisku

Przycisk dzwonkowy podłączony do pinu GPIO można skonfigurować jako czujnik binarny:

binary_sensor:
- platform: gpio
pin:
number: 23
inverted: true
name: "Przycisk salon"

Sterowanie przekaźnikiem oświetlenia

Przekaźnik sterujący oświetleniem można udostępnić w Home Assistant jako przełącznik:

switch:
- platform: gpio
pin: 5
name: "Światło salon"
restore_mode: ALWAYS_OFF

Zadeklarowanie komponentu, takiego jak sensor, switch lub binary_sensor, oraz przypisanie właściwego pinu GPIO powoduje utworzenie odpowiedniej encji w Home Assistant. Można ją następnie wykorzystać w automatyzacjach, scenach i panelach sterowania.

Alternatywa – ESP32 i MQTT w Home Assistant

MQTT warto rozważyć, gdy urządzenie ma działać niezależnie od Home Assistanta, komunikować się z kilkoma systemami albo korzystać z istniejącej infrastruktury IoT.

Konfiguracja takiego rozwiązania obejmuje następujące działania:

  1. uruchom broker MQTT, na przykład Mosquitto, i dodaj integrację MQTT w Home Assistant;
  2. zaprogramuj ESP32 tak, aby publikował dane w określonych tematach, na przykład dom/salon/temperatura lub dom/salon/swiatlo/stan;
  3. skonfiguruj encje Home Assistanta, które będą odbierały dane i wysyłały polecenia za pośrednictwem odpowiednich tematów MQTT.

MQTT może również obsługiwać panel z ekranem TFT, który wyświetla informacje o stanie domu i pozwala sterować wybranymi urządzeniami.

ESP32 jako proxy Bluetooth dla Home Assistanta

ESP32 może działać jako bramka BLE, umożliwiając Home Assistantowi odbieranie rozgłoszeń oraz nawiązywanie aktywnych połączeń GATT z urządzeniami Bluetooth, takimi jak termometry, czujniki wilgotności czy zamki elektroniczne.

Komponent Bluetooth Proxy odbiera dane BLE w pobliżu modułu ESP32 i przekazuje je do Home Assistanta, który udostępnia obsługiwane urządzenia jako encje.

Konfiguracja polega na dodaniu w YAML modułu śledzącego BLE i komponentu proxy Bluetooth, a następnie powiązaniu wykrytych urządzeń z właściwymi integracjami w Home Assistant.

Rozmieszczenie kilku modułów ESP32 w różnych częściach domu zwiększa zasięg Bluetooth i pozwala niezawodnie zbierać dane z rozproszonych czujników.

Integracje przewodowe – Modbus, RS485 i przekaźniki

ESP32 dobrze sprawdza się w integracjach z urządzeniami komunikującymi się przez RS485 i Modbus, takimi jak falowniki fotowoltaiczne, liczniki energii, rekuperatory oraz sterowniki ogrzewania.

Przykładowe połączenie interfejsu RS485 obejmuje:

  • konwerter UART–RS485 zgodny z poziomami napięć używanymi przez ESP32,
  • połączenie linii TX z pinem GPIO17, a linii RX z pinem GPIO16,
  • odpowiednie zasilanie modułu oraz wspólną masę GND.

W konfiguracji YAML można zdefiniować komponent Modbus i właściwe rejestry, a następnie udostępnić odczyty energii, mocy, napięcia lub stanu urządzenia jako czujniki w Home Assistant.

Typowy układ do sterowania oświetleniem lub roletami składa się z następujących elementów:

  • ESP32 – steruje układami tranzystorowymi lub przekaźnikami;
  • przyciski ścienne – są podłączone do wejść GPIO i skonfigurowane jako binary_sensor;
  • Home Assistant – realizuje tryb ręczny, automatykę, harmonogramy i sceny.

Obwody niskonapięciowe ESP32 muszą być bezpiecznie odseparowane od instalacji 230 V.

Przykładowe projekty automatyki domowej z ESP32 i Home Assistantem

ESP32, ESPHome i Home Assistant mogą stanowić podstawę zarówno prostych projektów, jak i rozbudowanych instalacji automatyki domowej:

  1. Sterowanie oświetleniem i scenami – ESP32 obsługuje przekaźniki lub ściemniacze, a Home Assistant zarządza harmonogramami i scenami, takimi jak „Film”, „Wieczór” czy „Noc”;
  2. Monitorowanie temperatury i wilgotności – moduły z czujnikami DS18B20 lub BME280 przesyłają pomiary wykorzystywane do sterowania ogrzewaniem, wentylacją i klimatyzacją;
  3. Sterowanie roletami i żaluzjami – ESP32 obsługuje przekaźniki kierunkowe, a Home Assistant uwzględnia harmonogramy, temperaturę i poziom nasłonecznienia;
  4. Proxy BLE – rozmieszczone w domu moduły ESP32 zwiększają zasięg komunikacji z czujnikami Bluetooth znajdującymi się na przykład w garażu, lodówce lub piwnicy;
  5. Monitoring fotowoltaiki i magazynu energii – ESP32 komunikuje się z falownikiem przez RS485 i Modbus, natomiast Home Assistant prezentuje produkcję, zużycie i pozostałe parametry instalacji.

Możliwe są również mniej typowe zastosowania, takie jak sterowniki do filmów poklatkowych, systemy podlewania, lokalne stacje pogodowe czy niestandardowe panele sterowania.

Integracja z automatyzacjami i panelami w Home Assistant

Po dodaniu encji ESP32 do Home Assistanta można wykorzystać je w rozbudowanych automatyzacjach:

  • uruchamianiu scen na podstawie ruchu, temperatury, wilgotności lub pory dnia,
  • realizowaniu reguł, takich jak „jeśli temperatura w salonie przekroczy 26°C, włącz klimatyzację i zamknij rolety”,
  • wysyłaniu powiadomień po przekroczeniu ustalonych progów, wykryciu awarii albo utracie połączenia z urządzeniem.

Encje udostępniane przez ESP32 można prezentować w panelach Home Assistanta na kilka sposobów:

  • jako przełączniki oświetlenia, rolet, przekaźników i scen,
  • jako wykresy temperatury, wilgotności, mocy oraz zużycia energii,
  • jako interaktywne panele sterowania wyświetlane na tabletach ściennych.

Połączenie lokalnych odczytów z ESP32 z logiką Home Assistanta umożliwia tworzenie automatyzacji działających szybko, elastycznie i bez uzależnienia od usług chmurowych.

Bezpieczeństwo i dobre praktyki

Podczas budowy automatyki domowej z ESP32 i Home Assistantem należy przestrzegać najważniejszych zasad bezpieczeństwa:

  1. Silne hasła Wi-Fi, API i OTA – stosuj unikalne dane uwierzytelniające i nie zapisuj ich w publicznie dostępnych repozytoriach;
  2. Szyfrowanie komunikacji – używaj klucza szyfrującego API i zabezpieczaj dostęp do brokera MQTT;
  3. Oddzielenie obwodów 230 V od ESP32 – stosuj certyfikowane przekaźniki, moduły SSR, separację galwaniczną i odpowiednie obudowy;
  4. Stałe adresy IP dla kluczowych urządzeń – ułatwiają diagnostykę i ograniczają problemy z komunikacją;
  5. Monitorowanie dzienników ESPHome – regularnie sprawdzaj komunikaty dotyczące błędów konfiguracji, czujników i połączeń;
  6. Etapowe aktualizacje OTA – nową wersję oprogramowania najpierw testuj na jednym urządzeniu, a dopiero później instaluj ją na pozostałych modułach.

Prace przy obwodach 230 V powinny być wykonywane przez osobę posiadającą wymagane kwalifikacje. W instalacji należy stosować certyfikowane elementy, właściwe zabezpieczenia, odpowiednie przekroje przewodów oraz obudowy chroniące przed przypadkowym dotknięciem części znajdujących się pod napięciem.