Monitorowanie wydajności rekuperacji z użyciem ESPHome i Home Assistant
This post is also available in: English 🇺🇸
W moim domu posiadam mechaniczną wentylację z odzyskiem ciepła napędzaną przez urządzenie Stiebel Eltron V-400. W uproszczeniu jest to duży wentylator z kanałami nawiewnymi i wywiewnymi. Pomijając wbudowaną automatykę, jest to raczej proste urządzenie. Bez dedykowanej bramki (która dodatkowo kosztuje) mogę jedynie sterować urządzeniem lub zobaczyć bieżące parametry na sterowniku, umieszczonym albo bezpośrednio na jednostce, albo w przedpokoju.
Pomyślałem, że warto byłoby zbierać dane z tego urządzenia, zarówno do analizy, jak i z czystej ciekawości. Korzystam z Home Assistant, który umożliwia prezentację dedykowanych wykresów i dashboardów do takich celów. Ponieważ niedawno eksperymentowałem z modułami ESP, w mojej głowie pojawił się pomysł na projekt.
Potrzebne części
W projekcie wykorzystałem czujniki temperatury Dallas DS18B20 oraz moduł Wemos D1 z wbudowanym ESP8266. Wybrałem Wemos D1 ze względu na kompaktowy rozmiar, wyjście 5V i fakt, że akurat miałem jeden wolny pod ręką.
Czujniki Dallas DS18B20 są dobrze znane z interfejsu 1-wire, pozwalającego podłączyć wiele czujników do jednej linii danych. Jeśli zastanawiałeś się kiedyś, czy istnieją projekty, w których jest sens użyć więcej niż jednego czujnika DS18B20 na jednej płytce – czytaj dalej.
Miałem również 6-żyłowy przewód LED, który rozdzieliłem i wykorzystałem do podłączenia czujników do modułu. Do zasilania użyłem starej ładowarki do telefonu i kabla USB-C.
Plan
Urządzenie rekuperacyjne ma cztery kanały powietrzne – dwie pary kanałów nawiewnych i wywiewnych. Jedna para obsługuje wymianę powietrza z zewnątrz, druga cyrkuluje powietrze wewnątrz domu. Układ przepływu powietrza wygląda następująco:
Spodziewałem się, że powietrze w tych kanałach będzie miało różne temperatury. Wewnątrz każdego z nich umieściłem po jednym czujniku DS18B20. Dodałem także dodatkowy czujnik, mierzący temperaturę na strychu, gdzie zainstalowane jest urządzenie.
Jak wspominałem wcześniej, DS18B20 używają interfejsu 1-wire, więc wszystkie czujniki mogą współdzielić jedną linię danych. Zamiast podłączać czujniki szeregowo, zastosowałem topologię gwiazdy, gdzie każdy czujnik ma swój własny przewód, ale współdzieli wspólny pin danych.
Przygotowanie
Najpierw – czujniki. Lutowanie pierwszego było przyjemnością, ale każdy kolejny stawał się coraz bardziej monotonny. Każdy czujnik przylutowałem do przewodu o długości około pół metra.
Chciałem wszystko podłączyć do płytki prototypowej, jednak brakowało mi zaciskarki Dupont do przygotowania odpowiednich pinów. Ostatecznie użyłem złączek Wago.
Linia danych została podłączona do pinu D13 (GPIO13) na Wemos D1.
Oprogramowanie
Nie pisałem firmware’u ESP samodzielnie. Zamiast tego skorzystałem z ESPHome, który świetnie integruje się z Home Assistant.
Konfiguracja ESP przez ESPHome była jedną z najbardziej magicznych rzeczy, jakie robiłem. Chociaż lubię pisać oprogramowanie samemu od podstaw, możliwość generowania firmware’u z pliku YAML jest fantastyczna.
Identyfikacja czujników
Rozpocząłem od podstawowego projektu ESPHome, konfigurując WiFi i protokół one_wire.
one_wire:
- platform: gpio
pin: GPIO13
Po wgraniu firmware’u ESP wypisał adresy podłączonych czujników.
[13:47:40][C][gpio.one_wire:021]: Pin: GPIO13
[13:47:40][C][gpio.one_wire:080]: Found devices:
[13:47:40][C][gpio.one_wire:082]: 0x48e2a7bc12fa3651 (DS18B20)
[13:47:40][C][gpio.one_wire:082]: 0xc903deab6719b425 (DS18B20)
[13:47:40][C][gpio.one_wire:082]: 0x1f64b28d4ca713ff (DS18B20)
[13:47:40][C][gpio.one_wire:082]: 0xa82fbac2e19d54e7 (DS18B20)
[13:47:40][C][gpio.one_wire:082]: 0x702c19f8ab65e038 (DS18B20)
Wszystkie moje czujniki były widoczne, ale pojawił się jeden problem. Chciałem poprawnie nazwać każdy z czujników, lecz nie wiedziałem, który adres przypisany jest do którego z nich. Na szczęście czujniki są bardzo czułe, więc zarejestrowałem je wszystkie, przypisując im nazwy. Następnie przez dotyk, podgrzewałem konkretny czujnik i obserwowałem, który odczyt temperatury wzrósł.
To by wystarczyło, ale z racji tego, że postanowiłem użyć przewodów w różnych kolorach dla temperatur nawiewu i wywiewu, musiałem odpowiednio zaktualizować nazwy. Ostatecznie lista wyglądała następująco:
sensor:
- platform: dallas_temp
id: temp_inner_inflow
address: 0x48e2a7bc12fa3651
name: temp_inner_inflow
update_interval: 60s
- platform: dallas_temp
id: temp_inner_outflow
address: 0xc903deab6719b425
name: temp_inner_outflow
update_interval: 60s
- platform: dallas_temp
id: temp_outer_inflow
address: 0x1f64b28d4ca713ff
name: temp_outer_inflow
update_interval: 60s
- platform: dallas_temp
address: 0xa82fbac2e19d54e7
name: temp_attic
update_interval: 60s
- platform: dallas_temp
address: 0x702c19f8ab65e038
name: temp_outer_outflow
update_interval: 60s
Sprawność temperaturowa
Mając wszystkie temperatury, skonfigurowałem czujnik wyliczający sprawność temperaturową wymiennika ciepła:
η=T2−T1T3−T1×100
- T1 – temperatura powietrza zewnętrznego przed wymiennikiem ciepła
- T2 – temperatura powietrza nawiewanego za wymiennikiem ciepła
- T3 – temperatura powietrza wywiewanego z pomieszczeń
W ESPHome wygląda to następująco:
sensor:
- platform: template
name: efficiency
filters:
- round: 2
unit_of_measurement: '%'
state_class: "measurement"
accuracy_decimals: 1
lambda: |-
float t1 = id(temp_outer_inflow).state;
float t2 = id(temp_inner_inflow).state;
float t3 = id(temp_inner_outflow).state;
float eff = (t2 - t1) / (t3 - t1);
return eff * 100;
update_interval: 60s
Mogłem zrobić to samo, korzystając z sensora szablonowego w Home Assistant. Jednak wykonanie tego bezpośrednio na ESP pozwoliło mi odciążyć główną instancję i przenieść obliczenia bliżej źródła danych. Dane są już dostępne w module, więc może ono udostępniać wstępnie przeliczoną wartość jako część swojego API.
Wdrożenie
Początkowe wdrożenie było nieco inne niż tradycyjny proces rozwoju oprogramowania. Musiałem wejść na strych, ostrożnie umieścić wszystkie czujniki w przewodach powietrznych zgodnie z planem i uruchomić płytkę Wemos D1.
Gdy wszystko znalazło się na swoim miejscu, przeszedłem do konfiguracji w Home Assistant.
Dashboard Home Assistant
Ponieważ integrację ESPHome z Home Assistant miałem już gotową, nowe urządzenie zostało automatycznie wykryte, a wszystkie udostępniane encje zostały zarejestrowane. Dopasowałem ich nazwy i przygotowałem dashboard, aby mieć szybki przegląd pracy mojej jednostki wentylacyjnej.
Nie będę tutaj pokazywał konfiguracji krok po kroku, ale jeśli uważasz, że byłoby to dla Ciebie przydatne, po prostu napisz do mnie. Chętnie podzielę się szczegółami.
Końcowe przemyślenia
Ten zestaw działa bez zarzutu już od pół roku. W następnej iteracji zamierzam umieścić ESP w dedykowanej obudowie i zastąpić złączki Wago. Ale kiedy już wszystko działa, potrzeba dalszych ulepszeń okazuje się mniejsza, niż się spodziewałem. Mam nadzieję, że artykł był dla Ciebie przydatny. Dzięki za przeczytanie!