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

[Rozwiązano] Automatyczny karmnik dla ryb, BL602

Virnik0 13 Gru 2023 15:42 3573 23
Treść została przetłumaczona angielski » polski Zobacz oryginalną wersję tematu
  • Pomocny post
    #1 20859669
    Virnik0
    Poziom 5  
    Posty: 16
    Pomógł: 1
    Ocena: 1
    Witam,

    Ostatnio zakupiłem Automatyczny Karmnik dla Rybek od eBay .

    Posiada on XT-BL12 chiplet wewnątrz. Wewnątrz tego układu znajduje się BL602. Z powodzeniem przylutowałem do niego mój UART jig i sflashowałem firmware OpenBelken.

    Wi-Fi, MQTT działa. Mogę również włączyć / wyłączyć diodę LED i obrócić bęben.

    Mam kilka pytań:
    Przylutowałem czujnik temperatury DS18B20 do GPIO17. Pomiędzy dane (GPIO17) a VCC wlutowałem rezystor 150k, GND do GND.

    Ale nie znalazłem jak to poprawnie skonfigurować. GPIO mapper wizzard z sieci nie pomaga. Przełączanie bębna nie wyłącza go po jednym obrocie, nadal się obraca. Muszę go wyłączyć ręcznie. Wiem, że w Tasmocie identyczny problem rozwiązuje ustawienie pulsetime1 . Jak mogę zrobić to samo tutaj, tj. Obracanie bębna wyłączy się automatycznie po zakończeniu pojedynczego obrotu.

    Drugą kwestią jest to, że domyślny szablon nie wie nic o czujniku temperatury. Nie mogę wybrać typu pinu z predefiniowanej listy.
    Nie odczytuje poprawnych wartości.
    Zbliżenie na płytkę drukowaną z modułem Wi-Fi XT-BL12 w automatycznym karmniku dla rybek. .
    I na koniec, jeśli na razie wykluczę HomeAssistant, jak mogę zautomatyzować lub naśladować zachowanie stockowego firmware, np: Kiedy bęben się obraca, dioda LED miga. Po naciśnięciu przycisku bęben obraca się raz. Długie naciśnięcie wymusza działanie (parowanie na stocku, ale wolałbym restart lub tryb bezpieczny).
    Płyta PCB z modułem Wi-Fi i lutowanymi kablami.
    Podsumowując, do tej pory zidentyfikowałem GPIO03 jako przycisk, GPIO04 jako diodę LED i GPIO05 jako obrót bębna. Ustawienie go na PWM pozwala mi obracać go za pomocą przycisku na GUI płyty. GPIO17 ma podłączony czujnik temperatury.

    Udało mi się umieścić przycisk i obrót bębna w jednej grupie, więc naciskając przycisk, bęben obraca się (i nigdy się nie zatrzymuje, dopóki nie zostanie ponownie naciśnięty). Przełącznik w interfejsie użytkownika myśli, że jest to światło.
    Zrzut ekranu przedstawiający konfigurację GPIO dla automatycznego karmnika dla rybek.
    Przepraszam, jeśli było to już omawiane w innym miejscu.... Próbowałem wyszukać BL602 sterujące silnikiem lub BL602 używane w podajnikach ryb, ale nic nie znalazłem. Większość podajników używa różnych chipletów, które zwykle dobrze współpracują z Tasmota.

    Próbowałem również użyć aplikacji gui flasher do analizowania konfiguracji gpio mcu tuya, ale aplikacja informuje mnie, że wystąpił błąd (próbowałem zarówno w systemie Linux, jak i Windows) podczas wybierania pliku binarnego zrzutu tuyamcu. Aplikacja odmawia pobrania lub odczytu z BL602, ponieważ została stworzona dla innego chipu. Ale jest w stanie zweryfikować łączność z urządzeniem przez sieć, odczytać jego chip, wersję oprogramowania itp. Czy istnieje lepszy lub inny sposób, aby BL602 przekonwertował / przeanalizował konfigurację GPIO tuyaMCU?

    Ponadto urządzenie wyświetla komunikat "boot incompletes 1" w interfejsie użytkownika. Czy powinienem się martwić?
    Update: Na początek poczytałem trochę więcej o sterownikach. Próbowałem pracować z autoexec.bat, pozwalając mu uruchomić TuyaMCU, ale nie ma żadnej wzmianki o tym sterowniku w logach, mimo że ustawiłem je na poziom debug verbosity. A jeśli spróbuję uruchomić go ręcznie, otrzymam to:
    Info:MAIN:Driver TuyaMCU is not known in this build.
    Info:MAIN:Available drivers: 
    Info:MAIN:NTP
    Info:MAIN:, RN8209
    Info:MAIN:, BL0942
    Info:MAIN:, BL0937
    Info:MAIN:, CSE7766
    Info:MAIN:, DDP
    Info:MAIN:, SSDP
    Info:MAIN:, DGR
    Info:MAIN:, Wemo
    Info:MAIN:, SM2135
    Info:MAIN:, BP5758D
    Info:MAIN:, BP1658CJ
    Info:MAIN:, SM2235
    Info:CMD:[WebApp Cmd 'startDriver TuyaMCU' Result] OK

    Technicznie rzecz biorąc, ten zasilacz był czymś w rodzaju no-name, dostarczany z konkretną aplikacją (Vanters) i chociaż działa podobnie do innych urządzeń tuya (tryb parowania itp.), Korzystał z chmury innego producenta. Chciałem osiągnąć dwa cele:
    a) odciąć go od chińskich usług w chmurze i umożliwić bezpośrednie sterowanie przez sieć LAN (oprócz niekończącego się obracania bębna, udało się to osiągnąć. Mogę kontrolować i automatyzować podawanie za pomocą HA
    b) odczytywać wartości temperatury z podłączonego czujnika. Jak na razie nie znalazłem sposobu, chociaż ta sama procedura z Tasmotą nie stanowiła problemu.

    Załączam zrzut TuyaConfig wykonany za pomocą klienta webowego.

    Update2:
    Poniższa konfiguracja przycisku działa, np: obraca bęben tylko raz, zarówno toggle jak i przycisk:
    {
      "vendor": "Vanters",
      "bDetailed": "0",
      "name": "Automatic Fish Feeder",
      "model": "ANT325 V0",
      "chip": "BL602",
      "board": "XT-BL12",
      "flags": "-2080373664",
      "keywords": [
        "Feed",
        "Fish"
      ],
      "pins": {
        "2": "Btn_n;1",
        "3": "Btn;2",
        "4": "WifiLED_n;0",
        "5": "PWM;3"
      },
      "command": "waitFor WiFiState 4;waitFor MQTTState 1",
      "image": "https://obrazki.elektroda.pl/YOUR_IMAGE.jpg",
      "wiki": "https://www.elektroda.com/rtvforum/topic_YOUR_TOPIC.html"
    }

    Zrzut ekranu konfiguracji GPIO dla płyty z układem BL602
    W Ogólne/Flagi, Musiałem włączyć "Flaga 6 - [BTN] Natychmiastowa reakcja na dotyk zamiast oczekiwania na zwolnienie (aka SetOption 13)"

    Poza tym, że myślałem o tym, że przełącznik jest lampką LED, to działa. Pozostaje tylko kwestia czujnika temperatury. Wydaje mi się, że klasa urządzenia nie jest zdefiniowana w OpenBeken.

    ========================================================================================================
    Update3:
    Co do integracji HA, zrobiłem tak:
    configuration.yaml
      - platform: template
        sensors:
           fish_feed_time_tabs:
            friendly_name: "Last Fish Feeding - Tabs"
            value_template: >
              {%- set time = (as_timestamp(now()) - as_timestamp(states.counter.number_of_feedings_tabs.last_changed)) | int  %}
              {%- set minutes = ((time % 3600) // 60) %}
              {%- set minutes = '{}minutes'.format(minutes) if minutes > 0 else '' %}
              {%- set hours = ((time % 86400) // 3600) %}
              {%- set hours = '{}hours '.format(hours) if hours > 0 else '' %}
              {%- set days = (time // 86400) %}
              {%- set days = '{}days '.format(days) if days > 0 else '' %}
              {{ 'Less than 1 minute' if time < 60 else days + hours + minutes }} ago

    mqtt:
      switch:
      - unique_id: "feeder1.iot.lan_switch"
        name: Feed
        command_topic: "cmnd/Feeding/led_enableAll"
        state_topic: "Feeding/led_enableAll/get"
        availability_topic: "Feeding/connected"
        payload_on: 1
        payload_off: 0
    
      - unique_id: "feeder1.iot.lan_reboot"
        name: Reboot
        command_topic: "cmnd/Feeding/restart"
        availability_topic: "Feeding/connected"
        payload_on: 1
        payload_off: 0
        state_off: "Feeding/online"
        state_on: "Feeding/offline"

    Dodałem helpery służące jako licznik(i) oraz wejściowe przełączniki logiczne służące jako wirtualny przełącznik on-off. Mam dwa feedery, jeden oparty na WBR3 - więc używany z TuyaLocal, a drugi z BL602, którym się teraz bawię, o nazwie Feeder1 (Tabs).
    Panel sterowania akwarium z różnymi opcjami i licznikami.

    Taśma LED Aquarium widoczna na zrzucie ekranu panelu sterowania to inny kontroler, niezwiązany z BL602.
    Załączniki:
    • BL602_TuyaConfig_Feeder1.bin (72 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • Pomocny post
    #2 20864952
    p.kaczmarek2
    Moderator Smart Home
    Posty: 14451
    Pomógł: 650
    Ocena: 12442
    Nie widziałem jeszcze takiego urządzenia, dziękuję za przesłanie.
    Boot incompletes 1 jest w porządku, ponieważ boot zostanie po pewnym czasie oznaczony jako zakończony i możesz złapać licznik przed jego zakończeniem.
    Planowana jest obsługa DS18B20. Jeśli zajdzie taka potrzeba, mogę się nią zająć wcześniej
    W przypadku PulseTime musisz zobaczyć:
    https://github.com/openshwprojects/OpenBK7231T_App/blob/main/docs/autoexecExamples.md
    W przypadku BL602 możesz umieścić te skrypty w krótkim poleceniu startowym. Może coś takiego:
    
    // This aliased command will turn off relay on CH1 after 10 seconds
    // addRepeatingEvent	[IntervalSeconds][RepeatsOr-1][CommandToRun]
    alias turn_off_after_time addRepeatingEvent 10 1 setChannel 1 0
    // this will run the turn off command every time that CH1 becomes 1
    addChangeHandler Channel1 == 1 turn_off_after_time 
    

    Nieczęsto otrzymujemy urządzenia BL602, więc nie przenieśliśmy jeszcze LFS na tę platformę.
    Pomogłem? Kup mi kawę.
  • #3 20867273
    Virnik0
    Poziom 5  
    Posty: 16
    Pomógł: 1
    Ocena: 1

    Cześć,

    Dzięki za wskazówkę! Ten MCU (najwyraźniej nie Tuya) ma przekaźnik przerywający, który pęka/rozłącza zaraz po włączeniu. Zmapowałem to więc w ten sposób:
    Zrzut ekranu z ustawieniami Pin Configuration z czterema różnymi konfiguracjami.


    I to działa poprawnie. Zatem tylko jeden obrót. Jeśli przełączę PWM, wykona dwa obroty. Z tej perspektywy osiągam to, czego chciałem – podajnikiem można sterować zdalnie bez chińskiego dostawcy chmury. Ale temperatura, którą chciałam uzyskać....Mogę bez niej żyć, ale to smutne.

    Jeśli chodzi o czujnik temperatury, byłbym naprawdę wdzięczny za tę pomoc. Po tym jak udało mi się w końcu flashować ten chip miałem nadzieję go użyć, gdyż WBR3 który mam w drugim podajniku nie dał się zflashować (iLonda - powinno być L88, ale nie jest - zmienili chip z ESP na klon od Tuya) i nie można było zastosować przeznaczonego do niego czujnika. Dlatego pomyślałem, że ponieważ OpenBeken jest tak podobny, to samo podejście będzie działać. I tak jest, aż do wsparcia oprogramowania, które jeszcze nie jest dostępne. Ale to chyba najtańszy czujnik jaki można dostać, a do tego jest produkowany na długim kablu odpowiednim do pomiaru temperatury zbiornika.

    Jeśli chodzi o LFS, pomyślałem, że to błąd, gdy zauważyłem, że przeglądanie FS z poziomu przeglądarki internetowej nie działa.

    Jeśli będziesz potrzebował jakichś logów lub zrzutów, chętnie udostępnię to, co mam. Jako jedno życzenie, gdybym mógł to mieć – czy następna wersja mogłaby zostać nieco zmodyfikowana, tak aby nie wydawało się, że steruję za jej pomocą paskiem LED? PWM steruje elektrycznym silnikiem prądu stałego zamiast diod LED. Zatem dodane elementy sterujące temperaturą barwową nie mogą być użyte jako takie (ale zauważyłem, że najwyraźniej mogą kontrolować prędkość obrotową).
  • Pomocny post
    #4 20867348
    p.kaczmarek2
    Moderator Smart Home
    Posty: 14451
    Pomógł: 650
    Ocena: 12442
    Spróbuję się temu przyjrzeć, mały problem jest taki, że BL602 nie jest zbyt popularny i niewiele urządzeń korzysta z tego chipa, więc priorytet ma Beken. Czy znasz może podstawowe umiejętności C, które pomogą Ci włączyć LFS na BL602?
    Pomogłem? Kup mi kawę.
  • #5 20867360
    Virnik0
    Poziom 5  
    Posty: 16
    Pomógł: 1
    Ocena: 1

    Niestety moje umiejętności kodowania nie są przydatne (w porównaniu z kimś, kto naprawdę tworzy kod). Ostatni raz kodowałem coś w C, było to na potrzeby projektu M@ngos ponad 20 lat temu.

    Dlatego staram się tego unikać, jeśli to możliwe, ponieważ wiem, że jestem znacznie lepszym inżynierem platformy niż programistą. Mogę zastosować poprawki i czasami debugować, co poszło nie tak. Nie mam żadnych problemów z przebudową oprogramowania ze źródeł, a w określonych przypadkach zmieniam kod tak, aby odpowiadał moim potrzebom lub po prostu działał, ale to wszystko jest stosunkowo łatwym zadaniem dla kogoś, kto naprawdę wie, jak kodować. Nic więc dziwnego, że BL602 nie cieszy się tak dużą popularnością. Jest to prawdopodobnie najtańszy moduł, jaki można dostać. I szczerze mówiąc, myślałem, że podajnik ma albo właściwy ESP, albo klon RTL, a nie zupełnie obcy, używany przez mniejszość chip. Ale staram się wyciągnąć jak najwięcej z małych rzeczy, jeśli wiesz, co mam na myśli ;-)

    Jeśli więc włączenie LFS oznacza sprawdzenie pewnych różnic, zastosowanie ich i próbę odbudowania, tak, mogę to zrobić. Ale proszę nie oczekiwać prawdziwie programistycznej pracy, ponieważ sam nie jestem programistą.

    W każdym razie nie spieszę się, a już na pewno nie jestem opiekunem większego projektu, w którym mój przypadek użycia jest naprawdę mniejszością. Ale nie będę cię też zatrzymywać, jeśli wiesz, co mam na myśli ;-) Pod tym względem uważam się za szczęściarza, że udało mi się osiągnąć główny cel tego podajnika. Pierwsza próba nie powiodła się z powodu WBR3 w pierwszym podajniku, więc sukces (choć częściowy) w drugiej próbie nie był takim złym doświadczeniem.

    To powiedziawszy, jeśli byłoby coś, co mógłbym przetestować, udostępnić, uruchomić, zbudować/skompilować… Jestem otwarty na pomoc (sam).
  • Pomocny post
    #6 20940687
    Jinaria
    Poziom 8  
    Posty: 21
    Pomógł: 1
    Ocena: 3

    Virnik0 napisał:
    Jako WBR3 mam drugi podajnik, którego nie dało się sflashować (iLonda - powinien być L88, ale nie jest - zmienili chip z ESP na klon z Tuya)


    ESPHome ma teraz częściowe wsparcie dla WBR3 (w tej chwili bez OTA). Mam ten sam podajnik iLonda z modułami WBR3 i udało mi się pomyślnie sflashować mój.
    
    rtl87xx:
      board: wbr3
      family: rtl8720c
      framework:
        version: 0.0.0
        source: https://github.com/libretiny-eu/libretiny.git#feature/realtek-update

  • #7 20945217
    Virnik0
    Poziom 5  
    Posty: 16
    Pomógł: 1
    Ocena: 1

    Dzięki. Jeśli chodzi o iLondę, zostawiłem ją tam, gdzie była - zintegrowaną poprzez TuyaLocal.

    Skoro już wszystko działa tak, jak powinno, bardziej martwię się o tego bezimiennego,
    który wykorzystuje BL602. Działa poprawnie, ale moim problemem był czujnik temperatury.

    Jak dotąd pobrałem źródła, przeprowadziłem podstawową konfigurację, ale nie znalazłem
    czas na faktyczne zbudowanie i przetestowanie, czyli VFS. Szczerze mówiąc, walczyłem
    porzuciłem jeszcze jedną odporną wersję WINE, a potem zapomniałem o podajniku beken.
  • #8 21059631
    Tilator
    Poziom 12  
    Posty: 130
    Pomógł: 2
    Ocena: 13

    Virnik0 napisał:
    Witam,
    Mam kilka pytań:
    Wlutowałem czujnik temperatury DS18B20 do GPIO17. Pomiędzy dane (GPIO17) a VCC włożyłem rezystor 150k, GND do GND.

    Ale nie znalazłem jak to poprawnie skonfigurować. Kreator mapowania GPIO z sieci nie pomaga. Przełączanie bębna nie wyłącza go po jednym obrocie, nadal się obraca. Muszę go wyłączyć ręcznie. Wiem, że w Tasmocie identyczny problem rozwiązuje ustawienie pulsetime1 . Jak mogę zrobić to samo tutaj, tj: Obracanie bębna wyłączy się automatycznie po zakończeniu pojedynczego obrotu.

    Drugą kwestią jest to, że domyślny szablon nie wie nic o czujniku temperatury. Nie mogę wybrać typu pinu z predefiniowanej listy.
    Nie odczytuje poprawnych wartości.


    Dostałeś jakieś wartości z tego DS18B20?

    Chciałbym też dodać te czujniki, ale czy da się to wykorzystać? Wydaje się, że jest jakiś LibreTiny, który pozwala na to w urządzeniach Beken, ale brzmi to trochę skomplikowanie.
  • #9 21075275
    Virnik0
    Poziom 5  
    Posty: 16
    Pomógł: 1
    Ocena: 1

    Cześć, nie. Nie ma z niego żadnych danych. Nie ma dla niego wsparcia w OpenBeken. Szczerze mówiąc, nie miałem czasu na zabawę z kodem źródłowym, ponieważ pracuję i robię wiele rzeczy jednocześnie, więc majsterkowanie jest poza moimi możliwościami na razie (prawdopodobnie do jesieni).
    .
  • Pomocny post
    #10 21075277
    p.kaczmarek2
    Moderator Smart Home
    Posty: 14451
    Pomógł: 650
    Ocena: 12442
    Mogę przyjrzeć się obsłudze DS18B20 w OBK
    Pomogłem? Kup mi kawę.
  • #12 21075758
    Virnik0
    Poziom 5  
    Posty: 16
    Pomógł: 1
    Ocena: 1

    >>21075277

    To byłoby super! Mogę łatwo flashować do testów, nie martwiąc się o zamurowanie urządzenia - w końcu to tylko podajnik akwariowy.
    Dodano po 2 [minutach]:
    >>20940687

    Błysk przewodowy? Mam go teraz podłączonego przez TuyaLocal. Więc jak tylko będę miał czas, żeby go otworzyć i przylutować piny, to też go sflashuję. Jeśli jest to możliwe bezprzewodowo (myślę, że nie z WBR3, ta wada została naprawiona zeszłego lata), to jeszcze lepiej. Ale chyba nie jest.
  • #13 21089522
    BorgMcz
    Poziom 1  
    Posty: 1

    Myślę, że obsługa DS18B20 byłaby fajną rzeczą.
  • #15 21095625
    p.kaczmarek2
    Moderator Smart Home
    Posty: 14451
    Pomógł: 650
    Ocena: 12442
    Oto nasz samouczek DHT11 + OBK, w tym połączenie:


    Pomogłem? Kup mi kawę.
  • #16 21267631
    divadiow
    Poziom 38  
    Posty: 4882
    Pomógł: 427
    Ocena: 869
    BorgMcz napisał:
    Myślę, że obsługa DS18B20 byłaby fajną rzeczą.


    sterownik DS18B20 został opracowany i jest dostępny do użytku na platformach BL602 i Beken

    Dodano po 3 [minutach]: .

    Virnik0 napisał:
    Co do LFS to myślałem, że to bug, gdy zauważyłem, że nie działa przeglądanie FS z poziomu przeglądarki internetowej.

    LFS jest teraz dostępny również na BL602, ale tylko na starszym układzie partycji (tak byłoby w przypadku flashowania BL DevCube 1.4.8 ze standardowym plikiem partition_cfg_2M.toml ).
  • #17 21290478
    Virnik0
    Poziom 5  
    Posty: 16
    Pomógł: 1
    Ocena: 1
    divadiow napisał:
    BorgMcz napisał:
    Myślę, że wsparcie DS18B20 byłoby fajną rzeczą.
    .

    sterownik DS18B20 został opracowany i jest dostępny do użytku na platformach BL602 i Beken

    Dodano po 3 [minutach]: .

    Virnik0 napisał:
    Co do LFS to myślałem, że to bug gdy zauważyłem, że nie działa przeglądanie FS z poziomu przeglądarki internetowej.

    LFS jest teraz dostępny także na BL602, ale tylko na starszym układzie partycji (tak byłoby w przypadku flashowania BL DevCube 1.4.8 ze stockowym plikiem partition_cfg_2M.toml )
    .

    Przepraszam za zbyt wiele zmian. Udało mi się sprawić, że działa po ponownym przeczytaniu instrukcji....Musiałem określić sterownik do uruchomienia:
    startDriver DS1820

    Teraz mogę odczytać czujnik, chociaż wartość była początkowo wyłączona. Ale teraz wygląda na to, że odczytuje poprawną wartość. Więc to działa. wielkie dzięki i jeszcze raz przepraszam za zamieszanie!
  • Pomocny post
    #18 21290549
    divadiow
    Poziom 38  
    Posty: 4882
    Pomógł: 427
    Ocena: 869
    -1,27°C? to zwykle oznacza, że nie komunikuje się z czujnikiem. na pewno masz przypisany właściwy pin?
  • #19 21290559
    Virnik0
    Poziom 5  
    Posty: 16
    Pomógł: 1
    Ocena: 1
    divadiow napisał:
    -1.27°C? to zwykle oznacza, że nie komunikuje się z czujnikiem. na pewno masz przypisany właściwy pin?


    Pokazuje tę wartość około 30 sekund po ponownym uruchomieniu. Ale potem przełącza się na prawidłową wartość, obecnie 24,37˚C

    Zweryfikowane przez kilka restartów.
  • #20 21290566
    divadiow
    Poziom 38  
    Posty: 4882
    Pomógł: 427
    Ocena: 869
    Istnieje również wartość interwału, którą można dodać na końcu polecenia startdriver - np. "startDriver DS1820 5", w przeciwnym razie domyślnie jest to 15 sekund.
  • #21 21290593
    Virnik0
    Poziom 5  
    Posty: 16
    Pomógł: 1
    Ocena: 1
    >>21290566 Chyba załapałem:

    startDriver DS1820 5; waitFor WiFiState 4;waitFor MQTTState 1; addRepeatingEvent 10 -1 publishFloat DS1820Temp $CH5
    .

    Czujnik działa, widzę jego wartości w logu. Ale nie jestem w stanie upewnić się, że jest publikowany przez MQTT. Cóż, mogę, jeśli uruchomię polecenie ręcznie, ale nie działa po ponownym uruchomieniu. Co robię źle?


    Dziwne jest to, że dostaję wiele błędów w logach:
    Info:SENSOR:DS1820[17] - Starting conversion
    Error:SENSOR:DS1820[17] - Read CRC=ff != calculated:c9 (errcount=1)
    Error:SENSOR:DS1820[17] - Scratchpad Data Read: ff ff ff ff ff ff ff ff ff
    Error:SENSOR:DS1820[17] - Read CRC=ff != calculated:c9 (errcount=2)
    Error:SENSOR:DS1820[17] - Scratchpad Data Read: ff ff ff ff ff ff ff ff ff
    Error:SENSOR:DS1820[17] - Read CRC=89 != calculated:30 (errcount=3)
    Error:SENSOR:DS1820[17] - Scratchpad Data Read: 87 1 55 5 7f a5 a5 66 89
    Error:SENSOR:DS1820[17] - Read CRC=2d != calculated:cb (errcount=4)
    Error:SENSOR:DS1820[17] - Scratchpad Data Read: 87 11 55 5 7f a5 a5 66 2d
    Error:SENSOR:DS1820[17] - Read CRC=7a != calculated:41 (errcount=5)
    Error:SENSOR:DS1820[17] - Scratchpad Data Read: 87 1 55 5 7f a5 b5 76 7a
    Info:SENSOR:DS1820[17] - Temp=24.43



    OK, więc jeśli uruchomię polecenie, aby dodać powtarzające się zdarzenie, otrzymam wartości z czujnika przez MQTT. Ale nie jest to w formacie json, tylko surowa wartość.

    Próbuję dodać go do mojego klastra Home Assistant, ale niestety nie jestem w stanie pobrać z niego wartości:
    mqtt:
     sensor:
        - state_topic: “Feeding/DS18B20Temp/get”
          availability_topic: "Feeding/connected"
          name: "FishTank Water Temperature"
          unique_id: “feeder1.iot.lan_water-temp”
          unit_of_measurement: "°C"
          device_class: temperature
          state_class: measurement
          icon: mdi:coolant-temperature
          force_update: true
          encoding: ""
          value_template: "{{ value | int * 0.01 }}"


    Próbowałem również z przełącznikiem liczb całkowitych, ale chociaż HA widzi komunikaty mqtt, wydaje się, że nie jestem w stanie poprawnie zdefiniować czujnika.
    Nigdy nie miałem podobnych problemów z mqtt i używam wykrywania obiektów z moich kamer i czujników binarnych. Ale czegoś musi mi brakować, że nie jestem w stanie uzyskać żadnej znaczącej wartości z czujnika w HA.

    Jakieś pomysły?
  • #22 21291298
    p.kaczmarek2
    Moderator Smart Home
    Posty: 14451
    Pomógł: 650
    Ocena: 12442
    Jeśli chcesz uruchomić wiele poleceń w krótkiej linii startowej, musisz użyć "backlog":
    Zrzut ekranu interfejsu użytkownika do ustawienia linii poleceń startowych dla urządzenia BK7231T.
    Pomogłem? Kup mi kawę.
  • #23 21291312
    Virnik0
    Poziom 5  
    Posty: 16
    Pomógł: 1
    Ocena: 1
    Dzięki!

    Szczerze mówiąc, nie zauważyłem tego.

    Użycie poniższego rozwiązania naprawiło problem, teraz poprawnie uruchamia powtarzające się zdarzenie:
    backlog startDriver DS1820 5; waitFor WiFiState 4;waitFor MQTTState 1; addRepeatingEvent 60 -1 publishFloat DS1820Temp $CH5;


    OpenBelken FW robi to, co obiecał. Dane są wysyłane do właściwej kolejki/tematu MQTT. Prawidłowe przetwarzanie to inna historia, ponieważ drukuje to:
    Feeding/DS18B20Temp/get:
    2487

    Czy istnieje sposób na dodanie kropki dziesiętnej do wartości przed jej wyeksportowaniem? Aby wyświetlić 24.87 w mqtt zamiast 2487, jak teraz?
    Zrzut ekranu z konsoli MQTT pokazujący różne tematy i wartości, w tym DS18B20Temp.

    Jeśli ktoś jest zainteresowany, poniższy fragment yaml działa w HA do zbierania temperatury i przenoszenia ułamka dziesiętnego w odpowiednie miejsce:
    
    sensor:
    - platform: template
      sensors:
        fishtank_water_temperature-filtered:
          name: "FishTank Water Temperature"
          unique_id: "feeder1.iot.lan_water-temp-filtered"
          device_class: temperature
          unit_of_measurement: '°C'
          state_class: measurement
          icon: mdi:coolant-temperature
          entity_id:
            - sensor.fishtank_water_temperature-filtered
          value_template: >
            {% set unknown = 'unknown' %}
            {% set value = states('sensor.fishtank_water_temperature') %}
            {% set prev_value = states('sensor.fishtank_water_temperature-filtered') %}
            {% if prev_value == unknown %}
              {{ value }}
            {% else %}
              {% set def_deviation = 3.0 %}
              {% set cur_deviation = states('input_number.fishtank_water_temperature-deviation') %}
              {% set deviation = def_deviation if cur_deviation == unknown else float(cur_deviation) %}
              {{ prev_value if value == unknown or (value | float - prev_value | float)|abs > deviation else value }}
            {% endif %}
    
    mqtt:
      sensor:
        - state_topic: "Feeding/DS18B20Temp/get"
          name: "FishTank Water Temperature"
          unique_id: "feeder1.iot.lan_water-temp"
          unit_of_measurement: "°C"
          device_class: temperature
          state_class: measurement
          icon: mdi:coolant-temperature
          force_update: true
          availability_template: "{{ 'online' if (10.0 <= value|float(0)/100 <= 40.0) else 'offline' }}"
          value_template: >-
            {%- if value|float(0)/100 >= 10.0 and value|float(0)/100 <= 40.0 -%}
            {{ (value | float(0)) / 100 }}
            {%- else -%}
            {{ states('sensor.fishtank_water_temperature_filtered') }}
            {%- endif -%}
    


    Czujnik zgłasza wartości w poniższym formacie (tak samo jak raportuje sam OpenBelken) w HA:
    24,35°C

    Powyższa definicja czujnika MQTT dla HA zajmuje się czasami wyimaginowanymi wartościami wyrzucanymi przez czujnik (takimi jak temperatura -1500˚C lub +90˚C). Jest to losowe, ale irytujące. Ponieważ jest to akwarium, ustawiłem zakres temperatur między 10˚C a 40°C, co jest rozsądne. Czujnik przełączy się w tryb offline dla jednego pomiaru, który zwróci nieprawidłową wartość, a także pominie zapisanie takiej wartości w statystykach, zachowując na razie poprzednią wartość. Ponieważ pomiar odbywa się co 60 sekund (przynajmniej w moim przypadku jednostka zasilająca przesyła wartość z DS18B20 do MQTT co 60 sekund), nie ma to złego wpływu.

    Ten wątek można ewentualnie zamknąć, ponieważ w zasadzie na wszystko, od czego go zacząłem, udzielono odpowiedzi, poprawiono lub w inny sposób zrobiono.

    Wielkie dzięki! Podpowiedzi we właściwym kierunku i informacje, których potrzebowałem, były naprawdę pomocne.
  • #24 21291606
    Virnik0
    Poziom 5  
    Posty: 16
    Pomógł: 1
    Ocena: 1
    Problem rozwiązany:
    - OpenBelken dla BL602 obsługuje teraz czujnik temperatury DS18B20
    - Poprawka wprowadzona dzięki radom innych osób, aby skonfigurować Fish Feeder z odpowiednią sekwencją startową
    - Sam podajnik został dodany jako szablon do BL602 FW (być może będzie wymagał aktualizacji w odniesieniu do czujnika temperatury).
    - Dane z czujnika są publikowane przez MQTT, a także konsumowane przez lokalną instalację HA.

    Jeszcze raz wielkie dzięki!

Podsumowanie tematu

✨ Użytkownik zakupił automatyczny karmnik dla ryb z chipem BL602, który udało mu się sflashować z użyciem firmware OpenBelken. Po podłączeniu czujnika temperatury DS18B20 do GPIO17, użytkownik napotkał problemy z jego konfiguracją oraz z automatycznym wyłączaniem bębna po jednym obrocie. Otrzymał pomoc w zakresie ustawienia skryptów do automatyzacji oraz wsparcia dla czujnika temperatury. Użytkownik zdołał skonfigurować czujnik, jednak napotkał trudności z publikowaniem danych przez MQTT. W końcu udało mu się uzyskać poprawne odczyty temperatury, a także zrealizować publikację danych w odpowiednim formacie.
Wygenerowane przez model językowy.
REKLAMA