Kimatyzacja HAIER - jak zintegrować z HA

Witam Was serdecznie,

Bardzo proszę o łopatologiczny instruktaż jak zintegrować 4 pojedyncze klimatyzacje HAIER (model TUNDRA) z HA. Dotychczas klimatyzacją w domu, podpiętą do sieci WiFi sterowałem poprzez apkę SmartAir na swoim telefonie, ale skoro przesiadam się na HA, wypada porzucić to archaiczne rozwiązanie…

W sieci znalazłem następujące materiały:

  1. GitHub - MiguelAngelLV/esphaier: ESP8266 code to connect to Haier Air Conditioner with wifi module support
  2. Управление кондиционером Haier на базе ESP8266 — blog.instalator
    Jestem chyba bliski ogólnego zrozumienia sposobu pracy takiego rozwiązania, jednak szczegółów jeszcze nie ogarniam.

Rozumiem, że muszę teraz:

  1. kupić moduł ESP8266 Wemos D1 Mini (4 szt., po jednej do każdej klimy)
  2. zdobyć skądś właściwy firmware
  3. wgrać tenże firmware na każdy moduł ESP826 programem ESPhome Flasher.

Oczywiście wykonanie kroku !-szego jest oczywiste, ale pozostałe nie są dla mnie już takie jasne. Proszę więc Was o podpowiedzi:

  • skąd wziąć firmware oraz całe środowisko wymagane do jego kompilacji
  • czy przed wgraniem na moduł trzeba go jakoś wstępnie przygotować? jeśli tak, to jak i czym?
  • jak wgrać firmware na płytkę? jak przygotować komputer na tę operację? jak podłączyć płytkę do kompa?

Będę ogromnie wdzięczny za każdą konstruktywną podpowiedź.

PS: dopuszczam opcję komercyjnego zlecenia wykonania tego zadania, ale tylko wewnątrz tej Grupy. Proszę podać warunki :slight_smile:

Środowiskiem kompilacji jest ESPHome dostępne jako dodatek dla HA (ma też możliwość instalacji stand-alone, ale używając addona jest łatwiej) .

Przejrzyj tamten wątek - on sporo wyjaśnia (choć rozwój poszedł sporo do przodu i dziś będzie raczej łatwiej)

ad 1. nie musi być WeMos D1 - zasadniczo dowolny moduł ESP8266 (oprócz ESP-01) się nada (prawdopodobnie dowolny moduł ESP32 też się nada, ale zwykle ESP8266 są tańsze)
ad 2. ESPHome działa w taki sposób, że samodzielnie kompilujesz firmware (i jest to łatwe i proste) do katalogu esphome (lub lepiej do katalogu danego modułu, jeśli odpowiednio zmienisz ścieżkę include) przed kompilacją musisz dograć plik Haier.h
ad 3. ESPHome również sflaszuje moduł

Oczywiście mówię o rozwiązaniu numer 1, bo rozwiązanie 2 jest inne.

1 Like

Bardzo dziękuję za niemal wyczerpującą podpowiedź. Mam nadzieję za jakiś czas pochwalić się wynikiem moich poczynań. Tymczasem Duże Piwo dla Szopena za cenne wskazówki! :beer: :slight_smile:

Witam ponownie :slight_smile:

Moduły ESP8266 dotarły, więc ochoczo wziąłem się do pracy.
Dzięki cennym wskazówkom @szopen 'a udało mi się skompilować firmware.bin i wgrać na płytkę.
Logi pokazują, że wszystko działa… Dane aktualizują się także poprawnie podczas prób sterowania klimatyzacji za pomocą pilota.

Niestety, żadna encja, żaden status jakiegokolwiek sensora klimatyzacji, nie są dostępne dla dashboardu HA, w rejestrze encji także nie widzę niczego, co przypominałoby takie dane.
Utknąłem więc w tym punkcie, prosząc o jak zawsze niezawodną poradę.
Męczy mnie temat konfiguracji serwera MQTT, bo wg mnie gdzieś w pliku konfiguracyjnym my_haier.yaml lub pliku bibliotecznym haier.h chyba powinien być ten serwer zdefiniowany (adres IP, user, pass, lub cokolwiek innego, co powiąże moduł ESP8266 z brokerem MQTT). Ale nigdzie informacji na ten temat nie znalazłem. Serwer musi chyba jakoś wiedzieć kogo ma słuchać, a płytka ESP musi wiedzieć do kogo gada… Nie wiem czy nie przesadzam z tą dedukcją… :wink:

Tak czy inaczej, nic z klimy nie da się wyświetlić w Lovelace, brak jest odpowiednich encji.
Gdzie robię błąd? Jeszcze raz bardzo proszę o cenne wskazówki.

