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

Czujnik oświetlenia z WiFi zasilany z USB - TuyaMCU, protokół komunikacji, firmware

p.kaczmarek2 19 Cze 2023 09:55 1875 0
  • Czujnik oświetlenia z WiFi zasilany z USB - TuyaMCU, protokół komunikacji, firmware
    Dzisiaj zaglądamy do wnętrza prostego "smart" czujnika oświetlenia, który o dziwo został zrealizowany przez producenta w oparciu o TuyaMCU, czyli w oparciu o dodatkowy mikrokontroler komunikujący się z modułem WiFi przez UART. Przeanalizujemy tutaj ich protokół komunikacji oraz spróbujemy uwolnić ten czujnik od chmury, chociaż na ten moment zrealizujemy to poprzez podmiankę modułu WiFi. Na koniec podamy gotową konfigurację OpenBeken dla tego czujnika oraz sprawdzimy jego działanie z Home Assistant.

    Temat powstał we współpracy z @DeDaMrAz , ja tego urządzenia fizycznie u siebie nie miałem, jedynie kierowałem poczynaniami kolegi. Wszystkie zdjęcia też pochodzą od kolegi.

    Zakup czujnika
    Czujnik można znaleźć pod hasłami typu "Tuya WiFi Light sensor illumination brightness sensor" i tak dalej, trzeba uważać, czy wybieramy wersję Zigbee czy WiF:
    Czujnik oświetlenia z WiFi zasilany z USB - TuyaMCU, protokół komunikacji, firmware
    Czujnik zasilany jest z USB, kabel jest w zestawie:
    Czujnik oświetlenia z WiFi zasilany z USB - TuyaMCU, protokół komunikacji, firmware
    Czujnik jest dość mały:
    Czujnik oświetlenia z WiFi zasilany z USB - TuyaMCU, protokół komunikacji, firmware
    Tak wygląda w apce Tuya:
    Czujnik oświetlenia z WiFi zasilany z USB - TuyaMCU, protokół komunikacji, firmware
    Oryginalne opakowanie:
    Czujnik oświetlenia z WiFi zasilany z USB - TuyaMCU, protokół komunikacji, firmware
    Lightsensor, GB 9254-2008, mało konkretów
    Czujnik oświetlenia z WiFi zasilany z USB - TuyaMCU, protokół komunikacji, firmware
    Czujnik oświetlenia z WiFi zasilany z USB - TuyaMCU, protokół komunikacji, firmware

    Wnętrze i protokół komunikacji
    Zaglądamy do środka, podważamy plastikową pokrywę:
    Czujnik oświetlenia z WiFi zasilany z USB - TuyaMCU, protokół komunikacji, firmware Czujnik oświetlenia z WiFi zasilany z USB - TuyaMCU, protokół komunikacji, firmware
    Mamy tu WBR3... pracuję nad nim, ale to nie jest Beken. Data 2022-09-20.
    Czujnik oświetlenia z WiFi zasilany z USB - TuyaMCU, protokół komunikacji, firmware Tylko co jest z drugiej strony PCB?
    Czujnik oświetlenia z WiFi zasilany z USB - TuyaMCU, protokół komunikacji, firmware
    Jest tu oczywiście regulator LDO AMS1117-3.3V by uzyskać 3.3V z 5V z USB, ale widzimy tu też dodatkowy mikrokontroler.
    Wygląda to tak, jakby to urządzenie korzystało z TuyaMCU:
    Czujnik oświetlenia z WiFi zasilany z USB - TuyaMCU, protokół komunikacji, firmware
    Protokół TuyaMCU był opisywany tutaj:
    https://www.elektroda.pl/rtvforum/topic3880546.html
    Mamy również do tego własny analizator:
    https://www.elektroda.com/rtvforum/topic3970199.html#20528459
    W związku z tym uruchomiliśmy analizator, kolejno zbierając dane na RX i TX modułu WiFi. Bingo!
    Najważniejszy podsłuch pakietów został wykonany na RX modułu WiFi. Patrzymy co MCU do nas wysyła:
    Czujnik oświetlenia z WiFi zasilany z USB - TuyaMCU, protokół komunikacji, firmware
    Na początku, poza zameldowaniem się, MCU nie dawał pomiarów. Wynikało to stąd, że trzeba było go sparować.
    Od tego momentu pojawiły się zmienne:
    Czujnik oświetlenia z WiFi zasilany z USB - TuyaMCU, protokół komunikacji, firmware
    W aplikacji Tuya dostępna jest opcja "FindMe", która sprawia, że dioda miga. Zmianę jej stanu również udało nam się podsłuchać, jest to zmienna boolean o dpID 101. Podsłuch został wykonany na TX modułu WiFi (to moduł WiFi wysyła jej zmianę do MCU):
    Czujnik oświetlenia z WiFi zasilany z USB - TuyaMCU, protokół komunikacji, firmware
    Po analizie oceniliśmy:
    - dpID 6 to enumeracja, poziom oświetlenia, 0, 1 lub 2
    - dpID 7 to poziom oświetlenia w lux
    - dpID 101 to "find me" opcja z aplikacji Tuya
    Te dpID6 w apce wygląda tak:
    Czujnik oświetlenia z WiFi zasilany z USB - TuyaMCU, protokół komunikacji, firmware

    Zmiana firmware?
    Prace nad WBR3 trwają, ale kolega miał wolny moduł CB3S, więc wlutowaliśmy go na jego miejsce by przetestować kod wsparcia TuyaMCU z OpenBeken:
    Czujnik oświetlenia z WiFi zasilany z USB - TuyaMCU, protokół komunikacji, firmware
    Potem przygotowaliśmy autoexec.bat OpenBeken:
    
    startDriver TuyaMCU
    
    // always report paired
    tuyaMcu_defWiFiState 4
    
    setChannelType 1 Illuminance
    setChannelLabel 1 Lux
    linkTuyaMCUOutputToChannel 7 val 1
    
    setChannelType 2 Toggle
    setChannelLabel 2 FindMe
    linkTuyaMCUOutputToChannel 101 bool 2
    
    setChannelType 3 ReadOnly
    setChannelLabel 3 LightLevel
    linkTuyaMCUOutputToChannel 6 enum 3
    

    Powyższy kod mapuje zmienne z TuyaMCU na kanały OpenBeken. Ustawia im labele do wyświetlenia oraz typy kanałów. Typy kanałów potem determinują też sposób w jaki wyświetla je Home Assistant.
    Początkowo próbowaliśmy bez "default wifi state 4", ale bez tego w razie braku MQTT byśmy nie dostawali pomiarów. MCU musi "myśleć", że jest sparowany z chmurą by dawać pomiary.
    Czujnik oświetlenia z WiFi zasilany z USB - TuyaMCU, protokół komunikacji, firmware
    Sukces! Mamy pomiary na panelu OBK. Teraz jeszcze warto wykonać Home Assistant Discovery, które już jest u nas automatyczne. Poniżej zrzuty ekranu jeszcze sprzed wprowadzenia typu kanału Illuminance:
    Czujnik oświetlenia z WiFi zasilany z USB - TuyaMCU, protokół komunikacji, firmware
    Jeszcze po dodaniu tej enumeracji poziomu oświetlenia:
    Czujnik oświetlenia z WiFi zasilany z USB - TuyaMCU, protokół komunikacji, firmware
    Wszystko działa, chociaż docelowo jeszcze ten poziom oświetlenia (enumeracja) dostanie swój typ kanału tak aby wyświetlało się to tekstowo na panelu HA. A w razie czego możecie zawsze to dodać sami we własnym zakresie przez configuration.yaml.

    Przycisk parowania w TuyaMCU

    Warto jeszcze wrócić uwagę co takiego wysyła TuyaMCU gdy wciśniemy przycisk parowania. Ten przycisk podłączony jest do mikrokontrolera, nie do modułu WiFI:
    Czujnik oświetlenia z WiFi zasilany z USB - TuyaMCU, protokół komunikacji, firmware
    Wysyłany jest pakiet 55AA0002000001, czyli typ 02 pakietu z 00 00 bajtami danych (czyli bez danych, ostatni bajt, 01 tutaj, to suma kontrolna).

    Podsumowanie
    Poszło bardzo prosto, a po porcie OBK na WBR3 nawet nie trzeba będzie przelutowywać modułu. Kod obsługi TuyaMCU się sprawdził w nowym środowisku i nie wymagał żadnych zmian. Wszystko działa.
    Jedyne co mnie zastanawia to to, czemu w ogóle ten czujnik zrealizowano na TuyaMCU, tj. czemu jest tam dodatkowy mikrokontroler do wykonywania pomiarów oświetlenia?
    Raz jeszcze dziękuję @DeDaMrAz za współpracę, poszło bardzo szybko i sprawnie, a my na forum nie mieliśmy jeszcze analizy wnętrza czujnika oświetlenia na USB, więc to też zawsze coś nowego dla naszego działu. Thank you!

    Fajne? Ranking DIY
    Pomogłem? Kup mi kawę.
    O autorze
    p.kaczmarek2
    Moderator Smart Home
    Offline 
REKLAMA