To mój pierwszy post na forum, więc przepraszam, jeśli coś jest niezgodne z regulaminem.
Ostatnio kupiłem miernik mocy KWS-302WF i nie spodobał mi się sposób pomiaru prądu. Rozebrałem więc urządzenie, aby sprawdzić, czy jestem w stanie zmienić bocznik na transformator.
To jest początek historii.
Zobaczyłem, że układ pomiarowy to HT7017 od HitrendTech, który jest obsługiwany przez PY32F002A, który z kolei wydaje polecenia do TM1622, który obsługuje wyświetlacz.
Układ WiFi to CBU (BK7231N ?) podłączony do PY32F.
Wykonałem kilka prac lutowniczych i przechwyciłem komunikację między CBU a PY32F (a także między tym a HT7017).
Poniżej kilka zdjęć i plików z danymi komunikacyjnymi.
Zobaczmy, czy będzie to przydatne do zmiany oprogramowania układowego w CBU ...
Załączniki:
comm between CBU to and from PY32F.zip(1.04 MB)
Musisz być zalogowany, aby pobrać ten załącznik.
Ten plik xlsx to bardzo dobra i profesjonalna robota. Zrobiłeś to bardzo dobrze. To z pewnością może pomóc. Może się wydawać, że w twoim dokumencie brakuje identyfikatorów dpID, ale myślę, że możesz użyć do tego tego tego narzędzia:
.
Zobacz: https://www.elektroda.com/rtvforum/topic3970199.html
Pamiętaj, że może być konieczne zerwanie połączenia UART w celu flashowania urządzenia, ponieważ ten sam port UART, który jest używany do flashowania, jest również używany do komunikacji TuyaMCU.
Jeśli chodzi o zmianę bocznika - może to być bardzo trudne, ponieważ PY32F002A jest odpowiedzialny za większość rzeczy. Musiałbyś jakoś zmienić oprogramowanie układowe PY32F002A, jak sądzę. PY32F002A już raportuje pomiary do modułu WiFi przez UART, więc nie sądzę, aby można było zastosować zmianę bocznika na module WiFi. Ale pewnie już o tym wiesz...
TM1622 jest również bardzo interesujący dla mnie, ale ponownie, w tym przypadku TM1622 jest obsługiwany przez PY32F002A, więc nie powinieneś się tym martwić. Zawsze zmieniamy tylko firmware modułu WiFi, a nie MCU. Mimo to OBK może już bezpośrednio sterować TM1650 i TM1637/TM1638 i podobnymi, więc jeśli jest taka potrzeba, mógłbym również w jakiś sposób uruchomić sterownik TM1622.
Czy twoim celem jest tylko zmiana oprogramowania układowego, czy chcesz również zmienić ten bocznik?
Tworzę pierwsze na świecie oprogramowanie open source przeznaczone dla platform BK7231, XR809, BL602, W600, W800, LN882H, ECR, TRS, RTL, jak również ESP8266 i ESP32 używanych w różnych urządzeniach IoT, pozwalające uwolnić je od serwerów producenta, od śledzenia, dowolnie modyfikować i sparować z Home Assistant.
Dodatkowo publikuję różnorodne materiały, często tutoriale i praktyczne demonstracje.
Jeśli podoba Ci się moja twórczość i w czymś Ci pomogłem, to rozważ wsparcie mnie tutaj: https://www.paypal.com/paypalme/openshwprojects Mój Github: https://github.com/openshwprojects Mój tutorial PIC18F SDCC: https://www.elektroda.pl/rtvforum/topic3635522.html Pracuję na stacji hot air SUGON 8630 Pro od Katemedia
Ten plik xlsx to bardzo dobra i profesjonalna robota. Zrobiłeś to bardzo dobrze. To z pewnością może pomóc. W twoim dokumencie może brakować identyfikatorów dpID, ale myślę, że możesz użyć do tego tego narzędzia:
Dzięki za komplement ... Nie straciłem dpID, usunąłem go. Wyjaśniam dlaczego, jestem nowy w tych rzeczach HA i dając pierwsze kroki, więc to jest moje "uczucie", że ten identyfikator może być używany do Tuya zablokować moje urządzenie ... przepraszam, jeśli jest to duży błąd.
Przeczytam sugerowane wskazówki ...
p.kaczmarek2 napisał:
Czy to zostało przechwycone z prędkością 9600 bodów czy 115200?
Komunikacja między HT7017 a PY32F odbywa się z prędkością 4800 bps. Komunikacja między CBU a PY32F to 115200 bps
p.kaczmarek2 napisał:
Pamiętaj, że może być konieczne zerwanie połączenia UART w celu flashowania urządzenia, ponieważ ten sam port UART, który jest używany do flashowania, jest również używany do komunikacji TuyaMCU.
Aby sflashować CBU, wyjmę go, jest on używany tylko jako rodzaj bramki i są tylko 4 piny do odlutowania.
p.kaczmarek2 napisał:
Czy Twoim celem jest tylko zmiana firmware, czy chcesz też zmienić ten bocznik?
.
To będzie najtrudniejsza część ... najprawdopodobniej nie uda mi się odczytać PY32F ... chip prawdopodobnie jest chroniony i dozwolone jest tylko programowanie. Co więcej ... jest niewiele dokumentów na temat HT7017 ... w każdym razie czytam ....
Wyjaśniam dlaczego, jestem nowy w tych sprawach HA i stawiam pierwsze kroki, więc to moje "przeczucie", że ten identyfikator może zostać użyty do zablokowania mojego urządzenia przez Tuya ... przepraszam, jeśli to duży błąd.
Niemożliwe. Po flashowaniu OpenBeken, Tuya nie ma żadnego dostępu.
Lusant napisał:
Komunikacja między HT7017 a PY32F odbywa się z prędkością 4800 bps.
Komunikacja między CBU a PY32F to 115200 bps
Przez komunikację TuyaMCU rozumiemy komunikację między modułem WiFi a MCU, więc 115200. Będziesz musiał uwzględnić to w autoexec.bat. Mam nadzieję, że możesz przeczytać nieco więcej o autoexec.bat w przewodniku TuyaMCU, o którym wspomniałem.
Lusant napisał:
To będzie najtrudniejsza część ... najprawdopodobniej nie uda mi się odczytać PY32F ... chip prawdopodobnie jest chroniony i dozwolone jest tylko programowanie.
Więcej ... jest kilka dokumentów o HT7017 ... w każdym razie czytam...
Dlaczego chcesz zmienić bocznik?
Było coś takiego:
https://github.com/no2chem/open-tuyamcu ale nadal uważam, że wymagałoby to dużo pracy. PY32F obsługuje komunikację TuyaMCU po stronie MCU, więc flashując go już to stracisz.
Tworzę pierwsze na świecie oprogramowanie open source przeznaczone dla platform BK7231, XR809, BL602, W600, W800, LN882H, ECR, TRS, RTL, jak również ESP8266 i ESP32 używanych w różnych urządzeniach IoT, pozwalające uwolnić je od serwerów producenta, od śledzenia, dowolnie modyfikować i sparować z Home Assistant.
Dodatkowo publikuję różnorodne materiały, często tutoriale i praktyczne demonstracje.
Jeśli podoba Ci się moja twórczość i w czymś Ci pomogłem, to rozważ wsparcie mnie tutaj: https://www.paypal.com/paypalme/openshwprojects Mój Github: https://github.com/openshwprojects Mój tutorial PIC18F SDCC: https://www.elektroda.pl/rtvforum/topic3635522.html Pracuję na stacji hot air SUGON 8630 Pro od Katemedia
Najlepszym i najszybszym sposobem uzyskania wsparcia jest otwarcie wątku na ten temat.
To jest szlachetny cel forów, ludzie z wątpliwościami, pytają, ludzie, którzy wiedzą, odpowiadają ...
W ten sposób każdy może uczestniczyć i uczyć się.
Uwaga: Mam kilka dokumentów, a także kilka nagranych sesji komunikacji szeregowej między HT7017 i PY32F, które mogę opublikować, jeśli chcesz, w każdym razie jest wiele do nauczenia się o tym chipie, ponieważ dokumentacja nie jest zbyt szczegółowa.
Cześć @erbharatrankawat01,
Uwaga: Mam kilka dokumentów, a także kilka nagranych sesji komunikacji szeregowej między HT7017 i PY32F, które mogę opublikować, jeśli chcesz, w każdym razie jest wiele do nauczenia się o tym chipie, ponieważ dokumentacja nie jest zbyt szczegółowa.
Cześć, Lusant,
Mam to samo urządzenie z tym samym cbu i mcu. Chciałbym zapytać, czy już flashowałeś na nim openbeken. A jeśli tak, to czy możesz mi pomóc z konfiguracją pliku autoexec.bat. Z góry dzięki.
Jeszcze tego nie zrobiłem. Zrobiłem już kopię zapasową za pomocą narzędzia wykonanego przez @p.kaczmarek2, a także uzyskałem więcej danych na temat komunikacji między PY32F a BK7231N. W międzyczasie poczytałem trochę więcej o Tuya i jest coś o lokalnym adresie, który chcę przetestować. Ponieważ nie jestem pewien, czy mogę wrócić po flashowaniu, zawieszam projekt, dopóki nie będę miał czasu na ponowne uruchomienie.
@Lusant uprzejmie przesłał mi kopię zapasową oprogramowania układowego w celu sanityzacji i wyodrębnienia informacji. Załączam wynik dla wszystkich zainteresowanych tym urządzeniem.
dane przechowywania:
Kod: JSON
Zaloguj się, aby zobaczyć kod
Sparowane obrazy aplikacji Tuya:
boot log:
Kod: Text
Zaloguj się, aby zobaczyć kod
Załączniki:
readResult_BK7231N_QIO_kws302_2024-08-12-12-18-44.bin(2 MB)
Musisz być zalogowany, aby pobrać ten załącznik.
dzięki. interesujące. Kopia zapasowa Lusant to wersja 2.1.6, która ma teraz profil Cloucutter. Twoja kopia zapasowa to 2.1.17, która jest znaną poprawioną wersją.
Hej, jaki jest twój aktualny autoexec.bat , @Hypnotics ? Jaki masz obecnie problem?
Czy widziałeś mój samouczek ATORCH, który jest bardzo podobnym urządzeniem z podobnym ekranem?
Atorch S1TW-FR zaawansowany licznik/termostat energii z LCD - praca bez chmury Ten temat powinien dać ci mniej lub bardziej szczegółowy przewodnik pokazujący, jak przetwarzać urządzenia TuyaMCU, takie jak ten, który masz...
Tworzę pierwsze na świecie oprogramowanie open source przeznaczone dla platform BK7231, XR809, BL602, W600, W800, LN882H, ECR, TRS, RTL, jak również ESP8266 i ESP32 używanych w różnych urządzeniach IoT, pozwalające uwolnić je od serwerów producenta, od śledzenia, dowolnie modyfikować i sparować z Home Assistant.
Dodatkowo publikuję różnorodne materiały, często tutoriale i praktyczne demonstracje.
Jeśli podoba Ci się moja twórczość i w czymś Ci pomogłem, to rozważ wsparcie mnie tutaj: https://www.paypal.com/paypalme/openshwprojects Mój Github: https://github.com/openshwprojects Mój tutorial PIC18F SDCC: https://www.elektroda.pl/rtvforum/topic3635522.html Pracuję na stacji hot air SUGON 8630 Pro od Katemedia
Czy można sterować przekaźnikiem? Czy napięcie jest prawidłowo wyświetlane?
Tworzę pierwsze na świecie oprogramowanie open source przeznaczone dla platform BK7231, XR809, BL602, W600, W800, LN882H, ECR, TRS, RTL, jak również ESP8266 i ESP32 używanych w różnych urządzeniach IoT, pozwalające uwolnić je od serwerów producenta, od śledzenia, dowolnie modyfikować i sparować z Home Assistant.
Dodatkowo publikuję różnorodne materiały, często tutoriale i praktyczne demonstracje.
Jeśli podoba Ci się moja twórczość i w czymś Ci pomogłem, to rozważ wsparcie mnie tutaj: https://www.paypal.com/paypalme/openshwprojects Mój Github: https://github.com/openshwprojects Mój tutorial PIC18F SDCC: https://www.elektroda.pl/rtvforum/topic3635522.html Pracuję na stacji hot air SUGON 8630 Pro od Katemedia
>>21348886 Tak, mogę sterować przekaźnikiem, a napięcie jest wyświetlane prawidłowo, jak pokazano na ekranie urządzenia. Pomóż mi z OVP OPP i innymi konfigurowalnymi ustawieniami parametrów.
Dziękuję za ten projekt.
Chciałbym zgłosić, że parsowanie wartości częstotliwości jest niekompletne, ponieważ brakuje części dziesiętnej.
Info:TuyaMCU:Odebrane: 55 AA 03 07 00 08 6B 02 00 04 00 00 00 32 B4
Info:TuyaMCU:P rocessIncoming[v=3]: cmd 7 (State) len 15
Info:TuyaMCU:P arseState: id 107 type 2-val len 4
Info:TuyaMCU:P arseState: int32 50
O ile mogę powiedzieć:
32 = 50
B4 = 180
W tym przypadku kropką dziesiętną jest "0" od 180, więc poprawną wartością powinno być 50.0Hz.
Inny przykład:
Info:TuyaMCU:Received: 55 AA 03 07 00 08 6B 02 00 04 00 00 00 31 B3
Info:TuyaMCU:P rocessIncoming[v=3]: cmd 7 (State) len 15
Info:TuyaMCU:P arseState: id 107 type 2-val len 4
Info:TuyaMCU:P arseState: int32 49
Tutaj:
31 = 49
B3 = 179 = 9
Odpowiada to częstotliwości 49,9 Hz.
Zatem pierwsza liczba w postaci dziesiętnej od prawej do lewej jest brakującą liczbą dziesiętną.
Dziękujemy za pomoc!
Inną obserwacją jest to, że OpenBK brakuje opcji "przycisku". Obecnie mamy tylko przełącznik, podczas gdy niektóre funkcje są prostym działaniem typu "naciśnij, aby wyczyścić". W moim autoexec.bat byłoby to używane dla setChannelType 9. Czy można to jakoś zaimplementować?
Stworzyłem bardziej kompleksowy plik autoexec.bat dla tego urządzenia:
Załączam kartę katalogową U3211 (po chińsku, ale ze schematem i kilkoma informacjami po angielsku):
Załączniki:
uni-semic_1725427419000.pdf(791.83 KB)
Musisz być zalogowany, aby pobrać ten załącznik.
Tworzę pierwsze na świecie oprogramowanie open source przeznaczone dla platform BK7231, XR809, BL602, W600, W800, LN882H, ECR, TRS, RTL, jak również ESP8266 i ESP32 używanych w różnych urządzeniach IoT, pozwalające uwolnić je od serwerów producenta, od śledzenia, dowolnie modyfikować i sparować z Home Assistant.
Dodatkowo publikuję różnorodne materiały, często tutoriale i praktyczne demonstracje.
Jeśli podoba Ci się moja twórczość i w czymś Ci pomogłem, to rozważ wsparcie mnie tutaj: https://www.paypal.com/paypalme/openshwprojects Mój Github: https://github.com/openshwprojects Mój tutorial PIC18F SDCC: https://www.elektroda.pl/rtvforum/topic3635522.html Pracuję na stacji hot air SUGON 8630 Pro od Katemedia
Dziękuję za podzielenie się ze światem wszystkimi swoimi testami, wynikami i narzędziami .
Mam również to urządzenie i chcę je ulepszyć - brakuje mu przynajmniej czasu przywracania zasilania (ten powinien najpierw odłączyć obciążenie przy włączaniu zasilania, ponieważ używa przekaźnika zatrzaskowego, sprawdzić napięcie i tylko wtedy, gdy znajduje się w skonfigurowanym zakresie, nakazać przekaźnikowi zamknięcie obwodu), pod napięciem i nad napięciem.
Oto mój "wkład zwrotny":
Miałem MCU (PY32F002A) z firmware w wersji 0.1.17 (chyba) i zobaczyłem, że jest nowsza wersja - 0.2.1.
Przed aktualizacją oprogramowania MCU podłączyłem adapter szeregowy RS232 do komunikacji szeregowej między MCU i CBU, aby podsłuchać pobieranie oprogramowania.
Niestety pozwoliłem mu podłączyć się do linii RX z MCU do CBU... więc otrzymałem tylko odpowiedzi MCU do CBU podczas procesu aktualizacji FW.
Ale korzystając z tej strony internetowej: Link i Link szybko zrozumiałem komunikację między CBU i MCU i zbudowałem skrypt Pythona, aby emulować część komunikacyjną MCU.
Z tego, co udało mi się zrozumieć z podsłuchiwania komunikacji między CBU i MCU, CBU pyta MCU tylko podczas uruchamiania o wersję oprogramowania układowego MCU (najpierw próbowałem wysłać zmodyfikowane informacje o produkcie podczas normalnej pracy urządzenia, bez odłączania CBU od MCU).
W skrócie komunikacja ta wygląda następująco:
#Heartbeat check (0x00)
#CBU: 55AA 00 00 0000 FF
#MCU: 55AA 03 00 0001 00 03
#Query product information (0x01)
#CBU: 55AA 00 01 0000 00
#MCU: 55AA 03 01 002A 7B2270223A227461646D313361676A69676264747864222C2276223A22302E322E31222C226D223A327D 15
#Query working mode (0x02)
#CBU: 55AA 00 02 0000 01
#MCU: 55AA 03 02 0000 04
#Report network status (0x03)
#CBU: 55AA 00 03 0001 02 05
#MCU: 55AA 03 03 0000 05
# Some times there is another heartbeat check, but on this one, MCU answers slightly different - as this is not the first HB check
#CBU: 55AA 00 00 0000 FF
#MCU: 55AA 03 00 0001 01 04
#Query status (0x08)
#CBU: 55AA 00 08 0000 07
#MCU: answers with the known DIDs
#Start MCU OTA update (0x0A)
#CBU: 55AA 00 0A 0004 00002F0C 48 - this is for 0.2.1 MCU firmware version - it asks for buffer size and mentions that the bin file is of 0x2F0C size = 12.044bytes; also it mentions that the communication is going to take place using only 4 bytes for the offset bytes for the bin file
#MCU: 55AA 03 0A 0001 00 0D - MCU answers that the buffer size it accepts is of 256bytes (coded as a 0x00 - default, original old CBU fw version; 0x01 is 512bytes and 0x02 is 1024bytes)
#Transfer update package
#55AA 00 0B 0104 00000000 {xx} XX - {xx} are the bytes; 0104 means 0x100bytes = 256 bytes and 4 is for number of offset bytes; first 4 bytes and the offset
#55AA 03 0B 0000 0D - standard answer when everything is OK on the receiving packet
#Other CBU requests(?) seen during startups
#55AA 00 03 0001 03 06 - Network status changed
#55AA 00 03 0001 04 07 - Another network status changed
Odpowiedź na informacje o produkcie MCU przekłada się na to (prosta konwersja HEX na ASCII):
Uª*{"p": "tadm13agjigbdtxd", "v": "0.2.1", "m":2} = Nagłówek, typ odpowiedzi, liczba bajtów, DATA , Suma kontrolna.
Wystarczy zmienić 0.2.1 na coś niższego, a następnie zaktualizować sumę kontrolną. W moim teście zrobiłem to z 0.2.0:
#55AA 03 01 002A 7B2270223A227461646D313361676A69676264747864222C2276223A22302E322E 30 222C226D223A327D 14
Dzięki temu mogłem emulować urządzenie, nadal używając oryginalnego CBU, aby połączyć się z Smart Life Cloud i ponownie pobrać oprogramowanie układowe dla MCU:
PY32F00...bin (11.76 kB)Musisz być zalogowany, aby pobrać ten załącznik. .
Ten bin firmware to nie wszystko, co jest przechowywane w MCU, wydaje się, że istnieją inne lokalizacje flash, do których uzyskuje dostęp ten firmware, lokalizacje, które nie są zawarte w tym zrzucie (być może ustawienia, które wydają się być trwałe podczas restartów), a także Boot Loader, który jest wywoływany podczas aktualizacji (zobaczysz "boot" na ekranie, a także licznik (?) podczas rzeczywistej aktualizacji firmware), który wydaje się być w dedykowanej przestrzeni flash i jest napisany w fabryce, przynajmniej.
Nie znalazłem żadnego sposobu na wyjście MCU z tego procesu firmware, ale ponieważ nic nie napisałem na tym etapie, po prostu zrestartowałem urządzenie (power off - power on) i było OK.
Próbowałem dekompilacji firmware, używając Ghidry, wybierając ARM Cortex, Little Indian, kod pod 0x0000. Musisz również załadować ten sam kod pod adresem 0x0800 0000, ponieważ jest to adres Flash, pod którym jest przechowywany, ale podczas uruchamiania, w zależności od ustawień, pod adresem 0x0000 będziesz miał albo tę główną pamięć Flash, systemową pamięć Flash (bootloader), albo pamięć RAM. Podczas normalnej pracy, pod adresem 0x0000 znajduje się główna pamięć Flash - oprogramowanie układowe, które pobieramy..
Pełną kartę katalogową MCU PY32F002A można znaleźć tutaj: Link .
Nie próbowałem zapisywać zrzuconego oprogramowania układowego, aby sprawdzić, czy jest w porządku, ale dlatego, że miał prawidłowy rozmiar, ponieważ znalazłem w nim również te same bajty HEX dla informacji o produkcie , a także dlatego, że Ghidra jest w stanie z niego korzystać (głównie w ręcznym procesie przechodzenia do niezdekompilowanych bajtów i naciskania F12 - dekompilacji jako ThubCode), domyślam się, że jest OK .
Jestem tylko hobbystą jeśli chodzi o programowanie, nie znoszę Pythona, ale do szybkiego procesu skryptowania na Windowsie (zbyt leniwy by zasilać Raspberry Pi z Linuksem i zbyt potrzebujący szybszego procesu niż robienie testów z ESP32 - za dużo czasu zajmuje napisanie nowego kodu) był wystarczająco dobry. Ma w sobie trochę komentarzy, może być lepszy, ale do tego, co potrzebowałem zrobić, mogę powiedzieć, że jest wystarczająco dobry Skrypt używa rozmiaru bufora transferu (okna) 1024 bajtów, zamiast domyślnego: 256 bajtów (i być może jedynego działającego rozmiaru bufora dla MCU), tylko po to, aby mieć go w mniejszej liczbie linii, aby skopiować-wkleić je do edytora HEX (w systemie Windows preferuję HxD), dzięki czemu mogę ręcznie przebudować firmware MCU.
tryser_...txt (9.15 kB)Musisz być zalogowany, aby pobrać ten załącznik. (jest wystarczająco mały, aby nie kłopotać się Pythonem, aby zapisać go do pliku, ale zamiast tego użyć opisanej metody)
Teraz mam tylko nadzieję, że ktoś na Elektrodzie zdekompiluje firmware do czegoś, z czym możemy pracować, abyśmy mogli dodać potrzebne zmiany... lub (jeszcze lepiej?) użyć kodu, aby CBU lub ESP32 na przykład rozmawiało bezpośrednio z chipem pomiarowym - HT7017, ze sterownikiem wyświetlacza - TM1622, a także odczytywało 4 przyciski, sterowało podświetleniem i oczywiście stanem przekaźnika (typ zatrzaskowy).
Tak, wiem, że to wykracza poza główny cel tego tematu, ale jeśli chodzi o tego rodzaju projekt, możemy podzielić temat.
PS:
Jakby ktoś potrzebował, to jest wyjście skryptu (wersja 1024bajty):
tryser_py_...t_1024.txt (39.02 kB)Musisz być zalogowany, aby pobrać ten załącznik. .
Dziękuję za ten projekt.
Chciałbym zgłosić, że parsowanie wartości częstotliwości jest niekompletne, ponieważ brakuje części dziesiętnej.
Info:TuyaMCU:Odebrane: 55 AA 03 07 00 08 6B 02 00 04 00 00 00 32 B4
Info:TuyaMCU:P rocessIncoming[v=3]: cmd 7 (State) len 15
Info:TuyaMCU:P arseState: id 107 type 2-val len 4
Info:TuyaMCU:P arseState: int32 50
O ile mogę powiedzieć:
32 = 50
B4 = 180
W tym przypadku kropką dziesiętną jest "0" od 180, więc poprawną wartością powinno być 50.0Hz.
Inny przykład:
Info:TuyaMCU:Received: 55 AA 03 07 00 08 6B 02 00 04 00 00 00 31 B3
Info:TuyaMCU:P rocessIncoming[v=3]: cmd 7 (State) len 15
Info:TuyaMCU:P arseState: id 107 type 2-val len 4
Info:TuyaMCU:P arseState: int32 49
Tutaj:
31 = 49
B3 = 179 = 9
Odpowiada to częstotliwości 49,9 Hz.
Zatem pierwsza liczba w postaci dziesiętnej od prawej do lewej jest brakującą liczbą dziesiętną.
Dziękuję za sprawdzenie tego!
....
Cześć adolfotregosa,
na pierwszy rzut oka zgodziłem się z Tobą, ale po bliższym przyjrzeniu się zobaczyłem, że zostałeś wprowadzony w błąd przez ostatni bajt, który jest bajtem sumy kontrolnej, a nie bajtem "danych".
55AA 03 07 0008 6B02000400000032 B4 przekłada się na: Nagłówek, Wersja komunikacji, Komenda / Typ odpowiedzi, Liczba bajtów danych, DANE , Suma kontrolna .
Zmiana dowolnego bajtu przed jedynką sumy kontrolnej spowoduje zmianę sumy kontrolnej .
Suma kontrolna jest resztą z dzielenia sumy wszystkich bajtów (przed sumą kontrolną) i 0x100 (256).
Więc w twoim przykładzie:
55 AA 03 07 08 6B 02 04 32 = 1B4
0x1B4 % 0x100 = 0xB4
(% jest znakiem zwykle używanym w programowaniu = operator modulo; w matematyce jest zapisywany jako "mod")
Podsłucham jeszcze trochę komunikację między CBU i MCU, aby zobaczyć, gdzie wysyłane są te liczby dziesiętne.
Dodano po 2 [minutach]: .
divadiow napisał:
dzięki. ciekawe. Kopia zapasowa Lusant to wersja 2.1.6, która ma teraz profil Cloucutter. Twoja to 2.1.17, która jest znaną poprawioną wersją.
Mam tę samą wersję FW. Porównałem pliki bin i różnica zaczyna się od 0x1CF000 - gdzie zaczyna się zaszyfrowany config.
Jego config jest z Tuya, mój jest z SmartLife.
Czy powinniśmy usunąć jego bin dump, ponieważ każdy z BK7231GUIFlashTool może odszyfrować jego zaszyfrowane dane? (na przykład widziałem jego SSID WiFi i hasło - nie tak ważne, jak sugeruje nazwa SSID: używał funkcji HotSpot z telefonu z Androidem, ale może są inne naprawdę wrażliwe dane).
Dlaczego BK7231GUIFlashTool nie dekoduje identyfikatorów dpID z tej konfiguracji?
Patrząc na zdekodowane pliki bin z folderu DebugAES zobaczyłem, że pojawiają się one w formacie JSON, ale zniekształconym - brakuje początku lub końca, ale ponieważ jest zapisany kilka razy, można go zrekonstruować.
Jedyne co udało się "zdekodować" to: { "baud": "115200" }
Użyłem JSON wyodrębnionego z oryginalnego firmware ( divadiow dodał go jako pierwszy do tego tematu), aby spróbować jak najlepiej opisać wartości.
Wciąż jednak są 4 dpID, których nie mogłem rozgryźć, do czego służą / jak są używane:
0x7b / 123 który może mieć wartość ReadOnly od 0 do 2 147 483.647 (= 0x7FFF FFFF) = "Dodaj elektryczność" według divadiow
Na początku miał wartość 21, po podłączeniu dużego obciążenia (lodówka) zaczął rosnąć. Resetowanie wartości, odłączanie zasilania lub obciążenia nie spowodowało powrotu do tej niskiej wartości.
Późniejsza edycja: ten dpID przechowuje licznik całkowitej energii zmierzonej przez urządzenie od momentu jego pierwszego użycia. Wartość można zresetować tylko przytrzymując przyciski + i - na urządzeniu przez 5 sekund. TO ZRESETUJE MCU do ustawień fabrycznych - będziesz miał domyślne wartości dla UnderVoltate, OverVoltage, OverTemperature i tak dalej.
dpID 0x70 / 112 który może mieć wartość Write od 0 do 60,000, a zgodnie z JSON powinien być skonfigurowany z krokiem 30 = "Poweroff Time" według divadiow
Próbowałem z wieloma wartościami, nie zauważyłem żadnej zmiany. Po ponownym uruchomieniu CBU wartość ta wraca do 0.
dpID 0x75 / 117 "można" (zgodnie z JSON) ustawić (zapisać) tylko 3 wartości: 0, 1 lub 2 = "Power Down Memory" wg divadiow
Przetestowałem wszystkie. Nic nie znaleziono. Po ponownym uruchomieniu CBU wartość ta wraca do 0.
dpID 0x7a / 112 jest opisany jako "boolean" w JSON i ma również "trigger": "direct" tag , który jest unikalny - jest skonfigurowany tylko dla tego dpID w JSON.
= "Przełącznik" według divadiow
Używając go jako przycisku włączania / wyłączania, widzę, że steruje przekaźnikiem, który jest również kontrolowany przez dpID 0x10 / 16. MCU odpowiada zaktualizowanym statusem dla dpID 0x10.
Późniejsza edycja: Jest to używane przez oryginalną aplikację - w Smart Life można utworzyć harmonogram kontrolujący stan przekaźnika. Prawdopodobnie chcieli użyć innego dpID dla tego polecenia, aby wiedzieć, który proces zmienił status przekaźnika (ostatni).
Naprawdę brakuje nam nowego typu przycisku - takiego, który nie zmienia swojego stanu (z wyłączonego na włączony / z czerwonego na zielony) dla poleceń, które są potrzebne tylko z wartością 1, aby coś wyzwolić, gdy MCU nie zaktualizuje stanu tych dpID, w przypadku, w którym przycisk przełączania nie jest dobry, ponieważ modyfikuje wartość, która zostanie wysłana przy następnym naciśnięciu, z 1 na 0, ponieważ teraz myśli, że jest włączony i chce go wyłączyć przy następnym naciśnięciu. Ten przycisk może zmienić swój kolor w momencie naciśnięcia, ale gdy tylko nie zostanie już naciśnięty, powinien powrócić do koloru "Off".
2 polecenia, które wymagają tego rodzaju przycisku to:
dpID 0x76 / 118 "Resetuj licznik energii"
dpID 0x78 / 120 "Resetuj licznik czasu"
0x7b / 123 który może mieć wartość ReadOnly pomiędzy 0 a 2 147 483.647 (= 0x7FFF FFFF) = "Dodaj elektryczność" według divadiow
Na początku miał wartość 21, po podłączeniu dużego obciążenia (lodówka) zaczął rosnąć. Resetowanie wartości, odłączanie zasilania lub obciążenia, nie powodowało powrotu do tej niskiej wartości.
Z tego co pamiętam to jest licznik Running Time. To jest błędne .
Znalazłem też załączony plik tekstowy (nie wiem gdzie). Za pomocą smartfona i Tłumacza Google ze Zdjęć można dowiedzieć się, jaki jest tekst w języku mandaryńskim.
Pozdrawiam.
EDIT: Opps ... to Energy Totalizer ... Myślę, że istnieje drugi Totalizer, który można zresetować tylko za pomocą przycisków w urządzeniu (przytrzymaj przyciski + i - przez 5 sekund).
Załączniki:
dpids bom.txt(11.27 KB)
Musisz być zalogowany, aby pobrać ten załącznik.
✨ Dyskusja dotyczy modyfikacji miernika mocy KWS-302WF, w szczególności zamiany pomiaru prądu z bocznika na transformator z układem HT7017 firmy HitrendTech. Urządzenie wykorzystuje mikrokontroler PY32F002A, który komunikuje się z modułem WiFi CBU (prawdopodobnie BK7231N) oraz układem HT7017. Użytkownik przechwycił komunikację szeregową między tymi elementami, analizując protokoły i prędkości transmisji (4800 bps między HT7017 a PY32F, 115200 bps między CBU a PY32F). W dyskusji poruszono kwestie modyfikacji firmware, w tym użycie open source OpenBeken i konfiguracji pliku autoexec.bat do obsługi protokołu TuyaMCU. Omówiono także ograniczenia związane z zabezpieczeniami MCU PY32F002A oraz brak dokumentacji HT7017. Użytkownicy wymienili się kopiami zapasowymi firmware, listami dpID oraz przykładami konfiguracji autoexec.bat, umożliwiającymi sterowanie przekaźnikiem, odczyt napięcia, prądu, mocy i innych parametrów. Zgłoszono też potrzebę poprawy obsługi częstotliwości (dodanie części dziesiętnej) oraz brak funkcji przycisku w OpenBK. Wątek porusza również awarię elementu zasilacza (chip U3211) i sposoby jego wymiany. Podsumowując, dyskusja skupia się na inżynierii odwrotnej, modyfikacji sprzętowej i programowej miernika KWS-302WF w celu poprawy pomiarów i funkcjonalności, z wykorzystaniem narzędzi open source i analizy komunikacji szeregowej. Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.