Musisz skorzystać z tego: https://github.com/instalator/Haier_WiFi/
Plik mqtt_esp8266_haier.ino

mqtt_esp8266_haier.ino

#include <PubSubClient.h>
#include <ArduinoOTA.h>

const char* ssid = "...";
const char* password = "...";
const char* mqtt_server = "xx.xx.xx.xx"; //Сервер MQTT

IPAddress ip(xx,xx,xx,x); //IP модуля
IPAddress gateway(xx,xx,xx,xx); // шлюз
IPAddress subnet(xx,xx,xx,xx); // маска

Plik wgrywane przez Arduino, nie wiem czy EspHome kompiluje *.ino
Screenshot - 04.09.2021 , 15_06_36

Wszystko się wyjaśniło na GitHub! To ewidentnie moje przeoczenie lub raczej niewiedza…
Założyłem mylnie, że wystarczy zainstalować ESPHome i zintergować go z HA a system sam sobie znajdzie urządzenia z poprawnie skompilowanym firmwarem. Tymczasem okazało się, że każde urządzenie ESP musi być dodane, integrowane i konfigurowane osobno i ręcznie. Nie potrzeba jednak konfigurować brokera MQTT, bo komunikację z HA załatwia właściwa konfiguracja ESPHome. Pomysł @artpc miałby zatem zastosowanie gdyby HA był w pełni zintegrowany z Arduino. Tymczasem w HA brak jest całej masy jego bibliotek, choć same pliki .INO dają się kompilować w ESPHome.
Alternatywą byłaby instalacja odrębnej instancji Arduino, kompilowanie w niej firmware’u i flashowanie ESP8266 gdzieś poza HA, potem ręczna integracja każdego modułu ESP z HA. Czyli podwójna robota…
Ponadto integracja Arduino z Home Assistantem już odeszła w przeszłość i została zastąpiona Firmatą.

Zatem integrację klimy Haier TUNDRA z platformą HA uznaję za wykonaną, odtrąbiam sukces :tada: i zamykam temat, dziękując za Wasz cenny czas i wszelkie Wasze wskazówki! :beers:

Grunt, że się udało.

To nie prawda - każde typowe urządzenie korzystające ze standardowej komunikacji (po użyciu opcji api:) będzie automatycznie wykryte, natomiast projekt, który chcesz używać jest mocno niestandardowy i chyba po prostu nie radzi sobie z twoim sprzętem, do komunikacji z którym chcesz go wykorzystać (problem dotyczy właściwie z tego co widzę protokołu Haiera).

Generalnie ESPHome ma także obsługę MQTT (trzeba ją sobie włączyć i skonfigurować, ale po co, skoro akurat ten projekt korzysta z API).

Wydaje mi się, że nie zrozumiałeś idei ESPHome, które przede wszystkim służy do tworzenia spersonalizowanego firmware dla ESP, więc każde urządzenie DIY trzeba sobie skonfigurować “pod siebie”, ściśle dedykowanego do współpracy z HA (choć ma też inne opcje umożliwiające budowę choćby właśnie urządzeń komunikujących się typowym MQTT bądź nawet całkowicie autonomicznych i nie używających żadnych form komunikacji typowych dla IoT).

Natomiast @artpc pisze o zupełnie innym rozwiązaniu (nie używającym wcale ESPHome, za to używającego komunikacji MQTT, które też linkowałeś na samym początku), tak się składa, że tamto też bazuje na sprzęcie ESP, ale firmware jest tworzone na platformie Arduino.

W ramach ciekawostek - trend rozwoju ESPHome jest obecnie taki, by móc “wyprodukować” firmware zdatne do pracy w dowolnej instalacji HA, a tym samym umożliwić wręcz seryjną produkcję urządzeń bazujących na ESPHome, które wymagałyby tylko skonfigurowania parametrów pracy WiFi w jakiś prosty sposób (podobnie jak jest to powszechnie stosowane w dowolnych masowo produkowanych urządzeniach IoT).

1 Like

