Zaprezentuję tutaj natynkowy termostat z LCD, czujnikiem zewnętrznym oraz bezprzewodowym sterowaniem w oparciu o WiFi. Pokazywany tu produkt jest zgodny z aplikacją Tuya i posiada funkcję programowania 5+2/6+1, która umożliwia ustawienie do 6 różnych ustawień temperatury na każdy dzień tygodnia oraz dodatkowe ustawienie na weekend.
W temacie uwzględnię również jego analizę komunikacji, co pozwoli zmienić jego firmware i wgrać OpenBeken, dzięki czemu będzie można go uwolnić od chmury i połączyć z Home Assistant.
Termostat kupiliśmy za 140 zł. Zacznijmy od zawartości zestawu.
W zestawie jest urządzenie, sonda oraz instrukcja.
Zdjęcia angielskojęzycznej instrukcji:
Raczej nie ma sensu tu przepisywać i przekładać instrukcji, więc od razu przejdziemy do prezentacji aplikacji po parowaniu.
Parowanie przebiega bez problemu - urządzenie jest oparte o BK7231, więc jest już wykrywane po Bluetooth:
Panel urządzenia jest dość złożony. Mamy tu przede wszystkim dwa tryby pracy:
- automatyczny (wg. programu)
- manualny (sami ustawiamy w danym momencie temperaturę)
Mamy też opcje takie jak np. child lock (blokada przed dziećmi), która pozwala zdeaktywować panel dotykowy urządzenia.
Jest też opcja antifreeze, która automatycznie uruchamia grzanie gdy temperatura jest zdecydowanie za niska.
W ustawieniach jest wybór programu oraz sondy - może być zewnętrzna lub wewnętrzna.
Kalibracja sondy jest też dostępna, a nawet jest opcja kontroli poziomu podświetlenia.
Samo tworzenie programu jest dość proste. Dobieramy okresy i temperatury.
Reszta opcji nie wyróżnia się niczym - tak jak zazwyczaj mamy możliwość np. udostępnienia urządzenia.
Teraz pora na ciekawszy fragment...
Wnętrze urządzenia
Urządzenie jest zbudowane tak jak typowy włącznik światła sterowany przez WiFi. Zdejmujemy przedni panel.
Już widać część elektroniki, ale tu jednak w środku jest dodatkowy plastikowy element. Trzeba więcej zdemontować.
Wygląda na to, że tu jednak nie ma LCD. Ekran jest oparty o diody LED. Sprzedawca podał informację nieprawdziwą.
Główne PCB jest oznaczone ME82H-WIFIMBLED-V1.3. Urządzenie jest zbudowane w oparciu o moduł WiFi WBR3, czyli układ od Realteka. Oprócz modułu WiFi mamy też dodatkowy mikrokontroler który zajmuje się cała logiką urządzenia oraz układ zegara czasu rzeczywistego DS1302Z wraz z kwarcowym rezonatorem zegarkowym oraz podtrzymaniem zasilania na czas utraty energii. Dzięki temu urządzenie może wznowić program nawet jak utraci całkowicie zasilanie a WiFi nie będzie dostępne by pobrać czas z Internetu usługą NTP.
Główny MCU to SOC SC92F8547P. Komunikuje się on z modułem WiFi przez protokół TuyaMCU:
Protokół TuyaMCU - komunikacja pomiędzy mikrokontrolerem a modułem WiFi
Oznacza to, że przyda się zaraz przechwycić pakiety na linii UART. Pozwoli to nam określić dpID (identyfikatory) zmiennych określających pracę termostatu.
Została jeszcze płytka z zasilaczem i przekaźnikami - ME86-DY-1.4.
Zasilacz w urządzeniu jest zrealizowany w oparciu o LNK606DG.
GMF2A jest chyba przetwornicą. Pewnie zasilacz daje 12V a coś musi jeszcze generować 5V dla drugiej płytki.
Obecność dużego przekaźnika na 12V (HF115F) potwierdza moje podejrzenia. Mamy tu osobno zasilacz 12V i osobno jakąś przetwornicę step down. Nie sądzę, by te 12V szło bezpośrednio na AMS1117-3.3V.
Płytka jest dość nieźle zbudowana. Na wejściu jest obecny warystor chroniący przed przepięciami, jest też kondensator przeciwzakłóceniowy.
Analiza komunikacji UART
W tej sekcji zakładam znajomość TuyaMCU. Opisywałem go tutaj:
Protokół TuyaMCU - komunikacja pomiędzy mikrokontrolerem a modułem WiFi
Do tego przyda się jeszcze moje narzędzie do jego analizy:
Analizator TuyaMCU - dekoder pakietów UART dla urządzeń Tuya - dpID detektor
Przechwytywania pakietów należy dokonać w bezpieczny sposób. Urządzenie może mieć na sobie potencjał sieciowy, więc trzeba je albo zasilić z bezpiecznego zasilacza (część tego typu urządzeń zadziała np. uruchomione z zasilaczem 24V DC), albo użyć izolatorów typu ADUM1201. W przeciwnym razie możemy zewrzeć potencjał sieciowy z urządzenia z naszym konwerterem USB na UART i uszkodzić komputer.
Oto ciekawsze z zebranych pakietów. Każdy z nich przedstawia inną akcję wykonywaną przez aplikacje.
Wyłączenie przez telefon:
Received by WiFi module:
55 AA 00 06 00 05 0101000100 0D
HEADER VER=00 SetDP LEN dpId=1 Bool V=0 CHK
Received by WiFi module:
55 AA 00 00 00 00 FF
HEADER VER=00 Heartbeat LEN CHK
Received by WiFi module:
55 AA 00 1C 00 08 01180B0A161C3907 C3
HEADER VER=00 Date LEN bOk=1 24/11/10 22:28:57 CHK
Received by WiFi module:
55 AA 00 20 00 02 0100 22
HEADER VER=00 Unk LEN 0100 CHK
Received by WiFi module:
55 AA 00 00 00 00 FF
HEADER VER=00 Heartbeat LEN CHK
Telefon wysyła zmianę stanu dpID 1 na 0, typ to boolean.
Włączenie:
Received by WiFi module:
55 AA 00 06 00 05 0101000101 0E
HEADER VER=00 SetDP LEN dpId=1 Bool V=1 CHK
Analogicznie, stan zmienia się na 1.
Wyłączenie child lock:
Received by WiFi module:
55 AA 00 06 00 05 2801000100 34
HEADER VER=00 SetDP LEN dpId=40 Bool V=0 CHK
Child lock to dpID 40, typ bool.
Ustawienie temperatury docelowej na 26.5:
Received by WiFi module:
55 AA 00 06 00 08 1002000400000109 2D
HEADER VER=00 SetDP LEN dpId=16 Val V=265 CHK
Received by WiFi module:
55 AA 00 00 00 00 FF
HEADER VER=00 Heartbeat LEN CHK
Received by WiFi module:
55 AA 00 1C 00 08 01180B0A161E1B07 A7
HEADER VER=00 Date LEN bOk=1 24/11/10 22:30:27 CHK
Received by WiFi module:
55 AA 00 20 00 02 0100 22
HEADER VER=00 Unk LEN 0100 CHK
dpID 16 to temperatura, wysyłana jest jako typ całkowity, przemnożona przez 10.
Zmiana czujnika na zewnętrzny:
Received by WiFi module:
55 AA 00 00 00 00 FF
HEADER VER=00 Heartbeat LEN CHK
Received by WiFi module:
55 AA 00 1C 00 08 01180B0A161E3907 C5
HEADER VER=00 Date LEN bOk=1 24/11/10 22:30:57 CHK
Received by WiFi module:
55 AA 00 20 00 02 0100 22
HEADER VER=00 Unk LEN 0100 CHK
Received by WiFi module:
55 AA 00 06 00 05 2B04000101 3B
HEADER VER=00 SetDP LEN dpId=43 Enum V=1 CHK
dpId 43 to enumeracja, wartość 1 oznacza zewnętrzny.
Zmiana dolnego limitu temperatury na 12:
Received by WiFi module:
55 AA 00 06 00 08 1A02000400000078 A5
HEADER VER=00 SetDP LEN dpId=26 Val V=120 CHK
Analogicznie tak jak z docelową temperaturą, wartość przemnożona przez 10.
Górny limit na 55:
Received by WiFi module:
55 AA 00 06 00 08 1302000400000226 4E
HEADER VER=00 SetDP LEN dpId=19 Val V=550 CHK
Zmiana difference start na 1:
Received by WiFi module:
55 AA 00 06 00 08 6A0200040000000A 87
HEADER VER=00 SetDP LEN dpId=106 Val V=10 CHK
Kalibracja na -7:
Received by WiFi module:
55 AA 00 06 00 08 1B020004FFFFFFF9 24
HEADER VER=00 SetDP LEN dpId=27 Val V=-7 CHK
To ciekawe, kalibracja nie pozwala na części dziesiętne.
Podświetlenie na 50%:
\Received by WiFi module:
55 AA 00 1C 00 08 01180B0A16263707 CB
HEADER VER=00 Date LEN bOk=1 24/11/10 22:38:55 CHK
Received by WiFi module:
55 AA 00 20 00 02 0100 22
HEADER VER=00 Unk LEN 0100 CHK
Received by WiFi module:
55 AA 00 06 00 05 3404000102 45
HEADER VER=00 SetDP LEN dpId=52 Enum V=2 CHK
Ciekawe, nieznany typ pakietu 0x20?
Zmiana working day programu:
\
Received by WiFi module:
55 AA 00 1C 00 08 01180B0A16271907 AE
HEADER VER=00 Date LEN bOk=1 24/11/10 22:39:25 CHK
Received by WiFi module:
55 AA 00 20 00 02 0100 22
HEADER VER=00 Unk LEN 0100 CHK
Received by WiFi module:
55 AA 00 00 00 00 FF
HEADER VER=00 Heartbeat LEN CHK
Received by WiFi module:
55 AA 00 06 00 1C 6C00001806001E0800100B1E140C1E10110014160010080014170010 E6
HEADER VER=00 SetDP LEN dpId=108 Raw V=06 00 1E 08 00 10 0B 1E 14 0C 1E 10 11 00 14 16 00 10 08 00 14 17 00 10 CHK
Zmiana trybu na auto:
Received by WiFi module:
55 AA 00 06 00 05 0204000100 11
HEADER VER=00 SetDP LEN dpId=2 Enum V=0 CHK
Dalsze kroki
Mamy już zebrane informacje potrzebne do zmiany firmware. Teraz trzeba wykonać dwa kolejne kroki, to pierwszy to wgranie nowego oprogramowania przez UART. Instrukcja poniżej:
WBR2, WBR3, WBRU, W701-VA2-CG pinout, karta katalogowa, flashowanie dla Home Assistant
Drugi to konfiguracja TuyaMCU:
Przewodnik flashowania, instalacji i konfiguracji TuyaMCU - skonfiguruj dpID dla Home Assistant
Zajmę się tym w osobnej części.
Podsumowanie
Pokazany tu produkt jest dość zaawansowany, pozwala na ręczne lub automatyczne sterowanie ogrzewaniem oraz daje też dodatkowe możliwości, takie jak kalibracja, blokada przed dziećmi czy tam regulacja poziomu podświetlenia. Wyświetlacz LED wydaje mi się dość czytelny, na funkcje dotykowe też nie narzekam.
Wewnętrzna budowa produktu jest nieco lepsza niż zazwyczaj. Tym razem producent nie zapomniał o warystorze, kondensator przeciwzakłóceniowy też jest obecny. Logika jest oparta o TuyaMCU, co osobno już omawiałem na forum.
Użyty w środku moduł WiFi opiera się o układ Realtek, którego już wspiera OpenBeken. Powinno dać się łatwo zmienić firmware, co pokażę w kolejnej części.
Czy korzystacie z tego typu termostatów? Zapraszam do komentarzy.
Fajne? Ranking DIY Pomogłem? Kup mi kawę.