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

Bezprzewodowy dzwonek do drzwi WGH-ML-001 Tuya: Flashowanie OpenBeken, regulacja

Porkoltszaft 26 Cze 2023 12:31 3963 9
REKLAMA
Treść została przetłumaczona angielski » polski Zobacz oryginalną wersję tematu
  • #1 20631574
    Porkoltszaft
    Poziom 3  
    Posty: 7
    Ocena: 1
    Pozdrowienia!

    Kupiłem dwa bezprzewodowe dzwonki do drzwi oparte na Tuya z Aliexpress (WGH-ML-001). Wiedziałem, że ma moduł Tuya CBU (patrz zdjęcia).

    Bezprzewodowy dzwonek do drzwi WGH-ML-001 Tuya: Flashowanie OpenBeken, regulacja

    Bezprzewodowy dzwonek do drzwi WGH-ML-001 Tuya: Flashowanie OpenBeken, regulacja

    Wgrałem OpenBeken do jednego z urządzeń, po wywąchaniu komunikacji UART.
    Aby sflashować obraz, musiałem wyjąć moduł, ponieważ TuyaMCU zaśmieciło linie TX/RX. Do swojego posta załączam oryginalne oprogramowanie.

    Oto moje ustalenia:

    Mogę PODGLĄD głośności i dzwonka, wysyłając następujące polecenia w wierszu poleceń:
    - tuyaMcu_sendState 3 2 100 (dla głośności wartości od 1 do 100)
    - tuyaMcu_sendState 2 2 14 (dla dzwonka wartości od 1 do 40)

    Jednak te polecenia nie ZAPISUJĄ ustawień. W tym celu komunikacja UART jest następująca:
    
    Sent by WiFi module:
    55 AA	00	06		00 11	0100000D0404010C014700FF04FEFF0031	B2	
    HEADER	VER=00	Unk		LEN	fnId=1 Raw V=04 04 01 0C 01 47 00 FF 04 FE FF 00 31	CHK	                                                                                                                         
    


    W tym
    - Siódmy bajt (0x00) to tryb (00 = dźwięk i światło / 01 = tylko dźwięk / 02 = tylko światła)
    - szósty bajt (0x47) to głośność (od 1 do 100 w heksie)
    - 5-ty bajt (0x01) to dzwonek (od 1 do 40 w hex)

    Moje pierwsze pytanie brzmi: jak mogę wysłać te dane RAW do TuyaMCU? Działa, jeśli używam „uartSendHex”, ale nie mogę sprawić, by działał z tuyaMCU_sendState. Ponadto, jak mogę powiązać te ustawienia na przykład z dimmerami? (jeden z zakresem 1-100 i jeden z 1-40 dla dzwonka)?
    Pamiętaj, że po wybraniu musisz wysłać ostatnią wiadomość, w przeciwnym razie ustawienia nie zostaną zapisane (tylko podgląd).

    Drugie moje pytanie brzmi: Po naciśnięciu przycisku dzwonka moduł WiFi otrzymuje na UART:
    
    Received by WiFi module:
    55 AA	03	07		00 05	0A 01 00 01 01 		1B	
    HEADER	VER=03	State		LEN	fnId=10 Bool V=1	CHK	
    
    Received by WiFi module:
    55 AA	03	07		00 08	05 00 00 04 FEFF0031 		48	
    HEADER	VER=03	State		LEN	fnId=5 Raw V=-16842703	CHK
    


    Jak mogę powiązać to z przyciskiem? (do użycia w asystencie domowym -> chcę rejestrować, kiedy został naciśnięty przycisk i chcę wysłać powiadomienie push na mój telefon). To jest ważne, naprawdę nie obchodzi mnie, czy nie mogę ustawić głośności lub dzwonka (mogą się jednak przydać, jeśli chcesz np. chcesz spać).
    Czy mogę wysłać polecenie przez http do Openbeken (w tym przypadku skonstruuję surowe dane, obliczę sumę kontrolną i wyślę przez http za pomocą uartSendHex)?

    Jeśli nie można tego zrobić od razu po wyjęciu z pudełka, czy możesz wskazać mi samouczek, aby napisać do tego własny sterownik?

    Dziękuję bardzo i przepraszam za mój angielski, mam nadzieję, że rozumiesz, o co mi chodzi. Przepraszam również, jeśli popełniłem błędy w tworzeniu posta, jest to mój pierwszy post tutaj.

    EDYTOWAĆ:

    Dobra, więc bawiłem się tym przez cały dzień i udało mi się uruchomić przycisk. Jestem pewien, że nie jest to najlepszy sposób na zrobienie tego, ale działa.

    Dodałem następujące elementy do pliku autoexec.bat:
    
    setChannelType 1 toggle
    linkTuyaMCUOutputToChannel 10 1 1
    AddChangeHandler Channel1 == 1 startScript resetButton.bat * 1
    


    To łączy tuyaMCU z Channel1. Ale przycisk przełączania nigdy nie zmienia się z powrotem na „OFF”, ponieważ komunikat UART z TuyaMCU ma zawsze wartość „1”. Napisałem więc skrypt „resetbutton.bat” i uruchamiamy go za każdym razem, gdy wartość przycisku zmieni się na „1”.

    Przycisk resetowania.bat:
    
    delay_s 5
    ToggleChannel 1
    return
    


    Spowoduje to odczekanie 5 sekund, a następnie przełączenie kanału z powrotem na „0”.

    Następnie skonfigurowałem MQTT i zintegrowałem przycisk z Home Assistant. Teraz wiem, kiedy naciśnięto dzwonek do drzwi i mogę wysyłać powiadomienia na telefon lub robić inne rzeczy za pomocą automatyzacji.

    Jeśli masz bardziej eleganckie rozwiązanie tego problemu, podziel się nim.
    Ponadto moje inne pytania są nadal aktualne (jak radzić sobie ze zmianą głośności i dzwonka). Byłoby miło mieć możliwość ustawienia ich z HA.

    Dawid
    Załączniki:
    • Csengo - readResult_BK7231N_QIO_2023-21-6--15-11-06.bin (2 MB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #2 20632163
    p.kaczmarek2
    Moderator Smart Home
    Posty: 14489
    Pomógł: 651
    Ocena: 12497
    Masz bardzo ciekawe urządzenie, które jest dla mnie zupełną nowością. takiego jeszcze nie widzialem. Nie sądzę, aby w tej chwili było na to rozwiązanie skryptowe, ponieważ format danych pakietowych wydaje się niestandardowy dla twojego urządzenia.

    Mamy podstawową możliwość umieszczania wartości kanału w łańcuchu jednobajtowym, więc myślę, że przy niewielkich poprawkach mógłbym dodać jakiś mechanizm do wysyłania nieprzetworzonych danych pakietowych. Użyłem czegoś podobnego tutaj (ostrzeżenie, jeszcze nie przetłumaczony temat):
    https://www.elektroda.pl/rtvforum/topic3985978.html

    Podałeś taki format pakietu:
    
    Sent by WiFi module:
    55 AA	00	06		00 11	0100000D0404010C014700FF04FEFF0031	B2	
    HEADER	VER=00	Unk		LEN	fnId=1 Raw V=04 04 01 0C 01 47 00 FF 04 FE FF 00 31	CHK	                                                                                                                         
    
    In that, the
    - 7th byte (0x00) is the mode (00 = sound&light / 01 = just sound / 02 = just lights)
    - 6th byte (0x47) is the volume (from 1 to 100 in hex)
    - 5th byte (0x01) is the ringtone (from 1 to 40 in hex)
    

    Może uda mi się dodać takie polecenie:
    
    tuyaMcu_sendState idk idk idk 04 04 01 0C $CH9$ $CH10$ $CH11$ FF 04 FE FF 00 31
    

    który umożliwiłby przesyłanie danych RAW pobranych z wartości kanałów. Następnie możesz po prostu użyć skryptów/typów kanałów, aby uzyskać dane z interfejsu użytkownika.

    Jak myślisz, czy takie polecenie odpowiadałoby Twoim potrzebom?

    Btw, jeśli chodzi o drugą część Twojej wiadomości, dlaczego nie:
    
    AddChangeHandler Channel1 == 1 addRepeatingEvent 5 1 setChannel 1 0
    

    
    addRepeatingEvent	[IntervalSeconds][RepeatsOr-1][CommandToRun]
    
    Pomogłem? Kup mi kawę.
  • REKLAMA
  • #3 20632834
    Porkoltszaft
    Poziom 3  
    Posty: 7
    Ocena: 1

    Dziękuję bardzo za szybką odpowiedź!

    Tak, myślę, że Twoja propozycja będzie działać dla tego urządzenia. Przetłumaczyłem artykuł, o którym wspomniałeś, nie wiedziałem, że możesz umieszczać zmienne w parametrze uartSendHex, to bardzo fajne!

    W przypadku przycisku dzwonka, twój jednolinijkowy skrypt działa, dziękuję! :) Trochę przekombinowałem.
  • REKLAMA
  • #4 20635059
    ferbulous
    Poziom 18  
    Posty: 419
    Pomógł: 8
    Ocena: 56
    Cześć @Porkoltszaft z jakiej baterii korzysta nadajnik?

    @p.kaczmarek2 o czym myślisz Dzwonek do drzwi z kamerą wideo Wi-Fi ? czy jest to obsługiwane przez openbeken?
  • REKLAMA
  • #5 20635148
    Porkoltszaft
    Poziom 3  
    Posty: 7
    Ocena: 1

    Cześć!

    Nadajnik (przycisk dzwonka) nie ma baterii. Po naciśnięciu przycisku włącza się samoczynnie (ma przyjemne kliknięcie. Myślę, że popycha magnes przez cewki, a to zasila obwód). Lista AliExpress twierdziła, że ma stopień ochrony IP44, ale wątpię w to… Zdecydowanie nie jest chroniony przed wilgocią, więc nie wiem, ile wytrzyma na zewnątrz.

    Bezprzewodowy dzwonek do drzwi WGH-ML-001 Tuya: Flashowanie OpenBeken, regulacja Bezprzewodowy dzwonek do drzwi WGH-ML-001 Tuya: Flashowanie OpenBeken, regulacja
  • Pomocny post
    #6 20635354
    p.kaczmarek2
    Moderator Smart Home
    Posty: 14489
    Pomógł: 651
    Ocena: 12497

    Dobra, więc dodałem funkcję, o którą prosiłeś, wraz z autotestem dla symulatora OpenBeken.
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Oto jak używać:
    
    tuyaMcu_sendState 17 0 $CH10$ $CH10$ $CH11$ $CH2$ $CH3$ 01 00 $CH4$ 04 01 00 A0 08 00 00 32
    tuyaMcu_sendState [dpID] [dpType] [dpValue]
    

    Dostępne typy dp:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Następujące polecenie automatycznie doda nagłówek, typ itp. TuyaMCU wraz z poprawną sumą kontrolną.
    Pomogłem? Kup mi kawę.
  • #7 20641322
    Porkoltszaft
    Poziom 3  
    Posty: 7
    Ocena: 1
    Cześć @p.kaczmarek2!

    Dziękuję bardzo za dodanie tej funkcji! To działa!

    Mam teraz następujące w autoexec.bat:
    
    // initial setup
    startDriver NTP
    ntp_timeZoneOfs 02:00
    startDriver TuyaMCU
    setChannelType 1 toggle
    SetChannelLabel 1 button
    setChannelType 2 dimmer
    SetChannelLabel 2 ringtone
    setChannelType 3 dimmer
    SetChannelLabel 3 volume
    setChannelType 4 toggle
    SetChannelLabel 4 dnd
    // link doorbell button to channel 1, and after pressing it, set it back to 'off' / 0
    // this is needed because TuyaMCU always sends '1' on button press, and never toggles it back automatically.
    linkTuyaMCUOutputToChannel 10 1 1
    AddChangeHandler Channel1 == 1 addRepeatingEvent 5 1 setChannel 1 0
    // link volume and ringtone slider to the channels, so you can immediatelly hear, what you select
    linkTuyaMCUOutputToChannel 3 2 3
    linkTuyaMCUOutputToChannel 2 2 2
    
    // If the value of the "volume" or "ringtone" slider changes, save it.
    addEventHandler OnChannelChange 2 backlog ClampChannel 2 1 40; tuyaMcu_sendState 1 0 04 04 01 0C $CH2$ $CH3$ 00 FF 04 FE FF 00 31;
    addEventHandler OnChannelChange 3 backlog ClampChannel 3 1 100; tuyaMcu_sendState 1 0 04 04 01 0C $CH2$ $CH3$ 00 FF 04 FE FF 00 31;
    
    // Setup DND toggle button. If DND is enabled, only the lights flash on the doorbell after pressing the button.
    AddChangeHandler Channel4 == 1 tuyaMcu_sendState 1 0 04 04 01 0C $CH2$ $CH3$ 02 FF 04 FE FF 00 31
    AddChangeHandler Channel4 == 0 tuyaMcu_sendState 1 0 04 04 01 0C $CH2$ $CH3$ 00 FF 04 FE FF 00 31
    
    tuyaMcu_defWiFiState 4
    


    Ustawiłem również „-1” na kanały 2, 3, 4 w „Konfiguracja -> Konfiguruj uruchamianie”, aby zapamiętać dzwonek, głośność i stan DND po ponownym uruchomieniu lub po wyłączeniu zasilania.

    Mam jeszcze jedno pytanie: Czy można ograniczyć wartości minimalne/maksymalne suwaków? Znalazłem polecenie „ClampChannel”, dzięki któremu mogę filtrować wartości, które są poza zakresem (aby nie wysyłać śmieci do MCU). Ale fajniej byłoby mieć jeden suwak, który przechodzi od 1 do 40 (to jest zakres dzwonków) i jeden, który przechodzi od 1-100. Znalazłem "tuyaMcu_setDimmerRange" ale czy dzięki temu mogę ograniczyć tylko jeden z suwaków (w parametrach nie ma ID kanału)? A może powinienem użyć polecenia „Mapa”? Niestety jestem trochę zagubiony w dokumentacji, nie jestem pewien, który parametr jest czym (na przykład mapa 2 $CH2$ 0 100 1 40 zadziałałaby w moim przypadku? Albo co to jest „inputValue”? )

    Wielkie dzięki za pomoc, świetna robota!
  • #8 20642044
    p.kaczmarek2
    Moderator Smart Home
    Posty: 14489
    Pomógł: 651
    Ocena: 12497

    Może bardziej skorzystałbyś na stworzeniu niestandardowej strony urządzenia hostowanej w LittleFS?

    Oto przykładowa strona:
    Bezprzewodowy dzwonek do drzwi WGH-ML-001 Tuya: Flashowanie OpenBeken, regulacja

    Oto kilka tematów na ten temat, ale jeden nie został jeszcze przetłumaczony.
    https://www.elektroda.pl/rtvforum/topic3987582.html#20642035
    https://www.elektroda.com/rtvforum/topic3971355.html
    Pomogłem? Kup mi kawę.
  • #9 20644304
    Porkoltszaft
    Poziom 3  
    Posty: 7
    Ocena: 1

    Dziękuję bardzo, zawsze można się czegoś nowego dowiedzieć! Nie wiedziałem, że można tworzyć niestandardowe strony HTML hostowane na tych rzeczach. To jest świetne!

    Mam go również do pracy z Home Assistant, więc niestandardowa strona może nie być konieczna, ale też z tym poeksperymentuję.

    Bezprzewodowy dzwonek do drzwi WGH-ML-001 Tuya: Flashowanie OpenBeken, regulacja

    Stworzyłem 4 pomocników numerów wejściowych (2 dla głośności, 2 dla dzwonka, ponieważ mam 2 odbiorniki). W ten sposób mogę ustawić różne poziomy głośności i dzwonki dla każdego obszaru. Ponadto HA pozwala mi ustawić wartości min/max suwaka.
    Następnie stworzyłem automatyzacje dla każdego suwaka i wysłałem ich wartości przez MQTT do OpenBeken, tak jak poniżej:
    
    trigger:
      - platform: state
        entity_id: input_number.csengo_2_csengohang
      condition: []
      action:
      - service: mqtt.publish
        data:
          topic: wificsengok_2/2/set
          payload: '{{ states(''input_number.csengo_2_csengohang'') | int }}'
      mode: single
    


    Bardzo się cieszę, że z Waszą pomocą i pracą udało mi się osiągnąć bezchmurne rozwiązanie. Dziękujemy za opracowanie tego wspaniałego oprogramowania układowego.
  • #10 20644671
    p.kaczmarek2
    Moderator Smart Home
    Posty: 14489
    Pomógł: 651
    Ocena: 12497

    Dzięki! Jeśli masz jakieś inne urządzenia, niekoniecznie Beken (nawet ESP jest tutaj mile widziany), możesz również opublikować porzucenia.
    Wciąż poszerzamy naszą listę:
    https://openbekeniot.github.io/webapp/devicesList.html
    Pomogłem? Kup mi kawę.

Podsumowanie tematu

✨ Użytkownik zakupił bezprzewodowe dzwonki do drzwi WGH-ML-001 oparte na platformie Tuya i z powodzeniem wgrał oprogramowanie OpenBeken. Po wywąchaniu komunikacji UART, użytkownik zidentyfikował polecenia do podglądu głośności i dzwonka, jednak zauważył, że nie zapisują one ustawień. W odpowiedziach, inni uczestnicy dyskusji zaproponowali modyfikacje skryptów oraz dodanie funkcji do obsługi kanałów. Użytkownik potwierdził, że wprowadzone zmiany działają, a także zintegrował dzwonek z systemem Home Assistant, co pozwoliło na dalszą automatyzację i dostosowanie ustawień głośności oraz dzwonków dla różnych obszarów.
Wygenerowane przez model językowy.
REKLAMA