Dziękuję @szopen za Twoje słuszne i cenne uwagi. Jak to miło posłuchać mądrych ludzi!.
Oczywiście masz rację, nie każde urządzenie ESP musi być dodane ręcznie. Powinienem był sformułować to zdanie inaczej: Tymczasem okazało się, że każde moje urządzenie Haier musi być dodane, integrowane i konfigurowane osobno i ręcznie. Chodzi tu bowiem rzeczywiście o projekt mocno odbiegający od standardu, korzystający ze specyficznego protokołu Haiera. Okazuje się ponadto, że nawet same protokoły Haier też się między sobą różnią, w zależności od modelu urządzenia, o czym wspomniałem tutaj.
Jestem wciąż nowicjuszem w temacie ESP i faktycznie, nie wszystko jest jeszcze dla mnie tu tak klarowne. Ale chętnie chłonę wiedzę, zwłaszcza pochodzącą od ekspertów w swojej dziedzinie, czyli - jak wspomniałem - miło jest słuchać mądrych ludzi :slight_smile: .
Przy okazji: jeden z moich Haierów okazał się być krnąbrny na tyle, że używa nieco innego protokołu, niż 3 pozostałe, które już ogarnąłem. Trochę inny, bardziej rozbudowany model i już całkiem inny protokół. Muszę zatem przy użyciu pilota wykonać jakąś inżynierię odwrotną aby na podstawie jej wyników odpowiednio zmodyfikować firmawe dostosowując go do specyfiki tego protokołu. Czy istnieje jakiś tool, który umiałby zaczytywać z Wifi wartości bajtów sterujących wysyłanych i odbieranych przez płytkę Wemos w trakcie manupulowania funkcjami i ustawieniami pilota do obsługi urządzenia, dodając przy tym stempel czasu? Czy też pozostaje tylko żmudna obserwacja i zbieranie logów z węzła ESPHome a potem mozolne ich porównywanie?

Witajcie, to mój pierwszy post na forum i od razu spieszę z pytaniem. Posiadam od niedawna klimatyzator Haier Flexis Plus i chciałbym go zintegrować z HA. Proszę o info znawców tematu czy udało się poskromić protokół komunikacyjny w tejże jednostce? Słowem nie jestem programistą i raczej będę grzecznie prosił o gotowe pliki i pomoc w konfiguracji.
Pozdrawiam

Cześć @Adam_84

Temat integracji Flexis nie jest jeszcze ukończony. Dotychczas, z dużą pomocą @szopen’a udało mi się w całości ogarnąć model Haier Tundra, który hula na HA aż miło popatrzeć :slight_smile: Ale Haier Flexis jest modelem znacznie bardziej złożonym (skoro go masz, to wiesz dlaczego), a sam protokół Haier jest mocno niestandardowy.

Proponuję abyś przede wszystkim przejrzał powyższą serię postów w tym temacie.
Będziesz potrzebował modułu ESP (np. WeMos) do wpięcia go w port USB splitu klimy wiszącej na Twojej ścianie.

Na moduł ESP trzeba będzie wgrać firmware, ale ten jeszcze nie jest w pełni gotowy. Na GitHub koresponduję w tej kwestii z pewną miłą Hiszpanką, która obiecała wsparcie w stworzeniu odpowiedniego kodu firmware właściwego dla tego właśnie modelu klimy. Udało mi się dotychczas rozkodować wszystkie rozkazy i przełożyć je na określone wartości odpowiednich bajtów sterujących ale teraz trzeba to wszystko zebrać do kupy i jakoś zapisać do pliku *.h potrzebnego do kompilacji ostatecznej wersji firmware, w czym ja (chyba podobnie jak Ty) niestety nie jestem specjalistą :confused: Pozostaje Ci więc tylko uprzejmie wpiąć się w wątek na GitHub i cierpliwie czekać na jego finał :slight_smile:

1 Like

Witam ponownie, trochę mnie nie było bo czekałem na moduł i trochę studiowałem wcześniejsze wpisy. Teraz trochę lutowania i oczekiwanie na pomyślne rozwiązanie… :wink:

A nie prościej zrobić to np na Broadlinku?

Jak zwykle piszecie po japońsku… ;))))

Zakładam:

  1. Po zainstalowaniu ESPHome podpinam moduł ESP do RASP na którym jest HA.
  2. W ESPHome klikam +new device, nadaję mu jakąś nazwę (np. haier) i podpinam do sieci WiFi.
  3. Wybieram port pod którym ESP jest podłączone do RASP i klikam Connect.
  4. Tu powinno się pokazać coś…
    W zamian pojawia się to:

Installation

Failed to initialize. Try resetting your device or holding the BOOT button while selecting your serial port until it starts preparing the installation.

Niezależnie jak bardzo naciskam ten boot button, to wynik ten sam.
Dlaczego ten świat mnie tak nie lubi???

Ad 1. można w ten sposób

Ad 2. metod na tworzenie urządzenia jest obecnie przynajmniej kilka, ale każda wymaga kompilacji więc pominąłeś “milion późniejszych kroków”, więc chyba pomieszałeś klika metod - taką najstarszą oczywiście nie połączysz niczego do WiFi jeśli najpierw nie przygotujesz działającego softu, nie skompilujesz go i nie sflaszujesz modułu.

Ad 3. i 4

