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

Detektor gazu TX-E z funkcją sterowania zaworem odcinającym - wnętrze urządzenia

Samezrp1 26 Lis 2024 13:11 1842 22

TL;DR LABEL_AI_GENERATED

  • TX-E to detektor obecności gazu ziemnego ze sterowaniem zaworem odcinającym.
  • Wewnątrz widać moduł CB3S, a zaznaczone używane piny pokazują, że cała komunikacja idzie przez UART.
  • Pozostałe piny CB3S nie są wlutowane, więc urządzenie nie korzysta z obsługi peryferiów przez CB3S.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA
Słuchaj:
  • Wnętrze detektora wycieków gazu z widocznymi komponentami elektronicznymi na płytce.
    Zaprezentuję tutaj wnętrze urządzenia Gas Leak detector, model: TX-E
    Urządzenie do kontroli obecnosci gazu ziemnego ze sterowaniem zaworem odcinającym gaz.

    edit:
    zaznaczyłem używane piny w CB3S, widać że cała kominikacja przechodzi przez UART, nie ma obsługi peryferiów przez CB3S. Reszta pinów nie wlutowana.
    Załączniki:
    • Detektor gazu TX-E z funkcją sterowania zaworem odcinającym - wnętrze urządzenia Colors.png (49.77 KB) Musisz być zalogowany, aby pobrać ten załącznik.
    • Detektor gazu TX-E z funkcją sterowania zaworem odcinającym - wnętrze urządzenia 20241126_130536.jpg (691.02 KB) Musisz być zalogowany, aby pobrać ten załącznik.
    • Detektor gazu TX-E z funkcją sterowania zaworem odcinającym - wnętrze urządzenia 20241126_130048.jpg (1.36 MB) Musisz być zalogowany, aby pobrać ten załącznik.
    • Detektor gazu TX-E z funkcją sterowania zaworem odcinającym - wnętrze urządzenia 20241126_130020.jpg (1.29 MB) Musisz być zalogowany, aby pobrać ten załącznik.
    • Detektor gazu TX-E z funkcją sterowania zaworem odcinającym - wnętrze urządzenia 20241126_130028.jpg (1.15 MB) Musisz być zalogowany, aby pobrać ten załącznik.
    • Detektor gazu TX-E z funkcją sterowania zaworem odcinającym - wnętrze urządzenia 20241126_125959.jpg (1.25 MB) Musisz być zalogowany, aby pobrać ten załącznik.
    • Detektor gazu TX-E z funkcją sterowania zaworem odcinającym - wnętrze urządzenia 20241126_091531.jpg (719.06 KB) Musisz być zalogowany, aby pobrać ten załącznik.
    • Detektor gazu TX-E z funkcją sterowania zaworem odcinającym - wnętrze urządzenia 20241126_091447.jpg (1.55 MB) Musisz być zalogowany, aby pobrać ten załącznik.
    • Detektor gazu TX-E z funkcją sterowania zaworem odcinającym - wnętrze urządzenia 20241126_091450.jpg (1.58 MB) Musisz być zalogowany, aby pobrać ten załącznik.
    • Detektor gazu TX-E z funkcją sterowania zaworem odcinającym - wnętrze urządzenia 20241126_091502.jpg (545.56 KB) Musisz być zalogowany, aby pobrać ten załącznik.

    Fajne? Ranking DIY
    O autorze
    Samezrp1
    Poziom 13  
    Offline 
    Samezrp1 napisał 90 postów o ocenie 7, pomógł 2 razy. Jest z nami od 2003 roku.
  • REKLAMA
  • #2 21321408
    p.kaczmarek2
    Moderator Smart Home
    Posty: 14755
    Pomógł: 659
    Ocena: 12877
    A więc urządzenie z TuyaMCU. Opis protokołu:
    Protokół TuyaMCU - komunikacja pomiędzy mikrokontrolerem a modułem WiFi
    Szeroki opis podejścia jak uruchomić:
    Przewodnik flashowania, instalacji i konfiguracji TuyaMCU - skonfiguruj dpID dla Home Assistant

    Ale streszczając (TLDR):
    - spróbuj pobrać znaczenia dpID z chmury Tuya
    - również warto wykonać przechwytywanie komunikacji UART analizatorem Analizator TuyaMCU - dekoder pakietów UART dla urządzeń Tuya - dpID detektor, ja to robię z dwoma konwerterami USB na UART, ale jak masz jeden, to niby starczy posłuchać tego co wysyła WiFi do MCU jak zmieniasz coś w apce oraz co MCU wysyła do WiFi okresowo....
    - wykonaj kopię zapasową flash https://github.com/openshwprojects/BK7231GUIFlashTool , wszelkie flashowanie wymagać będzie pewnie wstawienia MCU w tryb RESET lub odcięcia linii UART bądź wylutowania MCU bądź modułu WiFi....

    Dodatkowe pytanie - czy to jest zwykły TuyaMCU, czy battery-powered TuyaMCU, gdzie MCU włącza moduł WiFi tylko by zgłosić dane do chmury? Czy 3.3V jest ciągle na VDD modułu WiFi? A może moduł WiFi jest podłączony do zasilania przez tranzystor MOSFET, którym steruje MCU? To jest do sprawdzenia, urządzenia bateryjne wymagają w OBK sterownika tmSensor włączonego obok głównego TuyaMCU.
    Pomogłem? Kup mi kawę.
  • #3 21321688
    Samezrp1
    Poziom 13  
    Posty: 90
    Pomógł: 2
    Ocena: 7
    p.kaczmarek2 napisał:
    Ale streszczając (TLDR):

    Dzięki, już czytam, Część już analizowałem, ale nie wszystko.
    Cytat:

    jak masz jeden, to niby starczy posłuchać tego co wysyła WiFi do MCU jak zmieniasz coś w apce oraz co MCU wysyła do WiFi okresowo....

    Mam dwa, z tym nie ma problemu, problem jest z tym, że komunikacja WiFi RX jest spokojnie podsłuchiwana, ale jak podłączę cokolwiek, żeby nasłuchiwać WiFi TX (wystarczy fizycznie podłączyć kabel), na wyświetlaczu pojawia się alarm wykrycia gazu i urządzenie traci połączenie z chmurą. Testowane na dwóch, różnych konwerterach.
    Cytat:

    - wykonaj kopię zapasową flash https://github.com/openshwprojects/BK7231GUIFlashTool , wszelkie flashowanie wymagać będzie pewnie wstawienia MCU w tryb RESET lub odcięcia linii UART bądź wylutowania MCU bądź modułu WiFi....

    Done, w załączeniu. Poszło bez problemu. Nie próbowałem flashować.
    Cytat:

    Dodatkowe pytanie - czy to jest zwykły TuyaMCU, czy battery-powered TuyaMCU

    Moduł bez baterii, zasilanie poprzez USB-C. Wyświetlacz non sop włączony, pokazuje również temperaturę (choć przekłamuje, wygląda na pomiar lokalny), pobiera datę i temperaturę zewnętrzną z chmury, urządzenie steruje również siłownikiem do zamknięcia zaworu gazu.

    -----------
    edit:

    Póki co udało mi się dzięki temu linkowi z logów powyciagać:
    
    {
      "1": "Gas Detection State",
      "2": "Detected Gas",
      "7": "Alarm Time",
      "8": "Test",
      "9": "Test Result",
      "10": "Preheat",
      "11": "Fault Alarm",
      "12": "Lifecycle",
      "16": "Silence",
      "18": "Temperature state",
      "19": "Temperature",
      "101": "Heat Alarm Value",
      "102": "Detector Language",
      "104": "Calibration (Do this in clear air)"
    }
    

    a z developer Tuya:
    
    gas_sensor_status	Enum	
    {
      "range": [
        "alarm",
        "normal"
      ]
    }
    
    gas_sensor_value	Integer	
    {
      "unit": "%LEL",
      "min": 0,
      "max": 100,
      "scale": 0,
      "step": 1
    }
    
    alarm_time	Integer	
    {
      "unit": "m",
      "min": 0,
      "max": 60,
      "scale": 0,
      "step": 1
    }
    
    self_checking	Boolean	
    "{true,false}"
    
    checking_result	Enum	
    {
      "range": [
        "checking",
        "check_success",
        "check_failure",
        "others"
      ]
    }
    
    preheat	Boolean	
    "{true,false}"
    
    fault	Bitmap	
    {
      "label": [
        "fault",
        "serious_fault",
        "sensor_fault",
        "probe_fault",
        "power_fault"
      ]
    }
    lifecycle	Boolean	
    "{true,false}"
    
    muffling	Boolean	
    "{true,false}"
    
    co_state	Enum	
    {
      "range": [
        "alarm",
        "normal"
      ]
    }
    
    co_value	Integer	
    {
      "unit": "℃",
      "min": -55,
      "max": 125,
      "scale": 0,
      "step": 1
    }
    


    I teraz eventy wyciągnięte z TuyaMCUAnalyzer.exe.

    tu wywołanie alarmu wykrycia gazu:
    
    Dir.,Header,Vers.,Cmd,Length,DPid,Type,DataLen,Data,Decoded,Checksum
    IN,55 AA,03,00,00 01,,,,01,Heartbeat,04
    IN,55 AA,03,07,00 08,02,02,00 04,00000005,dpId=2 Val V=5,1E
    IN,55 AA,03,07,00 05,10,01,00 01,01,dpId=16 Bool V=1,21
    IN,55 AA,03,07,00 08,13,02,00 04,00000013,dpId=19 Val V=19,3D
    IN,55 AA,03,07,00 05,01,04,00 01,00,dpId=1 Enum V=0,14
    IN,55 AA,03,07,00 08,02,02,00 04,0000000D,dpId=2 Val V=13,26
    IN,55 AA,03,07,00 08,13,02,00 04,00000015,dpId=19 Val V=21,3F
    IN,55 AA,03,07,00 08,13,02,00 04,00000016,dpId=19 Val V=22,40
    IN,55 AA,03,07,00 08,02,02,00 04,0000000C,dpId=2 Val V=12,25
    IN,55 AA,03,07,00 08,02,02,00 04,0000000A,dpId=2 Val V=10,23
    IN,55 AA,03,07,00 08,02,02,00 04,00000008,dpId=2 Val V=8,21
    IN,55 AA,03,07,00 08,02,02,00 04,00000007,dpId=2 Val V=7,20
    IN,55 AA,03,07,00 08,02,02,00 04,00000006,dpId=2 Val V=6,1F
    IN,55 AA,03,07,00 08,02,02,00 04,00000005,dpId=2 Val V=5,1E
    IN,55 AA,03,07,00 08,13,02,00 04,00000017,dpId=19 Val V=23,41
    IN,55 AA,03,07,00 05,01,04,00 01,01,dpId=1 Enum V=1,15
    IN,55 AA,03,07,00 08,02,02,00 04,00000000,dpId=2 Val V=0,19
    IN,55 AA,03,07,00 05,10,01,00 01,00,dpId=16 Bool V=0,20
    IN,55 AA,03,07,00 08,13,02,00 04,00000018,dpId=19 Val V=24,42
    IN,55 AA,03,07,00 08,13,02,00 04,00000019,dpId=19 Val V=25,43
    IN,55 AA,03,07,00 08,13,02,00 04,0000001A,dpId=19 Val V=26,44
    IN,55 AA,03,07,00 08,13,02,00 04,0000001B,dpId=19 Val V=27,45
    

    w chwili wykrycia gazu na wyjściu sterowania zaworem pojawia się 12V, czytaj U61 jest odpowiedzialne za podbicie napięcia do 12V.

    Zdjęcie płytki drukowanej z zaznaczonym obszarem

    Urządzenie pobiera w stanie spoczynku ok.180mA.

    Tester cyfrowy USB pokazujący wartości napięcia, prądu i mocy
    a tu wciśnięcie guzika Test:
    
    Dir.,Header,Vers.,Cmd,Length,DPid,Type,DataLen,Data,Decoded,Checksum
    IN,55 AA,03,07,00 05,08,01,00 01,01,dpId=8 Bool V=1,19
    IN,55 AA,03,07,00 05,09,04,00 01,00,dpId=9 Enum V=0,1C
    IN,55 AA,03,07,00 05,09,04,00 01,01,dpId=9 Enum V=1,1D
    IN,55 AA,03,07,00 05,08,01,00 01,00,dpId=8 Bool V=0,18
    

    restart systemu:
    
    Dir.,Header,Vers.,Cmd,Length,DPid,Type,DataLen,Data,Decoded,Checksum
    IN,55 AA,03,01,00 2A,,,,7B2270223A22366A7132307736776E6E346661773239222C2276223A22312E302E30222C226D223A327D,"{""p"":""6jq20w6wnn4faw29"",""v"":""1.0.0"",""m"":2}",41
    IN,55 AA,03,02,00 00,,,,,McuConf,04
    IN,55 AA,03,03,00 00,,,,,WifiState,05
    IN,55 AA,03,07,00 05,01,04,00 01,01,dpId=1 Enum V=1,15
    IN,55 AA,03,07,00 08,02,02,00 04,00000000,dpId=2 Val V=0,19
    IN,55 AA,03,07,00 08,07,02,00 04,00000001,dpId=7 Val V=1,1F
    IN,55 AA,03,07,00 05,08,01,00 01,00,dpId=8 Bool V=0,18
    IN,55 AA,03,07,00 05,0A,01,00 01,01,dpId=10 Bool V=1,1B
    IN,55 AA,03,07,00 05,0B,05,00 01,00,dpId=11 Bitmap V=0,1F
    IN,55 AA,03,07,00 05,0C,01,00 01,01,dpId=12 Bool V=1,1D
    IN,55 AA,03,07,00 05,10,01,00 01,00,dpId=16 Bool V=0,20
    IN,55 AA,03,07,00 05,12,04,00 01,01,dpId=18 Enum V=1,26
    IN,55 AA,03,07,00 08,13,02,00 04,0000001C,dpId=19 Val V=28,46
    IN,55 AA,03,07,00 08,65,02,00 04,00000039,dpId=101 Val V=57,B5
    IN,55 AA,03,07,00 05,66,04,00 01,01,dpId=102 Enum V=1,7A
    IN,55 AA,03,03,00 00,,,,,WifiState,05
    IN,55 AA,03,03,00 00,,,,,WifiState,05
    IN,55 AA,03,20,00 1C,,,,06772E74656D700A772E68756D696469747904772E181B04772E181B,Unk,73
    IN,55 AA,03,1C,00 00,,,,,Date,1E
    IN,55 AA,03,07,00 08,13,02,00 04,0000001C,dpId=19 Val V=28,46
    IN,55 AA,03,1C,00 00,,,,,Date,1E
    IN,55 AA,03,1C,00 00,,,,,Date,1E
    IN,55 AA,03,1C,00 00,,,,,Date,1E
    IN,55 AA,00,21,00 00,,,,,Unk,20
    IN,55 AA,03,1C,00 00,,,,,Date,1E
    IN,55 AA,03,07,00 05,09,04,00 01,01,dpId=9 Enum V=1,1D
    IN,55 AA,03,07,00 05,0A,01,00 01,00,dpId=10 Bool V=0,1A
    


    ---------
    edit2
    cd poszukiwań, polecernia wydane z aplikacji i co zostało wysłane do urządzenia:
    
    turn on gas decode
    55AA00060005080100010115
    OUT,55 AA,00,06,00 05,,,,0801000101,dpId=8 Bool V=1,15
    
    turn OFF gas decode
    55AA00060005080100010014
    OUT,55 AA,00,06,00 05,,,,0801000100,dpId=8 Bool V=0,14
    
    set alarm time to 2 mins
    55AA0006000807020004000000021C
    OUT,55 AA,00,06,00 08,,,,0702000400000002,dpId=7 Val V=2,1C
    
    mute alarm
    55AA0006000510010001011D
    OUT,55 AA,00,06,00 05,,,,1001000101,dpId=16 Bool V=1,1D
    
    umute alarm
    55AA0006000510010001001C
    OUT,55 AA,00,06,00 05,,,,1001000100,dpId=16 Bool V=0,1C
    
    heat alarm value = 61
    55AA00060008650200040000003DB5
    OUT,55 AA,00,06,00 08,,,,650200040000003D,dpId=101 Val V=61,B5
    
    lang Chineese
    55AA00060005660400010075
    OUT,55 AA,00,06,00 05,,,,6604000100,dpId=102 Enum V=0,75
    
    lang English
    55AA00060005660400010176
    OUT,55 AA,00,06,00 05,,,,6604000101,dpId=102 Enum V=1,76
    
    start calibration
    55AA00060005680100010175
    OUT,55 AA,00,06,00 05,,,,6801000101,dpId=104 Bool V=1,75
    
    stop calibration
    55AA00060005680100010074
    OUT,55 AA,00,06,00 05,,,,6801000100,dpId=104 Bool V=0,74
    
    Załączniki:
    • readResult_BK7231N_QIO_Gas_leakage_sensor_TX-E_2024-26-11-11-42-25.zip (1.05 MB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #4 21324432
    Samezrp1
    Poziom 13  
    Posty: 90
    Pomógł: 2
    Ocena: 7
    OK, jestem gotowy do konfiguracji, wydaje mi się, że mam wszystko co trzeba. CB3S sfalszowany, łączy się z WiFi. Wlutowany i czas na konfigurację.
    Czytałem przewodnik, jestem na stronie Import w urządzeniu i poległem.

    Nie bardzo rozumiem połączenie setChannelType z typem danych, nie zgadza mi się typ danych z definicją, np.
    Fragment kodu pokazujący mapowanie dpID i typów danych w TuyaMCU.

    Mółgbyś na podstawie przykładu niżej wyjaśnić jak zdefiniować dla poniższych wartości kanały?

    dpID 1, gas_sensor_status, wysyłany przez tuyaMCU, enum, przyjmuje wartości 0 i 1
    dpID 2, gas_sensor_value, wysyłany przez tuyaMCU, val, przyjmuje wartości 0..100
    dpID 8, gas_decode, odbierany przez tuyaMCU, bool, przyjmuje wartości 0 i 1
    dpID 102, language, odbierany przez tuyaMCU, enum, przyjmuje wartości 0 i 1

    Jak się to ma do definicji:

    dpID 1
    gas_sensor_status Enum
    {
    "range": [
    "alarm",
    "normal"
    ]
    }

    dpID 2
    gas_sensor_value Integer
    {
    "unit": "%LEL",
    "min": 0,
    "max": 100,
    "scale": 0,
    "step": 1
    }

    Urządzenie wysyła na server MQTT dane:
    Zrzut ekranu z debugera pokazujący wartości payload dla różnych kanałów.
    Ale robi to losowo, Jak wywołuję alarm, to go nie wysyła.

    Nie bardzo też wiem jak do niego wysłać dane, np. wymusić kalibrację:
    
    start calibration
    55AA00060005680100010175
    OUT,55 AA,00,06,00 05,,,,6801000101,dpId=104 Bool V=1,75
    


    No i widzę, ze mniej więcej co minutę na chwilę się zawiesza, na nowo wysyła info dot połączenia, przy czym tak sobie myślę, że to może być jakiś watchdog z MCU, bo nie informuję go, że jest połączenie z WiFi. Mam rację?
    Póki co wysyłam taką konfigurację:
    
    ClearIO // clear old GPIO/channels
    lfs_format // clear LFS
    StartupCommand ""  // clear STARTUP
    
    stopDriver *  // kill drivers
    startDriver TuyaMCU
    tuyaMcu_setBaudRate 9600
    tuyaMcu_defWiFiState 4
    
    setChannelType 1 Default
    linkTuyaMCUOutputToChannel 1 val 4
    linkTuyaMCUOutputToChannel 1 MQTT
    
    setChannelType 2 Default
    linkTuyaMCUOutputToChannel 2 val 2
    linkTuyaMCUOutputToChannel 2 MQTT
    
    setChannelType 8 Default
    linkTuyaMCUOutputToChannel 8 val 1
    linkTuyaMCUOutputToChannel 8 MQTT
    
    setChannelType 102 Default
    linkTuyaMCUOutputToChannel 102 val 4
    linkTuyaMCUOutputToChannel 102 MQTT
    
  • #5 21324468
    p.kaczmarek2
    Moderator Smart Home
    Posty: 14755
    Pomógł: 659
    Ocena: 12877
    To może zacznijmy od tego:
    Samezrp1 napisał:

    No i widzę, ze mniej więcej co minutę na chwilę się zawiesza, na nowo wysyła info dot połączenia, przy czym tak sobie myślę, że to może być jakiś watchdog z MCU, bo nie informuję go, że jest połączenie z WiFi. Mam rację?

    Wczoraj wrzucałem o tym temat, jeszcze dalej na głównej jest:
    Jak sprawić, by urządzenie TuyaMCU wysyłało więcej danych? Dlaczego dpID nie są wysyłane?
    Zapoznaj się z nim w całości i spróbuj określić, czy u Ciebie MCUConf (0x02) pakiet ma jakieś payload (indeksy pinów), czy też nie?

    Dla ułatwienia dodam log printf:
    https://github.com/openshwprojects/OpenBK7231...mmit/e5c407eb1b102b87c94fe4b0b4439b7602fd47a3
    Tylko ostrożnie z OTA, bo jak ci MCU zresetuje układ w trakcie to nie wiem czy nie trzeba będzie lutować znów kabelków.
    Pomogłem? Kup mi kawę.
  • #6 21324859
    Samezrp1
    Poziom 13  
    Posty: 90
    Pomógł: 2
    Ocena: 7
    Nie wprost, ale pomogłeś. Rzeczywiście indykator połączenia WiFi nie był stabilny na wyświetlaczu, czasem się pojawiał czasem ginął, ale czytając polecane wątki natknąłem się na ustawienie, któego nie stosowałem:
    
    startDriver NTP
    

    po tym moduł aktualizuje czas i wysyła wiadomości na MQTT.

    I teraz znowu proszę o pomoc, nie umiem tego znaleźć: w jaki sposób wysłać do Tuya komendę?
    Dla przykładu chciałbym wysłać komendę:
    55AA0021001F0106772E74656D700004000000060A772E68756D696469747900040000005D28

    która ustawia temperaturę i wilgotność zewnętrzną.
    Niestety rezultat mam:
    Error:CMD:cmd 55AA0021001F0106772E74656D700004000000060A772E68756D696469747900040000005D28 NOT found (args )
    Info:CMD:[WebApp Cmd '55AA0021001F0106772E74656D700004000000060A772E68756D696469747900040000005D28' Result] Unknown command

    Jak będę wiedział jak z consoli, to powinienem sobie poradzić z MQTT, chyba że jest jakiś myk.

    BTW mnój autostart wygląda tak:

    ClearIO // clear old GPIO/channels
    lfs_format // clear LFS
    StartupCommand ""  // clear STARTUP
    stopDriver *  // kill drivers
    startDriver TuyaMCU
    startDriver NTP
    ntp_setLatlong -33.729720 151.160990
    ntp_timeZoneOfs 1
    //tuyaMcu_setBaudRate 9600
    tuyaMcu_defWiFiState 4
    
    setChannelType 1 Default
    linkTuyaMCUOutputToChannel 1 enum 1
    linkTuyaMCUOutputToChannel 1 MQTT
    
    setChannelType 2 Default
    linkTuyaMCUOutputToChannel 2 val 2
    linkTuyaMCUOutputToChannel 2 MQTT
    
    setChannelType 7 Default
    linkTuyaMCUOutputToChannel 7 val 7
    linkTuyaMCUOutputToChannel 7 MQTT
    
    setChannelType 8 Default
    linkTuyaMCUOutputToChannel 8 bool 8
    linkTuyaMCUOutputToChannel 8 MQTT
    
    setChannelType 9 Default
    linkTuyaMCUOutputToChannel 9 enum 9
    linkTuyaMCUOutputToChannel 9 MQTT
    
    setChannelType 10 Default
    linkTuyaMCUOutputToChannel 10 val 10
    linkTuyaMCUOutputToChannel 10 MQTT
    
    setChannelType 11 Default
    linkTuyaMCUOutputToChannel 11 bool 11
    linkTuyaMCUOutputToChannel 11 MQTT
    
    setChannelType 12 Default
    linkTuyaMCUOutputToChannel 12 bool 12
    linkTuyaMCUOutputToChannel 12 MQTT
    
    setChannelType 16 Default
    linkTuyaMCUOutputToChannel 16 bool 16
    linkTuyaMCUOutputToChannel 16 MQTT
    
    setChannelType 18 Default
    linkTuyaMCUOutputToChannel 18 enum 18
    linkTuyaMCUOutputToChannel 18 MQTT
    
    setChannelType 19 Default
    linkTuyaMCUOutputToChannel 19 val 19
    linkTuyaMCUOutputToChannel 19 MQTT
    
    setChannelType 101 Default
    linkTuyaMCUOutputToChannel 101 val 101
    linkTuyaMCUOutputToChannel 101 MQTT
    
    setChannelType 102 Default
    linkTuyaMCUOutputToChannel 102 enum 102
    linkTuyaMCUOutputToChannel 102 MQTT
    
    setChannelType 104 Default
    linkTuyaMCUOutputToChannel 104 bool 104
    linkTuyaMCUOutputToChannel 104 MQTT
    


    Zastanawiam się czy mogę tak używać kanały, jak dpId, czy np. dla dpId=7 powinienem użyć kanału nr. 3.

    setChannelType 3 Default
    linkTuyaMCUOutputToChannel 7 val 3
    linkTuyaMCUOutputToChannel 7 MQTT
    
    
  • REKLAMA
  • #7 21324878
    p.kaczmarek2
    Moderator Smart Home
    Posty: 14755
    Pomógł: 659
    Ocena: 12877
    Samezrp1 napisał:
    Nie wprost, ale pomogłeś. Rzeczywiście indykator połączenia WiFi nie był stabilny na wyświetlaczu, czasem się pojawiał czasem ginął, ale czytając polecane wątki natknąłem się na ustawienie, któego nie stosowałem:
    
    startDriver NTP
    

    po tym moduł aktualizuje czas i wysyła wiadomości na MQTT.

    I teraz znowu proszę o pomoc, nie umiem tego znaleźć: w jaki sposób wysłać do Tuya komendę?

    Ciekawe, czyli bez czasu nie wyśle danych? Możesz dopisać to do wątku o dpID, może komuś to pomoże:
    https://www.elektroda.pl/rtvforum/topic4089722.html
    A w Web App Log nie miałeś wspomniane:
    
    
    	case TUYA_CMD_SET_TIME:
    		addLogAdv(LOG_INFO, LOG_FEATURE_TUYAMCU, "ProcessIncoming: received TUYA_CMD_SET_TIME, so sending back time");
    		TuyaMCU_Send_SetTime(TuyaMCU_Get_NTP_Time(), false);
    		break;
    





    Samezrp1 napisał:

    I teraz znowu proszę o pomoc, nie umiem tego znaleźć: w jaki sposób wysłać do Tuya komendę?
    Dla przykładu chciałbym wysłać komendę:
    55AA0021001F0106772E74656D700004000000060A772E68756D696469747900040000005D28

    która ustawia temperaturę i wilgotność zewnętrzną.

    Preferowanym rozwiązaniem jest wykonanie linkTuyaMCUOutputToChannel i zmapowanie dpID na kanał, ale jeśli chcesz wysyłać bez mapowania wartości dpID to masz komendę tuyaMcu_sendState [b]. Ona sama policzy sumę kontrolną. Chyba, że chcesz wysyłać hex, wtedy masz [b]uartSendHex.
    Tu masz przykłady:
    https://github.com/openshwprojects/OpenBK7231T_App/blob/main/docs/autoexecExamples.md
    Tu masz listę komend:
    https://github.com/openshwprojects/OpenBK7231T_App/blob/main/docs/commands.md



    Samezrp1 napisał:

    Jak będę wiedział jak z consoli, to powinienem sobie poradzić z MQTT, chyba że jest jakiś myk.

    Możesz cokolwiek wysłać przez MQTT jako komendę i obk to wykona. Możesz też określić alias i potem wysłać samą treść aliasu.
    https://github.com/openshwprojects/OpenBK7231T_App/blob/main/docs/mqttTopics.md
    A co chcesz z MQTT wysyłać do tego urządzenia?[/b][/b]

    Added after 7 [minutes]:

    Samezrp1 napisał:

    setChannelType 3 Default
    linkTuyaMCUOutputToChannel 7 val 3
    linkTuyaMCUOutputToChannel 7 MQTT
    

    To nie zadziała. To też jest zbędne.
    Jak już mapujesz dpID 7 jako value na kanał 3, to jak dpID 7 się zmieni, to kanał 3 też się zmieni i OBK wykona publish pod tym kanałem... chyba, że nie wykonuje, to załącz flagę:
    
    19	[MQTT] Always publish channels used by TuyaMCU
    

    albo ustaw kanałowi 7 typ jakiś, np Temperature lub Temperature_div10.

    Powinieneś zrobić:
    setChannelType 3 Default
    linkTuyaMCUOutputToChannel 7 val 3
    

    I wtedy w Home Assistant nasłuchujesz (bądź wysyłasz do) kanału 3.

    Dodatkowo, jeśli kanał 3 np będzie miał ustawiony typ Temperature, to Home Assistant Discovery z OBK samo go doda do HA
    Pomogłem? Kup mi kawę.
  • #8 21324887
    Samezrp1
    Poziom 13  
    Posty: 90
    Pomógł: 2
    Ocena: 7
    OK, dzięki, będę analizował wysyłanie.
    Cytat:

    A co chcesz z MQTT wysyłać do tego urządzenia?

    Nie używam homeAssistanta, używam Node-RED i cała komunikacja idzie po MQTT. Mam na tym obsugę wszystkich urządzeń w domu, łącznie z rekuperatorem, światłami, częściowo klimą, zbieram informacje o temperaturze itd.
    De facto raczej nie będę się bawił wysyłaniem, no ale jak już mam stworzyć definicję tego urządzenia, to dobrze by było zdefiniować do wykorzystania wszystkie możliwości.
    A wysyłać można poniższe:
    
    turn on gas decoding
    55AA00060005080100010115
    OUT,55 AA,00,06,00 05,,,,0801000101,dpId=8 Bool V=1,15
    
    turn OFF gas decoding
    55AA00060005080100010014
    OUT,55 AA,00,06,00 05,,,,0801000100,dpId=8 Bool V=0,14
    
    set alarm time to 2 mins
    55AA0006000807020004000000021C
    OUT,55 AA,00,06,00 08,,,,0702000400000002,dpId=7 Val V=2,1C
    
    mute alarm
    55AA0006000510010001011D
    OUT,55 AA,00,06,00 05,,,,1001000101,dpId=16 Bool V=1,1D
    
    umute alarm
    55AA0006000510010001001C
    OUT,55 AA,00,06,00 05,,,,1001000100,dpId=16 Bool V=0,1C
    
    heat alarm value = 61
    55AA00060008650200040000003DB5
    OUT,55 AA,00,06,00 08,,,,650200040000003D,dpId=101 Val V=61,B5
    
    lang Chineese
    55AA00060005660400010075
    OUT,55 AA,00,06,00 05,,,,6604000100,dpId=102 Enum V=0,75
    
    lang English
    55AA00060005660400010176
    OUT,55 AA,00,06,00 05,,,,6604000101,dpId=102 Enum V=1,76
    
    start calibration
    55AA00060005680100010175
    OUT,55 AA,00,06,00 05,,,,6801000101,dpId=104 Bool V=1,75
    
    stop calibration
    55AA00060005680100010074
    OUT,55 AA,00,06,00 05,,,,6801000100,dpId=104 Bool V=0,74
    


    plus można wysłać do wyświetlenia temperaturę i wilgotność (choć jej nie pokazuje) zewnętrzną. Normalnie robi to serwer Tuya na podstawie lokalizacji.
  • #9 21324920
    p.kaczmarek2
    Moderator Smart Home
    Posty: 14755
    Pomógł: 659
    Ocena: 12877
    Według mnie powinieneś najpierw w obrębie OBK wykonać mapowanie na kanały zgodnie z naszymi przykładami, np:
    https://github.com/openshwprojects/OpenBK7231T_App/blob/main/docs/autoexecExamples.md
    
    // start MCU driver
    startDriver TuyaMCU
    // let's say that channel 1 is dpid1 - fan on/off
    setChannelType 1 toggle
    // map dpid1 to channel1, var type 1 (boolean)
    linkTuyaMCUOutputToChannel 1 1 1
    // let's say that channel 2 is dpid9 - light on/off
    setChannelType 2 toggle
    // map dpid9 to channel2, var type 1 (boolean)
    linkTuyaMCUOutputToChannel 9 1 2
    //channel 3 is dpid3 - fan speed
    setChannelType 3 LowMidHigh
    // map dpid3 to channel3, var type 4 (enum)
    linkTuyaMCUOutputToChannel 3 4 3
    //dpId 17 = beep on/off
    setChannelType 4 toggle
    linkTuyaMCUOutputToChannel 17 1 4
    //
    //
    //dpId 6, dataType 4-DP_TYPE_ENUM = set timer
    setChannelType 5 TextField
    linkTuyaMCUOutputToChannel 6 4 5
    //
    //
    //dpId 7, dataType 2-DP_TYPE_VALUE = timer remaining
    setChannelType 6 ReadOnly
    linkTuyaMCUOutputToChannel 7 2 6
    

    potem jak będziesz mieć to na panelu, to wysyłasz z Node-Red wartości na kanały by je ustawiać, oraz odbierasz publishe z kanałów jak coś się zmieni.


    Samezrp1 napisał:

    plus można wysłać do wyświetlenia temperaturę i wilgotność (choć jej nie pokazuje) zewnętrzną. Normalnie robi to serwer Tuya na podstawie lokalizacji.

    Jak wyżej, niby można wysyłać to komenda przez tuyaMCU_sendState, ale lepiej zrobić TextField i najpierw w OBK testować:
    
    setChannelType 5 TextField
    linkTuyaMCUOutputToChannel 6 4 5
    

    Zrób TextField i sprawdź czy w ogóle działa wysyłanie tego. Potem można pomyśleć co dalej, może bym sprobówał przygotować sterownik co pobiera te dane z jakiejś darmowej usługi z internetu?
    Pomogłem? Kup mi kawę.
  • REKLAMA
  • #10 21325118
    Samezrp1
    Poziom 13  
    Posty: 90
    Pomógł: 2
    Ocena: 7
    OK, powoli się wyjaśnia.
    Cytat:

    Zrób TextField i sprawdź czy w ogóle działa wysyłanie tego. Potem można pomyśleć co dalej, może bym sprobówał przygotować sterownik co pobiera te dane z jakiejś darmowej usługi z internetu?

    polecenie:
    setChannelType 2 Default

    nie wystawia na panelu żadnego elementu i dlatego głupiałem, a nie byłem pewien jaki, więc założyłem, z Default będzie bezpieczne. Błąd. Pole text jest spoko i uniwersalne.
    Mam teraz działające pola na panelu, mogę ustawiać ich wartości, mogę je odczytywać, system wysyła dane, wydawałoby się, że już prawie, prawie, ale...

    Dwie sprawy.

    Pierwsza:
    rozwiązana, z jakiegoś powodu czas na urządzeniu ustawił się na 2070 rok i tak zostawał, mimo resetu. Oczywiście 2000 dodawało samo urządzenie, bo jak widac to jest po prostu Unix Epoch start time, Chińczyki założyły, że trzeba dodać 2000 do daty.
    Rozwiązaniem jest wymuszenie wysłania czasu z TuyaMCU do MCU (z CB3S to MCU urządzenia), poleceniem:
    tuyaMcu_sendCurTime

    Zrzut ekranu z logami czasu i danych z TuyaMCU
    Druga:
    Na panelu nie pojawiają mi się kanały z dpID pow 100, czytaj: 101, 102 i 104.
    Interfejs użytkownika czujnika wycieku gazu z ustawieniami kanałów.

    Przy konfiguracji:
    Zrzut ekranu z konsoli skryptu pokazujący konfigurację kanałów TuyaMCU

    edit:
    Wygląda na to, ze jest jakiś licznik dpID do 100, obija mi się, że czytałem, że do 100 są Tuya ID a powyżej user, widać, że te pow 100 nadpisują wartości od zera:
    Tabela z komunikatami wyjściowymi i wejściowymi TuyaMCU z wyróżnionymi wierszami.

    te wartości zgodnie ze zrzutem wyżej powinny być odpowiednio 1 i 0:
    Panel sterowania czujnikiem wycieku gazu z wartościami do ustawienia.

    edit2:
    Zmieniłem konfigurację kanałów, zacząłem od 1 do 14, i zgodnie z tym niżej już wwygląda na to, ze wszystko jest ok :)
    Teraz tylko testy i zmiana wartości tylko do odczytu (np. temp wysyłana przez MCU) na ReadOnly:

    
    //co_value	Integer, temperature value
    setChannelType 11 TextField
    setChannelLabel 11 co_value_(dpId=19)
    linkTuyaMCUOutputToChannel 19 val 11
    
    //heat_alarm_value integer
    setChannelType 12 TextField
    setChannelLabel 12 heat_alarm_value_(dpId=101)
    linkTuyaMCUOutputToChannel 101 val 12
    
    //lang Chineese=0, EN=1
    setChannelType 13 TextField
    setChannelLabel 13 Lang_(0=CN,1=EN)(dpId=102)
    linkTuyaMCUOutputToChannel 102 enum 13
    
    //calibration, start = 1, stop = 0
    setChannelType 14 TextField
    setChannelLabel 14 calibration_start=1,stop=0 (dpId=104)
    linkTuyaMCUOutputToChannel 104 bool 14
    


    Sorry za edity, ale czasem pisząc coć wpadałęm na kolejny pomysł do sprawdzenia :)
  • #11 21325209
    p.kaczmarek2
    Moderator Smart Home
    Posty: 14755
    Pomógł: 659
    Ocena: 12877
    Samezrp1 napisał:

    polecenie:
    setChannelType 2 Default

    nie wystawia na panelu żadnego elementu i dlatego głupiałem, a nie byłem pewien jaki, więc założyłem, z Default będzie bezpieczne. Błąd. Pole text jest spoko i uniwersalne.

    Wydaje mi się, że pole ReadOnly będzie tylko do odczytu i jednocześnie widoczne na panelu. Default to tryb domyślny, gdyby Default było widoczne na panelu, to po wgraniu firmware byłoby na panelu widoczne 64 kanałów...


    Samezrp1 napisał:

    Rozwiązaniem jest wymuszenie wysłania czasu z TuyaMCU do MCU (z CB3S to MCU urządzenia), poleceniem:
    tuyaMcu_sendCurTime

    Zrzut ekranu z logami czasu i danych z TuyaMCU

    Możliwe, niby w teorii MCU powinno zapytać samo, ale bywa różnie:
    Zrzut ekranu kodu źródłowego w Microsoft Visual Studio z otwartym plikiem drv_tuyaMCU.c.

    Samezrp1 napisał:

    Druga:
    Na panelu nie pojawiają mi się kanały z dpID pow 100, czytaj: 101, 102 i 104.
    Interfejs użytkownika czujnika wycieku gazu z ustawieniami kanałów.
    Przy konfiguracji:
    Zrzut ekranu z konsoli skryptu pokazujący konfigurację kanałów TuyaMCU

    Niestety kanały są tylko do 64, więc nie da się zrobić takiego ładnego mapowania jakbyś chciał. To wynika m. in. z oszczędności pamięci oraz z tego, że wsparcie TuyaMCU zostało dodane stopniowo, na początku myślałem, że dpID są zawsze od 1, a nie że nagle skaczą do 100...

    Samezrp1 napisał:

    
    //co_value	Integer, temperature value
    setChannelType 11 TextField
    setChannelLabel 11 co_value_(dpId=19)
    linkTuyaMCUOutputToChannel 19 val 11
    
    //heat_alarm_value integer
    setChannelType 12 TextField
    setChannelLabel 12 heat_alarm_value_(dpId=101)
    linkTuyaMCUOutputToChannel 101 val 12
    
    //lang Chineese=0, EN=1
    setChannelType 13 TextField
    setChannelLabel 13 Lang_(0=CN,1=EN)(dpId=102)
    linkTuyaMCUOutputToChannel 102 enum 13
    


    Jak chcesz mieć jakiś konkretny typ kanału to mogę dodać na prośbę, choć docelowo zamierzam dodać ich customizację.
    Dodatkowo, do całkiem niestandardowych urządzeń jest opcja zrobienia własnego panelu w HTML i Javascript, bez żadnych ograniczeń:
    Alternatywna strona HTML sterowania dla TOMPD-63-WIFI


    Czyli co teraz zostało jeszcze? Te pobieranie wilgoci/temperatury dla szerokości i długości geograficznej z sieci, dobrze rozumiem?
    Pomogłem? Kup mi kawę.
  • #12 21325415
    Samezrp1
    Poziom 13  
    Posty: 90
    Pomógł: 2
    Ocena: 7
    Cytat:
    Wydaje mi się, że pole ReadOnly będzie tylko do odczytu i jednocześnie widoczne na panelu. Default to tryb domyślny, gdyby Default było widoczne na panelu, to po wgraniu firmware byłoby na panelu widoczne 64 kanałów...

    Czyli wszystko jasne.
    Cytat:
    Możliwe, niby w teorii MCU powinno zapytać samo, ale bywa różnie:

    Będę obserował, bo mam wrażenie, że po jakimś czasie zgubił czas, ale to muszę potwierdzić.
    Cytat:
    Niestety kanały są tylko do 64, więc nie da się zrobić takiego ładnego mapowania jakbyś chciał.

    Przeżyję :)
    Cytat:
    Jak chcesz mieć jakiś konkretny typ kanału to mogę dodać na prośbę, choć docelowo zamierzam dodać ich customizację.

    Zastanawiałem się nad kanałem typu toggle, ale tylko do odczytu, ew opcji do każdego kanały RO.
    To jest przydatne do wygnalizowania flag. Np. tu załączasz test wewnętrzny i urządzenie wystawia osobny znacznik FAIL w stan wysoki dopóki test przechodzi. Po pozytywnym teście zminia na niski.
    Cytat:
    Czyli co teraz zostało jeszcze? Te pobieranie wilgoci/temperatury dla szerokości i długości geograficznej z sieci, dobrze rozumiem?

    Szczerze to się zastanawiam, bo na nic ta informacja, pomiar temperatury jest taki, że w moim pokoju mam 32 stopnie, więc do tego bym nie używał urządzenia, a czas spędzony nad tym może być niewarty efektu,
  • #13 21325830
    p.kaczmarek2
    Moderator Smart Home
    Posty: 14755
    Pomógł: 659
    Ocena: 12877
    Samezrp1 napisał:

    Będę obserował, bo mam wrażenie, że po jakimś czasie zgubił czas, ale to muszę potwierdzić.

    Możesz wysyłać czas w regularnych odstępach za pomocą addRepeatingEvent . Warto we flagach włączyć TuyaMCU queue dla stabilności.



    Samezrp1 napisał:

    Zastanawiałem się nad kanałem typu toggle, ale tylko do odczytu, ew opcji do każdego kanały RO.

    I jakby wyglądał taki toggle?


    Samezrp1 napisał:

    Szczerze to się zastanawiam, bo na nic ta informacja, pomiar temperatury jest taki, że w moim pokoju mam 32 stopnie, więc do tego bym nie używał urządzenia, a czas spędzony nad tym może być niewarty efektu,

    Może dla sportu spróbuję.
    A może by miało sens podłączenie np. DHT11 do modułu WiFi i skonfigurowanie tak, by to on te pomiary dawał?


    PS: chyba w niepoprawnym miejscu wklejasz autoexec.bat;


    Pomogłem? Kup mi kawę.
  • REKLAMA
  • #14 21326278
    Samezrp1
    Poziom 13  
    Posty: 90
    Pomógł: 2
    Ocena: 7
    p.kaczmarek2 napisał:

    Możesz wysyłać czas w regularnych odstępach za pomocą addRepeatingEvent . Warto we flagach włączyć TuyaMCU queue dla stabilności.

    OK
    Cytat:

    I jakby wyglądał taki toggle?

    Myślałem, ze dokładnie tak jak obecny, ale bez możliwości klikania, ew z małą informacją w roku: RO, czt ReadOnly

    Cytat:

    Może dla sportu spróbuję.
    A może by miało sens podłączenie np. DHT11 do modułu WiFi i skonfigurowanie tak, by to on te pomiary dawał?

    Prawdopodobnie tym poleceniem się to robi:
    Zrzut ekranu przedstawiający dane heksadecymalne w arkuszu kalkulacyjnym.
    
    55AA0320001C06772E74656D700A772E68756D696469747904772E181B04772E181B73
    

    ale nie umiem go wysłać bez lutowania na MCU. Nie znalazłem dpId to niego. BTW wysyła też humidity, ale nie wyświetla nigdzie.
    Tak w ogóle myślę, że nie wiem czy jest sens podłączanie fizyczne czujnika. Prędzej bym zrobił tak, żeby z zewnątrz (MQTT, HA, whatever) wysyłać tę wartość na jakiś kanał, problem jaki widzę, to brak dpId, który można z tym kanałem połączyć. Załączyłem logi, jak dla mnie te unknown długie odpowiadają za to, ale bez sprawdzenia czyli wysłania pure message do MCU na tę chwilę nie jestem w stanie potwierdzić.
    Cytat:

    PS: chyba w niepoprawnym miejscu wklejasz autoexec.bat;

    A Autoexec.bat wstawiam w FS, w zakładce import wrzucam tylko jego zawartość, bo tam mi od razu mówi czy są błędy. Potem wrzucam do file system.
    Załączniki:
    • log1.txt (109.79 KB) Musisz być zalogowany, aby pobrać ten załącznik.
    • log.txt (12.77 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #15 21326734
    p.kaczmarek2
    Moderator Smart Home
    Posty: 14755
    Pomógł: 659
    Ocena: 12877
    Samezrp1 napisał:

    
    55AA0320001C06772E74656D700A772E68756D696469747904772E181B04772E181B73
    

    ale nie umiem go wysłać bez lutowania na MCU. Nie znalazłem dpId to niego.

    Na upartego można użyć UartSendHex, ale wtedy musisz sam sumę kontrolną liczyć jak zmieniasz zawartość pakietu. tuyaMcu_sendState nie użyjesz, bo to nie jest dpID, tylko to polecenie typu 0x20:
    Tabela komend MCU do włączenia danych pogodowych
    Najlepiej jest tutaj użyć tuyaMcu_sendCmd:
    https://www.elektroda.com/rtvforum/find.php?q=tuyaMcu_sendCmd
    Pomogłem? Kup mi kawę.
  • #16 21327165
    Samezrp1
    Poziom 13  
    Posty: 90
    Pomógł: 2
    Ocena: 7
    >>21326734
    Działa UartSendHex , zrobiłem sobie kalkulator sumy kontrolnej:
    
    UartSendHex 55AA0021001F0106772E74656D700004000000160A772E68756D696469747900040000005B36

    Wartość temperatury w hex jest na 20 bajcie, wyżej = 16 czyli 22 dec.
    Dla ujemnych temperatur:
    
    Hex	Dec	Temp
    76	118	118
    77	119	119
    78	120	120
    79	121	121
    80	128	-28
    88	136	-20
    92	146	-10
    96	150	-6
    99	153	-3
    9C	156	0
    9D	157	-99
    9F	159	-97
    A0	160	-96
    AA	170	-86
    CC	204	-52
    DD	221	-35
    DF	223	-32
    E0	224	not read
    E1	225	not read
    EE	238	not read
    FF	255	not read
    
  • #17 21327447
    p.kaczmarek2
    Moderator Smart Home
    Posty: 14755
    Pomógł: 659
    Ocena: 12877
    Nie musisz liczyć sam sumy kontrolnej, tuyaMcu_sendCmd zrobi to za Ciebie. Są dwa argumenty - komenda oraz payload. Długość payload jest sama określana, tak samo jak suma kontrolna.

    To teraz pytanie, jak kodowane są wartości ujemne...
    Pomogłem? Kup mi kawę.
  • #18 21327590
    Samezrp1
    Poziom 13  
    Posty: 90
    Pomógł: 2
    Ocena: 7
    p.kaczmarek2 napisał:

    To teraz pytanie, jak kodowane są wartości ujemne...

    Patrzę i generalnie od -28 stopni (0x80) to zera (0x9C) idą liniowo, w górę, brakuje mi od -29 do -31, potem od -32 (0xDF) do -99 (0x9D) też liniowo.

    BTW wyextraktowałem flasha i zgłupiałem... spodziewałem się jakiegoś uboota, a tam... wygląda, że partycja MSDOS 5.0 siedzi, choć binwalk jej nie rozpoznaje :/

    Zrzut ekranu przedstawiający dane binarne z systemu plików MSDOS 5.0.
    Zrzut ekranu z wynikami analizy Binwalk pokazujący różne formaty bitmap dla pliku MCU_flash_readResult_BK7231N.
    Podmapowałem go losetup na Ubuntu, ale pokazuje część zawartości (system.zip). Muszę pogrzebać więcej.

    Wygląda na to, ze w eepromie są tylko media.

    Co do kodowania wartości ujemnych wygląda to tak (te kilka wartości przydatne ruskim, pomiędzy 29..32 IMHO można olać, ew wszystkie niższe niż 28):
    
    int DecodeTemp(int temperature) {
        if (temperature >= 0) {
            return temperature;
        }
    
        int decodedTemp = 256;
    
        if (temperature >= -28 && temperature <= 0) {
            decodedTemp = decodedTemp + temperature - 100;
        } else if (temperature >= -99 && temperature <= -33) {
            decodedTemp = decodedTemp + temperature;
        } else {
            decodedTemp = temperature;
        }
    
        return decodedTemp;
    }
    
    Załączniki:
    • SYSTEM.zip (1.94 MB) Musisz być zalogowany, aby pobrać ten załącznik.
    • MCU_flash_readResult_BK7231N_QIO_Gas_2024-26-11-11-36-16.zip (2.19 MB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #19 21328336
    p.kaczmarek2
    Moderator Smart Home
    Posty: 14755
    Pomógł: 659
    Ocena: 12877
    Czyli przyda się funkcja wysyłająca dane w pakiecie typu 0x20 o nazwach ASCII i z konwersją liczby wedle Twojej funkcji?



    Zainteresowałem się tematem "pogody" dla danej pozycji na mapie, nie ma z tym problemu, dodam sterownik tego do OBK:
    Zrzut ekranu z odpowiedzi serwera API z danymi pogodowymi dla Nowego Jorku

    Added after 28 [seconds]:

    PS: Nie wiem, czy widziałeś: Symulator urządzeń OpenBeken IoT - pierwsza wczesna wersja alfa do testów
    Pomogłem? Kup mi kawę.
  • #20 21328349
    Samezrp1
    Poziom 13  
    Posty: 90
    Pomógł: 2
    Ocena: 7
    p.kaczmarek2 napisał:
    Czyli przyda się funkcja wysyłająca dane w pakiecie typu 0x20 o nazwach ASCII i z konwersją liczby wedle Twojej funkcji?

    Tak, wtedy funkcjonalność zostaje 1:1 po odchmurzeniu.
    Cytat:

    Zainteresowałem się tematem "pogody" dla danej pozycji na mapie, nie ma z tym problemu, dodam sterownik tego do OBK:

    Wtedy temperaturę możnaby brać albo ze swojego termometru, albo jak w oryginale na podstawie ściągniętych danych.
    Cytat:

    Tak, trafiłem, ale nie mogłem znaleźć CB3S w bibliotece i się poddałem. Za szybko?

    Hm... falsepositive?
    Komunikat o zagrożeniu wirusem Trojan:Script/Wacatac.B!ml na komputerze.

    BTW mam jeszcze co najmniej 3 urządzenia do dodania.
    Czujnik dymu, CO i zalania, żadnego z moich modeli nie ma w bibliotece.
    Może być gorzej niż tu, bo tu nie trzeba było ogarniać pinów TuyaMCU, wszystko latało po UART. Ale od czego są długie, zimowe wieczory :)
  • #21 21328381
    p.kaczmarek2
    Moderator Smart Home
    Posty: 14755
    Pomógł: 659
    Ocena: 12877
    Nie musisz pobierać starego zipa z forum, na repozytorium jest najnowszy zip z symulatorem:
    https://github.com/openshwprojects/OpenBK7231T_App
    W Releases.

    Symulator "nie wie" o modułach WiFi, tam jest jeden moduł na sztywno, wszystko działa (prawie) tak samo między różnymi BK7231. Tak dokładniej to jest Windowsowy port OBK, więc on nie symuluje rejestrów BK, ale nadaje się i tak do testów sterowników, skryptów, MQTT, strony.

    Jak wsparcie OpenWeatherMap dam do sterownika który będzie zapisywać wyniki do kanałów, to całość można będzie modularnie włączyć i również też zastąpić np. poprzez DHT11, obie wersje będą działać.

    Z chęcią pomogę z kolejnymi urządzeniami, w razie chęci zakładaj temat na odpowiednim forum.
    Pomogłem? Kup mi kawę.
  • #22 21330469
    p.kaczmarek2
    Moderator Smart Home
    Posty: 14755
    Pomógł: 659
    Ocena: 12877
    Postępy z integracją OpenWeatherMap:

    Zrzut ekranu przedstawiający integrację z OpenWeatherMap z sygnałem odpowiedzi i statusami połączenia.
    Pomogłem? Kup mi kawę.
  • #23 21330551
    Samezrp1
    Poziom 13  
    Posty: 90
    Pomógł: 2
    Ocena: 7
    A w jaki sposób będziemy wysyłali dane?
    Tak myślę, ze najwygodniej by było chyba słać HTTP requesta z:
    
    tuyaMcu_sendCmd komenda payload
    

    a payload tworzony przez "to" co by wywoływało tuyaMcu_sendCmd, tylko w tym przypadku to jest samo TuyaMCU...
Słuchaj:

Podsumowanie tematu

LABEL_AI_GENERATED
Dyskusja dotyczy detektora gazu TX-E z funkcją sterowania zaworem odcinającym, który wykorzystuje protokół TuyaMCU do komunikacji z modułem WiFi. Uczestnicy omawiają kwestie związane z konfiguracją, monitorowaniem komunikacji UART oraz przesyłaniem danych do chmury Tuya. Wskazują na problemy z podsłuchiwaniem komunikacji WiFi, stabilnością połączenia oraz mapowaniem dpID na kanały. Użytkownicy dzielą się doświadczeniami w zakresie flashowania urządzenia, definiowania typów kanałów oraz wysyłania komend do TuyaMCU. Wspomniane są również metody na poprawę stabilności połączenia oraz integrację z systemami automatyki domowej, takimi jak Node-RED.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA