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

Pół-sukces: Tuya RainPoint TTP106W Wewnętrzna pompa wodna/nawadnianie z modułem CB3S i OpenBeken

alleywayapps 07 Sie 2025 14:06 1263 7
REKLAMA
Treść została przetłumaczona angielski » polski Zobacz oryginalną wersję tematu
  • Pomocny post
    #1 21628388
    alleywayapps
    Poziom 8  
    Posty: 8
    Pomógł: 4
    Ocena: 4
    Tuya RainPoint Indoor Water Pump (TTP106W) z modułem CB3S pomyślnie sflashowana z OpenBeken 1.18.145

    Pół-sukces: Tuya RainPoint TTP106W Wewnętrzna pompa wodna/nawadnianie z modułem CB3S i OpenBeken
    Ta rzecz jest dostarczana z kilkoma rurkami i podłączam ją do 20-litrowego zbiornika do podlewania podczas wakacji. Aplikacja RainPoint jest do bani i miałem nadzieję skonfigurować lepszy system, który mógłby podlewać o tej samej porze każdego dnia, a nie tylko X godzin od mojej konfiguracji w danym momencie. Problem polega na tym, że jeśli chcę, aby nawadniał o 5 rano co 48 godzin, lepiej skonfigurować go o 5 rano. W każdym razie... zobaczymy, jak daleko z tym zajdę....

    Obudowa jest łatwa do otwarcia i byłem w stanie flashować ją za pomocą UART, trzymając TX / RX bezpośrednio na module za pomocą moich stabilnych palców (bez lutowania!) Dzięki następującym:
    https://docs.libretiny.eu/boards/cb3s/#pinout

    Nie znalazłem mojego urządzenia na liście rozwijanej, więc zacząłem się trochę pocić....

    Próbowałem odkryć, co włącza / wyłącza pompę za pomocą strony eksploracji GPIO, ale nie miałem szczęścia, aby cokolwiek zrobić.

    Pocę się jeszcze bardziej.

    Kiedy wyruszyłem w tę podróż, nie zdawałem sobie sprawy, że istnieje oddzielny MCU, który łączy się z modułem CB3S. Wydawało mi się dziwne, że fizyczny przycisk nadal włączał i wyłączał pompę.

    Teraz dowiedziałem się trochę o tym, czym jest TuyaMCU i jak musimy załadować sterownik i utworzyć plik autoexec.bat z mapowaniami kanałów.

    Zasadniczo TuyaMCU kontroluje pompę i jest jedynym kontrolerem, który robi cokolwiek, gdy działa tylko na bateriach. (gdy kabel USB jest podłączony, moduł Wifi jest aktywny i może wydawać polecenia/programować MCU).

    Na szczęście udało mi się uzyskać pewne informacje na temat ustawień dpid z https://templates.blakadder.com/rainpoint_TTP106W.html i tutaj https://github.com/make-all/tuya-local/blob/m...vices/aubess_rainpoint_irrigation_system.yaml

    Wydaje się, że mają pewne niewielkie różnice, których jeszcze nie dopracowałem.

    FYI, z tyłu mojej płytki PCB jest napisane "TTP106W Rev12" z datą 2022.04.22.

    Włączyłem następujące flagi: 31, 37 i 51 (wciąż muszę się dowiedzieć, co mają robić inne flagi specyficzne dla TuyaMCU)

    Mogę włączyć pompę ze strony internetowej i zobaczyć/zmienić niektóre wartości. Wygląda na to, że nie wypełnia wartości po ponownym uruchomieniu... nie wiem o co chodzi...
    EDIT: naprawiłem to używając dpCache i trochę SetStartValue 2 -1 // ustaw na ostatnio zapamiętane między restartami.
    W każdym razie, jestem na tyle daleko, że pomyślałem, że mogę podzielić się moim autoexec.bat i poczekać na krytykę...

    Kod: Bash
    Zaloguj się, aby zobaczyć kod
    .

    Interfejs sterowania pompą z kanałami trwania i częstotliwości podlewania
  • REKLAMA
  • #2 21628704
    p.kaczmarek2
    Moderator Smart Home
    Posty: 14451
    Pomógł: 650
    Ocena: 12436
    Ciekawe urządzenie, jeszcze takiego nie widziałem. Czy jest już w pełni funkcjonalne? Czy masz może oryginalną kopię zapasową firmware?

    Jeśli chodzi o konfigurację - czy używasz go z Home Assistant? Powinno być możliwe zrobienie tego z jakąś automatyzacją, jednak... może to być trudne, jeśli to urządzenie jest zasilane bateryjnie i często przechodzi w stan uśpienia.

    Osobiście rozważyłbym usunięcie MCU, aby uzyskać pełną kontrolę, ale może to być nieco bardziej problematyczne zadanie.

    Masz jakieś zdjęcia od środka?
    Pomogłem? Kup mi kawę.
  • REKLAMA
  • #3 21628887
    alleywayapps
    Poziom 8  
    Posty: 8
    Pomógł: 4
    Ocena: 4
    Oto kilka zdjęć elementów wewnętrznych.

    Zbliżenie na zielony układ drukowany z modułem komunikacyjnym i elementami elektronicznymi
    Zielona płytka PCB z podłączonym złączem micro USB i kablami zasilającymi

    Mam kopię zapasową oryginalnego oprogramowania układowego. Wydaje mi się, że próbowałem niektórych narzędzi do rozszyfrowania tego, co tam było i wyglądało to jak gloppity-gook w przeglądarce hex.

    Udało mi się wprowadzić go do Home Assistant, łącząc się z brokerem MQTT i uruchamiając wykrywanie HA i rzeczywiście mogę uruchomić pompę, która pompuje skonfigurowany czas.

    Jedną irytującą rzeczą jest to, że jeśli mam typ kanału "TextField", to jego wartość nie pojawia się w Home Assistant - czy jest na to jakiś sposób?

    Mój plan jest następujący:
    PODSTAWOWA FUNKCJA: Pozostać na WiFi, pozwolić HA określić harmonogram nawadniania na podstawie pogody.
    FALLBACK: jakoś odłączony na bateriach, używaj rozsądnych "domyślnych" X sekund podlewania o tej samej porze co dwa dni.

    Mogę "zresetować" odliczanie MCU do następnego podlewania, modyfikując częstotliwość (zmienić na 49 godzin, a następnie z powrotem na 48 godzin) i mogę to robić o tej samej porze (7 rano) każdego dnia, w ten sposób stale przesuwając harmonogram MCU do przodu, o ile HA ma dostęp do urządzenia. Jeśli z jakiegoś powodu jesteśmy odłączeni, teoretycznie będzie on dostrajany do 7 rano co dwa dni, o ile baterie są dobre, zapewniając w ten sposób rozsądny harmonogram nawadniania podczas wakacji.

    Udało mi się prototypowo uruchomić polecenie "startScript" z MQTT, aby uruchomić niestandardowy plik .bat, który ma za zadanie ustawić "tymczasowy" WateringDurationTime (pompa przez powiedzmy 60 lub 200 sekund), który chciałbym przekazać z Home Assistant, być może jako ładunek podczas wykonywania żądania (??) A pod koniec faktycznego działania pompy przez ten bardzo określony czas, ponownie skonfiguruje czas trwania nawadniania dla MCU z powrotem do rozsądnych wartości domyślnych czasu trwania nawadniania dla scenariusza FALLBACK.

    JEDNAKŻE... odkrywam, że mam trudności z zapisaniem konfigurowalnego "rozsądnego domyślnego awaryjnego" czasu trwania nawadniania. Pomyślałem, że mogę domyślnie ustawić inny kanał TextField i użyć setStartValue 22 -1 , ale to wydaje się nie zapisywać między restartami. Moje inne zapisywalne kanały, które są mapowane za pomocą MCU, wydają się zapisywać swoje wartości tylko z powodu flagi "dpCache"... jakieś pomysły? Wygląda na to, że może istnieć wiele sposobów przechowywania zmiennych.

    Co sądzimy o tym planie?
  • REKLAMA
  • #4 21628931
    p.kaczmarek2
    Moderator Smart Home
    Posty: 14451
    Pomógł: 650
    Ocena: 12436
    Rozumiem... zacznijmy od dodania pola tekstowego do HA discovery. Czy możesz pomóc to przetestować?
    Widżet „Configuration” z liczbami 2 i 43 oraz linkiem „ADD TO DASHBOARD”
    Dodane do głównego, powinno być wkrótce w wydaniu
    https://github.com/openshwprojects/OpenBK7231...mmit/6ae05de5600b7ad387dafc67c0253e1b58e74296

    Dodane po 1 [minucie]:

    PS: setStartValue 22 nie działa, ponieważ:
    
    define MAX_RETAIN_CHANNELS 12
    
    Pomogłem? Kup mi kawę.
  • #5 21630066
    alleywayapps
    Poziom 8  
    Posty: 8
    Pomógł: 4
    Ocena: 4
    Dzięki za tę wskazówkę - przeniosłem się z kanału 22 na kanał 11 i teraz działa zgodnie z oczekiwaniami.
    Mogę rzeczywiście przetestować HA Discover w następnej kompilacji.

    Coraz bardziej wygląda na to, że mogę przejść od połowicznego sukcesu do nazwania tego sukcesem. (patrz załączony film)



    Po podłączeniu do MQTT mogę z powodzeniem uruchamiać polecenia na OpenBeken.
    Zasadniczo mogę uruchomić pompę HA za pomocą automatyzacji, która może nawadniać przez dynamiczną liczbę sekund.
    Oblicza liczbę sekund na podstawie aktualnej pogody i prognozy.
    Wysyła sygnał do OpenBeken, aby skonfigurować liczbę sekund, a następnie uruchamia niestandardowy plik water-and-reset.bat
    który wykona nawadnianie, a następnie zresetuje wartości do numerów awaryjnych w przypadku utraty zasilania / Wi-Fi

    Nie pamiętam dlaczego, ale flagi dpcache przestały działać.
    Ostatecznie skrypt autoexec.bat wygląda następująco:


    // Start TuyaMCu driver
    startDriver TuyaMCU
    startDriver NTP
    
    // set TuyaMCU baud rate
    tuyaMcu_setBaudRate 9600
    // set TuyaMCU default wifi state 0x04, which means "paired",
    // because some TuyaMCU MCUs will not report all data
    // unless they think they are connected to cloud
    tuyaMcu_defWiFiState 4
    
    
    // Borrowed from:
    // https://templates.blakadder.com/rainpoint_TTP106W.html
    // https://github.com/make-all/tuya-local/blob/main/custom_components/tuya_local/devices/aubess_rainpoint_irrigation_system.yaml
    // search "TTP106W" on google for the board
    
    // 1 == pump power on/off
    setChannelType 1 Toggle
    setChannelLabel 1 "Pump Mode"
    linkTuyaMCUOutputToChannel 1 bool 1
    
    // 2 == watering duration (6..1800 seconds)
    setChannelType 2 TextField
    setChannelLabel 2 "Watering Duration Seconds"
    linkTuyaMCUOutputToChannel 102 val 2
    SetStartValue 2 -1 // set it to last remembered between reboots
    
    // 11 == FALLBACK watering duration (6..1800 seconds)
    setChannelType 11 TextField
    setChannelLabel 11 "FALLBACKWateringDuration"
    setStartValue 11 -1
    if $CH11==0 then setChannel 11 100
    
    
    // 3 == watering frequency (1..168 hours)
    setChannelType 3 TextField
    setChannelLabel 3 "Watering Frequency (hours)"
    linkTuyaMCUOutputToChannel 103 val 3
    SetStartValue 3 -1 // set it to last remembered between reboots
    
    // 4 == remaining watering time
    setChannelType 4 readonly
    linkTuyaMCUOutputToChannel 104 2 4
    setChannelLabel 4 "Remaining watering time (seconds)"
    
    // 5 == error report (0x00 = no error; 0x01 = no water) but it doesn’t seem to work correctly
    
    // 6 == operation status: 2 - manual; 1 - auto; 0 - idle
    setChannelType 6 readonly 
    linkTuyaMCUOutputToChannel 106 2 6
    setChannelLabel 6 "Operation Status" // 2 - manual; 1 - auto; 0 - idle CONFLICT WITH
    
    // 7 == next watering event in minutes
    setChannelType 7 ReadOnly
    linkTuyaMCUOutputToChannel 107 2 7
    setChannelLabel 7 "Next Watering Event (in minutes)"
    
    // 8 == power status: (1 - battery high; 2 - medium; 3 - low; 4 - USB port)
    setChannelType 8 readonly  
    linkTuyaMCUOutputToChannel 108 2 8
    setChannelLabel 8 "Power Status"
    
    // 9 == watering autorun on/off
    // DISABLE ! AutoRun stupidly starts watering every time you change the frequency (103)
    // setChannelType 9 Toggle
    // setChannelLabel 9 "Autorun"
    // linkTuyaMCUOutputToChannel 109 bool 9
    
    // Just really make sure to disable autorun
    tuyaMcu_sendState 109 bool 0
    
    waitFor MQTTState 1
    // addRepeatingEvent [IntervalSeconds][RepeatsOr-1][CommandToRun]
    addRepeatingEvent 5 -1 publishAll
    addRepeatingEvent 5 -1 tuyaMcu_sendQueryState  // For TuyaMCU devices
    
    
    And my [b]water-and-reset.bat[/b] file looks like this:
    
    
    // This file is in charge of running the pump and resetting the countdown timer
    // on the MCU when running on batteries without USB and WiFi
    
    // This .bat file can be tested with
    // http://      /cm?cmnd=backlog%20setChannel%202%207;%20startScript%20water-and-reset.bat
    
    // In practice, publish command in MQTT
    
    // We have to change the watering freq (ch3) to reset the MCU's internal countdown clock
    // that works when only on batteries. This is a safeguard for loss of USB power or WiFi Down.
    
    // A workaround for resetting MCU's internal countdown is to modify the watering frequency
    //  existing (48) -> 49 -> 48 again will reset ch7 (dpid 107) to 2880 (60 min x 48 hrs)
    delay_s 1
    setChannel 3 49
    delay_s 1
    publishChannel 3
    
    setChannel 3 48
    delay_s 1
    publishChannel 3
    
    // Run the pump
    setChannel 1 1
    publishAll
    delay_s 1
    
    // Return watering duration to FALLBACK watering duration stored in ch11
    
    setChannel 2 $CH11
    
    delay_s 1
    publishAll
    .
  • REKLAMA
  • #8 21647519
    alleywayapps
    Poziom 8  
    Posty: 8
    Pomógł: 4
    Ocena: 4
    Dla każdego, kto chce skorzystać z mojego algorytmu wygenerowanego przez sztuczną inteligencję, który wykorzystuje prognozowaną maksymalną temperaturę, zachmurzenie, prawdopodobieństwo opadów, średnią wilgotność i wiatr, aby określić liczbę sekund do podlewania...

    Zapoznaj się z poniższą listą:

    https://gist.github.com/mlake/e6175469541bc0ecadfb681172bd9ad6

    Wymaga bezpłatnego klucza API AccuWeather

