Przedstawię tu dogłębną analizę oraz inżynierię wsteczną bateryjnego czujnika temperatury/wilgotności Tuya zrealizowanego w oparciu o protokół TuyaMCU, czyli mającego na pokładzie osobno mikrokontroler (zawsze włączony, ale korzystający z trybu snu) oraz moduł WiFi (jego zasilanie uruchamia MCU gdy trzeba zaraportować stan). Pokażę tutaj protokół tego produktu, wraz z uwzględnieniem ról zmiennych (dpID TuyaMCU), jego schemat, oraz na koniec zmienię mu firmware w celu uwolnienia go od chmury i sparowania z Home Assistant.
Temat powstał we współpracy z @DeDaMrAz. Nad czujnikiem pracowaliśmy zdalnie, ja kierowałem działaniami, a kolega wykonał przechwytywanie pakietów, analizę PCB oraz rysowanie jej schematu, jak również końcowe testy z Home Assistant.
Zakup czujnika
Jest to jeden z najpopularniejszych tego typu czujników w sieci. Dostępny jest w wersji na Zigbee i na WiFi, tutaj omawiamy wersję na WiFi. Można go kupić za kilkadziesiąt złotych. Poniżej zrzut ekranu z przykładowej aukcji:
Aplikacji Tuya i parowania już nawet nie omawiam, było to opisywane wielokrotnie. Tu skupimy się na szczegółach technicznych i zmianie firmware.
Instrukcja parowania z aplikacją SmartLife (jeśli chcemy użyć czujnika z otwartym oprogramowaniem to jest dla nas zbędna):
Wnętrze czujnika
Zaglądamy do środka. Co widzimy jako pierwsze?
To jest urządzenie oparte o TuyaMCU. Mamy tu osobno moduł WiFi (CB3S ,czyli BK7231N) i mikrokontroler.
TuyaMCU to jest protokół oparty na UART, poprzez który ten MCU komunikuje się z modułem WiFi.
Wyprowadzenia CB3S są znane:
| Pin number | Symbol | I/O type | Function | 1 | RST | I | Low-level reset, high level active (the pin has been pulled high internally), correspond to CEN of the IC | 2 | ADC3 | AI | ADC pin, which corresponds to P23 of the IC | 3 | CEN | I | Enabling pin, which is pulled high internally to be compatible with other modules | 4 | P14 | I/O | A common GPIO interface, which corresponds to P14 of the IC | 5 | P26 | I/O | GPIOP_26, which corresponds to P26 of the IC, PWM 5 | 6 | P24 | I/O | GPIOP_24, which corresponds to P24 of the IC, PWM 4 | 7 | P6 | I/O | GPIOP_6, which corresponds to P6 of the IC, PWM 0 | 8 | VCC | P | Power supply pin (3.3V) | 9 | GND | P | Power supply reference ground | 10 | P9 | I/O | GPIOP_9, which corresponds to P9 of the IC, PWM 3 | 11 | TXD2 | I/O | UART2_TXD (used to display the module internal information), which corresponds to P0 of the IC | 12 | CSN | I/O | Production test control pin. If it is used as a common I/O pin, it must be connected to the VCC externally. Do not connect it to the ground before the module is powered on. | 13 | P8 | I/O | GPIOP_8, which corresponds to P8 of the IC, PWM 2 | 14 | P7 | I/O | GPIOP_7, which corresponds to P7 of the IC, PWM 1 | 15 | RXD1 | I/O | UART1_RXD (user serial interface), which corresponds to P10 of the IC. Do not connect it to the VCC. By default, the MCU serial port should be in low-level or high-impedance state. | 16 | TXD1 | I/O | UART1_TXD (user serial interface), which corresponds to P11 of the IC. Do not connect it to the VCC. By default, the MCU serial port should be in low-level or high-impedance state. | 17 | ADC3 | AI | (Not recommended. If needed, please use Pin 2) ADC port, which corresponds to P23 of the IC. Programmed SPI | 18 | P22 | I/O | (Not recommended ) GPIOP_22, which corresponds to P22 of the IC. Programmed SPI | 19 | CSN | I/O | The pull-up resistor is needed during usage of customers. Do not connect it to the ground before the module is powered on. Correspond to P21 of the IC. | 20 | P20 | I/O | (Not recommended. ) GPIOP_20, which corresponds to P20 of the IC. Programmed SPI | 21 | NC | - | - | 22 | NC | - | - |
MCU nie został zidentyfikowany, ale tak wygląda ogólnie ich podłączenie:
Tyle, że w przypadku TuyaMCU w urządzeniach bateryjnych, dodatkowo MCU kontroluje zasilanie modułu WiFi.
Oto schemat (narysowany przez kolegę):
ESP12 na schemacie jest poglądowo, w rzeczywistości jest to CB3S. Zasilanie CB3S kontroluje MCU poprzez tranzystor MOSFET. Moduł WiFi komunikuje się z MCU poprzez UART, poprzez protokół TuyaMCU. Sam MCU odczytuje pomiary z SHT30 poprzez I2C (widać nawet rezystory pull up).
Co zatem będzie trzeba było zrobić by zmienić firmware modułu WiFi, tj. uwolnić urządzenie od chmury producenta?
- trzeba odpowiednio obsłużyć komunikację z MCU (protokół TuyaMCU)
- trzeba dać sobie radę z tym, że MCU będzie nam wyłączać moduł WiFi w trakcie pracy...
Pobór prądu w trybie snu
Jeszcze przy okazji można zrobić mały pomiar - ile pobiera samo MCU przy wyłączonym module WiFi?
5µA . Polecam skontrastować ten wynik z moim pomiarem snu samego modułu WiFI z BK7231 (w trybie głębokiego snu) z tego tematu:
https://www.elektroda.pl/rtvforum/topic3960149.html
Mi wyszło tam 6µA. Czyli 1µA różnicy, zakładając, że pomiary są na tyle dokładne by to oceniać. Tylko trzeba pamiętać, tu śpi MCU a moduł WiFi ma odłączone VDD całkiem, a w zalinkowanym temacie jest mowa o śnie samego modułu WiFi (którego może wybudzić GPIO).
Protokół TuyaMCU
To urządzenie korzysta z protokołu TuyaMCU przeznaczonego dla urządzeń zasilanych bateryjnie. Dokumentacja znajduje się tutaj:
https://developer.tuya.com/en/docs/iot/tuyacl...niversalserialaccessprotocol?id=K95afs9h4tjjh
Podstawę TuyaMCU też omawiałem w tym temacie:
https://www.elektroda.pl/rtvforum/topic3880546.html
Pokrewny zasilany bateryjnie czujnik otwarcia drzwi na TuyaMCU omawiałem tutaj (tyle, że jego protokół był nieco prostszy, nie było dpCache):
https://www.elektroda.pl/rtvforum/topic3914412.html
Do analizy TuyaMCU można wykorzystać mój analizer:
https://www.elektroda.com/rtvforum/topic3970199.html#20528459
Oto wstępnie przetworzony zrzut UART z mojego programu:
//S 4/30/2023 8:49:32 PM WiFi send:
55AA0001000000
//R 4/30/2023 8:49:32 PM WiFi received:
55AA000100247B2270223A226279757376756D656D65356969636164222C2276223A22312E302E30227D20
//S 4/30/2023 8:49:33 PM WiFi send:
55AA000200010305
//R 4/30/2023 8:49:33 PM WiFi received:
55AA0002000001
//S 4/30/2023 8:51:50 PM WiFi send:
55AA000200010406
//R 4/30/2023 8:51:56 PM WiFi received:
55AA0002000001
//R 4/30/2023 8:51:56 PM WiFi received:
55AA001000010010
//S 4/30/2023 6:18:06 PM WiFi sent:
55AA00100002010012
//R 4/30/2023 8:51:58 PM WiFi received:
55AA0005000801020004000000FC0F
//R 4/30/2023 8:51:58 PM WiFi received:
55AA0005000802020004000000273B
//R 4/30/2023 8:51:58 PM WiFi received:
55AA00050005030400010112
//R 4/30/2023 8:51:58 PM WiFi received:
55AA00050005090400010017
//R 4/30/2023 8:51:58 PM WiFi received:
55AA000500080A0200040000021C3A
//R 4/30/2023 8:51:58 PM WiFi received:
55AA000500080B020004FFFFFF88A2
//R 4/30/2023 8:51:58 PM WiFi received:
55AA000500080C0200040000005A78
//R 4/30/2023 8:51:58 PM WiFi received:
55AA000500080D0200040000000A29
//R 4/30/2023 8:51:58 PM WiFi received:
55AA000500050E040001021E
//R 4/30/2023 8:51:59 PM WiFi received:
55AA000500050F040001021F
//R 4/30/2023 8:51:59 PM WiFi received:
55AA00050008110200040000000124
//R 4/30/2023 8:51:59 PM WiFi received:
55AA00050008120200040000000125
//R 4/30/2023 8:51:59 PM WiFi received:
55AA0005000813020004000000052A
//R 4/30/2023 8:51:59 PM WiFi received:
55AA0005000814020004000000082E
//R 4/30/2023 8:51:59 PM WiFi received:
55AA00050005150100010020
//R 4/30/2023 8:51:59 PM WiFi received:
55AA0005000801020004000000FD10
//R 4/30/2023 8:51:59 PM WiFi received:
55AA0005000802020004000000273B
//S 4/30/2023 8:52:13 PM WiFi send:
55AA000500010005
//S 4/30/2023 8:52:15 PM WiFi send:
55AA000500010005
//S 4/30/2023 8:52:17 PM WiFi send:
55AA000500010005
//S 4/30/2023 8:52:19 PM WiFi send:
55AA000500010005
//S 4/30/2023 8:52:21 PM WiFi send:
55AA000500010005
//S 4/30/2023 8:52:23 PM WiFi send:
55AA000500010005
//S 4/30/2023 8:52:25 PM WiFi send:
55AA000500010005
//S 4/30/2023 8:52:27 PM WiFi send:
55AA000500010005
//S 4/30/2023 8:52:29 PM WiFi send:
55AA000500010005
Poniżej to samo, ale z komentarzami z mojego analizatora:
Sent by WiFi module:
55 AA 00 01 00 00 00
HEADER VER=00 Product LEN CHK
Received by WiFi module:
55 AA 00 01 00 24 7B2270223A226279757376756D656D65356969636164222C2276223A22312E302E30227D 20
HEADER VER=00 Product LEN {"p":"byusvumeme5iicad","v":"1.0.0"} CHK
Sent by WiFi module:
55 AA 00 02 00 01 03 05
HEADER VER=00 McuConf LEN 03 CHK
Received by WiFi module:
55 AA 00 02 00 00 01
HEADER VER=00 McuConf LEN CHK
Sent by WiFi module:
55 AA 00 02 00 01 04 06
HEADER VER=00 McuConf LEN 04 CHK
Received by WiFi module:
55 AA 00 02 00 00 01
HEADER VER=00 McuConf LEN CHK
Received by WiFi module:
55 AA 00 10 00 01 00 10
HEADER VER=00 ObtainDPcache LEN CHK
Sent by WiFi module:
55 AA 00 10 00 02 0100 12
HEADER VER=00 ObtainDPcache LEN CHK
Received by WiFi module:
55 AA 00 05 00 08 01020004000000FC 0F
HEADER VER=00 Unk LEN fnId=1 Val V=252 CHK
Received by WiFi module:
55 AA 00 05 00 08 0202000400000027 3B
HEADER VER=00 Unk LEN fnId=2 Val V=39 CHK
Received by WiFi module:
55 AA 00 05 00 05 0304000101 12
HEADER VER=00 Unk LEN fnId=3 Enum V=1 CHK
Received by WiFi module:
55 AA 00 05 00 05 0904000100 17
HEADER VER=00 Unk LEN fnId=9 Enum V=0 CHK
Received by WiFi module:
55 AA 00 05 00 08 0A0200040000021C 3A
HEADER VER=00 Unk LEN fnId=10 Val V=540 CHK
Received by WiFi module:
55 AA 00 05 00 08 0B020004FFFFFF88 A2
HEADER VER=00 Unk LEN fnId=11 Val V=-120 CHK
Received by WiFi module:
55 AA 00 05 00 08 0C0200040000005A 78
HEADER VER=00 Unk LEN fnId=12 Val V=90 CHK
Received by WiFi module:
55 AA 00 05 00 08 0D0200040000000A 29
HEADER VER=00 Unk LEN fnId=13 Val V=10 CHK
Received by WiFi module:
55 AA 00 05 00 05 0E04000102 1E
HEADER VER=00 Unk LEN fnId=14 Enum V=2 CHK
Received by WiFi module:
55 AA 00 05 00 05 0F04000102 1F
HEADER VER=00 Unk LEN fnId=15 Enum V=2 CHK
Received by WiFi module:
55 AA 00 05 00 08 1102000400000001 24
HEADER VER=00 Unk LEN fnId=17 Val V=1 CHK
Received by WiFi module:
55 AA 00 05 00 08 1202000400000001 25
HEADER VER=00 Unk LEN fnId=18 Val V=1 CHK
Received by WiFi module:
55 AA 00 05 00 08 1302000400000005 2A
HEADER VER=00 Unk LEN fnId=19 Val V=5 CHK
Received by WiFi module:
55 AA 00 05 00 08 1402000400000008 2E
HEADER VER=00 Unk LEN fnId=20 Val V=8 CHK
Received by WiFi module:
55 AA 00 05 00 05 1501000100 20
HEADER VER=00 Unk LEN fnId=21 Bool V=0 CHK
Received by WiFi module:
55 AA 00 05 00 08 01020004000000FD 10
HEADER VER=00 Unk LEN fnId=1 Val V=253 CHK
Received by WiFi module:
55 AA 00 05 00 08 0202000400000027 3B
HEADER VER=00 Unk LEN fnId=2 Val V=39 CHK
Sent by WiFi module:
55 AA 00 05 00 01 00 05
HEADER VER=00 Unk LEN CHK
Sent by WiFi module:
55 AA 00 05 00 01 00 05
HEADER VER=00 Unk LEN CHK
Sent by WiFi module:
55 AA 00 05 00 01 00 05
HEADER VER=00 Unk LEN CHK
Sent by WiFi module:
55 AA 00 05 00 01 00 05
HEADER VER=00 Unk LEN CHK
Sent by WiFi module:
55 AA 00 05 00 01 00 05
HEADER VER=00 Unk LEN CHK
Sent by WiFi module:
55 AA 00 05 00 01 00 05
HEADER VER=00 Unk LEN CHK
Sent by WiFi module:
55 AA 00 05 00 01 00 05
HEADER VER=00 Unk LEN CHK
Sent by WiFi module:
55 AA 00 05 00 01 00 05
HEADER VER=00 Unk LEN CHK
Sent by WiFi module:
55 AA 00 05 00 01 00 05
HEADER VER=00 Unk LEN CHK
A teraz analiza krok po kroku.
1. MCU załącza zasilanie modułu WiFi. Moduł WiFi wysyła do do MCU prośbę o identyfikacje (pakiet 0x01 - Query product information), a ono odpowiada i podaje {"p":"byusvumeme5iicad","v":"1.0.0"}:
2. Teraz WiFi kolejno raportuje stan połączenia (typ 0x02 - Report the network status of the device), najpierw stan 0x03 (WiFi connected), MCU potwierdza odbiór, a potem stan 0x04 (cloud connected - u nas w OBK jako MQTT):
Tylko te stany WiFi 0x03 i 0x04 się przy normalnej pracy pojawiają. Poniżej umieszczam wszystkie możliwe stany:
| Status | Opis | Status value | Status 1 | smartconfig tryb konfiguracji | 0x00 | Status 2 | AP configuration status | 0x01 | Status 3 | Wi-Fi zostało skonfigurowane, ale nie jest podłączone do routera | 0x02 | Status 4 | Wi-Fi jest skonfigurowane i podłączone do routera | 0x03 | Status 5 | Wi-Fi jest skonfigurowane, podłączone do routera i do chmury | 0x04 |
3. Następnie występuje wymiana danych ObtainDPCache która istnieje tylko w urządzeniach z konfiguracją pamiętaną na MCU, nie posiada tego np. sensor otwarcia/zamknięcia drzwi:
Na powyższym zrzucie ekranu nic nie zostało przesłane, ale jeśli byśmy w ustawieniach zmienili np. częstotliwość raportowania, to ten pakiet by zawierał właśnie o tym informacje.
ObtainDPCache działa w ten sposób, że gdy chcemy np. ustawić czas pomiędzy pomiarami, to moduł WiFi pobiera go z chmury gdy go MCU załączy a potem czeka aż MCU odpyta go właśnie o te ObtainDPCache. MCU pierwsze pyta o ObtainDPCache a moduł WiFi odpowiada listą zmiennych dpID/typ/wartość. MCU to odbiera i zapisuje. Stąd MCU wie, jak często się wybudzać i podawać dalej pomiar.
4. Następnie TuyaMCU raportuje osobno wartości zmiennych (pakiet typ 0x05 - Report the real-time status):
5. Potem, po wysłaniu tych zmiennych do chmury, moduł wysyła potwierdzenia tyle razy, ile otrzymał zmiennych:
Metodą zgadywania i testów z aplikacja Tuya można wyróżnić następujące zmienne (dpID):
| fnID1 | temperatura jako liczba całkowita przemnożona przez 10 - czyli 23.1 jako 231 | fnID2 | % wilgotność | fnID3 | poziom baterii ( 0=Low, 1=Medium, 2=High) | fnID9 | wybór jednostki, C lub F ( 0 = C i 1 = F) | fnID10 | ustawienie minimalnej temperatury | fnID11 | ustawienie maksymalnej temperatury | fnID12 | ustawienie maksymalnej wilgotności | fnID13 | ustawienie minimalnej wilgotności | fnID17 | częstotliwość pomiaru temperatury | fnID18 | częstotliwość pomiaru wilgotności | fnID19 | dokładność temperatury (czułość) razy 10, 5 oznacza 0.5C | fnID20 | dokładność wilgotności w % | fnID21 | stan przełącznika (1 lub 0, rola nieznana) |
Podsumujmy zatem, co się dzieje w tej komunikacji, w skrócie:
- MCU włącza moduł WiFI poprzez załączenie jego tranzystora MOSFET na zasilaniu
- moduł WiFi zagaduje do MCU, MCU się identyfikuje
- moduł WiFi informuje o stanie podłączenia, MCU potwierdza
- MCU pyta o ewentualne ustawienia typu czas raportowania, moduł WiFi je wysyła jeśli są
- MCU wysyła nowe pomiary itp, moduł WiFi potwierdza
- MCU zasypia po ostatnim potwierdzeniu i odłącza zasilanie modułu WiFi
Jedyną nowością tutaj względem mojego tematu o sensorze stanu drzwi jest pakiet 0x10, tzw. Obtain DP cache command, czyli pobranie ustawień z modułu WiFi. Oto dwa przykłady jego użycia. Tak wygląda transakcja, gdy moduł WiFi nic nie ustawia:
Tak wygląda ta sama transakcja, gdy w apce zmienimy częstość raportowania na 1 minutę (dla temperatury i wilgotności):
Finalna konfiguracja OpenBeken
OpenBeken można wgrać na ten czujnik bardzo prosto. Należy wykonać kroki:
1. tymczasowo rozłączamy UART między MCU a modułem WiFi, np. odlutowując te rezystory ze schematu (bądź przecinając ścieżki), gdyż ten sam port UART służy do wgrania softu. Sztucznie zasilamy moduł WiFi z naszego 3.3V.
2. wgrywamy OBK wg:
https://github.com/openshwprojects/BK7231GUIFlashTool
3. Konfigurujemy OpenBeken. Konfigurujemy nasze WiFi, nazwy urządzenia, MQTT, oraz również umieszczamy skrypt autoexec.bat w Web App -> LittleFS OBK:
startDriver TuyaMCU
startDriver tmSensor
// may be needed, depends on device, some also use 9600
tuyaMCU_setBaudRate 115200
// dpID 1 is tempererature div 10
setChannelType 1 temperature_div10
linkTuyaMCUOutputToChannel 1 val 1
// dpID 2 is % humidity
setChannelType 2 Humidity
linkTuyaMCUOutputToChannel 2 val 2
// dpID 3 is battery state - low(0), mid(1) and high(2)
linkTuyaMCUOutputToChannel 3 enum 3
setChannelType 3 ReadOnlyLowMidHigh
setChannelLabel 3 Battery
//
// setup dpCache - temperature interval
//
// Show textfield for that
setChannelType 5 TextField
// setup display name
setChannelLabel 5 Temperature Interval
// Make value persistant (stored between reboots),
// start value -1 means "remember last"
SetStartValue 5 -1
// set default value if not set
if $CH5==0 then setChannel 5 1
// link dpID 17 to channel 5, the type is val, extra '1' means that its dpCache variable
linkTuyaMCUOutputToChannel 17 val 5 1
setChannelType 6 TextField
setChannelLabel 6 Humidity Interval
SetStartValue 6 -1
if $CH6==0 then setChannel 6 1
linkTuyaMCUOutputToChannel 18 val 6 1
Powyższy autoexec.bat oskryptowuje obsługę dpID z TuyaMCU. Mapuje dpID na kanały OBK. Ustawia typy tych kanałów, dzięki temu Hass Discovery wie co ten czujnik oferuje. Dodatkowo wyświetla pola oraz wartości dla odpowiednich kanałów.
Dokumentacja OBK:
https://github.com/openshwprojects/OpenBK7231T_App/blob/main/docs/README.md
Tak wygląda wtedy panel OBK:
4. Wykonujemy również wtedy parowanie z HA.
W ostatniej wersji OBK wspiera Home Assistant Discovery nawet dla oskryptowanych urządzeń. Wystarczy z Opcji wybrać Discovery i HA sam zobaczy urządzenie:
5. Ostatecznie, gdy wszystko jest gotowe, odłączamy programator, odłączamy sztucznie podpięte 3.3V, rekonstruujemy ścieżki UART i czujnik powinien ruszyć i zacząć raportować dane do HA.
Uwaga: OBK wspiera ustawianie czasu raportowania poprzez widoczne pola na panelu. W tym przypadku dpID okresu raportowania (17 i 18) zostały zmapowane na kanały 5 i 6. Wystarczy te kanały ustawić np. na 60, a moduł będzie się budzić i raportować co 60 minut. Można ustawić je na 1 - będzie raport co minutę. Itd.
Tak wygląda przykładowy końcowy efekt w HA:
Krótki test budzenia się i raportowania
Jeszcze warto sprawdzić ile trwa cały cykl raportu. Na ten moment wychodzi 11 sekund, chociaż statyczne IP pewnie może to usprawnić, jak również implementacja systemu będzie ulepszana.
mqtt_pass hass_pass_secret
mqtt_clientID temp_test
mqtt_host 192.168.0.124:1883
Info:MAIN:Time 6, idle 114159/s, free 71192, MQTT 0(1), bWifi 1, secondsWithNoPing -1, socks 2/38
Info:MAIN:Boot complete time reached (5 seconds)
Info:CFG:####### Set Boot Complete #######
Info:TuyaMCU:TUYAMCU received: 55 AA 00 02 00 00 01
Info:TuyaMCU:TuyaMCU_ProcessIncoming[ver=0]: processing command 2 (MCUconf) with 7 bytes
Info:TuyaMCU:TuyaMCU_ProcessIncoming: TUYA_CMD_MCU_CONF, TODO!
Info:MAIN:Time 7, idle 181106/s, free 71232, MQTT 0(1), bWifi 1, secondsWithNoPing -1, socks 2/38
Info:MQTT:mqtt_connection_cb: Successfully connected
Info:MQTT:mqtt_subscribed to temp_test/+/set
Info:MQTT:mqtt_subscribed to temp_test/+/set
Info:MQTT:mqtt_subscribed to cmnd/temp_test/+
Info:MQTT:mqtt_subscribed to cmnd/temp_test/+
Info:MQTT:mqtt_subscribed to temp_test/+/get
Info:MQTT:Publishing val temp_test to temp_test/host retain=0
Info:MAIN:Time 8, idle 183495/s, free 71232, MQTT 1(1), bWifi 1, secondsWithNoPing -1, socks 2/38
Info:MQTT:Publishing val Build on May 1 2023 21:06:42 version 1.17.88 to temp_test/build retain=0
Info:MAIN:Time 9, idle 190408/s, free 71232, MQTT 1(1), bWifi 1, secondsWithNoPing -1, socks 2/38
Info:MQTT:Publishing val 1c:90:ff:2f:c0:f8 to temp_test/mac retain=0
Info:TuyaMCU:TUYAMCU received: 55 AA 00 02 00 00 01
Info:TuyaMCU:TuyaMCU_ProcessIncoming[ver=0]: processing command 2 (MCUconf) with 7 bytes
Info:TuyaMCU:TuyaMCU_ProcessIncoming: TUYA_CMD_MCU_CONF, TODO!
Info:TuyaMCU:TUYAMCU received: 55 AA 00 10 00 01 00 10
Info:TuyaMCU:TuyaMCU_ProcessIncoming[ver=0]: processing command 16 (Unknown) with 8 bytes
Info:TuyaMCU:TuyaMCU_ProcessIncoming: unhandled type 16
Info:MAIN:Time 10, idle 192374/s, free 71232, MQTT 1(1), bWifi 1, secondsWithNoPing -1, socks 2/38
Info:GEN:dhcp=0 ip=192.168.0.100 gate=192.168.0.1 mask=255.255.255.0 mac=1c:90:ff:2f:c0:f8
Info:GEN:sta: 1, softap: 0, b/g/n
Info:GEN:sta:rssi=-46,ssid=5G_FULL_POWER,bssid=ac:d5:64:2f:7f:f5 ,channel=6,cipher_type:CCMP
Info:MQTT:Publishing val 2 to temp_test/sockets retain=0
Info:TuyaMCU:TUYAMCU received: 55 AA 00 05 00 08 01 02 00 04 00 00 00 E3 F6
Info:TuyaMCU:TuyaMCU_ProcessIncoming[ver=0]: processing command 5 (WiFiSelect) with 15 bytes
Info:TuyaMCU:TuyaMCU_V0_ParseRealTimeWithRecordStorage: processing dpId 1, dataType 2-DP_TYPE_VALUE and 4 data bytes
Info:TuyaMCU:TuyaMCU_V0_ParseRealTimeWithRecordStorage: raw data 4 int: 227
Info:GEN:CHANNEL_Set channel 1 has changed to 227 (flags 0)
Info:MQTT:Channel has changed! Publishing 227 to channel 1
Info:MQTT:Publishing val 227 to temp_test/1/get retain=0
Info:TuyaMCU:TUYAMCU received: 55 AA 00 05 00 08 02 02 00 04 00 00 00 29 3D
Info:TuyaMCU:TuyaMCU_ProcessIncoming[ver=0]: processing command 5 (WiFiSelect) with 15 bytes
Info:TuyaMCU:TuyaMCU_V0_ParseRealTimeWithRecordStorage: processing dpId 2, dataType 2-DP_TYPE_VALUE and 4 data bytes
Info:TuyaMCU:TuyaMCU_V0_ParseRealTimeWithRecordStorage: raw data 4 int: 41
Info:GEN:CHANNEL_Set channel 2 has changed to 41 (flags 0)
Info:MQTT:Channel has changed! Publishing 41 to channel 2
Info:MQTT:MQTT client in mqtt_incoming_publish_cb topic temp_test/1/get
Info:MQTT:Publishing val 41 to temp_test/2/get retain=0
Info:MAIN:Time 11, idle 205603/s, free 71232, MQTT 1(1), bWifi 1, secondsWithNoPing -1, socks 2/38
Info:MQTT:MQTT client in mqtt_incoming_publish_cb topic temp_test/2/get
Info:MAIN:Main_Init_Before_Delay
Info:CFG:####### Boot Count 767 #######
Warn:CFG:CFG_InitAndLoad: Correct config has been loaded with 22 changes count.
Error:CMD:no file early.bat err -2
Info:GEN:PIN_SetupPins pins have been set up.
Info:MAIN:Main_Init_Before_Delay done
Info:MAIN:Main_Init_Delay
Info:MAIN:Main_Init_Delay done
Info:MAIN:Main_Init_After_Delay
Info:MAIN:ssid:5G_FULL_POWER key:MyP@ssw0rd
Info:MAIN:Using SSID [5G_FULL_POWER]
Info:MAIN:Using Pass [MyP@ssw0rd]
Info:MQTT:MQTT_RegisterCallback called for bT temp_test/ subT temp_test/+/set
Info:MQTT:MQTT_RegisterCallback called for bT temp_test/ subT temp_test/+/set
Info:MQTT:MQTT_RegisterCallback called for bT cmnd/temp_test/ subT cmnd/temp_test/+
Info:MQTT:MQTT_RegisterCallback called for bT cmnd/temp_test/ subT cmnd/temp_test/+
Info:MQTT:MQTT_RegisterCallback called for bT temp_test/ subT temp_test/+/get
Info:CMD:CMD_StartScript: started autoexec.bat at the beginning
Info:MAIN:Main_Init_After_Delay done
Info:MAIN:Started TuyaMCU.
Info:MAIN:Started tmSensor.
Info:GEN:Channel 1 type changed to temperature_div10
Info:GEN:Channel 2 type changed to Humidity
Info:GEN:Channel 3 type changed to ReadOnly
Info:MAIN:Time 1, idle 283411/s, free 70904, MQTT 0(0), bWifi 0, secondsWithNoPing -1, socks 2/38
Info:TuyaMCU:TUYAMCU received: 55 AA 00 01 00 24 7B 22 70 22 3A 22 62 79 75 73 76 75 6D 65 6D 65 35 69 69 63 61 64 22 2C 22 76 22 3A 22 31 2E 30 2E 30 22 7D 20
Info:TuyaMCU:TuyaMCU_ProcessIncoming[ver=0]: processing command 1 (QueryProductInformation) with 43 bytes
Info:TuyaMCU:TuyaMCU_ParseQueryProductInformation: received {"p":"byusvumeme5iicad","v":"1.0.0"}
Info:MAIN:Time 2, idle 186205/s, free 70840, MQTT 0(0), bWifi 0, secondsWithNoPing -1, socks 2/38
Info:MAIN:Time 3, idle 67724/s, free 71024, MQTT 0(0), bWifi 0, secondsWithNoPing -1, socks 2/38
Info:MAIN:Time 4, idle 0/s, free 71024, MQTT 0(0), bWifi 0, secondsWithNoPing -1, socks 2/38
Info:MAIN:Time 5, idle 0/s, free 71024, MQTT 0(0), bWifi 0, secondsWithNoPing -1, socks 2/38
Info:MAIN:Main_OnWiFiStatusChange - WIFI_STA_CONNECTING - 1
Info:MAIN:Main_OnWiFiStatusChange - WIFI_STA_CONNECTED - 4
Info:MQTT:mqtt_userName homeassistant
mqtt_pass hass_pass_secret
mqtt_clientID temp_test
mqtt_host 192.168.0.124:1883
Info:MAIN:Time 6, idle 109039/s, free 71208, MQTT 0(1), bWifi 1, secondsWithNoPing -1, socks 2/38
Info:MAIN:Boot complete time reached (5 seconds)
Info:CFG:####### Set Boot Complete #######
Info:MQTT:mqtt_connection_cb: Successfully connected
Info:MQTT:mqtt_subscribed to temp_test/+/set
Info:MQTT:mqtt_subscribed to temp_test/+/set
Info:MQTT:mqtt_subscribed to cmnd/temp_test/+
Info:MQTT:mqtt_subscribed to cmnd/temp_test/+
Info:MQTT:mqtt_subscribed to temp_test/+/get
Info:MQTT:Publishing val temp_test to temp_test/host retain=0
Info:TuyaMCU:TUYAMCU received: 55 AA 00 02 00 00 01
Info:TuyaMCU:TuyaMCU_ProcessIncoming[ver=0]: processing command 2 (MCUconf) with 7 bytes
Info:TuyaMCU:TuyaMCU_ProcessIncoming: TUYA_CMD_MCU_CONF, TODO!
Info:MAIN:Time 7, idle 171518/s, free 71040, MQTT 1(1), bWifi 1, secondsWithNoPing -1, socks 2/38
Info:MQTT:Publishing val Build on May 1 2023 21:06:42 version 1.17.88 to temp_test/build retain=0
Info:MAIN:Time 8, idle 180693/s, free 71248, MQTT 1(1), bWifi 1, secondsWithNoPing -1, socks 2/38
Info:MQTT:Publishing val 1c:90:ff:2f:c0:f8 to temp_test/mac retain=0
Info:MAIN:Time 9, idle 187841/s, free 71248, MQTT 1(1), bWifi 1, secondsWithNoPing -1, socks 2/38
Info:MQTT:Publishing val 3 to temp_test/sockets retain=0
Info:TuyaMCU:TUYAMCU received: 55 AA 00 02 00 00 01
Info:TuyaMCU:TuyaMCU_ProcessIncoming[ver=0]: processing command 2 (MCUconf) with 7 bytes
Info:TuyaMCU:TuyaMCU_ProcessIncoming: TUYA_CMD_MCU_CONF, TODO!
Info:TuyaMCU:TUYAMCU received: 55 AA 00 10 00 01 00 10
Info:TuyaMCU:TuyaMCU_ProcessIncoming[ver=0]: processing command 16 (Unknown) with 8 bytes
Info:TuyaMCU:TuyaMCU_ProcessIncoming: unhandled type 16
Info:MAIN:Time 10, idle 188069/s, free 59552, MQTT 1(1), bWifi 1, secondsWithNoPing -1, socks 3/38
Info:GEN:dhcp=0 ip=192.168.0.100 gate=192.168.0.1 mask=255.255.255.0 mac=1c:90:ff:2f:c0:f8
Info:GEN:sta: 1, softap: 0, b/g/n
Info:GEN:sta:rssi=-49,ssid=5G_FULL_POWER,bssid=ac:d5:64:2f:7f:f5 ,channel=6,cipher_type:CCMP
Info:MQTT:Publishing val -47 to temp_test/rssi retain=0
Info:TuyaMCU:TUYAMCU received: 55 AA 00 05 00 08 01 02 00 04 00 00 00 E3 F6
Info:TuyaMCU:TuyaMCU_ProcessIncoming[ver=0]: processing command 5 (WiFiSelect) with 15 bytes
Info:TuyaMCU:TuyaMCU_V0_ParseRealTimeWithRecordStorage: processing dpId 1, dataType 2-DP_TYPE_VALUE and 4 data bytes
Info:TuyaMCU:TuyaMCU_V0_ParseRealTimeWithRecordStorage: raw data 4 int: 227
Info:GEN:CHANNEL_Set channel 1 has changed to 227 (flags 0)
Info:MQTT:Channel has changed! Publishing 227 to channel 1
Info:MQTT:Publishing val 227 to temp_test/1/get retain=0
Info:TuyaMCU:TUYAMCU received: 55 AA 00 05 00 08 02 02 00 04 00 00 00 29 3D
Info:MQTT:MQTT client in mqtt_incoming_publish_cb topic temp_test/1/get
Info:TuyaMCU:TuyaMCU_ProcessIncoming[ver=0]: processing command 5 (WiFiSelect) with 15 bytes
Info:TuyaMCU:TuyaMCU_V0_ParseRealTimeWithRecordStorage: processing dpId 2, dataType 2-DP_TYPE_VALUE and 4 data bytes
Info:TuyaMCU:TuyaMCU_V0_ParseRealTimeWithRecordStorage: raw data 4 int: 41
Info:GEN:CHANNEL_Set channel 2 has changed to 41 (flags 0)
Info:MQTT:Channel has changed! Publishing 41 to channel 2
Info:MQTT:Publishing val 41 to temp_test/2/get retain=0
Info:MAIN:Time 11, idle 176355/s, free 71248, MQTT 1(1), bWifi 1, secondsWithNoPing -1, socks 2/38
Info:MQTT:MQTT client in mqtt_incoming_publish_cb topic temp_test/2/get
Info:MAIN:Main_Init_Before_Delay
Info:CFG:####### Boot Count 768 #######
Warn:CFG:CFG_InitAndLoad: Correct config has been loaded with 22 changes count.
Error:CMD:no file early.bat err -2
Info:GEN:PIN_SetupPins pins have been set up.
Info:MAIN:Main_Init_Before_Delay done
Info:MAIN:Main_Init_Delay
Info:MAIN:Main_Init_Delay done
Info:MAIN:Main_Init_After_Delay
Info:MAIN:ssid:5G_FULL_POWER key:MyP@ssw0rd
Info:MAIN:Using SSID [5G_FULL_POWER]
Info:MAIN:Using Pass [MyP@ssw0rd]
Info:MQTT:MQTT_RegisterCallback called for bT temp_test/ subT temp_test/+/set
Info:MQTT:MQTT_RegisterCallback called for bT temp_test/ subT temp_test/+/set
Info:MQTT:MQTT_RegisterCallback called for bT cmnd/temp_test/ subT cmnd/temp_test/+
Info:MQTT:MQTT_RegisterCallback called for bT cmnd/temp_test/ subT cmnd/temp_test/+
Info:MQTT:MQTT_RegisterCallback called for bT temp_test/ subT temp_test/+/get
Info:CMD:CMD_StartScript: started autoexec.bat at the beginning
Info:MAIN:Main_Init_After_Delay done
Info:MAIN:Started TuyaMCU.
Info:MAIN:Started tmSensor.
Info:GEN:Channel 1 type changed to temperature_div10
Info:GEN:Channel 2 type changed to Humidity
Info:GEN:Channel 3 type changed to ReadOnly
Info:MAIN:Time 1, idle 275646/s, free 70904, MQTT 0(0), bWifi 0, secondsWithNoPing -1, socks 2/38
Info:TuyaMCU:TUYAMCU received: 55 AA 00 01 00 24 7B 22 70 22 3A 22 62 79 75 73 76 75 6D 65 6D 65 35 69 69 63 61 64 22 2C 22 76 22 3A 22 31 2E 30 2E 30 22 7D 20
Info:TuyaMCU:TuyaMCU_ProcessIncoming[ver=0]: processing command 1 (QueryProductInformation) with 43 bytes
Info:TuyaMCU:TuyaMCU_ParseQueryProductInformation: received {"p":"byusvumeme5iicad","v":"1.0.0"}
Info:MAIN:Time 2, idle 184552/s, free 70904, MQTT 0(0), bWifi 0, secondsWithNoPing -1, socks 2/38
Info:MAIN:Time 3, idle 64678/s, free 71152, MQTT 0(0), bWifi 0, secondsWithNoPing -1, socks 2/38
Info:MAIN:Time 4, idle 0/s, free 71152, MQTT 0(0), bWifi 0, secondsWithNoPing -1, socks 2/38
Info:MAIN:Time 5, idle 0/s, free 71152, MQTT 0(0), bWifi 0, secondsWithNoPing -1, socks 2/38
Info:MAIN:Main_OnWiFiStatusChange - WIFI_STA_CONNECTING - 1
Info:MAIN:Main_OnWiFiStatusChange - WIFI_STA_CONNECTED - 4
Info:MQTT:mqtt_userName homeassistant
mqtt_pass hass_pass_secret
mqtt_clientID temp_test
mqtt_host 192.168.0.124:1883
Info:MAIN:Time 6, idle 108018/s, free 71080, MQTT 0(1), bWifi 1, secondsWithNoPing -1, socks 2/38
Info:MAIN:Boot complete time reached (5 seconds)
Info:CFG:####### Set Boot Complete #######
Info:MQTT:mqtt_connection_cb: Successfully connected
Info:MQTT:mqtt_subscribed to temp_test/+/set
Info:MQTT:mqtt_subscribed to temp_test/+/set
Info:MQTT:mqtt_subscribed to cmnd/temp_test/+
Info:MQTT:mqtt_subscribed to cmnd/temp_test/+
Info:MQTT:mqtt_subscribed to temp_test/+/get
Info:MQTT:Publishing val temp_test to temp_test/host retain=0
Info:TuyaMCU:TUYAMCU received: 55 AA 00 02 00 00 01
Info:TuyaMCU:TuyaMCU_ProcessIncoming[ver=0]: processing command 2 (MCUconf) with 7 bytes
Info:TuyaMCU:TuyaMCU_ProcessIncoming: TUYA_CMD_MCU_CONF, TODO!
Info:MAIN:Time 7, idle 176336/s, free 71312, MQTT 1(1), bWifi 1, secondsWithNoPing -1, socks 2/38
Info:MQTT:Publishing val Build on May 1 2023 21:06:42 version 1.17.88 to temp_test/build retain=0
Info:MAIN:Time 8, idle 359945/s, free 59616, MQTT 1(1), bWifi 1, secondsWithNoPing -1, socks 3/38
Info:MQTT:Publishing val 1c:90:ff:2f:c0:f8 to temp_test/mac retain=0
Info:MAIN:Time 9, idle 184565/s, free 71072, MQTT 1(1), bWifi 1, secondsWithNoPing -1, socks 2/38
Info:MQTT:Publishing val 2 to temp_test/sockets retain=0
Info:TuyaMCU:TUYAMCU received: 55 AA 00 02 00 00 01
Info:TuyaMCU:TuyaMCU_ProcessIncoming[ver=0]: processing command 2 (MCUconf) with 7 bytes
Info:TuyaMCU:TuyaMCU_ProcessIncoming: TUYA_CMD_MCU_CONF, TODO!
Info:TuyaMCU:TUYAMCU received: 55 AA 00 10 00 01 00 10
Info:TuyaMCU:TuyaMCU_ProcessIncoming[ver=0]: processing command 16 (Unknown) with 8 bytes
Info:TuyaMCU:TuyaMCU_ProcessIncoming: unhandled type 16
Info:MAIN:Time 10, idle 189494/s, free 71312, MQTT 1(1), bWifi 1, secondsWithNoPing -1, socks 2/38
Info:GEN:dhcp=0 ip=192.168.0.100 gate=192.168.0.1 mask=255.255.255.0 mac=1c:90:ff:2f:c0:f8
Info:GEN:sta: 1, softap: 0, b/g/n
Info:GEN:sta:rssi=-38,ssid=5G_FULL_POWER,bssid=ac:d5:64:2f:7f:f5 ,channel=6,cipher_type:CCMP
Info:MQTT:Publishing val -46 to temp_test/rssi retain=0
Info:TuyaMCU:TUYAMCU received: 55 AA 00 05 00 08 01 02 00 04 00 00 00 E4 F7
Info:TuyaMCU:TuyaMCU_ProcessIncoming[ver=0]: processing command 5 (WiFiSelect) with 15 bytes
Info:TuyaMCU:TuyaMCU_V0_ParseRealTimeWithRecordStorage: processing dpId 1, dataType 2-DP_TYPE_VALUE and 4 data bytes
Info:TuyaMCU:TuyaMCU_V0_ParseRealTimeWithRecordStorage: raw data 4 int: 228
Info:GEN:CHANNEL_Set channel 1 has changed to 228 (flags 0)
Info:MQTT:Channel has changed! Publishing 228 to channel 1
Info:MQTT:Publishing val 228 to temp_test/1/get retain=0
Info:TuyaMCU:TUYAMCU received: 55 AA 00 05 00 08 02 02 00 04 00 00 00 29 3D
Info:TuyaMCU:TuyaMCU_ProcessIncoming[ver=0]: processing command 5 (WiFiSelect) with 15 bytes
Info:TuyaMCU:TuyaMCU_V0_ParseRealTimeWithRecordStorage: processing dpId 2, dataType 2-DP_TYPE_VALUE and 4 data bytes
Info:TuyaMCU:TuyaMCU_V0_ParseRealTimeWithRecordStorage: raw data 4 int: 41
Info:GEN:CHANNEL_Set channel 2 has changed to 41 (flags 0)
Info:MQTT:Channel has changed! Publishing 41 to channel 2
Info:MQTT:MQTT client in mqtt_incoming_publish_cb topic temp_test/1/get
Info:MQTT:Publishing val 41 to temp_test/2/get retain=0
Info:MAIN:Time 11, idle 202098/s, free 71312, MQTT 1(1), bWifi 1, secondsWithNoPing -1, socks 2/38
Info:MQTT:MQTT client in mqtt_incoming_publish_cb topic temp_test/2/get
Info:MAIN:Main_Init_Before_Delay
Info:CFG:####### Boot Count 769 #######
Warn:CFG:CFG_InitAndLoad: Correct config has been loaded with 22 changes count.
Error:CMD:no file early.bat err -2
Info:GEN:PIN_SetupPins pins have been set up.
Info:MAIN:Main_Init_Before_Delay done
Info:MAIN:Main_Init_Delay
Info:MAIN:Main_Init_Delay done
Info:MAIN:Main_Init_After_Delay
Info:MAIN:ssid:5G_FULL_POWER key:MyP@ssw0rd
Info:MAIN:Using SSID [5G_FULL_POWER]
Info:MAIN:Using Pass [MyP@ssw0rd]
Info:MQTT:MQTT_RegisterCallback called for bT temp_test/ subT temp_test/+/set
Info:MQTT:MQTT_RegisterCallback called for bT temp_test/ subT temp_test/+/set
Info:MQTT:MQTT_RegisterCallback called for bT cmnd/temp_test/ subT cmnd/temp_test/+
Info:MQTT:MQTT_RegisterCallback called for bT cmnd/temp_test/ subT cmnd/temp_test/+
Info:MQTT:MQTT_RegisterCallback called for bT temp_test/ subT temp_test/+/get
Info:CMD:CMD_StartScript: started autoexec.bat at the beginning
Info:MAIN:Main_Init_After_Delay done
Info:MAIN:Started TuyaMCU.
Info:MAIN:Started tmSensor.
Info:GEN:Channel 1 type changed to temperature_div10
Info:GEN:Channel 2 type changed to Humidity
Info:GEN:Channel 3 type changed to ReadOnly
Info:MAIN:Time 1, idle 280929/s, free 70904, MQTT 0(0), bWifi 0, secondsWithNoPing -1, socks 2/38
Info:TuyaMCU:TUYAMCU received: 55 AA 00 01 00 24 7B 22 70 22 3A 22 62 79 75 73 76 75 6D 65 6D 65 35 69 69 63 61 64 22 2C 22 76 22 3A 22 31 2E 30 2E 30 22 7D 20
Info:TuyaMCU:TuyaMCU_ProcessIncoming[ver=0]: processing command 1 (QueryProductInformation) with 43 bytes
Info:TuyaMCU:TuyaMCU_ParseQueryProductInformation: received {"p":"byusvumeme5iicad","v":"1.0.0"}
Info:MAIN:Time 2, idle 187005/s, free 70840, MQTT 0(0), bWifi 0, secondsWithNoPing -1, socks 2/38
Info:MAIN:Time 3, idle 65855/s, free 71024, MQTT 0(0), bWifi 0, secondsWithNoPing -1, socks 2/38
Info:MAIN:Time 4, idle 0/s, free 71024, MQTT 0(0), bWifi 0, secondsWithNoPing -1, socks 2/38
Info:MAIN:Time 5, idle 0/s, free 71024, MQTT 0(0), bWifi 0, secondsWithNoPing -1, socks 2/38
Info:MAIN:Main_OnWiFiStatusChange - WIFI_STA_CONNECTING - 1
Info:MAIN:Main_OnWiFiStatusChange - WIFI_STA_CONNECTED - 4
Info:MQTT:mqtt_userName homeassistant
mqtt_pass hass_pass_secret
mqtt_clientID temp_test
mqtt_host 192.168.0.124:1883
Info:MAIN:Time 6, idle 121870/s, free 71208, MQTT 0(1), bWifi 1, secondsWithNoPing -1, socks 2/38
Info:MAIN:Boot complete time reached (5 seconds)
Info:CFG:####### Set Boot Complete #######
Info:MQTT:mqtt_connection_cb: Successfully connected
Info:MQTT:mqtt_subscribed to temp_test/+/set
Info:MQTT:mqtt_subscribed to temp_test/+/set
Info:MQTT:mqtt_subscribed to cmnd/temp_test/+
Info:MQTT:mqtt_subscribed to cmnd/temp_test/+
Info:MQTT:mqtt_subscribed to temp_test/+/get
Info:MQTT:Publishing val temp_test to temp_test/host retain=0
Info:TuyaMCU:TUYAMCU received: 55 AA 00 02 00 00 01
Info:TuyaMCU:TuyaMCU_ProcessIncoming[ver=0]: processing command 2 (MCUconf) with 7 bytes
Info:TuyaMCU:TuyaMCU_ProcessIncoming: TUYA_CMD_MCU_CONF, TODO!
Info:MAIN:Time 7, idle 175294/s, free 71248, MQTT 1(1), bWifi 1, secondsWithNoPing -1, socks 2/38
Info:MQTT:Publishing val Build on May 1 2023 21:06:42 version 1.17.88 to temp_test/build retain=0
Info:MAIN:Time 8, idle 186306/s, free 59280, MQTT 1(1), bWifi 1, secondsWithNoPing -1, socks 3/38
Info:MQTT:Publishing val 1c:90:ff:2f:c0:f8 to temp_test/mac retain=0
Info:MAIN:Time 9, idle 186065/s, free 71248, MQTT 1(1), bWifi 1, secondsWithNoPing -1, socks 2/38
Info:MQTT:Publishing val 2 to temp_test/sockets retain=0
Info:TuyaMCU:TUYAMCU received: 55 AA 00 02 00 00 01
Info:TuyaMCU:TuyaMCU_ProcessIncoming[ver=0]: processing command 2 (MCUconf) with 7 bytes
Info:TuyaMCU:TuyaMCU_ProcessIncoming: TUYA_CMD_MCU_CONF, TODO!
Info:TuyaMCU:TUYAMCU received: 55 AA 00 10 00 01 00 10
Info:TuyaMCU:TuyaMCU_ProcessIncoming[ver=0]: processing command 16 (Unknown) with 8 bytes
Info:TuyaMCU:TuyaMCU_ProcessIncoming: unhandled type 16
Info:MAIN:Time 10, idle 377667/s, free 71248, MQTT 1(1), bWifi 1, secondsWithNoPing -1, socks 2/38
Info:GEN:dhcp=0 ip=192.168.0.100 gate=192.168.0.1 mask=255.255.255.0 mac=1c:90:ff:2f:c0:f8
Info:GEN:sta: 1, softap: 0, b/g/n
Info:GEN:sta:rssi=-48,ssid=5G_FULL_POWER,bssid=ac:d5:64:2f:7f:f5 ,channel=6,cipher_type:CCMP
Info:MQTT:Publishing val -49 to temp_test/rssi retain=0
Info:TuyaMCU:TUYAMCU received: 55 AA 00 05 00 08 01 02 00 04 00 00 00 E4 F7
Info:TuyaMCU:TuyaMCU_ProcessIncoming[ver=0]: processing command 5 (WiFiSelect) with 15 bytes
Info:TuyaMCU:TuyaMCU_V0_ParseRealTimeWithRecordStorage: processing dpId 1, dataType 2-DP_TYPE_VALUE and 4 data bytes
Info:TuyaMCU:TuyaMCU_V0_ParseRealTimeWithRecordStorage: raw data 4 int: 228
Info:GEN:CHANNEL_Set channel 1 has changed to 228 (flags 0)
Info:MQTT:Channel has changed! Publishing 228 to channel 1
Info:MQTT:Publishing val 228 to temp_test/1/get retain=0
Info:TuyaMCU:TUYAMCU received: 55 AA 00 05 00 08 02 02 00 04 00 00 00 29 3D
Info:TuyaMCU:TuyaMCU_ProcessIncoming[ver=0]: processing command 5 (WiFiSelect) with 15 bytes
Info:TuyaMCU:TuyaMCU_V0_ParseRealTimeWithRecordStorage: processing dpId 2, dataType 2-DP_TYPE_VALUE and 4 data bytes
Info:TuyaMCU:TuyaMCU_V0_ParseRealTimeWithRecordStorage: raw data 4 int: 41
Info:GEN:CHANNEL_Set channel 2 has changed to 41 (flags 0)
Info:MQTT:Channel has changed! Publishing 41 to channel 2
Info:MQTT:MQTT client in mqtt_incoming_publish_cb topic temp_test/1/get
Info:MQTT:Publishing val 41 to temp_test/2/get retain=0
Info:MAIN:Time 11, idle 205611/s, free 70712, MQTT 1(1), bWifi 1, secondsWithNoPing -1, socks 2/38
Info:MQTT:MQTT client in mqtt_incoming_publish_cb topic temp_test/2/get
Info:MAIN:Main_Init_Before_Delay
Info:CFG:####### Boot Count 770 #######
Warn:CFG:CFG_InitAndLoad: Correct config has been loaded with 22 changes count.
Error:CMD:no file early.bat err -2
Info:GEN:PIN_SetupPins pins have been set up.
Info:MAIN:Main_Init_Before_Delay done
Info:MAIN:Main_Init_Delay
Info:MAIN:Main_Init_Delay done
Info:MAIN:Main_Init_After_Delay
Info:MAIN:ssid:5G_FULL_POWER key:MyP@ssw0rd
Info:MAIN:Using SSID [5G_FULL_POWER]
Info:MAIN:Using Pass [MyP@ssw0rd]
Info:MQTT:MQTT_RegisterCallback called for bT temp_test/ subT temp_test/+/set
Info:MQTT:MQTT_RegisterCallback called for bT temp_test/ subT temp_test/+/set
Info:MQTT:MQTT_RegisterCallback called for bT cmnd/temp_test/ subT cmnd/temp_test/+
Info:MQTT:MQTT_RegisterCallback called for bT cmnd/temp_test/ subT cmnd/temp_test/+
Info:MQTT:MQTT_RegisterCallback called for bT temp_test/ subT temp_test/+/get
Info:CMD:CMD_StartScript: started autoexec.bat at the beginning
Info:MAIN:Main_Init_After_Delay done
Info:MAIN:Started TuyaMCU.
Info:MAIN:Started tmSensor.
Info:GEN:Channel 1 type changed to temperature_div10
Info:GEN:Channel 2 type changed to Humidity
Info:GEN:Channel 3 type changed to ReadOnly
Info:MAIN:Time 1, idle 281763/s, free 70840, MQTT 0(0), bWifi 0, secondsWithNoPing -1, socks 2/38
Info:TuyaMCU:TUYAMCU received: 55 AA 00 01 00 24 7B 22 70 22 3A 22 62 79 75 73 76 75 6D 65 6D 65 35 69 69 63 61 64 22 2C 22 76 22 3A 22 31 2E 30 2E 30 22 7D 20
Info:TuyaMCU:TuyaMCU_ProcessIncoming[ver=0]: processing command 1 (QueryProductInformation) with 43 bytes
Info:TuyaMCU:TuyaMCU_ParseQueryProductInformation: received {"p":"byusvumeme5iicad","v":"1.0.0"}
Info:MAIN:Time 2, idle 187527/s, free 70840, MQTT 0(0), bWifi 0, secondsWithNoPing -1, socks 2/38
Info:MAIN:Time 3, idle 65471/s, free 71024, MQTT 0(0), bWifi 0, secondsWithNoPing -1, socks 2/38
Info:MAIN:Time 4, idle 0/s, free 71024, MQTT 0(0), bWifi 0, secondsWithNoPing -1, socks 2/38
Info:MAIN:Time 5, idle 0/s, free 71024, MQTT 0(0), bWifi 0, secondsWithNoPing -1, socks 2/38
Info:MAIN:Main_OnWiFiStatusChange - WIFI_STA_CONNECTING - 1
Info:MAIN:Main_OnWiFiStatusChange - WIFI_STA_CONNECTED - 4
Info:MQTT:mqtt_userName homeassistant
mqtt_pass hass_pass_secret
mqtt_clientID temp_test
mqtt_host 192.168.0.124:1883
Info:MAIN:Time 6, idle 114146/s, free 71200, MQTT 0(1), bWifi 1, secondsWithNoPing -1, socks 2/38
Info:MAIN:Boot complete time reached (5 seconds)
Info:CFG:####### Set Boot Complete #######
Info:MQTT:mqtt_connection_cb: Successfully connected
Info:MQTT:mqtt_subscribed to temp_test/+/set
Info:MQTT:mqtt_subscribed to temp_test/+/set
Info:MQTT:mqtt_subscribed to cmnd/temp_test/+
Info:MQTT:mqtt_subscribed to cmnd/temp_test/+
Info:MQTT:mqtt_subscribed to temp_test/+/get
Info:MQTT:Publishing val temp_test to temp_test/host retain=0
Info:TuyaMCU:TUYAMCU received: 55 AA 00 02 00 00 01
Info:TuyaMCU:TuyaMCU_ProcessIncoming[ver=0]: processing command 2 (MCUconf) with 7 bytes
Info:TuyaMCU:TuyaMCU_ProcessIncoming: TUYA_CMD_MCU_CONF, TODO!
Info:MAIN:Time 7, idle 185104/s, free 71240, MQTT 1(1), bWifi 1, secondsWithNoPing -1, socks 2/38
Info:MQTT:Publishing val Build on May 1 2023 21:06:42 version 1.17.88 to temp_test/build retain=0
Info:MAIN:Time 8, idle 182657/s, free 71240, MQTT 1(1), bWifi 1, secondsWithNoPing -1, socks 2/38
Info:MQTT:Publishing val 1c:90:ff:2f:c0:f8 to temp_test/mac retain=0
Info:MAIN:Time 9, idle 186337/s, free 71000, MQTT 1(1), bWifi 1, secondsWithNoPing -1, socks 2/38
Info:MQTT:Publishing val 2 to temp_test/sockets retain=0
Info:TuyaMCU:TUYAMCU received: 55 AA 00 02 00 00 01
Info:TuyaMCU:TuyaMCU_ProcessIncoming[ver=0]: processing command 2 (MCUconf) with 7 bytes
Info:TuyaMCU:TuyaMCU_ProcessIncoming: TUYA_CMD_MCU_CONF, TODO!
Info:TuyaMCU:TUYAMCU received: 55 AA 00 10 00 01 00 10
Info:TuyaMCU:TuyaMCU_ProcessIncoming[ver=0]: processing command 16 (Unknown) with 8 bytes
Info:TuyaMCU:TuyaMCU_ProcessIncoming: unhandled type 16
Info:MAIN:Time 10, idle 189701/s, free 71008, MQTT 1(1), bWifi 1, secondsWithNoPing -1, socks 2/38
Info:GEN:dhcp=0 ip=192.168.0.100 gate=192.168.0.1 mask=255.255.255.0 mac=1c:90:ff:2f:c0:f8
Info:GEN:sta: 1, softap: 0, b/g/n
Info:GEN:sta:rssi=-38,ssid=5G_FULL_POWER,bssid=ac:d5:64:2f:7f:f5 ,channel=6,cipher_type:CCMP
Info:MQTT:Publishing val -39 to temp_test/rssi retain=0
Info:TuyaMCU:TUYAMCU received: 55 AA 00 05 00 08 01 02 00 04 00 00 00 E4 F7
Info:TuyaMCU:TuyaMCU_ProcessIncoming[ver=0]: processing command 5 (WiFiSelect) with 15 bytes
Info:TuyaMCU:TuyaMCU_V0_ParseRealTimeWithRecordStorage: processing dpId 1, dataType 2-DP_TYPE_VALUE and 4 data bytes
Info:TuyaMCU:TuyaMCU_V0_ParseRealTimeWithRecordStorage: raw data 4 int: 228
Info:GEN:CHANNEL_Set channel 1 has changed to 228 (flags 0)
Info:MQTT:Channel has changed! Publishing 228 to channel 1
Info:MQTT:Publishing val 228 to temp_test/1/get retain=0
Info:TuyaMCU:TUYAMCU received: 55 AA 00 05 00 08 02 02 00 04 00 00 00 29 3D
Info:TuyaMCU:TuyaMCU_ProcessIncoming[ver=0]: processing command 5 (WiFiSelect) with 15 bytes
Info:TuyaMCU:TuyaMCU_V0_ParseRealTimeWithRecordStorage: processing dpId 2, dataType 2-DP_TYPE_VALUE and 4 data bytes
Info:TuyaMCU:TuyaMCU_V0_ParseRealTimeWithRecordStorage: raw data 4 int: 41
Info:MQTT:MQTT client in mqtt_incoming_publish_cb topic temp_test/1/get
Info:GEN:CHANNEL_Set channel 2 has changed to 41 (flags 0)
Info:MQTT:Channel has changed! Publishing 41 to channel 2
Info:MQTT:Publishing val 41 to temp_test/2/get retain=0
Info:MAIN:Time 11, idle 183799/s, free 71008, MQTT 1(1), bWifi 1, secondsWithNoPing -1, socks 2/38
Info:MQTT:MQTT client in mqtt_incoming_publish_cb topic temp_test/2/get
Podsumowanie
Sensor ten oparty jest o protokół TuyaMCU. Może działać zarówno z aplikacją Tuya, jak i z OpenBeken. Częstotliwość raportowania można zmieniać w dużym zakresie, od minuty, aż do 2h lub więcej - dłuższych okresów nie sprawdzaliśmy. W trybie głębokiego snu pobiera około 5µA . Jest to niezły wynik, chociaż sam BK7231, wedle moich testów, w trybie głębokiego snu z wybudzeniem GPIO pobiera jakieś 6µA . Ze zmianą firmware jest troszkę pracy, bo jak zwykle TuyaMCU jest na tym samym porcie UART który służy do programowania, ale po jednokrotnym wgraniu wsadu wszystko powinno działać dobrze. W temacie umieszczone są gotowe skrypty pod ten czujnik.
Jeszcze raz dziękuję @DeDaMrAz za pomoc w opracowaniu tego tematu (razem zdalnie pracowaliśmy nad tym czujnikiem).
PS: Warto zobaczyć starszy temat, autorstwa innego użytkownika, o podobnym sensorze, tutaj, znajduje się tam też przykładowy kod YAML do Home Assistant, który teraz nie jest już potrzebny, odkąd OBK wspiera HASS Discovery.
Fajne? Ranking DIY Pomogłem? Kup mi kawę.