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

Odkrywanie zaawansowanych konfiguracji Atomi Smart Color String Lights z OpenBeken

phobiac 17 Lis 2023 21:47 4389 15
REKLAMA
Treść została przetłumaczona angielski » polski Zobacz oryginalną wersję tematu
  • #1 20820312
    phobiac
    Poziom 4  
    Posty: 10
    Pomógł: 1
    Ocena: 1
    To bardziej prośba o pomoc niż udana konfiguracja!

    Mam kilka lampek sznurkowych pochodzących od marki Atomi Smart, które były szczególnie atrakcyjne ze względu na możliwość indywidualnego adresowania. Niestety, aplikacja Smart Life nie pozwala na zbyt dużą konfigurację świateł poza kilkoma słabo wykonanymi scenami wbudowanymi w nią. Szukając sposobu na zastąpienie tego oprogramowania czymś bardziej wydajnym, trafiłem na openbeken.

    Te światła są nieco dziwne, jeśli chodzi o moduł Wi-Fi. Istnieje bardzo dobrze napisany teardown na tym blogu, który dotyczy starszej wersji tych świateł wykorzystującej moduł TYWE3S oparty na ESP8266. Jednak te, które mam (a przynajmniej te, które do tej pory otworzyłem) mają moduł CB3S. Zobacz zdjęcia poniżej.
    Zbliżenie wnętrza modułu oświetleniowego z podzespołami elektronicznymi i okablowaniem. Etykieta zasilacza lampek sznurkowych Atomi Smart z informacjami technicznymi.
    Udało mi się pomyślnie sflashować OpenBeken do urządzenia, ale jestem trochę zagubiony co do dalszych kroków. Przeczytałem ten poradnik ale jestem trochę nowy na tym poziomie hakowania sprzętu i miałem nadzieję na jakieś wskazówki. Próbowałem ustawić wysokie / niskie na różnych pinach w wyszukiwarce GPIO, ale nie widziałem żadnej reakcji ze strony moich świateł.
  • REKLAMA
  • Pomocny post
    #2 20820680
    p.kaczmarek2
    Moderator Smart Home
    Posty: 14662
    Pomógł: 656
    Ocena: 12672
    Witam, czy próbowałeś automatycznej ekstrakcji GPIO?



    Czy możesz załączyć tutaj wyodrębnione dane?
    Pomogłem? Kup mi kawę.
  • #3 20824884
    phobiac
    Poziom 4  
    Posty: 10
    Pomógł: 1
    Ocena: 1

    Albo zrobiłem coś źle, albo to będzie bardziej skomplikowane
    {
    	"baud":"9600",
    	"ap_passwd":"null",
    	"country_code":"null",
    	"bt_mac":"null",
    	"bt_hid":"null",
    	"prod_test":"false",
    	"fac_pin":"ey6nevs5gaj456n0"
    }
    

    Narzędzie do flashowania daje to ostrzeżenie:
    Cytat:
    Przepraszamy, nie znaleziono znaczących danych pinów. To urządzenie może być TuyaMCU lub niestandardowym urządzeniem bez danych konfiguracyjnych Tuya.
    Znaleziono słowo kluczowe Baud, to urządzenie może być TuyaMCU lub BL0942. Wartość transmisji to 9600.
    Nie znaleziono informacji o module.
    A sekcja Tuya zaczyna się od UNCOMMON POSITION 0

    .
  • REKLAMA
  • Pomocny post
    #4 20824904
    p.kaczmarek2
    Moderator Smart Home
    Posty: 14662
    Pomógł: 656
    Ocena: 12672
    Wskazuje to, że może to być urządzenie TuyaMCU.

    Przejdź do aplikacji internetowej i w zakładce LittleFS utwórz autoexec.bat o następującej treści:
    
    // start TuyaMCU driver
    startDriver TuyaMCU
    // set TuyaMCU default wifi state 0x04, which means "paired",
    // because some TuyaMCU MCUs will not report all data
    // unless they think they are connected to cloud
    tuyaMcu_defWiFiState 4
    

    Następnie zapisz, a następnie wyłącz całkowicie całe urządzenie (wyciągnij wtyczkę) i podłącz je ponownie.
    Pozostaw dziennik aplikacji internetowej otwarty.
    Skopiuj tutaj dziennik aplikacji internetowej, abyśmy mogli sprawdzić, czy są jakieś pakiety TuyaMCU.

    Następnie możesz również spróbować uruchomić następujące polecenie w dzienniku aplikacji internetowej i obserwować odpowiedź:
    
    tuyaMcu_sendQueryState
    

    BTW, zajrzałem do podlinkowanego artykułu, wydaje się, że usunęli U3, który jest MCU TuyaMCU, ale nie sądzę, że jest to dobre rozwiązanie, lepiej byłoby go użyć:
    Zbliżenie na płytkę elektroniczną z modułem TYWE3S i oznaczeniami pinów oraz miejscem po usuniętym chipie U3.
    Masz oryginalną kopię zapasową firmware (2MB)?
    Pomogłem? Kup mi kawę.
  • REKLAMA
  • #5 20825499
    phobiac
    Poziom 4  
    Posty: 10
    Pomógł: 1
    Ocena: 1
    Niestety nie mogę zrzucić istniejącego oprogramowania układowego. Mam niezflashowane urządzenie, które właśnie otworzyłem i otrzymuję to, gdy próbuję

    Cytat:
    Rozpoczęcie odczytu przy przesunięciu 0x00...
    Odczyt 0x00... nie powiódł się z serial.BytesToRead 4095 (oczekiwano 4111)
    Początek bufora w UART zawiera dane 040EFF01E0FCF40610090000200069.
    Nie powiodło się! There was no result to save.

    Oto jednak log po restarcie urządzenia ze skryptem autoexec.bat skonfigurowanym zgodnie z instrukcją

    AMCU received: 55 AA 03 00 00 01 01 04 
    Info:TuyaMCU:TuyaMCU_ProcessIncoming[ver=3]: processing command 0 (Hearbeat) with 8 bytes
    Info:MAIN:Time 14, idle 201199/s, free 73448, MQTT 0(0), bWifi 0, secondsWithNoPing -1, socks 2/38 
    Info:MAIN:Time 15, idle 189624/s, free 73448, MQTT 0(0), bWifi 0, secondsWithNoPing -1, socks 2/38 
    Info:MAIN:Time 16, idle 188718/s, free 73448, MQTT 0(0), bWifi 0, secondsWithNoPing -1, socks 2/38 
    Info:MAIN:Time 17, idle 190203/s, free 73448, MQTT 0(0), bWifi 0, secondsWithNoPing -1, socks 2/38 
    Info:TuyaMCU:TUYAMCU received: 55 AA 03 00 00 01 01 04 
    Info:TuyaMCU:TuyaMCU_ProcessIncoming[ver=3]: processing command 0 (Hearbeat) with 8 bytes
    Info:MAIN:Time 18, idle 189802/s, free 73448, MQTT 0(0), bWifi 0, secondsWithNoPing -1, socks 2/38 
    Info:MAIN:Time 19, idle 187656/s, free 73448, MQTT 0(0), bWifi 0, secondsWithNoPing -1, socks 2/38 
    Info:MAIN:Time 20, idle 377773/s, free 73448, MQTT 0(0), bWifi 0, secondsWithNoPing -1, socks 2/38 
    Info:GEN:dhcp=0 ip=0.0.0.0 gate=0.0.0.0 mask=0.0.0.0 mac=10:5a:17:9d:f9:94
    Info:GEN:sta: 0, softap: 0, b/g/n
    Info:MAIN:Main_OnWiFiStatusChange - WIFI_STA_AUTH_FAILED - 3
    Info:MAIN:Time 21, idle 182566/s, free 71056, MQTT 0(0), bWifi 0, secondsWithNoPing -1, socks 2/38 
    Info:TuyaMCU:TUYAMCU received: 55 AA 03 00 00 01 01 04 
    Info:TuyaMCU:TuyaMCU_ProcessIncoming[ver=3]: processing command 0 (Hearbeat) with 8 bytes
    Info:MAIN:Time 22, idle 184355/s, free 70616, MQTT 0(0), bWifi 0, secondsWithNoPing -1, socks 2/38 
    Info:MAIN:Main_OnWiFiStatusChange - WIFI_STA_CONNECTING - 1
    Info:MAIN:Time 23, idle 185826/s, free 71520, MQTT 0(0), bWifi 0, secondsWithNoPing -1, socks 2/38 
    Info:MAIN:Main_OnWiFiStatusChange - WIFI_STA_DISCONNECTED - 2
    Info:MAIN:Time 24, idle 187216/s, free 73440, MQTT 0(0), bWifi 0, secondsWithNoPing -1, socks 2/38 
    Info:MAIN:Time 25, idle 188214/s, free 73440, MQTT 0(0), bWifi 0, secondsWithNoPing -1, socks 2/38 
    Info:TuyaMCU:TUYAMCU received: 55 AA 03 00 00 01 01 04 
    Info:TuyaMCU:TuyaMCU_ProcessIncoming[ver=3]: processing command 0 (Hearbeat) with 8 bytes
    Info:MAIN:Time 26, idle 190633/s, free 73440, MQTT 0(0), bWifi 0, secondsWithNoPing -1, socks 2/38 
    Info:MAIN:Time 27, idle 190000/s, free 73440, MQTT 0(0), bWifi 0, secondsWithNoPing -1, socks 2/38 
    Info:MAIN:Time 28, idle 188415/s, free 73440, MQTT 0(0), bWifi 0, secondsWithNoPing -1, socks 2/38 
    Info:MAIN:Time 29, idle 378538/s, free 73440, MQTT 0(0), bWifi 0, secondsWithNoPing -1, socks 2/38 
    Info:TuyaMCU:TUYAMCU received: 55 AA 03 00 00 01 01 04 
    Info:TuyaMCU:TuyaMCU_ProcessIncoming[ver=3]: processing command 0 (Hearbeat) with 8 bytes
    Info:MAIN:Time 30, idle 189789/s, free 73440, MQTT 0(0), bWifi 0, secondsWithNoPing -1, socks 2/38 
    Info:GEN:dhcp=0 ip=0.0.0.0 gate=0.0.0.0 mask=0.0.0.0 mac=10:5a:17:9d:f9:94
    Info:GEN:sta: 0, softap: 0, b/g/n
    Info:MAIN:Time 31, idle 186953/s, free 73440, MQTT 0(0), bWifi 0, secondsWithNoPing -1, socks 2/38 
    Info:MAIN:Time 32, idle 190055/s, free 73440, MQTT 0(0), bWifi 0, secondsWithNoPing -1, socks 2/38 
    Info:MAIN:Main_OnWiFiStatusChange - WIFI_STA_AUTH_FAILED - 3
    Info:MAIN:Time 33, idle 187232/s, free 73512, MQTT 0(0), bWifi 0, secondsWithNoPing -1, socks 2/38 
    Info:TuyaMCU:TUYAMCU received: 55 AA 03 00 00 01 01 04 
    Info:TuyaMCU:TuyaMCU_ProcessIncoming[ver=3]: processing command 0 (Hearbeat) with 8 bytes
    Info:MAIN:Time 34, idle 187475/s, free 70712, MQTT 0(0), bWifi 0, secondsWithNoPing -1, socks 2/38 
    Info:MAIN:Time 35, idle 187413/s, free 70712, 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:MAIN:Main_OnWiFiStatusChange - WIFI_STA_CONNECTED - 4
    Info:MAIN:Time 36, idle 170540/s, free 73280, MQTT 0(0), bWifi 1, secondsWithNoPing -1, socks 2/38 
    Info:MAIN:Time 37, idle 194262/s, free 73320, MQTT 0(0), bWifi 1, secondsWithNoPing -1, socks 2/38 
    Info:TuyaMCU:TUYAMCU received: 55 AA 03 00 00 01 01 04 
    Info:TuyaMCU:TuyaMCU_ProcessIncoming[ver=3]: processing command 0 (Hearbeat) with 8 bytes
    Info:MQTT:mqtt_host empty, not starting mqtt
    Info:MAIN:Time 38, idle 192621/s, free 73320, MQTT 0(1), bWifi 1, secondsWithNoPing -1, socks 2/38 
    Info:MAIN:Time 39, idle 190891/s, free 73320, MQTT 0(1), bWifi 1, secondsWithNoPing -1, socks 2/38 
    Info:MAIN:Time 40, idle 189853/s, free 73320, MQTT 0(1), bWifi 1, secondsWithNoPing -1, socks 2/38 
    Info:GEN:dhcp=0 ip=REDACTED gate=REDACTED mask=255.255.252.0 mac=10:5a:17:9d:f9:94
    Info:GEN:sta: 1, softap: 0, b/g/n
    Info:GEN:sta:rssi=-51,ssid=REDACTED,bssid=REDACTED,channel=2,cipher_type:CCMP
    Info:MAIN:Time 41, idle 206394/s, free 73320, MQTT 0(1), bWifi 1, secondsWithNoPing -1, socks 2/38 
    Info:TuyaMCU:TUYAMCU received: 55 AA 03 00 00 01 01 04

    Potem robi się nieco powtarzalnie. Jeśli dobrze to odczytuję, łączy się z moją siecią bezprzewodową zgodnie z oczekiwaniami.

    Oto dane wyjściowe z uruchomienia polecenia tuyaMcu_sendQueryState

    Info:CMD:[WebApp Cmd 'tuyaMcu_sendQueryState' Result] OK
    Info:TuyaMCU:TUYAMCU received: 55 AA 03 07 00 05 01 01 00 01 01 12 
    Info:TuyaMCU:TuyaMCU_ProcessIncoming[ver=3]: processing command 7 (State) with 12 bytes
    Info:TuyaMCU:TuyaMCU_ParseStateMessage: processing dpId 1, dataType 1-DP_TYPE_BOOL and 1 data bytes
    Info:TuyaMCU:TuyaMCU_ParseStateMessage: raw data 1 byte: 1
    Info:TuyaMCU:TUYAMCU received: 55 AA 03 07 00 05 02 04 00 01 0A 1F 
    Info:TuyaMCU:TuyaMCU_ProcessIncoming[ver=3]: processing command 7 (State) with 12 bytes
    Info:TuyaMCU:TuyaMCU_ParseStateMessage: processing dpId 2, dataType 4-DP_TYPE_ENUM and 1 data bytes
    Info:TuyaMCU:TuyaMCU_ParseStateMessage: raw data 1 byte: 10
    Info:TuyaMCU:TUYAMCU received: 55 AA 03 07 00 08 03 02 00 04 00 00 00 FF 19 
    Info:TuyaMCU:TuyaMCU_ProcessIncoming[ver=3]: processing command 7 (State) with 15 bytes
    Info:TuyaMCU:TuyaMCU_ParseStateMessage: processing dpId 3, dataType 2-DP_TYPE_VALUE and 4 data bytes
    Info:TuyaMCU:TuyaMCU_ParseStateMessage: raw data 4 int: 255
    Info:TuyaMCU:TUYAMCU received: 55 AA 03 07 00 08 04 02 00 04 00 00 00 00 1B 
    Info:TuyaMCU:TuyaMCU_ProcessIncoming[ver=3]: processing command 7 (State) with 15 bytes
    Info:TuyaMCU:TuyaMCU_ParseStateMessage: processing dpId 4, dataType 2-DP_TYPE_VALUE and 4 data bytes
    Info:TuyaMCU:TuyaMCU_ParseStateMessage: raw data 4 int: 0
    Info:TuyaMCU:TUYAMCU received: 55 AA 03 07 00 12 05 03 00 0E 66 66 30 30 30 30 30 30 30 30 66 66 66 66 15 
    Info:TuyaMCU:TuyaMCU_ProcessIncoming[ver=3]: processing command 7 (State) with 25 bytes
    Info:TuyaMCU:TuyaMCU_ParseStateMessage: processing dpId 5, dataType 3-DP_TYPE_STRING and 14 data bytes
    Info:TuyaMCU:TUYAMCU received: 55 AA 03 07 00 18 65 03 00 14 66 66 66 66 30 35 30 32 66 66 30 30 30 30 66 66 66 66 30 30 80 
    Info:TuyaMCU:TuyaMCU_ProcessIncoming[ver=3]: processing command 7 (State) with 31 bytes
    Info:TuyaMCU:TuyaMCU_ParseStateMessage: processing dpId 101, dataType 3-DP_TYPE_STRING and 20 data bytes

    Światła mają przycisk zasilania, który również przełącza się między kilkoma wstępnie ustawionymi scenami. Oto kilka logów przechwyconych podczas kilkukrotnego naciśnięcia tego przycisku.
    nfo:TuyaMCU:TuyaMCU_ProcessIncoming[ver=3]: processing command 7 (State) with 12 bytes
    Info:TuyaMCU:TuyaMCU_ParseStateMessage: processing dpId 2, dataType 4-DP_TYPE_ENUM and 1 data bytes
    Info:TuyaMCU:TuyaMCU_ParseStateMessage: raw data 1 byte: 5
    
    Info:TuyaMCU:TuyaMCU_ProcessIncoming[ver=3]: processing command 7 (State) with 12 bytes
    Info:TuyaMCU:TuyaMCU_ParseStateMessage: processing dpId 2, dataType 4-DP_TYPE_ENUM and 1 data bytes
    Info:TuyaMCU:TuyaMCU_ParseStateMessage: raw data 1 byte: 6
    
    Info:TuyaMCU:TuyaMCU_ProcessIncoming[ver=3]: processing command 7 (State) with 12 bytes
    Info:TuyaMCU:TuyaMCU_ParseStateMessage: processing dpId 2, dataType 4-DP_TY f and 1 data bytes
    Info:TuyaMCU:TuyaMCU_ParseStateMessage: raw data 1 byte: 7

    Wartość 1 bajtu surowych danych wydaje się mieścić w zakresie 0-10
  • #6 20825510
    p.kaczmarek2
    Moderator Smart Home
    Posty: 14662
    Pomógł: 656
    Ocena: 12672
    phobiac napisał:
    Niestety nie mogę zrzucić istniejącego firmware. Mam niezflashowane urządzenie, które właśnie otworzyłem i otrzymuję to, gdy próbuję

    Cytat:
    Zaczynam czytać z przesunięciem 0x00....
    Odczyt 0x00... nie powiódł się z serial.BytesToRead 4095 (oczekiwano 4111)
    Początek bufora w UART zawiera dane 040EFF01E0FCF40610090000200069.
    Nie udało się! Nie udało się zapisać wyniku.

    To jest urządzenie TuyaMCU. Flashowanie może się nie powieść, ponieważ ten sam port, którego używamy do flashowania, jest używany do komunikacji z TuyaMCU. Być może trzeba najpierw przerwać połączenie.
    Można również spróbować starego flashera Pythona - hid_download_py, zobacz: https://www.youtube.com/watch?v=PKkiqDNFIx8

    Te dane TuyaMCU wyglądają dobrze, musimy przyjrzeć się temu głębiej, dowiedzieć się, co oznacza każdy dpID, a następnie można wysłać je z OBK, aby kontrolować pasek LED.
    Pomogłem? Kup mi kawę.
  • REKLAMA
  • #7 20825577
    phobiac
    Poziom 4  
    Posty: 10
    Pomógł: 1
    Ocena: 1
    hid_download.py pozwolił mi zrzucić firmware z ciągu świateł, które nie zostały sflashowane, załączyłem go tutaj, ale mogę również przeprowadzić własną analizę, jeśli masz informacje o tym, jak mnie połączyć.

    Próbowałem przeanalizować dpID, ale nie jestem zaznajomiony z tym procesem. Losowa zmiana rzeczy w GPIO Doctor nie doprowadziła mnie zbyt daleko. Czy istnieje sposób na replikowanie wysyłania danych, które zostały zarejestrowane po naciśnięciu przycisku zasilania/sceny i modyfikowanie ich fragmentów, aby zobaczyć, co się zmienia? Schemat układu CB3S znajduje się tutaj , jeśli to pomoże cokolwiek zawęzić.

    Bardzo doceniam dotychczasowe wskazówki!
    Załączniki:
    • atomi_smart_AT082021_CB3S.bin (1.1 MB) Musisz być zalogowany, aby pobrać ten załącznik.
  • Pomocny post
    #8 20826031
    p.kaczmarek2
    Moderator Smart Home
    Posty: 14662
    Pomógł: 656
    Ocena: 12672
    phobiac napisał:
    hid_download.py pozwolił mi zrzucić firmware z ciągu świateł, które mam, a które nie zostały sflashowane, załączyłem go tutaj, ale mogę też przeprowadzić własną analizę, jeśli masz informacje, jak mnie połączyć.

    W tym przypadku to już nie pomoże.
    Możesz uzyskać znaczenia dpID, jeśli zastosujesz się do tego przewodnika (mniej więcej, sam nie próbowałem):
    https://www.zigbee2mqtt.io/advanced/support-new-devices/03_find_tuya_data_points.html

    phobiac napisał:

    Losowa zmiana rzeczy w GPIO Doctor nie doprowadziła mnie zbyt daleko.

    GPIO nie jest używane, gdy TuyaMCU jest aktywne, więc nie pomoże. Wszystkie dane przechodzą przez UART.

    phobiac napisał:
    Czy jest sposób, abym mógł replikować wysyłanie danych, które zostały zarejestrowane po naciśnięciu przycisku zasilania / sceny i modyfikować ich fragmenty, aby zobaczyć, co się zmienia?

    Sugerowałbym wykonanie pierwszego przechwytywania UART bez analizatora https://github.com/openshwprojects/TuyaMCUAnalyzer i zaobserwowanie jakie operacje w aplikacji Tuya powodują jakie pakiety są wysyłane na oryginalnym firmware Tuya, ale w obk można też ręcznie wysłać stany z:
    
    tuyaMcu_sendState	[dpID] [dpType] [dpValue]
    
    Tabela z poleceniem tuyaMcu_sendState w dokumentacji.
    https://github.com/openshwprojects/OpenBK7231T_App/blob/main/docs/commands.md

    Na przykład, można go użyć do wysłania dpID 1, bool, który może być włączony lub wyłączony:
    
    Info:TuyaMCU:TuyaMCU_ProcessIncoming[ver=3]: processing command 7 (State) with 12 bytes
    Info:TuyaMCU:TuyaMCU_ParseStateMessage: processing dpId 1, dataType 1-DP_TYPE_BOOL and 1 data bytes
    Info:TuyaMCU:TuyaMCU_ParseStateMessage: raw data 1 byte: 1
    

    Później, można po prostu przemapować dpID do kanału w OBK, aby uzyskać przycisk panelu WWW. Dodaj następujące polecenie do skryptu autoexec.bat:
    
    setChannelType 1 toggle
    // linkTuyaMCUOutputToChannel dpId verType tgChannel
    linkTuyaMCUOutputToChannel 1 bool 1
    

    Poniższe polecenie powinno ustawić kanał 1 OBK na przełączanie, a następnie zmapować go jako wartość logiczną na dpID 1. Następnie na panelu WWW OBK pojawi się przycisk. Przełączenie tego przycisku spowoduje automatyczne wysłanie ustawienia dpID 1 (boolean) na 1 lub 0 do TuyaMCU. Będzie to również odbierać zmiany z TuyaMCU (na przykład, jeśli urządzenie ma fizyczny przycisk, który jest podłączony do MCU).
    Czytaj więcej na: https://github.com/openshwprojects/OpenBK7231T_App/blob/main/docs/autoexecExamples.md
    Pomogłem? Kup mi kawę.
  • #9 20826813
    phobiac
    Poziom 4  
    Posty: 10
    Pomógł: 1
    Ocena: 1
    Ok, bawię się komendą tuyaMcu_sendState i wygląda na to, że mogę przełączać się między różnymi zaprogramowanymi scenami. Pobawię się tym bardziej i udokumentuję to, co znajdę.

    Jeśli chodzi o TuyaMCU Analyzer, muszę robić coś nie tak. Myślę, że źle rozumiem, jak go używać. Czy powinienem podłączyć mój konwerter serial-to-usb do niezflashowanego urządzenia, czy do tego z flashowanym OpenBekenem? Dodatkowo, czy powinienem przylutować się do tej samej pary pinów RX/TX, której użyłbym do flashowania, czy też powinno to być podłączone bezpośrednio do układu TM1814, który jest układem MCU?
  • #10 20826835
    p.kaczmarek2
    Moderator Smart Home
    Posty: 14662
    Pomógł: 656
    Ocena: 12672
    phobiac napisał:
    Dobrze, bawię się komendą tuyaMcu_sendState i wygląda na to, że mogę przełączać się między różnymi zaprogramowanymi scenami. Pobawię się tym bardziej i udokumentuję to, co znajdę.

    Pracujemy również nad "bezpośrednim" sterownikiem LED, aby w przyszłości można było pominąć układ MCU, ale nie jest on jeszcze gotowy.

    phobiac napisał:

    Jeśli chodzi o TuyaMCU Analyzer, muszę robić coś źle. Myślę, że źle rozumiem, jak go używać. Czy powinienem podłączyć mój konwerter serial-to-usb do niezflashowanego urządzenia, czy do tego z flashowanym OpenBekenem? Dodatkowo, czy powinienem przylutować się do tej samej pary pinów RX/TX, której użyłbym do flashowania, czy też powinno to być podłączone bezpośrednio do układu TM1814, który według Ciebie jest układem MCU?

    Analizator TuyaMCU służy oczywiście do przechwytywania komunikacji z oryginalnym firmware Tuya, abyśmy mogli później odtworzyć ją w OBK. Przechwytywanie odbywa się osobno na obu liniach, najpierw RX(WiFI)->TX(MCU), a następnie TX(WiFI)->RX(MCU). Przechwytywanie powinno być wykonywane podczas wykonywania operacji w aplikacji Tuya i należy zanotować każdą wykonywaną operację, aby można było powiedzieć, co się dzieje, gdy na przykład włączasz światło lub zmieniasz jasność na 50% lub ustawiasz kolor na zielony....
    Pomogłem? Kup mi kawę.
  • #11 20827184
    phobiac
    Poziom 4  
    Posty: 10
    Pomógł: 1
    Ocena: 1
    Ogromny postęp!

    Oto mój obecny autoexec.bat
    
    // start TuyaMCU driver
    startDriver TuyaMCU
    // set TuyaMCU default wifi state 0x04, which means "paired",
    // because some TuyaMCU MCUs will not report all data
    // unless they think they are connected to cloud
    tuyaMcu_defWiFiState 4
    
    // setChannelType 2 toggle
    // linkTuyaMCUOutputToChannel dpId verType tgChannel
    
    // On/Off
    setChannelType 1 toggle
    linkTuyaMCUOutputToChannel 1 bool 1
    
    // Set scene/mode, ranges from 2-10 with 9 (the pick 2 scene) being a special case that uses dpId 101 to set the 2 colors
    setChannelType 2 
    linkTuyaMCUOutputToChannel 2 enum 2
    
    // Set brightness for white mode
    setChannelType 3 dimmer256
    linkTuyaMCUOutputToChannel 3 val 3
    
    // Set color temp for white mode, ranges from 1 - 255
    setChannelType 4 textfield
    linkTuyaMCUOutputToChannel 4 val 4
    
    // Set color
    // Uses a string that sets RGBW color, brightness, and saturation
    // Red only	brightness 100	Saturation 100: 	ff00000000ffff
    // Green only	brightness 100	Saturation 100: 	00ff000000ffff
    // Blue only	brightness 100	Saturation 100: 	0000ff0000ffff
    // White only 	DOES NOT WORK, USE dpId 3		000000ff00ffff
    // White all 	brightness 100	Saturation 100:		ffffff0000ffff
    // 
    // ex.) tuyaMcu_sendState 5 3-DP_TYPE_STRING ff00000000ffff
    setChannelType 5 textfield
    linkTuyaMCUOutputToChannel 5 string 5
    
    // Set colors for pick 2
    setChannelType 6 textfield
    linkTuyaMCUOutputToChannel 101 string 6
    

    Ma kilka problemów, które wynikają raczej z mojej nieznajomości narzędzi. Po pierwsze, nie mogę dowiedzieć się, jak poprawnie ustawić temperaturę barwową w trybie białym lub ustawić rzeczy dla ręcznego selektora kolorów. Uruchomienie polecenia bezpośrednio z odpowiednim ciągiem znaków działa, ale w interfejsie WWW TextField z jakiegoś powodu wydaje się akceptować tylko wartości liczbowe. W przypadku selektora scen/trybów nie mogę wymyślić, jak ograniczyć zakres.

    Oto ogólny podział tego, czego nauczyłem się dla tego urządzenia.

    Istnieje 6 dpIds zaczerpniętych ze strony deweloperskiej Tuya
    1 - Switch - On/Off, boolean
    2 - Mode - Przełącznik sceny, wartość, zakresy od 0-10 ze sceną 9 również używającą dpId 101
    3 - Brightness - Jasność żarówki w trybie białym, wartość, zakresy od 5-255
    4 - White Temperature - Temperatura koloru w trybie białym, wartość, zakres od 1-255
    5 - Dane koloru - Ręcznie ustawiony kolor, ciąg znaków, wykorzystuje 14-znakowy ciąg znaków do ustawienia koloru, nasycenia i jasności
    101 - 颜色 (Tłumaczenie na kolor) - Ręcznie ustawione 2 kolory dla sceny 9, ciąg znaków, wykorzystuje 19-znakowy ciąg znaków do ustawienia 2 kolorów, nasycenia i jasności

    Wartości numeryczne dla scen z dpId 2 to:
    0 - Nie zaznaczone w aplikacji, wygląda na to, że są to ostatnio używane ustawienia trybu białego
    1 - Nie zaznaczone w aplikacji, wygląda na to, że są to ostatnio używane ustawienia trybu kolorowego
    2 - Strobe - Cyklicznie przechodzi przez kolory, bez przejścia
    3 - Fade - Cyklicznie przechodzi przez kolory, zanikające przejście między nimi
    4 - Pulse - Cyklicznie przechodzi przez kolory, wyłączając żarówkę przed przejściem do następnego koloru
    5 - Blink - Pulsuje, ale szybciej
    6 - Chase - Cyklicznie przechodzi przez kolory, zapalanie jednej żarówki na raz, aby uzyskać efekt pościgu
    7 - Boże Narodzenie - naprzemiennie czerwony/zielony
    8 - Ameryka - naprzemiennie czerwony/biały/niebieski
    9 - Wybierz 2 - wykorzystuje wartość z dpId 101 do wykonania 2 naprzemiennych kolorów
    10 - Multi - tęcza na całej długości paska świetlnego, statyczna z żarówkami od czerwonego do fioletowego

    Nie rozgryzłem w 100% formatów ciągów dla dpId 5 i 101, ale mam kilka pomysłów.

    Dla dpId 5, 14-znakowy ciąg, format wydaje się być Red Green Blue White brighTness? Nasycenie? lub RGBWTS, ale nie jestem pewien jasności i nasycenia. Kilka przykładów, które są bardzo proste, wyciągnięte z autoexec.
    Czerwony tylko jasność 100 Nasycenie 100: ff000000ffff
    Zielony tylko jasność 100 Nasycenie 100: 00ff000000ffff
    Niebieski tylko jasność 100 Nasycenie 100: 0000ff0000ffff

    Kilka bardziej złożonych przykładów, skomplikowanych przez to, że ustawiłem je z selektora kolorów w aplikacji
    Ustaw z jasnością 50, nasyceniem 50
    Czerwony: 8a464600007d8a
    Ustawienie jasności 100, nasycenie 0
    Czerwony: ffffff000000ff
    Ustawienie jasności 1, nasycenie 100
    Czerwony: 1a00000000ff19

    Dla dpId 101, ciąg 19 znaków jest wyraźnie zgodny z podobnym kodowaniem
    Set with brightness 100, saturation 100
    Red 1, Yellow 2: fff0502ff0000ff00
    Red 1, Blue 2: ffff0502ff0000090ff
  • #12 20827348
    p.kaczmarek2
    Moderator Smart Home
    Posty: 14662
    Pomógł: 656
    Ocena: 12672
    Dobra robota, pomogę Ci zintegrować go z OBK. Według komentarza xdrv:
    
          // There are two types of rgb format, configure the correct one using TuyaRGB command.
          // The most common is 0HUE0SAT0BRI0 and the less common is RRGGBBFFFF6464 and sometimes both are case sensitive:
          // 0  type 1 Uppercase - 00DF00DC0244
          // 1  Type 1 Lowercase - 008003e8037a
          // 2  Type 2 Uppercase - 00FF00FFFF6464
          // 3  Type 2 Lowercase - 00e420ffff6464
    

    Twój format kolorów wydaje się być typu 3, jednak wydaje się, że ludzie z Tasmota nie są świadomi faktu, że może on również kodować jasność i myślą, że ostatnie 4 znaki to zawsze 6464.

    Część RGB pasuje do RRGGBBFFFF6464.

    Cytat:

    Zestaw z jasnością 50, nasyceniem 50
    Czerwony: 8a464600007d8a

    Może to być problematyczne. Jeśli wiemy, że pierwsze znaki to RR, GG i BB, to jakie jest znaczenie tych ostatnich? Czy możesz zbadać? Może spróbuj powoli zmieniać jasność ze 100% na 0%? A potem nasycenie?

    Mogę sprawić, że będzie działać z naszym OBK, ale muszę wiedzieć, jakie jest znaczenie pozostałych bajtów.
    Pomogłem? Kup mi kawę.
  • #13 20839431
    phobiac
    Poziom 4  
    Posty: 10
    Pomógł: 1
    Ocena: 1
    Przepraszamy za czekanie! Wakacje pochłonęły mój czas. Oto więcej danych umożliwiających analizę tego, co się dzieje. Kolory są trochę trudne do ustawienia, ponieważ koło kolorów podane w aplikacji Smartlife nie pozwala na ustawienie koloru w oparciu o kod szesnastkowy lub cokolwiek bardziej precyzyjnego. Jednakże ustawiłem ten sam wybór spośród zapisanych kolorów dla tabel Czerwonego, Zielonego i Niebieskiego, więc Barwa powinna (teoretycznie) być taka sama dla obu.

    Kolor (jasność 100) Nasycenie 100 Nasycenie 99 Nasycenie 50 Nasycenie 0
    Czerwony ff00000000ffff ff03030000fcff ff808000007ffff ffffff000000ff
    Zielony 00ff1e007ffff 03ff20007ffcff 80ff8e007f80ff ffffff007f00ff
    Niebieski 0000ff00f0ffff 0303ff00f0fdff 8080ff00f07ffff ffffff00f000ff


    Kolor (Nasycenie 100) Jasność 100 Jasność 99 Jasność 50 Jasność 1
    Czerwony ff00000000ffff fc00000000fffc 8c00000000ff8b 1a00000000ff19
    Zielony 00ff1e007ffff 00fc1d007ffffc 008c10007fff8b 001a03007fff19
    Niebieski 0000ff00f0ffff 0000fc00f0fffc 00008c00f0ff8b 00001a00f0ff19


    Ponieważ kolor czerwony jest najbardziej niezawodny w rzeczywistości czerwonym, a ustawienie nasycenia na 0 wydaje się skutkować białym światłem, również chwyciłem te wartości. Czerwona linia może być najbardziej przydatna, ale zrobiłem to również dla innych kolorów.

    Kolor (Nasycenie 0) Jasność 100 Jasność 99 Jasność 50 Jasność 1
    Czerwony ffffff000000ff fcfcfc000000fc 8c8c8c0000008b 1a1a1a00000019
    Zielony ffffff007f00ff fcfcfc007f00fc 8c8c8c007f008b 1a1a1a007f0019
    Niebieski ffffff00f000ff fcfcfc00f000fc 8c8c8c00f0008b 1a1a1a00f00019


    Biorąc to pod uwagę, wygląda na to, że używany format jest podobny do tego, gdzie T to jasność, a S to nasycenie? Nie do końca pewien, ponieważ nasycenie również wydaje się zmieniać wartości RGB.
    RRGGBB00SSSSTT

    Co ciekawe, dwa środkowe wydają się nie być używane. Nie jestem pewien, czy ma to tutaj znaczenie, ale zagłębiając się w osprzęt tych świateł, dowiedziałem się, że każda żarówka przetwarza osobno, a następnie przekazuje polecenie określające kolor/scenę do ustawienia. Możliwe, że dwa środkowe bity służą do liczenia żarówek?
  • #14 21060630
    mchipser
    Poziom 3  
    Posty: 5

    Po prostu sprawdzam, czy poczyniłeś jakieś postępy w tej sprawie? Mam kilka takich i chciałbym je skonfigurować...
  • #15 21060978
    p.kaczmarek2
    Moderator Smart Home
    Posty: 14662
    Pomógł: 656
    Ocena: 12672
    Witaj, minęło już trochę czasu i nie pamiętam dokładnie gdzie się zatrzymaliśmy, ale czy widziałeś komendę tuyaMcu_setupLED ?
    Tabela z poleceniem tuyaMcu_setupLED dla TuyaMCU.
    Tutaj jest więcej informacji:
    https://www.elektroda.com/rtvforum/find.php?q=tuyaMcu_setupLED
    Tutaj jest nasza lista poleceń:
    https://github.com/openshwprojects/OpenBK7231T_App/blob/main/docs/commands.md
    Oto próbki autoexec.bat:
    https://github.com/openshwprojects/OpenBK7231T_App/blob/main/docs/autoexecExamples.md
    Może możemy spróbować użyć tuyaMcu_setupLED dla twojego urządzenia lub przynajmniej spróbować go zmodyfikować?
    Pomogłem? Kup mi kawę.
  • #16 21445488
    phobiac
    Poziom 4  
    Posty: 10
    Pomógł: 1
    Ocena: 1
    Cześć! Minęło trochę czasu, odkąd miałem czas wrócić do tego projektu. Odniosłem mały sukces używając OpenBeken na kilku prostszych urządzeniach i mam teraz więcej pewności siebie próbując uruchomić te światła. Na chwilę obecną moje osobiste testy z tymi światłami wykazały, że układ TuyaMCU ma poważne braki w opcjach sterowania światłami. Osobiście zrezygnowałem już z odkrywania tego, ponieważ chcę mieć pełną kontrolę nad poszczególnymi diodami LED, a TuyaMCU w najlepszym przypadku pozwala na ustawienie 2 naprzemiennych kolorów.

    Mam jeden ciąg świateł, który podłączyłem zgodnie z opisem w teardown połączonym z moim pierwszym postem, ale próbuję użyć istniejącego modułu CB3S flashowanego OpenBekenem zamiast zastępować go ESP32. Miałem nadzieję, że pomożesz mi z instrukcjami, jaki powinien być mój następny krok w wypróbowaniu tego. Konfiguracja jest następująca:

    Układ CBS3 sflashowany za pomocą OpenBK

    Usunąłem całkowicie układ TuyaMCU z płyty, aby zapobiec jego konfliktowi

    Przełącznik napięcia został podłączony między CBS3, który wyprowadza napięcie 3,3 V, a 5 V, którego oczekują diody LED (rozumiem, że wcześniej robił to układ MCU).

    Pin 7/GPIOP_6/PWM0 jest podłączony do przewodu D0 przez przełącznik napięcia.

    Łańcuch LED powinien być GRBW

    Rozumiem, że w tej konfiguracji powinienem wysyłać polecenia szeregowe do łańcucha LED przez GPIO 6. Nie jestem jednak pewien, jak skonfigurować do tego OpenBK. Poszczególne diody LED wykorzystują układy TM1814. Post z rozbiórką odsyła do tematu WLED na githubie , który wyjaśnia niektóre szczegóły tego układu. Nie jestem pewien, czy OpenBK już wie, jak się z nim komunikować.

    Jeśli to zadziała, będzie to wymagało nieco więcej wysiłku niż zwykłe flashowanie urządzenia, ale ostatecznie wystarczy usunąć układ MCU i podłączyć przełącznik napięcia.