A jaki masz moduł?
Jeśli np. ESP-01 albo ESP-01s (lub wiele innych bez elektroniki umożliwiającej flashowanie plug&play) to GPIO0 do masy tymczasowo podpięte?

Może kiedyś zrobię z tego jakiś bardziej uniwersalny tutorialik (no nie czuję się na siłach bo metod jest więcej niż mam wolnego czasu), ale powinieneś zacząć jakoś analogicznie jak tam opisałem

Ad 2. Klikam w ESPHome +new device i w następnym kroku prosi mnie na jednej formatce o podanie nazwy nowego urządzenia oraz SID sieci wifi oraz hasło do wspomnianej. To nazwałem "podpięciem do Wifi. Po tym kroku wyświetla mi się port com3 (jedyny), zaznaczam go i klikam connect. Tu nie ma żadnych ew. kroków do pominięcia.
Ad3,4 - ESP8266.

A to tworzy tylko wpis w pliku secrets.yaml (w GUI ESPHome to u góry po prawej z ikoną kłódki), który jest załączony w konfiguracji każdego urządzenia.

To jest Windows? Czyli twój HA to maszyna wirtualna? Udostępniłeś port mostka USB-UART w wirtualizatorze?
Czy po prostu ESPHome sobie pod windowsem zainstalowałeś? (moim zdaniem najwygodniej mieć go jako Addona do HA, no ale wiadomo - możliwych metod jest wiele)

W tym wypadku raczej będzie prościej użyć komputera, z którego oglądasz interfejs HA/ESPHome i tego kreatora ESPHome-web (który mi się tak radykalnie nie podoba).

W tej chwili siedzę w takim miejscu (że tak ujmę w czarnej d…), że prędkość internetu nie pozwala mi nawet na podpięcie się do HA w domu - skorzystaj z tego co przygotowałem w tamtym wątku o Kincony.

Ale jaki moduł? Inne popularne oprócz ESP-01 i ESP-01s (które są popularne w takich zastosowaniach ze względu na swoje wymiary i właściwie dostępny na GPIO tylko UART), ale inne popularne to np. Wemos D1 mini lub jego podróbki, czy NodeMCU 1.0 i jego klony.
Zrób fotę i wrzuć do posta to będzie najłatwiej poznać co masz.

Tu masz przykładowy spis obsługiwanych modułów opartych na MCU ESP8266

(oczywiście można użyć jakiegoś generic, nawet jeśli nie ma go na w/w liście, ale musisz umieć go obsługiwać)

Nie, HA jest na RASP.
ESP Home jest jako addon do HA.
Moduł ESP jest podpięty bezpośrednio do RASP, choć obsługę HA mam poprzez komputer z windows.

No to skąd ten com3? jeśli podepniesz mostek USB-UART do RPi to dostanie on jakiś adres typowy dla linuxa (coś w guście ttyUSB0).
(tak swoją drogą nawet na RPi można zainstalować HA na kilka radykalnie różnych sposobów, ale zakładam, że to HAOS generic dla RPi)

Tu masz przykład jak rozpoznać urządzenie USB pod linuxem

a generalnie to poszukaj frazy usb albo tty tam gdzie jest sprzęt w ustawieniach HA po kliknięciu w wyświetlanie całości sprzętu.

Swoją drogą w GUI ESPHome rozpoznane urządzenia podpięte lokalnie do USB (mostki UART) będą wyświetlone w odpowiednim miejscu, ale jak pisałem wcześniej - dzisiaj nie jestem w stanie ani podać konkretnych opisów prowadzących za rączkę, ani zrobić przykładowego screenshota, więc to Ty musisz się tym zająć.


A teraz stawiamy zagadnienie “na głowie” czy “do góry nogami”:

Wstępne flashowanie możesz zrobić kreatorem ESPHome-web, ale wtedy musisz sprzęt (ESP wraz z mostkiem USB-UART, nie wiem jaki masz moduł, więc piszę to dość ogólnie) podpiąć do tego kompa z windowsem (oczywiście sterowniki dla mostka mogą być potrzebne, nie wiem co masz, może np. CP2102 albo CH340 więc nie podam konkretów, ale nie każdy mostek ma wbudowane stery w windows).

No to skąd ten com3? jeśli podepniesz mostek USB-UART do RPi to dostanie on jakiś adres typowy dla linuxa (coś w guście ttyUSB0 ).

Ano stąd, że nie podpiąłem się do RASP poprzez lokalny adres, tylko przez serwer nabu Casa. Byłem więc w chmurze a nie na RASP.

To już za mną, widzę mój ESP.

Ale pytałem o port szeregowy, a nie o to którędy się połączyłeś z interfejsem webowym (GUI).