Większością klimatyzatorów typu split i wieloma przenośnymi steruje się pilotem na podczerwień. Jeśli urządzenie nie ma modułu Wi-Fi albo działa on tylko przez chmurową aplikację producenta, pracę pilota może przejąć ESP32 z diodą podczerwieni. ESPHome ma do tego zestaw platform klimatyzacji, które nie ograniczają się do odtwarzania nagranych przycisków. Same składają pełne polecenie dla wybranego trybu, temperatury i prędkości wentylatora, a w Home Assistancie klimatyzator dostaje zwykłą kartę termostatu.
Co robią platformy klimatyzacji na podczerwień
Pilot klimatyzatora po naciśnięciu przycisku nie wysyła polecenia „temperatura w górę”. Jak wyjaśnia FAQ projektu IRremoteESP8266, takie piloty zwykle przy każdym naciśnięciu wysyłają cały stan: zadaną temperaturę, tryb, prędkość i kierunek nawiewu, ustawienia zegara i inne, do tego sumę kontrolną. Taka wiadomość może mieć około 128 bitów i często jest dzielona na dwie części wysyłane jedna po drugiej. Dlatego nagrywanie pojedynczych przycisków słabo się sprawdza przy klimatyzatorach: na każdą kombinację ustawień potrzebny byłby osobny kod.
Komponent IR Remote Climate w ESPHome sam koduje ten stan. Wybierasz platformę zgodną z protokołem urządzenia, a ESPHome tworzy encję klimatyzacji. Gdy zmienisz w Home Assistancie tryb albo temperaturę, ESP32 wyśle taką samą ramkę, jaką wysłałby oryginalny pilot.
Ograniczeniem jest sam sposób przesyłania. Podczerwień działa w jedną stronę, więc komponent nie odczyta prawdziwego stanu klimatyzatora. Przyjmuje, że urządzenie jest w stanie, o który poproszono ostatnio, i może go przywrócić po ponownym uruchomieniu ESP32. Jeśli ktoś użyje oryginalnego pilota albo klimatyzator nie odbierze polecenia, Home Assistant pokaże coś, co już nie jest prawdą. Przy części platform pomaga w tym odbiornik podczerwieni, o którym niżej.
Sprzęt
Potrzebne są trzy rzeczy:
- Płytka z ESP32. Według dokumentacji ESPHome nadajnik najlepiej działa na ESP32 i jego odmianach, bo większość z nich ma osobny układ peryferyjny RMT, który pilnuje dokładnych czasów sygnału. ESP32-C2 i ESP32-C61 nie mają RMT i korzystają z wolniejszej, programowej obsługi.
- Dioda podczerwieni o długości fali około 940 nm. Poradnik rozwiązywania problemów projektu IRremoteESP8266 podaje, że dioda 940 nm sprawdza się w większości przypadków, a tanie, przezroczyste diody w zupełności wystarczą. Dokumentacja Tasmoty ostrzega, że popularne gotowe moduły nadajników mają słabą diodę i mały zasięg, a przy samodzielnym montażu poleca diodę TSAL6400.
- Tranzystor NPN do sterowania diodą. Pin GPIO nie da tyle prądu, żeby dioda świeciła wystarczająco mocno. Poradnik IRremoteESP8266 i przykładowy kod projektu mówią to wprost: dioda podłączona bezpośrednio do pinu to najczęstszy powód, dla którego nic nie działa. W typowym układzie dioda z rezystorem szeregowym jest między zasilaniem a kolektorem tranzystora, emiter idzie do masy, a GPIO steruje bazą przez rezystor. W przykładzie projektu jest tranzystor 2N3904. Wartości rezystorów dobierz według karty katalogowej diody, zwłaszcza dopuszczalnego prądu impulsowego. Diody podczerwieni często zasila się mocniej, niż wynosi ich dopuszczalny prąd ciągły, bo każdy impuls trwa tylko milisekundy.
Dodatkowo możesz podłączyć moduł odbiornika podczerwieni (demodulator 38 kHz, na przykład płytkę KY-022, której używa dokumentacja Tasmoty). Przyda się do nagrania kodów z nieobsługiwanego pilota, a przy niektórych platformach ESP32 będzie dzięki niemu śledzić polecenia z oryginalnego pilota.
Ustawienie diody ma większe znaczenie, niż się wydaje. Dioda musi „widzieć” okienko odbiornika w klimatyzatorze, a najsilniejsza część wiązki wychodzi prosto z jej czubka. Poradnik IRremoteESP8266 opisuje też odwrotny problem: bardzo jasna dioda ustawiona zbyt blisko potrafi przesterować odbiornik.
Szybki test: skieruj aparat telefonu na diodę i wyślij polecenie. Zwykły aparat cyfrowy pokaże migającą diodę, choć według poradnika IRremoteESP8266 z aparatem iPhone'a może się to nie udać.
Wybór platformy dla klimatyzatora
Dokumentacja komponentu wymienia platformy wbudowane, między innymi coolix, daikin, daikin_arc, daikin_brc, fujitsu_general, gree, hitachi_ac344, hitachi_ac424, climate_ir_lg, midea_ir, mitsubishi, tcl112 (Electrolux, TCL, Fuego), toshiba, whirlpool i zhlt01. Ostatnia opiera się na pilocie ZH/LT-01, który według dokumentacji trafia do urządzeń wielu lokalnych marek, takich jak Eurom, Chigo, Tristar czy Sumikura.
Marka na obudowie nie zawsze zdradza protokół. Klimatyzatory produkuje garstka firm, a sprzedaje się je pod różnymi nazwami. Dokumentacja podaje dwa przykłady: midea_ir obsługuje zarówno protokół Midea, jak i Coolix, a platforma toshiba działa z modelem Midea MAP14HS1TBL. Jeśli marki nie ma na liście, poszukaj numeru modelu pilota albo wypróbuj platformy prawdopodobnego producenta.
Niektóre platformy wymagają dodatkowych ustawień. Przy gree trzeba podać model (generic, yan, yaa, yac, yac1fb9, yx1ff albo yag). mitsubishi ma opcje liczby prędkości wentylatora oraz trybów osuszania i samego nawiewu. W toshiba i whirlpool parametr model ustala zakres temperatur.
Jeśli żadna wbudowana platforma nie pasuje, zostaje heatpumpir, korzystająca z biblioteki Arduino-HeatpumpIR. Obsługuje dziesiątki producentów, w tym Panasonica, Samsunga, Sharpa, Hisense i Mitsubishi Heavy. Dokumentacja ESPHome zaleca ją tylko wtedy, gdy nie działa żadna platforma wbudowana, nie zapewnia wsparcia dla tej zewnętrznej biblioteki i uprzedza, że jej ogólny interfejs nie musi idealnie pasować do każdego urządzenia. Niektóre klimatyzatory mają na przykład więcej prędkości wentylatora, niż da się w nim ustawić.
Konfiguracja
Najprostsza konfiguracja dla klimatyzatora z protokołem Coolix, z tranzystorem diody podłączonym do GPIO4:
remote_transmitter:
pin: GPIO4
carrier_duty_percent: 50%
climate:
- platform: coolix
name: "Klimatyzacja salon"
carrier_duty_percent: 50% to wartość, którą dokumentacja ESPHome podaje dla diod podczerwieni. Ustawienie 100% jest przeznaczone dla nadajników radiowych 433 MHz, więc nie przepisuj go z przykładu dla radia.
Zmień nazwę platformy i dodaj opcje, których wymaga urządzenie. Jeśli klimatyzator tylko chłodzi, wyłącz grzanie, żeby ten tryb nie pojawiał się w Home Assistancie:
climate:
- platform: coolix
name: "Klimatyzacja sypialnia"
supports_heat: false
supports_cool i supports_heat mają domyślnie wartość true. Tryb automatyczny (heat_cool, na pilotach zwykle „auto”) włącza się sam tylko wtedy, gdy obie opcje są włączone. Jeśli urządzenie nie ma sensownego trybu automatycznego, ustaw supports_heat_cool: false. Dokumentacja opisuje też kłopot z Mitsubishi: w urządzeniach, które tylko chłodzą, polecenie wyłączenia może nie działać, dopóki nie ustawisz supports_heat: false.
Po wgraniu oprogramowania na ESP32 i dodaniu go do Home Assistanta encja klimatyzacji pojawi się przy urządzeniu ESPHome. Skieruj diodę na klimatyzator i zmień tryb. Urządzenie powinno zareagować tak samo jak na oryginalny pilot.
Czujnik temperatury w pokoju
Sama encja nie wie, jak ciepło jest w pokoju. Opcja sensor przypisuje do niej odczyt temperatury i wtedy karta termostatu pokazuje obok temperatury zadanej także temperaturę w pomieszczeniu. Tak samo działa opcja humidity_sensor dla wilgotności.
i2c:
sda: GPIO21
scl: GPIO22
sensor:
- platform: bme280_i2c
temperature:
name: "Temperatura salon"
id: room_temperature
humidity:
name: "Wilgotność salon"
id: room_humidity
climate:
- platform: coolix
name: "Klimatyzacja salon"
sensor: room_temperature
humidity_sensor: room_humidity
Dokumentacja jasno mówi, że ten odczyt służy tylko do wyświetlania w interfejsie. Klimatyzator nadal reguluje temperaturę według własnego czujnika, który zwykle siedzi w jednostce wewnętrznej pod sufitem. Kilka platform idzie dalej. Przy modelu Toshiba RAC-PT1411HWRU i protokole greeyac w heatpumpir ESPHome przekazuje odczyt czujnika do klimatyzatora tak, jak robi to oryginalny pilot z wbudowanym termometrem (u Toshiby funkcja nazywa się „Comfort Sense”, u Gree „I-Feel”). Wtedy urządzenie reguluje temperaturę według miejsca, w którym stoi ESP32. Dokumentacja stawia tu warunki: update_interval czujnika musi być krótszy niż siedem minut dla Toshiby i dziesięć minut dla Gree, inaczej klimatyzator wraca do własnego czujnika. Proponowane wartości to odpowiednio 30 sekund i 2 minuty.
Śledzenie oryginalnego pilota przez odbiornik
Tabela w dokumentacji pokazuje, które platformy obsługują odbiornik. Większość wbudowanych tak, ale gree, yashima i heatpumpir nie. Przy obsługiwanej platformie odbiornik podczerwieni ustawiony blisko okienka klimatyzatora sprawia, że ESP32 rozkoduje polecenia z oryginalnego pilota i zaktualizuje encję.
remote_receiver:
id: ir_rx
pin:
number: GPIO5
inverted: true
mode:
input: true
pullup: true
tolerance: 55%
climate:
- platform: coolix
name: "Klimatyzacja salon"
sensor: room_temperature
receiver_id: ir_rx
Ustawienia inverted: true, podciągnięcie wejścia (pullup) i tolerancja 55% pochodzą z przykładu w dokumentacji, według której wyższa tolerancja sprawdza się przy niektórych pilotach. Nadal nie wiesz jednak, co naprawdę robi klimatyzator. ESP32 słyszy pilota, a nie urządzenie, więc polecenie, którego klimatyzator nie odebrał, pozostanie niewidoczne.
Gdy klimatyzatora nie ma na liście
Jeśli nie działa ani platforma wbudowana, ani heatpumpir, możesz wysyłać nagrane polecenia. Poradnik ESPHome o urządzeniach na podczerwień opisuje, jak to zrobić: podłącz odbiornik, ustaw dump: all i obserwuj dziennik, naciskając przyciski pilota.
remote_receiver:
pin: GPIO5
dump: all
Znany protokół pojawi się w dzienniku już rozkodowany, a nieznany jako lista surowych czasów impulsów. Każdy nagrany kod możesz potem wysłać przyciskiem szablonowym (platform: template) z akcją taką jak remote_transmitter.transmit_raw, z carrier_frequency: 38kHz dla podczerwieni.
Przy klimatyzatorze daje to sceny, a nie termostat. Każda ramka zawiera pełny stan, więc jeden przycisk to jedno stałe ustawienie, na przykład „chłodzenie, 24 stopnie, automatyczny nawiew” albo „wyłącz”. Wielu osobom dwa albo trzy takie przyciski wystarczą, żeby zautomatyzować chłodzenie w Home Assistancie. Jeśli potrzebujesz pełnej encji klimatyzacji, sprawdź, czy dany model jest w bibliotece HeatpumpIR albo w prośbach o nowe funkcje w ESPHome.
Automatyzacje w Home Assistancie
Encja zachowuje się jak każda inna encja klimatyzacji, więc w automatyzacjach możesz używać akcji climate.set_hvac_mode i climate.set_temperature. Przy sterowaniu podczerwienią trzeba pamiętać o dwóch rzeczach.
Po pierwsze, Home Assistant nie potwierdzi, że polecenie dotarło. W ważnych automatyzacjach, takich jak wyłączanie chłodzenia, gdy wszyscy wyjdą z domu, warto wysłać polecenie jeszcze raz minutę później albo sprawdzić efekt czujnikiem temperatury lub inteligentnym gniazdkiem, które mierzy pobór mocy klimatyzatora.
Po drugie, przy platformie bez odbiornika zakładany stan rozjeżdża się z rzeczywistym za każdym razem, gdy ktoś sięgnie po oryginalny pilot. Jeśli domownicy używają obu sposobów, prawdziwym rozwiązaniem jest odbiornik albo umowa, że korzystacie z jednego.
Typowe błędy
- Dioda podłączona bezpośrednio do GPIO. Zasięg spada do kilku centymetrów albo nic nie działa. Użyj tranzystora.
- Odwrotnie podłączona dioda. Nie zaświeci. Najpierw sprawdź biegunowość.
carrier_duty_percent: 100%przepisane z przykładu dla radia. Dla podczerwieni ma być 50%.- Zła platforma dla marki. Jeśli klimatyzator ignoruje polecenia, zanim zaczniesz podejrzewać sprzęt, wypróbuj platformy prawdopodobnego producenta i protokoły
heatpumpir. - Oczekiwanie, że czujnik w pokoju zmieni sposób regulacji. Na większości platform służy tylko do wyświetlania.
- Nagrywanie pojedynczych przycisków pilota klimatyzatora jak pilota od telewizora. Każda ramka niesie cały stan, więc nagrane „temperatura w górę” zawsze odtworzy jedno, stałe ustawienie.