Podsumowanie tematu

✨ Dyskusja dotyczy zaawansowanej konfiguracji lampek sznurkowych Atomi Smart Color String Lights z wykorzystaniem oprogramowania OpenBeken. Urządzenia wyposażone są w moduł Wi-Fi CB3S, różniący się od wcześniejszych wersji z modułem TYWE3S opartym na ESP8266. Próby flashowania OpenBekenem zakończyły się sukcesem, jednak pojawiły się trudności związane z obsługą układu TuyaMCU, który odpowiada za komunikację i sterowanie światłami. Użytkownik otrzymał wskazówki dotyczące tworzenia skryptu autoexec.bat do uruchomienia sterownika TuyaMCU, ustawienia stanu Wi-Fi oraz mapowania dpID na kanały sterujące (włączanie/wyłączanie, sceny, jasność, temperatura barwowa, kolor). Omówiono formaty kodowania kolorów RGBW i ich interpretację, w tym problem z kodowaniem jasności i nasycenia. Zaproponowano użycie narzędzia TuyaMCU Analyzer do przechwytywania komunikacji UART między modułem Wi-Fi a MCU, co umożliwia analizę i replikację poleceń sterujących. Wskazano, że GPIO nie jest wykorzystywane przy aktywnym TuyaMCU, a wszystkie dane przechodzą przez UART. Użytkownik eksperymentował z komendą tuyaMcu_sendState do zmiany scen i stanów urządzenia. W dalszej części dyskusji pojawiła się sugestia wykorzystania komendy tuyaMcu_setupLED do lepszej integracji i kontroli LED. Ostatecznie autor zrezygnował z dalszego wykorzystywania TuyaMCU ze względu na ograniczenia sterowania i podjął próbę pełnej kontroli poszczególnych diod LED, usuwając układ TuyaMCU i planując dalsze testy z OpenBekenem na module CB3S.
REKLAMA