ESPHome – prosty przepis na smart home

Wstęp

Czy zauważyliście, że większość projektów i urządzeń do automatyki domowej jest do siebie bardzo podobna? Sterowanie przekaźnikiem, czujnik (np. temperatury), który przesyła pomiar do centralki – to najczęstsze scenariusze. A najważniejsza logika i tak rozgrywa się właśnie tam, w centralce. Dziś opowiem o jednym z rozwiązań, które wykorzystuje ten fakt i jednocześnie oferuje proste narzędzie do tworzenia takich urządzeń samodzielnie.

EVW-008

Większość projektów DIY z WiFi opiera się obecnie na ESP8266 lub ESP32. Te mikrokontrolery znajdziemy na różnego rodzaju płytkach – od prostych konstrukcji z podstawowymi elementami, które ułatwiają zasilanie przez USB, programowanie i dostęp do pinów, po bardziej zaawansowane płytki z dodatkowymi komponentami. Jedną z takich płytek jest EVW-008, o której ostatnio nagrałem film, wspominając przy okazji o ESPHome, o którym dziś piszę.

Home Asisstant

Jeśli oglądaliście moje filmy, między innymi o Node-RED i aktualizacjach smart home, to wiecie, że korzystam z Home Assistanta. I właśnie od tego chciałbym tutaj zacząć.

Home Assistant to system zainstalowany u mnie na Dell Wyse, pełniący rolę serwera/centralki smart home. Umożliwia integrację z wieloma gotowymi rozwiązaniami komercyjnymi, takimi jak urządzenia smart od IKEA, a także z projektami DIY. I tutaj właśnie wkracza ESPHome.

ESP home

ESPHome to integracja, a zarazem wtyczka do Home Assistanta, która jest także pełnoprawnym frameworkiem upraszczającym programowanie płytek takich jak ESP8266, ESP32 czy Raspberry Pi Pico W. Co ważne, nie wymaga dodatkowego środowiska programistycznego ani nawet pracy z kodem. Wszystko, czego potrzebujemy, to plik konfiguracyjny, który jest niezwykle prosty – zaraz to pokażę.

ESPHome oferuje rozbudowaną bazę modułów, które łatwo podłączymy do naszej płytki, opiszemy w konfiguracji i w krótkim czasie uzyskamy działający czujnik temperatury czy przekaźnik. Tak skonfigurowane urządzenie od razu pojawi się w Home Assistant, co pozwala na sterowanie lub odczytywanie stanu z poziomu dashboardu w aplikacji na telefonie. Jeśli pójdziemy o krok dalej, możemy zintegrować to urządzenie z Google Home, co pokazywałem wcześniej na przykładzie EVW-008.

W konfiguracji ESPHome można również zawrzeć bardziej zaawansowaną logikę, takie jak harmonogramy czy warunki. Jest to szczególnie przydatne w sytuacjach, gdy Home Assistant nie działa lub gdy chcemy ograniczyć ruch przez HA, pozostawiając część operacji bezpośrednio na urządzeniu.

Jednym z ważnych atutów ESPHome jest możliwość łatwej aktualizacji konfiguracji bezprzewodowo po wstępnym wgraniu przez kabel. Dzięki temu możemy modyfikować nasze urządzenia z dowolnego miejsca, łącząc się z Home Assistant, co znacząco ułatwia i przyspiesza rozwój naszego systemu automatyki domowej.

Instrukcja

Jeśli macie już zainstalowany Home Assistant, zacznijmy od komputera, z którego możecie uzyskać dostęp do swojego dashboardu.

Na stronie ESPHome znajdziecie wiele przydatnych instrukcji, listę modułów, które można podłączyć, oraz przekierowanie do waszego Home Assistanta – wystarczy podać adres URL lub IP. LINK

W Home Assistant należy zainstalować dodatek ESPHome, który umożliwi tworzenie konfiguracji oraz ich wgrywanie na płytkę.

Możemy rozpocząć ten proces także ze strony ESPHome.

W tym momencie warto od razu skonfigurować plik secrets, co pozwoli uniknąć wpisywania nazwy i hasła do sieci w każdym pliku konfiguracyjnym kolejno dodawanych urządzeń.

Następnie dodajemy nowe urządzenie, wybierając odpowiednią płytkę. Po tym kroku otrzymamy wstępną, prostą konfigurację.