Podsumowanie tematu

✨ Tuya RainPoint TTP106W to wewnętrzna pompa wodna do nawadniania, którą udało się sflashować z firmware OpenBeken 1.18.145 wykorzystując moduł CB3S i interfejs UART bez lutowania. Urządzenie jest podłączone do 20-litrowego zbiornika i ma służyć do automatycznego podlewania o określonych godzinach, co jest trudne do osiągnięcia w oryginalnej aplikacji RainPoint. Po integracji z Home Assistant przez MQTT możliwe jest sterowanie pompą i ustawianie czasu pracy na podstawie automatyzacji, np. harmonogramu opartego na pogodzie. Wprowadzono poprawki w OpenBeken, aby obsłużyć pola tekstowe w HA discovery. Autor opracował także algorytm AI do dynamicznego określania czasu podlewania na podstawie prognozy pogody (temperatura, zachmurzenie, opady, wilgotność, wiatr), dostępny jako skrypt na GitHub. W dyskusji pojawiły się wskazówki dotyczące konfiguracji, resetowania MCU oraz dodania urządzenia do listy wspieranych w OpenBeken. Pompa działa stabilnie z OpenBeken, umożliwiając precyzyjne i elastyczne zarządzanie nawadnianiem, co stanowi znaczną poprawę względem oryginalnego oprogramowania.
Wygenerowane przez model językowy.
REKLAMA