logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Nietypowy kontroler paska LED Miboxer FUT037W+ z TuyaMCU - protokół komunikacji, OpenBeken

p.kaczmarek2 24 Sty 2024 14:21 1800 1
  • Nietypowy kontroler paska LED Miboxer FUT037W+ z TuyaMCU - protokół komunikacji, OpenBeken
    Zapraszam na analizę wnętrza, budowy oraz protokołu komunikacji (TuyaMCU - oparte o UART) nietypowego kontrolera paska LED Miboxer FUT037W+.
    Omawiany tu produkt wyróżnia się tym, że oprócz komunikacji WiFi wspiera też sterowanie przez RF, z tego też powodu producent zdecydował się zbudować go w oparciu o dwa mikrokontrolery.
    Mamy tu osobno moduł WiFi CB3S (BK7231N) oraz osobno zewnętrzny MCU, do którego w zasadzie wszystko jest podłączone. Ale zacznijmy od początku...

    Zakup Miboxer FUT037W+
    Produkt podrzucił mi czytelnik bym mu wgrał OBK w celu sparowania sprzętu z Home Assistant, ale z tego co wiem, kupiony był on za około 90 zł:
    Nietypowy kontroler paska LED Miboxer FUT037W+ z TuyaMCU - protokół komunikacji, OpenBeken
    Zobaczmy do opisu przedmiotu od sprzedawcy:
    Nietypowy kontroler paska LED Miboxer FUT037W+ z TuyaMCU - protokół komunikacji, OpenBeken
    Tak jest, sterować tym można przez WiFi bądź przez piloty. Teraz specyfikacja:
    Nietypowy kontroler paska LED Miboxer FUT037W+ z TuyaMCU - protokół komunikacji, OpenBeken
    Informacje o Bluetooth z opisu sugerują, że w środku nie znajdziemy ESP8266.
    Nietypowy kontroler paska LED Miboxer FUT037W+ z TuyaMCU - protokół komunikacji, OpenBeken
    Co dostajemy w praktyce?
    Nietypowy kontroler paska LED Miboxer FUT037W+ z TuyaMCU - protokół komunikacji, OpenBeken Nietypowy kontroler paska LED Miboxer FUT037W+ z TuyaMCU - protokół komunikacji, OpenBeken Nietypowy kontroler paska LED Miboxer FUT037W+ z TuyaMCU - protokół komunikacji, OpenBeken Nietypowy kontroler paska LED Miboxer FUT037W+ z TuyaMCU - protokół komunikacji, OpenBeken
    Zawartość zestawu:
    Nietypowy kontroler paska LED Miboxer FUT037W+ z TuyaMCU - protokół komunikacji, OpenBeken Nietypowy kontroler paska LED Miboxer FUT037W+ z TuyaMCU - protokół komunikacji, OpenBeken Nietypowy kontroler paska LED Miboxer FUT037W+ z TuyaMCU - protokół komunikacji, OpenBeken
    Kody QR:
    Nietypowy kontroler paska LED Miboxer FUT037W+ z TuyaMCU - protokół komunikacji, OpenBeken Nietypowy kontroler paska LED Miboxer FUT037W+ z TuyaMCU - protokół komunikacji, OpenBeken
    Ten sterownik ma osobno wejście na DC jack, a osobno na przewody - sprytne i wygodne.
    Nietypowy kontroler paska LED Miboxer FUT037W+ z TuyaMCU - protokół komunikacji, OpenBeken
    A tu są wyjścia na pasek LED:
    Nietypowy kontroler paska LED Miboxer FUT037W+ z TuyaMCU - protokół komunikacji, OpenBeken


    Wnętrze Miboxer FUT037W+
    Wystarczy podważyć pokrywę, nie ma tu śrubek:
    Nietypowy kontroler paska LED Miboxer FUT037W+ z TuyaMCU - protokół komunikacji, OpenBeken
    Od razu widać mocniejsze niż zazwyczaj tranzystory MOSFET, tylko czemu są takie skurzone?
    Nietypowy kontroler paska LED Miboxer FUT037W+ z TuyaMCU - protokół komunikacji, OpenBeken
    Nieco lepiej:
    Nietypowy kontroler paska LED Miboxer FUT037W+ z TuyaMCU - protokół komunikacji, OpenBeken
    Nietypowy kontroler paska LED Miboxer FUT037W+ z TuyaMCU - protokół komunikacji, OpenBeken
    K50N03A, rzeczywiście niezłe parametry:
    Nietypowy kontroler paska LED Miboxer FUT037W+ z TuyaMCU - protokół komunikacji, OpenBeken
    Możemy już wyjąć PCB i obejrzeć resztę elektroniki:
    Nietypowy kontroler paska LED Miboxer FUT037W+ z TuyaMCU - protokół komunikacji, OpenBeken Nietypowy kontroler paska LED Miboxer FUT037W+ z TuyaMCU - protokół komunikacji, OpenBeken
    Moduł WiFi to WB3S, ale on jest na osobnej płytce i z podstawą łączy się tylko czteroma goldpinami. Mamy tu 3.3V, masę oraz TX i RX.
    To jest typowy przykład urządzenia opartego o TuyaMCU. Szczegóły w tym temacie:
    Protokół TuyaMCU - komunikacja pomiędzy mikrokontrolerem a modułem WiFi
    Tu z kolei widzę kontroler step down, on pewnie generuje 3.3V z 12V od paska:
    Nietypowy kontroler paska LED Miboxer FUT037W+ z TuyaMCU - protokół komunikacji, OpenBeken
    A tu mamy układ RF PL1166 A110K48 (MCU jest pod modułem WiFi):
    Nietypowy kontroler paska LED Miboxer FUT037W+ z TuyaMCU - protokół komunikacji, OpenBeken
    Nietypowy kontroler paska LED Miboxer FUT037W+ z TuyaMCU - protokół komunikacji, OpenBeken
    Wylutowałem płytkę z modułem WiFi by zobaczyć jakie tam jest MCU:
    Nietypowy kontroler paska LED Miboxer FUT037W+ z TuyaMCU - protokół komunikacji, OpenBeken Nietypowy kontroler paska LED Miboxer FUT037W+ z TuyaMCU - protokół komunikacji, OpenBeken
    To Nuvoton MS51FC0AE:
    Nietypowy kontroler paska LED Miboxer FUT037W+ z TuyaMCU - protokół komunikacji, OpenBeken
    Nietypowy kontroler paska LED Miboxer FUT037W+ z TuyaMCU - protokół komunikacji, OpenBeken
    Nietypowy kontroler paska LED Miboxer FUT037W+ z TuyaMCU - protokół komunikacji, OpenBeken
    Ten MCU obsługuje tu układ RF oraz tranzystory, z modułem WiFi komunikuje sie przez UART.

    Testy z aplikacją Tuya, czyli podsłuchujemy komunikację UART
    Wspomniany już protokół TuyaMCU opiera się na UART i służy do przesyłania wartości zmiennych w obie strony, zmienne TuyaMCU mają swoje ID, tzw. dpID.
    Opisywałem to szerzej w tym temacie: Analizator TuyaMCU - dekoder pakietów UART dla urządzeń Tuya - dpID detektor
    A więc, apka Tuya z daleka rozpoznaje urządzenie:
    Nietypowy kontroler paska LED Miboxer FUT037W+ z TuyaMCU - protokół komunikacji, OpenBeken
    Mimo jednego niepowodzenia ("weak signal") parowanie się powodzi:
    Nietypowy kontroler paska LED Miboxer FUT037W+ z TuyaMCU - protokół komunikacji, OpenBeken Nietypowy kontroler paska LED Miboxer FUT037W+ z TuyaMCU - protokół komunikacji, OpenBeken Nietypowy kontroler paska LED Miboxer FUT037W+ z TuyaMCU - protokół komunikacji, OpenBeken Nietypowy kontroler paska LED Miboxer FUT037W+ z TuyaMCU - protokół komunikacji, OpenBeken
    W środku mamy typowy kontroler RGBCW:
    Nietypowy kontroler paska LED Miboxer FUT037W+ z TuyaMCU - protokół komunikacji, OpenBeken
    Oczywiście są tu opcje takie jak stan początkowy, kalendarz, itp, ale to omawiałem już kiedyś, więc pomijam.
    Nietypowy kontroler paska LED Miboxer FUT037W+ z TuyaMCU - protokół komunikacji, OpenBeken
    Wszystko działa:
    Nietypowy kontroler paska LED Miboxer FUT037W+ z TuyaMCU - protokół komunikacji, OpenBeken
    A więc, zgodnie z zalinkowanym tematem o analizatorze TuyaMCU zebrałem dane i uruchomiłem analizator:
    https://github.com/openshwprojects/TuyaMCUAnalyzer
    Najpierw bez parowania:
    
    55AA00000000FF55AA000100000055AA000200000155AA03000001000355AA0307000816020004000003E81855AA030300000555AA0307000817020004000002124255AA030700101803000C3031363030336538303365380755AA030700201903001C30303030303030303030303030303030303030303030633830303030DC55AA0307000514010001012555AA0307000515040001012955AA030700121E00000E00000001010106000000000014006455AA030700061F00000200003055AA030700062000000200003155AA0307000522010001013355AA030700102100000C000100000000000003E800003255AA03070006D10000020000E255AA03070006D20000020000E355AA0307000568040001017C55AA0307000569040001017D55AA030700106500000C4200000001FA1464000D04C61655AA030000010104
    

    Rezultat:
    Nietypowy kontroler paska LED Miboxer FUT037W+ z TuyaMCU - protokół komunikacji, OpenBeken
    Warto podkreślić, że TuyaMCU analizator nawet dekoduje kolory!
    I po sparowaniu, kolejno, ustawienie ciepłej bieli:
    
    55 AA 00 06 00 19 1C 03 00 15 31 30 30 30 30 30 30 30 30 30 30 30 30 30 
    33 65 38 30 30 30 30 83 55 AA 00 06 00 08 17 02 00 04 00 00 00 00 2A 55 
    AA 00 06 00 05 15 04 00 01 00 24     
    
    55 AA	00	06		00 19	1C030015313030303030303030303030303033653830303030	83	
    HEADER	VER=00	Unk		LEN	fnId=28 Str V=31 30 30 30 30 30 30 30 30 30 30 30 30 30 33 65 38 30 30 30 30	CHK	
    
    55 AA	00	06		00 08	1702000400000000	2A	
    HEADER	VER=00	Unk		LEN	fnId=23 Val V=0	CHK	
    
    55 AA	00	06		00 05	1504000100	24	
    HEADER	VER=00	Unk		LEN	fnId=21 Enum V=0	CHK	
    

    Ustawienie zimnej bieli:
    
    55 AA 00 06 00 19 1C 03 00 15 31 30 30 30 30 30 30 30 30 30 30 30 30 30 
    33 65 38 30 33 65 38 C3 55 AA 00 06 00 08 17 02 00 04 00 00 03 E8 15 55 
    AA 00 06 00 05 15 04 00 01 00 24 55 AA 00 00 00 00 FF  
    
    55 AA	00	06		00 19	1C030015313030303030303030303030303033653830336538	C3	
    HEADER	VER=00	Unk		LEN	fnId=28 Str V=31 30 30 30 30 30 30 30 30 30 30 30 30 30 33 65 38 30 33 65 38	CHK	
    
    55 AA	00	06		00 08	17020004000003E8	15	
    HEADER	VER=00	Unk		LEN	fnId=23 Val V=1000	CHK	
    
    55 AA	00	06		00 05	1504000100	24	
    HEADER	VER=00	Unk		LEN	fnId=21 Enum V=0	CHK	
    
    55 AA	00	00		00 00		FF	
    HEADER	VER=00	Heartbeat		LEN		CHK	
    

    Ustawienie temperatury bieli 50%:
    
    55 AA 00 06 00 19 1C 03 00 15 31 30 30 30 30 30 30 30 30 30 30 30 30 30 
    33 65 38 30 31 66 37 C1 55 AA 00 06 00 08 17 02 00 04 00 00 01 F7 22 55 
    AA 00 06 00 05 15 04 00 01 00 24    
    
    55 AA	00	06		00 19	1C030015313030303030303030303030303033653830316637	C1	
    HEADER	VER=00	Unk		LEN	fnId=28 Str V=31 30 30 30 30 30 30 30 30 30 30 30 30 30 33 65 38 30 31 66 37	CHK	
    
    55 AA	00	06		00 08	17020004000001F7	22	
    HEADER	VER=00	Unk		LEN	fnId=23 Val V=503	CHK	
    
    55 AA	00	06		00 05	1504000100	24	
    HEADER	VER=00	Unk		LEN	fnId=21 Enum V=0	CHK	
    

    Ustawienie temperatury bieli 75% (bardziej zimna biel):
    
    55 AA 00 00 00 00 FF 55 AA 00 06 00 19 1C 03 00 15 31 30 30 30 30 30 30 
    30 30 30 30 30 30 30 33 65 38 30 33 31 37 8E 55 AA 00 06 00 08 17 02 00 
    04 00 00 03 17 44 55 AA 00 06 00 05 15 04 00 01 00 24     
    
    55 AA	00	00		00 00		FF	
    HEADER	VER=00	Heartbeat		LEN		CHK	
    
    55 AA	00	06		00 19	1C030015313030303030303030303030303033653830333137	8E	
    HEADER	VER=00	Unk		LEN	fnId=28 Str V=31 30 30 30 30 30 30 30 30 30 30 30 30 30 33 65 38 30 33 31 37	CHK	
    
    55 AA	00	06		00 08	1702000400000317	44	
    HEADER	VER=00	Unk		LEN	fnId=23 Val V=791	CHK	
    
    55 AA	00	06		00 05	1504000100	24	
    HEADER	VER=00	Unk		LEN	fnId=21 Enum V=0	CHK	
    

    Ustawienie koloru zielonego:
    
    55 AA 00 06 00 19 1C 03 00 15 31 30 30 36 66 30 33 65 38 30 33 65 38 30 
    30 30 30 30 30 30 30 FF 55 AA 00 06 00 05 15 04 00 01 01 25 55 AA 00 06 
    00 10 18 03 00 0C 30 30 36 62 30 33 65 38 30 33 65 38 34 55 AA 00 00 00 
    00 FF  
    
    55 AA	00	06		00 19	1C030015313030366630336538303365383030303030303030	FF	
    HEADER	VER=00	Unk		LEN	fnId=28 Str V=31 30 30 36 66 30 33 65 38 30 33 65 38 30 30 30 30 30 30 30 30	CHK	
    
    55 AA	00	06		00 05	1504000101	25	
    HEADER	VER=00	Unk		LEN	fnId=21 Enum V=1	CHK	
    
    55 AA	00	06		00 10	1803000C303036623033653830336538	34	
    HEADER	VER=00	Unk		LEN	fnId=24 Str V=30 30 36 62 30 33 65 38 30 33 65 38	CHK	
    
    55 AA	00	00		00 00		FF	
    HEADER	VER=00	Heartbeat		LEN		CHK	
    

    Ustawienie kodu czerwonego:
    
    55 AA 00 06 00 19 1C 03 00 15 31 30 31 36 31 30 33 65 38 30 33 65 38 30 
    30 30 30 30 30 30 30 CB 55 AA 00 06 00 05 15 04 00 01 01 25 55 AA 00 06 
    00 10 18 03 00 0C 30 31 36 31 30 33 65 38 30 33 65 38 04                
                
    55 AA	00	06		00 19	1C030015313031363130336538303365383030303030303030	CB	
    HEADER	VER=00	Unk		LEN	fnId=28 Str V=31 30 31 36 31 30 33 65 38 30 33 65 38 30 30 30 30 30 30 30 30	CHK	
    
    55 AA	00	06		00 05	1504000101	25	
    HEADER	VER=00	Unk		LEN	fnId=21 Enum V=1	CHK	
    
    55 AA	00	06		00 10	1803000C303136313033653830336538	04	
    HEADER	VER=00	Unk		LEN	fnId=24 Str V=30 31 36 31 30 33 65 38 30 33 65 38	CHK	
    

    Ustawienie koloru niebieskiego:
    
    Setting blue:
    
    55 AA 00 06 00 19 1C 03 00 15 31 30 30 65 31 30 33 65 38 30 33 65 38 30 
    30 30 30 30 30 30 30 F9 55 AA 00 06 00 05 15 04 00 01 01 25 55 AA 00 06 
    00 10 18 03 00 0C 30 30 65 31 30 33 65 38 30 33 65 38 32 55 AA 00 00 00 
    00 FF                                                                   
                
    55 AA	00	06		00 19	1C030015313030653130336538303365383030303030303030	F9	
    HEADER	VER=00	Unk		LEN	fnId=28 Str V=31 30 30 65 31 30 33 65 38 30 33 65 38 30 30 30 30 30 30 30 30	CHK	
    
    55 AA	00	06		00 05	1504000101	25	
    HEADER	VER=00	Unk		LEN	fnId=21 Enum V=1	CHK	
    
    55 AA	00	06		00 10	1803000C303065313033653830336538	32	
    HEADER	VER=00	Unk		LEN	fnId=24 Str V=30 30 65 31 30 33 65 38 30 33 65 38	CHK	
    
    55 AA	00	00		00 00		FF	
    HEADER	VER=00	Heartbeat		LEN		CHK	
    

    Wyłączenie toggle:
    
    55 AA 00 06 00 05 14 01 00 01 00 20 55 AA 00 00 00 00 FF  
    
    55 AA	00	06		00 05	1401000100	20	
    HEADER	VER=00	SetDP		LEN	dpId=20 Bool V=0		CHK	
    
    55 AA	00	00		00 00		FF	
    HEADER	VER=00	Heartbeat		LEN		CHK	
    

    Włączenie toggle:
    
    55 AA	00	06		00 05	1401000101	21	
    HEADER	VER=00	SetDP		LEN	dpId=20 Bool V=1		CHK	
    
    
    

    Dimmer na 46%:
    
    55 AA 00 06 00 19 1C 03 00 15 31 30 30 65 31 30 33 65 38 30 31 64 30 30 
    30 30 30 30 30 30 30 EE 55 AA 00 06 00 05 15 04 00 01 01 25 55 AA 00 06 
    00 10 18 03 00 0C 30 30 65 31 30 33 65 38 30 31 64 30 27                
          
    55 AA	00	06		00 19	1C030015313030653130336538303164303030303030303030	EE	
    HEADER	VER=00	Unk		LEN	fnId=28 Str V=31 30 30 65 31 30 33 65 38 30 31 64 30 30 30 30 30 30 30 30 30	CHK	
    
    55 AA	00	06		00 05	1504000101	25	
    HEADER	VER=00	Unk		LEN	fnId=21 Enum V=1	CHK	
    
    55 AA	00	06		00 10	1803000C303065313033653830316430	27	
    HEADER	VER=00	Unk		LEN	fnId=24 Str V=30 30 65 31 30 33 65 38 30 31 64 30	CHK	
    

    Dimmer na 12%:
    
    55 AA 00 06 00 19 1C 03 00 15 31 30 30 65 31 30 33 65 38 30 30 37 39 30 
    30 30 30 30 30 30 30 C9 55 AA 00 06 00 05 15 04 00 01 01 25 55 AA 00 06 
    00 10 18 03 00 0C 30 30 65 31 30 33 65 38 30 30 37 39 02 55 AA 00 00 00 
    00 FF   
    
    55 AA	00	06		00 19	1C030015313030653130336538303037393030303030303030	C9	
    HEADER	VER=00	Unk		LEN	fnId=28 Str V=31 30 30 65 31 30 33 65 38 30 30 37 39 30 30 30 30 30 30 30 30	CHK	
    
    55 AA	00	06		00 05	1504000101	25	
    HEADER	VER=00	Unk		LEN	fnId=21 Enum V=1	CHK	
    
    55 AA	00	06		00 10	1803000C303065313033653830303739	02	
    HEADER	VER=00	Unk		LEN	fnId=24 Str V=30 30 65 31 30 33 65 38 30 30 37 39	CHK	
    
    55 AA	00	00		00 00		FF	
    HEADER	VER=00	Heartbeat		LEN		CHK	
    

    Dimmer na 100%:
    
    55 AA	00	06		00 19	1C030015313030653130336538303365383030303030303030	F9	
    HEADER	VER=00	SetDP		LEN	dpId=28 Str V=100e103e803e800000000		CHK	
    
    55 AA	00	06		00 05	1504000101	25	
    HEADER	VER=00	SetDP		LEN	dpId=21 Enum V=1		CHK	
    
    55 AA	00	06		00 10	1803000C303065313033653830336538	32	
    HEADER	VER=00	SetDP		LEN	dpId=24 Str V=00e103e803e8 Col: ■		CHK	
    
    
    

    Timer na 5 godzin:
    
    55 AA 00 06 00 08 1A 02 00 04 00 00 46 50 C3     
    
    55 AA	00	06		00 08	1A02000400004650	C3	
    HEADER	VER=00	SetDP		LEN	dpId=26 Val V=18000		CHK	
    
    

    Timer na 1h i 16 minut:
    
    55 AA 00 00 00 00 FF 55 AA 00 06 00 08 1A 02 00 04 00 00 11 D0 0E   
    
    55 AA	00	00		00 00		FF	
    HEADER	VER=00	Heartbeat		LEN		CHK	
    
    55 AA	00	06		00 08	1A020004000011D0	0E	
    HEADER	VER=00	SetDP		LEN	dpId=26 Val V=4560		CHK	
    
    

    Opcja Power On->Initial mode:
    
    55 AA 00 06 00 10 21 00 00 0C 00 00 00 00 00 00 00 00 03 E8 00 00 2D 55 
    
    55 AA	00	06		00 10	2100000C000000000000000003E80000	2D	
    HEADER	VER=00	SetDP		LEN	dpId=33 Raw V=00 00 00 00 00 00 00 00 03 E8 00 00		CHK	
    
    
    

    Opcja Power On->Restory Memory:
    
    55 AA 00 00 00 00 FF 55 AA 00 06 00 10 21 00 00 0C 00 01 00 00 00 00 00 
    00 03 E8 00 00 2E 55 AA 00 00 00 00 FF       
    
    55 AA	00	00		00 00		FF	
    HEADER	VER=00	Heartbeat		LEN		CHK	
    
    55 AA	00	06		00 10	2100000C000100000000000003E80000	2E	
    HEADER	VER=00	SetDP		LEN	dpId=33 Raw V=00 01 00 00 00 00 00 00 03 E8 00 00		CHK	
    
    55 AA	00	00		00 00		FF	
    HEADER	VER=00	Heartbeat		LEN		CHK	
    

    Skrollowanie kolorów, kolejno: green, yellow, red, pink, blue:
    
    E0 E0 E0 E0 E0 00 E0 E0 E0 00 00 00 00 E0 55 AA 00 06 00 19 1C 03 00 15 
    31 30 30 36 33 30 33 65 38 30 33 65 38 30 30 30 30 30 30 30 30 CC 55 AA 
    00 06 00 05 15 04 00 01 01 25 55 AA 00 06 00 10 18 03 00 0C 30 30 36 33 
    30 33 65 38 30 33 65 38 05 55 AA 00 06 00 19 1C 03 00 15 31 30 30 34 36 
    30 33 65 38 30 33 65 38 30 30 30 30 30 30 30 30 CD 55 AA 00 06 00 05 15 
    04 00 01 01 25 55 AA 00 06 00 10 18 03 00 0C 30 30 34 36 30 33 65 38 30 
    33 65 38 06 55 AA 00 06 00 19 1C 03 00 15 31 30 30 32 62 30 33 65 38 30 
    33 65 38 30 30 30 30 30 30 30 30 F7 55 AA 00 06 00 05 15 04 00 01 01 25 
    55 AA 00 06 00 10 18 03 00 0C 30 30 32 62 30 33 65 38 30 33 65 38 30 55 
    AA 00 06 00 19 1C 03 00 15 31 30 30 30 62 30 33 65 38 30 33 65 38 30 30 
    30 30 30 30 30 30 F5 55 AA 00 06 00 05 15 04 00 01 01 25 55 AA 00 06 00 
    10 18 03 00 0C 30 30 30 62 30 33 65 38 30 33 65 38 2E 55 AA 00 06 00 19 
    1C 03 00 15 31 30 31 35 64 30 33 65 38 30 33 65 38 30 30 30 30 30 30 30 
    30 FD 55 AA 00 06 00 05 15 04 00 01 01 25 55 AA 00 06 00 10 18 03 00 0C 
    30 31 35 64 30 33 65 38 30 33 65 38 36 55 AA 00 06 00 19 1C 03 00 15 31 
    30 31 33 37 30 33 65 38 30 33 65 38 30 30 30 30 30 30 30 30 CE 55 AA 00 
    06 00 05 15 04 00 01 01 25 55 AA 00 06 00 10 18 03 00 0C 30 31 33 37 30 
    33 65 38 30 33 65 38 07 55 AA 00 06 00 19 1C 03 00 15 31 30 31 32 32 30 
    33 65 38 30 33 65 38 30 30 30 30 30 30 30 30 C8 55 AA 00 06 00 05 15 04 
    00 01 01 25 55 AA 00 06 00 10 18 03 00 0C 30 31 32 32 30 33 65 38 30 33 
    65 38 01 55 AA 00 06 00 19 1C 03 00 15 31 30 31 30 34 30 33 65 38 30 33 
    65 38 30 30 30 30 30 30 30 30 C8 55 AA 00 06 00 05 15 04 00 01 01 25 55 
    AA 00 06 00 10 18 03 00 0C 30 31 30 34 30 33 65 38 30 33 65 38 01 55 AA 
    00 06 00 19 1C 03 00 15 31 30 30 65 62 30 33 65 38 30 33 65 38 30 30 30 
    30 30 30 30 30 2A 55 AA 00 06 00 05 15 04 00 01 01 25 55 AA 00 06 00 10 
    18 03 00 0C 30 30 65 62 30 33 65 38 30 33 65 38 63 55 AA 00 06 00 19 1C 
    03 00 15 31 30 30 64 30 30 33 65 38 30 33 65 38 30 30 30 30 30 30 30 30 
    F7 55 AA 00 06 00 05 15 04 00 01 01 25 55 AA 00 06 00 10 18 03 00 0C 30 
    30 64 30 30 33 65 38 30 33 65 38 30 55 AA 00 06 00 19 1C 03 00 15 31 30 
    30 62 31 30 33 65 38 30 33 65 38 30 30 30 30 30 30 30 30 F6 55 AA 00 06 
    00 05 15 04 00 01 01 25 55 AA 00 06 00 10 18 03 00 0C 30 30 62 31 30 33 
    65 38 30 33 65 38 2F  
    
    
    55 AA	00	06		00 19	1C030015313030363330336538303365383030303030303030	CC	
    HEADER	VER=00	SetDP		LEN	dpId=28 Str V=1006303e803e800000000		CHK	
    
    55 AA	00	06		00 05	1504000101	25	
    HEADER	VER=00	SetDP		LEN	dpId=21 Enum V=1		CHK	
    
    55 AA	00	06		00 10	1803000C303036333033653830336538	05	
    HEADER	VER=00	SetDP		LEN	dpId=24 Str V=006303e803e8 Col: ■		CHK	
    
    55 AA	00	06		00 19	1C030015313030343630336538303365383030303030303030	CD	
    HEADER	VER=00	SetDP		LEN	dpId=28 Str V=1004603e803e800000000		CHK	
    
    55 AA	00	06		00 05	1504000101	25	
    HEADER	VER=00	SetDP		LEN	dpId=21 Enum V=1		CHK	
    
    55 AA	00	06		00 10	1803000C303034363033653830336538	06	
    HEADER	VER=00	SetDP		LEN	dpId=24 Str V=004603e803e8 Col: ■		CHK	
    
    55 AA	00	06		00 19	1C030015313030326230336538303365383030303030303030	F7	
    HEADER	VER=00	SetDP		LEN	dpId=28 Str V=1002b03e803e800000000		CHK	
    
    55 AA	00	06		00 05	1504000101	25	
    HEADER	VER=00	SetDP		LEN	dpId=21 Enum V=1		CHK	
    
    55 AA	00	06		00 10	1803000C303032623033653830336538	30	
    HEADER	VER=00	SetDP		LEN	dpId=24 Str V=002b03e803e8 Col: ■		CHK	
    
    55 AA	00	06		00 19	1C030015313030306230336538303365383030303030303030	F5	
    HEADER	VER=00	SetDP		LEN	dpId=28 Str V=1000b03e803e800000000		CHK	
    
    55 AA	00	06		00 05	1504000101	25	
    HEADER	VER=00	SetDP		LEN	dpId=21 Enum V=1		CHK	
    
    55 AA	00	06		00 10	1803000C303030623033653830336538	2E	
    HEADER	VER=00	SetDP		LEN	dpId=24 Str V=000b03e803e8 Col: ■		CHK	
    
    55 AA	00	06		00 19	1C030015313031356430336538303365383030303030303030	FD	
    HEADER	VER=00	SetDP		LEN	dpId=28 Str V=1015d03e803e800000000		CHK	
    
    55 AA	00	06		00 05	1504000101	25	
    HEADER	VER=00	SetDP		LEN	dpId=21 Enum V=1		CHK	
    
    55 AA	00	06		00 10	1803000C303135643033653830336538	36	
    HEADER	VER=00	SetDP		LEN	dpId=24 Str V=015d03e803e8 Col: ■		CHK	
    
    55 AA	00	06		00 19	1C030015313031333730336538303365383030303030303030	CE	
    HEADER	VER=00	SetDP		LEN	dpId=28 Str V=1013703e803e800000000		CHK	
    
    55 AA	00	06		00 05	1504000101	25	
    HEADER	VER=00	SetDP		LEN	dpId=21 Enum V=1		CHK	
    
    55 AA	00	06		00 10	1803000C303133373033653830336538	07	
    HEADER	VER=00	SetDP		LEN	dpId=24 Str V=013703e803e8 Col: ■		CHK	
    
    55 AA	00	06		00 19	1C030015313031323230336538303365383030303030303030	C8	
    HEADER	VER=00	SetDP		LEN	dpId=28 Str V=1012203e803e800000000		CHK	
    
    55 AA	00	06		00 05	1504000101	25	
    HEADER	VER=00	SetDP		LEN	dpId=21 Enum V=1		CHK	
    
    55 AA	00	06		00 10	1803000C303132323033653830336538	01	
    HEADER	VER=00	SetDP		LEN	dpId=24 Str V=012203e803e8 Col: ■		CHK	
    
    55 AA	00	06		00 19	1C030015313031303430336538303365383030303030303030	C8	
    HEADER	VER=00	SetDP		LEN	dpId=28 Str V=1010403e803e800000000		CHK	
    
    55 AA	00	06		00 05	1504000101	25	
    HEADER	VER=00	SetDP		LEN	dpId=21 Enum V=1		CHK	
    
    55 AA	00	06		00 10	1803000C303130343033653830336538	01	
    HEADER	VER=00	SetDP		LEN	dpId=24 Str V=010403e803e8 Col: ■		CHK	
    
    55 AA	00	06		00 19	1C030015313030656230336538303365383030303030303030	2A	
    HEADER	VER=00	SetDP		LEN	dpId=28 Str V=100eb03e803e800000000		CHK	
    
    55 AA	00	06		00 05	1504000101	25	
    HEADER	VER=00	SetDP		LEN	dpId=21 Enum V=1		CHK	
    
    55 AA	00	06		00 10	1803000C303065623033653830336538	63	
    HEADER	VER=00	SetDP		LEN	dpId=24 Str V=00eb03e803e8 Col: ■		CHK	
    
    55 AA	00	06		00 19	1C030015313030643030336538303365383030303030303030	F7	
    HEADER	VER=00	SetDP		LEN	dpId=28 Str V=100d003e803e800000000		CHK	
    
    55 AA	00	06		00 05	1504000101	25	
    HEADER	VER=00	SetDP		LEN	dpId=21 Enum V=1		CHK	
    
    55 AA	00	06		00 10	1803000C303064303033653830336538	30	
    HEADER	VER=00	SetDP		LEN	dpId=24 Str V=00d003e803e8 Col: ■		CHK	
    
    55 AA	00	06		00 19	1C030015313030623130336538303365383030303030303030	F6	
    HEADER	VER=00	SetDP		LEN	dpId=28 Str V=100b103e803e800000000		CHK	
    
    55 AA	00	06		00 05	1504000101	25	
    HEADER	VER=00	SetDP		LEN	dpId=21 Enum V=1		CHK	
    
    55 AA	00	06		00 10	1803000C303062313033653830336538	2F	
    HEADER	VER=00	SetDP		LEN	dpId=24 Str V=00b103e803e8 Col: ■		CHK	
    
    
    

    Przesuwanie Dimmer od 100% do 0%:
    
    55 AA 00 06 00 19 1C 03 00 15 31 30 30 62 31 30 33 65 38 30 33 64 31 30 30 30 30 30 30 30 30 EE 55 AA 00 06 00 05 15 04 00 01 01 25 55 AA 00 06 00 10 18 03 00 0C 30 30 62 31 30 33 65 38 30 33 35 31 F8 55 AA 00 06 00 19 1C 03
     00 15 31 30 30 62 31 30 33 65 38 30 33 30 62 30 30 30 30 30 30 30 30 EB 55 AA 00 06 00 05 15 04 00 01 01 25 55 
    AA 00 06 00 10 18 03 00 0C 30 30 62 31 30 33 65 38 30 32 37 61 29 55 AA 00 06 00 19 1C 03 00 15 31 30 30 62 31 30 33 65 38 30 32 34 32 30 30 30 30 30 30 30 30 BE 55 AA 00 06 00 05 15 04 00 01 01 25 55 AA 00 06 00 10 18 03 00
     0C 30 30 62 31 30 33 65 38 30 31 39 36 FF 55 AA 00 06 00 19 1C 03 00 15 31 30 30 62 31 30 33 65 38 30 31 62 34 
    30 30 30 30 30 30 30 30 ED 55 AA 00 06 00 05 15 04 00 01 01 25 55 AA 00 06 00 10 18 03 00 0C 30 30 62 31 30 33 65 38 30 30 66 34 29 55 AA 00 06 00 19 1C 03 00 15 31 30 30 62 31 30 33 65 38 30 30 64 65 30 30 30 30 30 30 30 30
     1F 55 AA 00 06 00 05 15 04 00 01 01 25 55 AA 00 06 00 10 18 03 00 0C 30 30 62 31 30 33 65 38 30 30 33 64 26 55 
    AA 00 06 00 19 1C 03 00 15 31 30 30 62 31 30 33 65 38 30 30 33 39 30 30 30 30 30 30 30 30 C2 55 AA 00 06 00 05 15 04 00 01 01 25 55 AA 00 06 00 10 18 03 00 0C 30 30 62 31 30 33 65 38 30 30 30 61 20 55
    
    55 AA	00	06		00 19	1C030015313030623130336538303364313030303030303030	EE	
    HEADER	VER=00	SetDP		LEN	dpId=28 Str V=100b103e803d100000000		CHK	
    
    55 AA	00	06		00 05	1504000101	25	
    HEADER	VER=00	SetDP		LEN	dpId=21 Enum V=1		CHK	
    
    55 AA	00	06		00 10	1803000C303062313033653830333531	F8	
    HEADER	VER=00	SetDP		LEN	dpId=24 Str V=00b103e80351 Col: ■		CHK	
    
    55 AA	00	06		00 19	1C030015313030623130336538303330623030303030303030	EB	
    HEADER	VER=00	SetDP		LEN	dpId=28 Str V=100b103e8030b00000000		CHK	
    
    55 AA	00	06		00 05	1504000101	25	
    HEADER	VER=00	SetDP		LEN	dpId=21 Enum V=1		CHK	
    
    55 AA	00	06		00 10	1803000C303062313033653830323761	29	
    HEADER	VER=00	SetDP		LEN	dpId=24 Str V=00b103e8027a Col: ■		CHK	
    
    55 AA	00	06		00 19	1C030015313030623130336538303234323030303030303030	BE	
    HEADER	VER=00	SetDP		LEN	dpId=28 Str V=100b103e8024200000000		CHK	
    
    55 AA	00	06		00 05	1504000101	25	
    HEADER	VER=00	SetDP		LEN	dpId=21 Enum V=1		CHK	
    
    55 AA	00	06		00 10	1803000C303062313033653830313936	FF	
    HEADER	VER=00	SetDP		LEN	dpId=24 Str V=00b103e80196 Col: ■		CHK	
    
    55 AA	00	06		00 19	1C030015313030623130336538303162343030303030303030	ED	
    HEADER	VER=00	SetDP		LEN	dpId=28 Str V=100b103e801b400000000		CHK	
    
    55 AA	00	06		00 05	1504000101	25	
    HEADER	VER=00	SetDP		LEN	dpId=21 Enum V=1		CHK	
    
    55 AA	00	06		00 10	1803000C303062313033653830306634	29	
    HEADER	VER=00	SetDP		LEN	dpId=24 Str V=00b103e800f4 Col: ■		CHK	
    
    55 AA	00	06		00 19	1C030015313030623130336538303064653030303030303030	1F	
    HEADER	VER=00	SetDP		LEN	dpId=28 Str V=100b103e800de00000000		CHK	
    
    55 AA	00	06		00 05	1504000101	25	
    HEADER	VER=00	SetDP		LEN	dpId=21 Enum V=1		CHK	
    
    55 AA	00	06		00 10	1803000C303062313033653830303364	26	
    HEADER	VER=00	SetDP		LEN	dpId=24 Str V=00b103e8003d Col: ■		CHK	
    
    55 AA	00	06		00 19	1C030015313030623130336538303033393030303030303030	C2	
    HEADER	VER=00	SetDP		LEN	dpId=28 Str V=100b103e8003900000000		CHK	
    
    55 AA	00	06		00 05	1504000101	25	
    HEADER	VER=00	SetDP		LEN	dpId=21 Enum V=1		CHK	
    
    55 AA	00	06		00 10	1803000C303062313033653830303061	20	
    HEADER	VER=00	SetDP		LEN	dpId=24 Str V=00b103e8000a Col: ■		CHK	
    
    
    

    Na koniec porównanie pakietów.
    Kolor, czyli dpID 24:
    
        CC CC CC
    30 30 36 62 30 33 65 38 30 33 65 38 dpID 24 green
    30 31 36 31 30 33 65 38 30 33 65 38 dpID 24 red
    30 30 65 31 30 33 65 38 30 33 65 38 dpID 24 blue
    

    Kolor z temperaturą, czyli dpID 28:
    
          CC CC CC
    31 30 31 36 31 30 33 65 38 30 33 65 38 30 30 30 30 30 30 30 30 Setting Red
    31 30 30 65 31 30 33 65 38 30 33 65 38 30 30 30 30 30 30 30 30 Setting Blue
    31 30 30 36 66 30 33 65 38 30 33 65 38 30 30 30 30 30 30 30 30 Setting Green
    
    31 30 30 30 30 30 30 30 30 30 30 30 30 30 33 65 38 30 33 31 37 Temperature 75% cool
    31 30 30 30 30 30 30 30 30 30 30 30 30 30 33 65 38 30 31 66 37 Temperature 50% 
    31 30 30 30 30 30 30 30 30 30 30 30 30 30 33 65 38 30 33 65 38 Temperature cold
    31 30 30 30 30 30 30 30 30 30 30 30 30 30 33 65 38 30 30 30 30 Temperature Warm
    
    

    Mam również schema i tu też są dpID, ale wyciągnięte z serwerów Tuya:
    Kod: JSON
    Zaloguj się, aby zobaczyć kod

    Podsumowując, mamy tu zmienne:
    - dpID 20 - boolean, stan on/off
    - dpID 21 - enum, tryb pracy, kolejno: barwy bieli, kolor, animacja, muzyka
    - dpID 22 - value, od 1 do 1000, chyba poziom jasności, ale występuje tylko w trybie bieli, nie RGB
    - dpID 23 - value, od 0 do 1000, temperatura bieli
    - dpID 24 - kolor RGB jako ASCII string
    - dpID 26 - value, timer w sekundach
    - dpID 28 - kolor RGBCW jako ASCII string



    Wgrywanie OBK
    Wgrywamy moim flasherem:
    https://github.com/openshwprojects/BK7231GUIFlashTool
    Niestety trzeba wyjąć (bądź wylutować - zależy od wersji PCB) moduł WiFi poza układ, bo TuyaMCU korzysta z tego samego portu UART co programowanie.
    Nietypowy kontroler paska LED Miboxer FUT037W+ z TuyaMCU - protokół komunikacji, OpenBeken
    Potem musimy utworzyć autoexec.bat:
    
    // start driver
    startDriver TuyaMCU
    // always send wifi state 0x04 to MCU - paired and connected to cloud
    tuyaMcu_defWiFiState 4
    // set baud rate (if your device is using 9600, remove this line)
    tuyaMcu_setBaudRate 115200
    // setup Tuya LED color dpID 24 and Color format 1
    // (the other dpIDs are taken from default settings)
    tuyaMCU_setupLED 24 1
    

    Kod jest naprawdę bardzo krótki, ale pozostałe dpID są ustawione wedle wartości domyślnych. OBK na ten moment nie wysyła dpID 28, ale testy pokazały, że starcza wysłanie dpID 22.
    Powyższy kod połączy sterownik LED z OBK z MCU z tego urządzenia, więc wszystkie komendy LED, jak również i Home Assistant Discovery z automatu zadziała.

    Podsumowanie
    Testowałem już kilka produktów Miboxer (też przekaźniki) i wygląda na to, że one wszystkie mają podobną budowę. Zawsze tam jest TuyaMCU i osobno moduł WiFi. Jest tam też możliwość podłączenia RF, ale tym razem tego nie testowałem.
    Urządzenie to jest troszkę bardziej złożone niż typowe kontrolery pasków LED ale mimo wszystko udało uwolnić się je od chmury. Nasz sterownik TuyaMCU LED w OBK jest dość świeży, więc w razie pytań bądź problemów proszę pisać śmiało, postaramy się pomóc.
    Co do samej budowy - na pewno tranzystory w środku są lepsze niż w kontrolerze który testowałem (i naprawiałem) kiedyś w temacie WiFi SmartLife ściemniacz jednokolorowego paska LED - test, wnętrze, schemat, więc w zasadzie chyba można polecić ten produkt i do nieco większych instalacji.
    PS: Powiązane tematy na forum:
    - Miboxer FUT036w and CB3s Issues: Flashing Firmware, WiFi Connectivity, and Button Control
    - Does MiBoxer FUT035W+ has Beken chipset and is it supported with OpenBeken?
    PS2: Jeśli nie podoba nam się użycie TuyaMCU w tym produkcie i nie potrzebujemy RF to zawsze można wylutować MCU i zrobić zworki do pinów PWM samego modułu z BK ale w tej wersji PCB byłoby to dość problematyczne

    Fajne? Ranking DIY
    Pomogłem? Kup mi kawę.
    O autorze
    p.kaczmarek2
    Moderator Smart Home
    Offline 
  • #2 20990322
    p.kaczmarek2
    Moderator Smart Home
    Znowu flashowałem ten pasek. Tym razem dla kogoś innego. Opakowanie i produkt:
    Nietypowy kontroler paska LED Miboxer FUT037W+ z TuyaMCU - protokół komunikacji, OpenBeken Nietypowy kontroler paska LED Miboxer FUT037W+ z TuyaMCU - protokół komunikacji, OpenBeken Nietypowy kontroler paska LED Miboxer FUT037W+ z TuyaMCU - protokół komunikacji, OpenBeken Nietypowy kontroler paska LED Miboxer FUT037W+ z TuyaMCU - protokół komunikacji, OpenBeken Nietypowy kontroler paska LED Miboxer FUT037W+ z TuyaMCU - protokół komunikacji, OpenBeken
    Apka:
    Nietypowy kontroler paska LED Miboxer FUT037W+ z TuyaMCU - protokół komunikacji, OpenBeken Nietypowy kontroler paska LED Miboxer FUT037W+ z TuyaMCU - protokół komunikacji, OpenBeken Nietypowy kontroler paska LED Miboxer FUT037W+ z TuyaMCU - protokół komunikacji, OpenBeken Nietypowy kontroler paska LED Miboxer FUT037W+ z TuyaMCU - protokół komunikacji, OpenBeken
    Wnętrze:
    Nietypowy kontroler paska LED Miboxer FUT037W+ z TuyaMCU - protokół komunikacji, OpenBeken Nietypowy kontroler paska LED Miboxer FUT037W+ z TuyaMCU - protokół komunikacji, OpenBeken Nietypowy kontroler paska LED Miboxer FUT037W+ z TuyaMCU - protokół komunikacji, OpenBeken Nietypowy kontroler paska LED Miboxer FUT037W+ z TuyaMCU - protokół komunikacji, OpenBeken Nietypowy kontroler paska LED Miboxer FUT037W+ z TuyaMCU - protokół komunikacji, OpenBeken
    Na czas flashowania zdjąłem CB3S gorącym powietrzem:
    Nietypowy kontroler paska LED Miboxer FUT037W+ z TuyaMCU - protokół komunikacji, OpenBeken Nietypowy kontroler paska LED Miboxer FUT037W+ z TuyaMCU - protokół komunikacji, OpenBeken Nietypowy kontroler paska LED Miboxer FUT037W+ z TuyaMCU - protokół komunikacji, OpenBeken

    Added after 26 [seconds]:

    Na ten moment - wnętrze bez zmian.
    Pomogłem? Kup mi kawę.
REKLAMA