Aby ją rozbudować – jak w przypadku mojego projektu, który możecie znaleźć w repozytorium tutaj – wystarczy skorzystać z wiki na stronie ESPHome. Wpisujemy nazwę modułu, kopiujemy potrzebny fragment i dodajemy go do konfiguracji. Nie trzeba zgłębiać szczegółów, ponieważ praca z przykładami i aktualną dokumentacją jest w zupełności wystarczająca. W razie potrzeby zawsze można skorzystać z pomocy, np. ChatGPT lub innych narzędzi, które wspierają pisanie konfiguracji. Mój przykład wytłumaczę za chwilę.

Gdy konfiguracja jest gotowa, wystarczy ją wgrać na płytkę. Można to zrobić bezpośrednio z hosta, na którym działa Home Assistant, ale ja w tym przypadku preferuję użycie komputera, o czym wspominałem wcześniej.

Jeśli jednak z jakiegoś powodu automatyczne wgrywanie konfiguracji zostanie zablokowane na waszym komputerze, można skorzystać z alternatywnej opcji – ESPHome Web. Na pocztek musimy pobrać manualnie nasz skąpilowany projekt, potem wybrać opcję z linku 2., wybrać port pod który jest podpięte nasze urządzenie i wgrać ściągnięty plik.

 Taka prosta wygenerowazna konfiguracja pozowli nam już łączyć się z naszą płytką ESP.

Jak już wspominałem, kolejne zmiany konfiguracji mogę wygodnie wprowadzać przez Wi-Fi.

Żeby uzyskać encje należy dodać jeszcze nasze urządzenie w zakładce Ustawienia->Urządzenia oraz usługi

Wystaczy tutaj podać nazwę naszego urządzenia.

Przykład

Mój przykład dla EVW-008 znajdziecie na repozytorium TUTAJ. Plik – realys_ds18b20.yml.
Porównując go z waszymi konfiguracjami, zauważycie, że część elementów znajduje się już na początku pliku, np. klucz API do Home Assistant. Nazwa i hasło do Wi-Fi, jak wspomniałem wcześniej, są powiązane z plikiem secrets.

W przypadku konfiguracji z repozytorium wystarczy skopiować wszystko po linii 29 i wkleić przed:

captive_portal:

Lub wpisać wasz API HA.

W tej sekcji omówimy krok po kroku konfigurację kodu, aby lepiej zrozumieć, co dokładnie zostało w nim zawarte i jak działa.

Definicja pinów dla magistrali I2C na której znajduje się ekspander PCF8574.

i2c:
  sda: 4
  scl: 5
  scan: True

Jeśli chcecie dowiedzieć się więcej o samym ekspanderze, zapraszam do filmu poniżej.

Kawałek dalej znajdziecie również adres ekspandera:

pcf8574:
  - id: 'pcf8574_hub'
    address: 0x20

Następnie mamy konfigurację pinów, które są połączone z przekaźnikami na płytce:

switch:
  - platform: gpio
    name: "Relay 1"
    pin:
      pcf8574: pcf8574_hub
      number: 0
      mode: OUTPUT
      inverted: True
    id: relay_1
  - platform: gpio
    name: "Relay 2"
    pin:
      pcf8574: pcf8574_hub
      number: 1
      mode: OUTPUT
      inverted: True
    id: relay_2
  - platform: gpio
    name: "Relay 3"
    pin:
      pcf8574: pcf8574_hub
      number: 2
      mode: OUTPUT
      inverted: True
    id: relay_3
  - platform: gpio
    name: "Relay 4"
    pin:
      pcf8574: pcf8574_hub
      number: 3
      mode: OUTPUT
      inverted: True
    id: relay_4

Pomiędzy znajduje się również konfiguracja dla termometru DS18B20:

one_wire:
  - platform: gpio
    pin: GPIO16

sensor:
  - platform: dallas_temp
    name: "temperatura"

Termometr podłączyłem z rezystorem 4,7 kΩ między dane a masę, zgodnie z pinami na płytce.

Wszystkie elementy – w moim przypadku wyjścia ekspandera i termometr – pojawiają się w Home Assistant jako encje, które można dalej wykorzystać w systemie.

Mam nadzieję że z czasem dodam kolejne przykłady na repozytorium, szczególnie jeśli będą pojawiać się jakieś pytania, do których zadawania zachęcam.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *