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

[Rozwiązano] Flashing Tongou TOQCB2L RCBO: Wykonalność, kalibracja i metody nieinwazyjne

thomasbrasser 04 Sty 2025 11:34 1638 9
REKLAMA
Treść została przetłumaczona angielski » polski Zobacz oryginalną wersję tematu
  • #1 21376291
    thomasbrasser
    Poziom 3  
    Posty: 7
    Szukam do cięcia lub flashowania Tongou TOQCB2L RCBO.
    Mogę podać wszystkie szczegóły, a jeśli szansa na sukces wydaje się wysoka, jestem gotów ją rozerwać.

    moduł główny: v2.1.6
    mcu: v1.0.0

    Pytania:
    - czy można to zrobić?
    - czy można to zrobić zachowując kalibrację?
    - czy można to zrobić bez otwierania urządzenia?

    AI: Jakie są Twoje konkretne cele lub powody, dla których chcesz flashować Tongou TOQCB2L RCBO?
    Praca lokalna, a także offline.
    AI: Czy próbowałeś już jakichś metod lub prowadziłeś badania nad flashowaniem RCBO, a jeśli tak, to jakie były wyniki?
    Mam doświadczenie z tuya local / localtuya / esphome / libretiny / openbeken / itp. Wcześniej flashowałem wiele urządzeń, ale wszystkie miały istniejące profile.
  • REKLAMA
  • Pomocny post
    #2 21377127
    p.kaczmarek2
    Moderator Smart Home
    Posty: 14612
    Pomógł: 655
    Ocena: 12630
    Najpierw musisz sprawdzić, jaki rodzaj modułu WiFi znajduje się w środku. OpenBeken obsługuje już wiele modułów Tuya, więc istnieje spora szansa, że układ wewnątrz jest flashowalny.
    Następnie pytanie brzmi, czy to urządzenie korzysta z TuyaMCU, czy nie.
    Jeśli jest oparte na TuyaMCu, sprawdź ten przewodnik: TuyaMCU guide , a kalibracja nie będzie wymagana, ponieważ pomiar jest wykonywany przez MCU, a nie przez moduł WiFi.
    Jeśli nie jest to TuyaMCU, to najprawdopodobniej używa BL0942 lub BL0937, więc będziesz musiał skalibrować za pomocą poleceń VoltageSet, CurrentSet, PowerSet. Nie jest to jednak żaden problem...
    Flashowanie zwykle wymaga otwarcia urządzenia, ale jest też pewne rozwiązanie cloudcutter, które czasami działa, biorąc pod uwagę, że urządzenie jest już dodane do cuttera dla wsparcia.... można tam sprawdzić profile urządzeń: https://openbekeniot.github.io/webapp/devicesList.html

    Proponuję po prostu spróbować otworzyć urządzenie, nie czekaj. Zrób kilka zdjęć i udostępnij je, abyśmy mieli z czym pracować. Pomożemy Ci krok po kroku z konfiguracją OBK.
    Pomogłem? Kup mi kawę.
  • REKLAMA
  • #3 21639842
    thomasbrasser
    Poziom 3  
    Posty: 7
    W końcu dostałem mój trzeci i rozebrałem go na części:

    - wydaje się, że Tuya MCU!
    - może być flashowalny przez piny z boku bez demontażu?


    Zbliżenie na moduł elektroniczny CB3S z widocznymi pinami RX, TX, GND i 3V3
    Płytka PCB z transformatorami, kondensatorami i pinami złączeniowymi
    Płytka PCB z modułem CB3S i oznaczonymi pinami oraz elementami elektronicznymi


    EDIT:

    - Moduł CB3S
    - TX&RX podłączone
    - oczywiście GND & 3V3 podłączone
    - CEN & P14 podłączony

    Również cała ta część wydaje się być podłączona przez modbus do wyłącznika (A B N 12V (ale może nie być tak naprawdę 12V, sprawdzę)

    Więc to też jest interesujące!

    Poczytam o TuyaMCU ;) .
  • REKLAMA
  • Pomocny post
    #4 21641926
    p.kaczmarek2
    Moderator Smart Home
    Posty: 14612
    Pomógł: 655
    Ocena: 12630
    mcu: v1.0.0 również wskazuje, że najprawdopodobniej jest to urządzenie TuyaMCU. Zacznij od wykonania oryginalnej kopii zapasowej flash 2MB.
    Pomogłem? Kup mi kawę.
  • #5 21642431
    thomasbrasser
    Poziom 3  
    Posty: 7
    >>21641926 Gdzie można przeczytać `mcu: v1.0.0`?

    Mam dwa takie same / podobne urządzenia podłączone do chmury tuya, zapisałem stamtąd DPID json.
    Podłączyłem się do UART2 i zapisałem logi rozruchowe (chociaż nie podłączyłem płyty głównej do części "modbus"/"prawdziwego" urządzenia.

    Następnie zrzucę oprogramowanie układowe.

    
        "properties": [
          {
            "code": "forward_energy_total",
            "custom_name": "",
            "dp_id": 1,
            "time": 1755954597205,
            "type": "value",
            "value": 264796
          },
          {
            "code": "phase_a",
            "custom_name": "",
            "dp_id": 6,
            "time": 1755954597214,
            "type": "raw",
            "value": "CPEABZMAALo="
          },
          {
            "code": "phase_b",
            "custom_name": "",
            "dp_id": 7,
            "time": 1755954597273,
            "type": "raw",
            "value": "CPgAAU0AACY="
          },
          {
            "code": "phase_c",
            "custom_name": "",
            "dp_id": 8,
            "time": 1755954597373,
            "type": "raw",
            "value": "CPgAAGYAAAA="
          },
          {
            "code": "leakage_current",
            "custom_name": "",
            "dp_id": 15,
            "time": 1755932540949,
            "type": "value",
            "value": 0
          },
          {
            "code": "switch",
            "custom_name": "",
            "dp_id": 16,
            "time": 1755932540949,
            "type": "bool",
            "value": true
          },
          {
            "code": "ov_set",
            "custom_name": "",
            "dp_id": 102,
            "time": 1755932540949,
            "type": "enum",
            "value": "Trip"
          },
          {
            "code": "uv_set",
            "custom_name": "",
            "dp_id": 103,
            "time": 1755932540949,
            "type": "enum",
            "value": "Trip"
          },
          {
            "code": "oc_set",
            "custom_name": "",
            "dp_id": 104,
            "time": 1755932540949,
            "type": "enum",
            "value": "Trip"
          },
          {
            "code": "op_set",
            "custom_name": "",
            "dp_id": 105,
            "time": 1755932540949,
            "type": "enum",
            "value": "Alarm"
          },
          {
            "code": "temp_set",
            "custom_name": "",
            "dp_id": 107,
            "time": 1755932540949,
            "type": "enum",
            "value": "Trip"
          },
          {
            "code": "leak_set",
            "custom_name": "",
            "dp_id": 108,
            "time": 1755932540949,
            "type": "enum",
            "value": "Trip"
          },
          {
            "code": "online_state",
            "custom_name": "",
            "dp_id": 109,
            "time": 1755934397644,
            "type": "enum",
            "value": "online"
          },
          {
            "code": "event",
            "custom_name": "",
            "dp_id": 110,
            "time": 1755932540949,
            "type": "enum",
            "value": "Manual_ON"
          },
          {
            "code": "auto_reclosing",
            "custom_name": "",
            "dp_id": 112,
            "time": 1755932540949,
            "type": "bool",
            "value": false
          },
          {
            "code": "rd_set",
            "custom_name": "",
            "dp_id": 113,
            "time": 1736331321975,
            "type": "bool",
            "value": false
          },
          {
            "code": "c_thresh",
            "custom_name": "",
            "dp_id": 114,
            "time": 1755932540949,
            "type": "value",
            "value": 25
          },
          {
            "code": "ov_thresh",
            "custom_name": "",
            "dp_id": 115,
            "time": 1755932540949,
            "type": "value",
            "value": 260
          },
          {
            "code": "uv_thresh",
            "custom_name": "",
            "dp_id": 116,
            "time": 1755932540949,
            "type": "value",
            "value": 200
          },
          {
            "code": "leak_thresh",
            "custom_name": "",
            "dp_id": 117,
            "time": 1737474238378,
            "type": "value",
            "value": 30
          },
          {
            "code": "temp_thresh",
            "custom_name": "",
            "dp_id": 118,
            "time": 1755932540949,
            "type": "value",
            "value": 600
          },
          {
            "code": "op_thresh",
            "custom_name": "",
            "dp_id": 119,
            "time": 1755932540949,
            "type": "value",
            "value": 10000
          },
          {
            "code": "fap_a",
            "custom_name": "",
            "dp_id": 125,
            "time": 1755954597513,
            "type": "value",
            "value": 151426
          },
          {
            "code": "fap_b",
            "custom_name": "",
            "dp_id": 126,
            "time": 1755954597526,
            "type": "value",
            "value": 56114
          },
          {
            "code": "fap_c",
            "custom_name": "",
            "dp_id": 127,
            "time": 1755953410172,
            "type": "value",
            "value": 57246
          },
          {
            "code": "temp_a",
            "custom_name": "",
            "dp_id": 131,
            "time": 1755954597540,
            "type": "value",
            "value": 255
          },
          {
            "code": "temp_b",
            "custom_name": "",
            "dp_id": 132,
            "time": 1755954597552,
            "type": "value",
            "value": 252
          },
          {
            "code": "temp_c",
            "custom_name": "",
            "dp_id": 133,
            "time": 1755954004139,
            "type": "value",
            "value": 245
          },
          {
            "code": "temp_n",
            "custom_name": "",
            "dp_id": 134,
            "time": 1755954004173,
            "type": "value",
            "value": 242
          },
          {
            "code": "power_total",
            "custom_name": "",
            "dp_id": 139,
            "time": 1755954597585,
            "type": "value",
            "value": 224
          }
        ]
    


    
    V:BK7231N_1.0.1
    
    REG:cpsr     spsr     r13      r14
    
    SVC:000000D3          00401C1C 000033AC
    
    IRQ:000000d2 00000010 00401e0c afdf5e6d 
    
    FIR:000000d1 00000010 00401ffc efbf9fb5 
    
    SYS:000000df          0040192c 00000158 
    
    ST:00000000
    
    J 0x10000
    
    bk_misc_init_start_type 0 0
    [MEM DBG] heap init-------size:165584 addr:0x407930---------
    [Flash]id:0xc84015
    [load]bandgap_calm=0x57->0x17,vddig=4->5
    IP Rev: c4ae4a2e
    [bk]tx_txdesc_flush
    tkl_ethernetif_init
    tkl_ethernetif_init
    tkl_ethernetif_output: invalid vif: 255!
    tkl_ethernetif_output: invalid vif: 255!
    [01-01 00:00:00 ty D][42ab][tal_thread.c:209] Thread:sys_timer Exec Start. Set to Running Stat 0x42abdc
    [01-01 00:00:00 ty I][42ed][tal_thread.c:185] thread_create name:sys_timer,stackDepth:4096,totalstackDepth:6144,priority:5
    [01-01 00:00:00 ty I][42ed][tal_thread.c:185] thread_create name:wq_system,stackDepth:5120,totalstackDepth:11264,priority:3
    [01-01 00:00:00 ty I][42ed][tal_thread.c:185] thread_create name:wq_highpri,stackDepth:4096,totalstackDepth:15360,priority:4
    [01-01 00:00:00 ty D][4283][tal_thread.c:209] Thread:wq_highpri Exec Start. Set to Running Stat 0x4283d4
    [01-01 00:00:00 ty D][lr:0xb67e9] link[9] is registered [0]
    [01-01 00:00:00 ty D][lr:0xb67e9] link[2] is registered [1]
    [01-01 00:00:00 ty D][lr:0x9d875] add new node,type:0
    [01-01 00:00:00 ty D][lr:0x9d875] add new node,type:1
    [01-01 00:00:00 ty D][lr:0x9d875] add new node,type:2
    [01-01 00:00:00 ty D][lr:0x9d875] add new node,type:3
    [01-01 00:00:00 ty D][lr:0x9d875] add new node,type:4
    [01-01 00:00:00 ty D][lr:0x9d875] add new node,type:5
    [01-01 00:00:00 ty D][lr:0x9d875] add new node,type:6
    [01-01 00:00:00 ty D][lr:0x9d875] add new node,type:7
    [01-01 00:00:00 ty D][lr:0x9d875] add new node,type:8
    [01-01 00:00:00 ty D][lr:0x9d875] add new node,type:9
    [01-01 00:00:00 ty D][lr:0x9d9bf] init watchdog, interval: 60
    [01-01 00:00:00 ty D][lr:0x9d8e7] update type:7,period:20
    [01-01 00:00:00 ty D][lr:0x9d9ed] watch_dog_interval:60, monitor_detect_interval:600
    [01-01 00:00:00 ty D][4273][tal_thread.c:209] Thread:health_monitor Exec Start. Set to Running Stat 0x427308
    [01-01 00:00:00 ty I][42ed][tal_thread.c:185] thread_create name:health_monitor,stackDepth:2048,totalstackDepth:17408,priority:5
    [01-01 00:00:00 ty I][lr:0x84ffb] mqc app init ...
    [01-01 00:00:00 ty D][lr:0x84eef] mq_pro:5 cnt:1
    [01-01 00:00:00 ty D][lr:0x84eef] mq_pro:31 cnt:2
    [01-01 00:00:00 ty D][lr:0xc077f] svc online log init success
    [01-01 00:00:00 ty E][lr:0x846d5] logseq empty
    [01-01 00:00:00 ty D][42ed][tuya_device.c:111] < TuyaOS V:3.11.12 BS:40.00_PT:2.3_LAN:3.5_CAD:1.0.5_CD:1.0.0 >
    < BUILD AT:2025_01_07_14_25_09 BY ci_manage FOR tuyaos-iot AT bk7231n >
    IOT DEFS < WIFI_GW:1 DEBUG:1 KV_FILE:0 LITTLE_END:1 SL:0 OPERATING_SY[01-01 00:00:00 ty D][42ed][tuya_device.c:112] reset_reason:0
    [01-01 00:00:00 ty D][42ed][tuya_device.c:113] bk7231n_common_user_config_ty:3.1.28
    current kv info, addr: 1ed000, cnt: 13, is valid: 0
    mirror kv info, addr: 1cf000, cnt: 13, is valid: 0
    [01-01 00:00:00 ty N][lr:0xcf89f] init protected data length 707 wr_cnt 13
    [01-01 00:00:00 ty N][lr:0xbb8b7] key_addr: 0x1ee000   block_sz 4096
    [01-01 00:00:00 ty N][lr:0xbb985] get key:
    0xe5 0x74 0x1 0xa6 0x10 0x65 0xcf 0x5d 0xa4 0xac 0xcf 0x48 0xe2 0xf3 0x93 0x4d 
    [01-01 00:00:00 ty N][lr:0x836d9] uni_random_init...
    [01-01 00:00:00 ty N][lr:0x8399b] tuya_tls_rand_init ok!
    [01-01 00:00:00 ty N][lr:0x9a1ab] gw_cntl->gw_wsm.stat:2
    tkl_wifi_set_country_code_v2: set country code [CN]
    rw_ieee80211_set_country code:
    code: CN
    channel: 1 - 13
    mode: MANUAL
    bk_wlan cca closed
    
  • Pomocny post
    #6 21642436
    p.kaczmarek2
    Moderator Smart Home
    Posty: 14612
    Pomógł: 655
    Ocena: 12630
    Wersję MCU można zobaczyć w aplikacji Tuya. Sam to opublikowałeś w pierwszym poście w tym wątku.
    Pomogłem? Kup mi kawę.
  • #7 21642447
    thomasbrasser
    Poziom 3  
    Posty: 7
    Wow, przepraszam, wpatrywałem się w PCB, próbując znaleźć miejsce, w którym to zauważyłeś 😂😂😂

    Dodano po 4 [godzinach] 40 [minutach]: .

    Po zrobieniu backupu, sflashowałem i wydawało się, że poszło bez problemów. Jednak nie pojawił się AP, a także po zapisaniu configu obk, urządzenie nie pojawiło się w sieci.

    Może po prostu nie ma wystarczającej mocy do uruchomienia RF, spróbuję podłączyć do sieci (oczywiście odłączonej od seryjnego flashera).

    Po ponownym podłączeniu UART 2 RX otrzymałem:
    
    V:BK7231N_1.0.1
    REG:cpsr     spsr     r13      r14
    SVC:000000D3          00401C1C 000033AC
    IRQ:000000d2 00000010 00401e0c aedfde6d
    FIR:000000d1 00000010 00401ffc ef9f9fb5
    SYS:000000df          0040192c 00000158
    ST:00000000
    J 0x10000
    bk_misc_init_start_type 0 0
    prvHeapInit-start addr:0x4143d8, size:113704
    [Flash]id:0xc84015
    sctrl_sta_ps_init
    cset:0 0 0 0
    OpenBK7231N, version 1.18.158
    Entering initLog()...
    Commands registered!
    initLog() done!
    Info:MAIN:Main_Init_Before_Delay
    Info:CFG:####### Boot Count 644 #######
    Info:MAIN:###### safe mode activated - boot failures 644
    Warn:CFG:CFG_InitAndLoad: Correct config has been loaded with 1 changes count.
    Info:MAIN:Main_Init_Before_Delay done
    Main_Init_Before_Delay done
    Info:MAIN:Main_Init_Delay
    Main_Init_Delay
    bandgap_calm_in_efuse=0x57
    [load]bandgap_calm=0x57->0x17,vddig=4->5
    [FUNC]rwnxl_init
    [bk]tx_txdesc_flush
    [FUNC]intc_init
    [FUNC]calib▒
    
    .

    Załączony jest fw dump
    Załączniki:
    • readResult_BK7231N_QIO_2025-23-8-19-29-38.bin (2 MB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #8 21642731
    thomasbrasser
    Poziom 3  
    Posty: 7
    Oczywiście po podłączeniu normalnego zasilania wszystko działa bez zarzutu!

    Niesamowite!
  • #9 21643110
    thomasbrasser
    Poziom 3  
    Posty: 7
    Tylko duże zastrzeżenie dotyczące tego urządzenia: Należy zdemontować TYLKO "moduł" wifi, a następny (z przyciskiem parowania itp.) pozostawić w spokoju; bezpiecznie przymocowany do reszty (wyłącznik).

    Jeśli go otworzysz, koła zębate wylecą / wysuną się iamp; istnieje bardzo duże prawdopodobieństwo, że nie wróci do siebie w prawidłowy sposób, przez co całość będzie bezużyteczna / niebezpieczna.

    Przekonałem się o tym na własnej skórze, ale teraz, gdy flashowanie za pomocą obk zakończyło się sukcesem, natychmiast zamawiam nowy!
  • #10 21643116
    thomasbrasser
    Poziom 3  
    Posty: 7
    Brak flashowania OTA, ale bardzo łatwe do flashowania po otwarciu. Są 3 małe nity, które trzeba wywiercić, a następnie cała część Tuya może się wysunąć. Podłączenie 3.3V/GND/TX1/RX1/RX2 wystarczy, nie potrzeba zewnętrznego zasilacza (przynajmniej do flashowania) i nie trzeba przecinać żadnych ścieżek. CB3S w środku.

Podsumowanie tematu

✨ Flashing modułu Tongou TOQCB2L RCBO jest możliwe, zwłaszcza że urządzenie wykorzystuje TuyaMCU (wersja MCU v1.0.0) oraz moduł WiFi CB3S, co ułatwia proces dzięki wsparciu OpenBeken i narzędziom takim jak libretiny. Flashowanie wymaga otwarcia urządzenia, ale tylko demontażu modułu WiFi, pozostawiając mechanizm wyłącznika nienaruszony, aby uniknąć uszkodzeń mechanicznych (np. wypadnięcia kół zębatych). Połączenie do flashowania odbywa się przez piny 3.3V, GND, TX1, RX1 i RX2 bez konieczności zewnętrznego zasilacza ani cięcia ścieżek. Kalibracja może być zachowana, jeśli urządzenie korzysta z TuyaMCU, ponieważ pomiary wykonuje MCU, a nie moduł WiFi. W przypadku innych układów (np. BL0942, BL0937) kalibracja wymagałaby ręcznego ustawienia parametrów napięcia, prądu i mocy. Flashowanie OTA nie jest dostępne, ale istnieje możliwość użycia cloudcuttera, jeśli urządzenie jest wspierane. Autor potwierdził działanie urządzenia po flashowaniu i podłączeniu zasilania, a także udostępnił logi UART i dane DPID z chmury Tuya.
Wygenerowane przez model językowy.
REKLAMA