logo elektroda
logo elektroda
X
logo elektroda
ADVERTISEMENT
ADVERTISEMENT
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Przekaźnik OpenBK7231N CB2S: Niestandardowa logika przycisku do zmiany koloru lampy basenowej

TheNic 14 Jun 2025 17:46 963 5
ADVERTISEMENT
Treść została przetłumaczona english » polish Zobacz oryginalną wersję tematu
  • #1 21579312
    TheNic
    Level 2  
    Posts: 4
    Witam i dziękuję za tę wspaniałą tablicę!

    Kupiłem bezprzewodowy (WiFi + 433 MHz RF) 2-kanałowy przekaźnik z modułem CB2S i sflashowałem go za pomocą OpenBK7231N.
    Wszystko działa dobrze, a wyodrębniony pinout pasuje do moich pomiarów:

    Przycisk (kanał 1) na P6
    Dioda LED WiFi na P26
    Przekaźnik (kanał 2) na P24
    Przycisk (kanał 2) na P8
    Przekaźnik (kanał 1) na P7

    Ale gdzie są zdefiniowane domyślne przypisania? Chciałbym zmodyfikować logikę (używając autoexec.bat?), aby osiągnąć następujące zachowanie:

    - Przycisk 1 powinien przełączać przekaźnik 1 (taki sam jak domyślny).
    - Przycisk 2 NIE powinien przełączać przekaźnika 2, ale zamiast tego powinien wyłączyć przekaźnik 1, odczekać 500 ms, a następnie włączyć go ponownie (aby zmienić kolor lampy basenowej).

    Lampa wykorzystuje tylko 12V AC (L i N) i zmienia kolor za każdym razem, gdy jest szybko wyłączana.

    Już próbowałem:

    addEventHandler OnClick Btn2
    {
    setChannel 1 0
    delay 500
    setChannel 1 1
    }

    w pliku autoexec.bat, ale włączyło to tylko światło.

    Zbadałem natywny graficzny interfejs użytkownika i aplikację internetową, ale nie mogę znaleźć sposobu na dostosowanie tego zachowania.

    Każda wskazówka będzie mile widziana!

    Dziękuję bardzo,

    Nico
    AI: Czy eksperymentowałeś już z funkcjami skryptowymi OpenBK7231N, takimi jak autoexec.bat lub reguły oparte na zdarzeniach, czy potrzebujesz wskazówek, jak zacząć z nimi korzystać?
    Tak, próbowałem

    addEventHandler OnClick Btn2
    {
    setChannel 1 0
    delay 500
    setChannel 1 1
    }
    AI: Czy mógłbyś podzielić się swoją obecną konfiguracją lub jakimikolwiek skryptami/regułami, które ustawiłeś dla przypisań przycisków i przekaźników, abyśmy mogli lepiej zrozumieć, co należy zmodyfikować? .
    Zrobiłem to w kodzie
  • ADVERTISEMENT
  • #2 21580006
    TheNic
    Level 2  
    Posts: 4
    W porządku, teraz działa.

    Było trochę łatwiej niż się spodziewałem! Nie wiedziałem, że kanał 1 to przekaźnik 1, kanał 2 to przekaźnik 2 i tak dalej.

    Ale w zasadzie:

    autoexec.bat:
    Code: Text
    Log in, to see the code
    .
    Teraz dodałem drugi plik poprzez Web App > Filesystem > Create file o nazwie
    change_color:
    Code: Text
    Log in, to see the code

    (Tak, 0,05 s to 50 ms, a nie 500 ms, ale to działa nawet lepiej dla mojej aplikacji).

    Przekaźnik OpenBK7231N CB2S: Niestandardowa logika przycisku do zmiany koloru lampy basenowej


    Konfiguracja pinów:
    - Oba piny Btn są ustawione na Kanał 1 w natywnym interfejsie
    - Pin Relay 2 jest ustawiony na AlwaysLow w natywnym interfejsie (aby nie zużywał się, gdy jest nieużywany)

    Przekaźnik OpenBK7231N CB2S: Niestandardowa logika przycisku do zmiany koloru lampy basenowej

  • ADVERTISEMENT
  • Helpful post
    #3 21580100
    p.kaczmarek2
    Moderator Smart Home
    Posts: 14743
    Help: 659
    Rate: 12839
    UDOSTĘPNIENIE PO WPISIE - Nie widziałem twojego drugiego postu, rozproszyłem się i odpowiedziałem z opóźnieniem. Moja oryginalna odpowiedź znajduje się poniżej.

    Hej, skąd się wzięła składnia { }? Zrobiłem OBK, ale nie widziałem tego. To samo dotyczy "Btn2" w zdarzeniu kliknięcia. Powinien przyjmować indeks pinu.

    Oto nasze próbki:
    https://github.com/openshwprojects/OpenBK7231T_App/blob/main/docs/autoexecExamples.md

    W twoim przypadku potrzebujesz czegoś takiego:
    
    addEventHandler OnClick 8 backlog setChannel 1 0; addRepeatingEvent 0.5 1 setChannel 1 1
    
    .

    Sprawdziłem to za pomocą autotestu i wygląda na to, że działa:
    https://github.com/openshwprojects/OpenBK7231...mmit/6a027eb204f5f1a637190583430b36263a6de251

    Koniec mojej oryginalnej odpowiedzi
    Helpful post? Buy me a coffee.
  • ADVERTISEMENT
  • #4 21581145
    TheNic
    Level 2  
    Posts: 4
    >>21580100 .

    Wow, sam autor, dziękuję za ten wyjątkowy kawałek oprogramowania!
    Uśmiechnąłem się, gdy to uruchomiłem. Wielkie dzięki!

    Składnia była tylko moim dziwnym założeniem, że może to być sposób na "kapsułkowanie" metody / fragmentu, jak w Arduino / C. Musiałem najpierw przeczytać kilka przykładów i spróbować czegoś na własną rękę, aby zorientować się w składni. Teraz wydaje się to krystalicznie jasne!

    Jeszcze jedno szybkie pytanie:
    Chciałbym dodać przycisk do CB2S, który wykonuje krótki skrypt synchronizacji/resetu lamp.
    Czy najlepiej użyć Btn_ScriptOnly z rezystorem podciągającym? A może dInput_NoPullup, który mógłby używać wewnętrznego podciągania?
  • ADVERTISEMENT
  • Helpful post
    #5 21581151
    p.kaczmarek2
    Moderator Smart Home
    Posts: 14743
    Help: 659
    Rate: 12839
    Mógłbym dodać taką składnię w przyszłości, ale teraz mamy Jagodę, więc nie wiem czy znajdę na to czas.
    Skryptowanie Berry dla różnych platform IoT - samouczek integracji nowego skryptu OBK część 1

    Btn_ScriptOnly powinno być najlepszym podejściem. Nawiasem mówiąc, wszystkie przyciski w OBK domyślnie działają z wewnętrznym rezystorem podciągającym, więc jeśli chcesz użyć Btn_ScriptOnly, nie potrzebujesz zewnętrznego rezystora. Potrzebny jest tylko przycisk między GPIO a masą.
    Helpful post? Buy me a coffee.
  • #6 21583825
    TheNic
    Level 2  
    Posts: 4
    p.kaczmarek2 wrote:
    Mógłbym dodać taką składnię w przyszłości, ale teraz mamy Jagodę, więc nie wiem czy znajdę na to czas.
    Skryptowanie Berry dla różnych platform IoT - tutorial integracji nowego skryptu OBK cz. 1


    Nie zrozum mnie źle - startScript FILENAME składnia jest jak najbardziej w porządku! Po prostu nie wiedziałem, jak to działa.
    Berry też wygląda ładnie. Przyjrzę się temu.

    p.kaczmarek2 wrote:
    Btn_ScriptOnly powinno być najlepszym podejściem. Nawiasem mówiąc, wszystkie przyciski w OBK domyślnie działają z wewnętrznym rezystorem podciągającym, więc jeśli chcesz użyć Btn_ScriptOnly, nie potrzebujesz zewnętrznego rezystora. Potrzebny jest tylko przycisk między GPIO a masą.


    Tak, to załatwiło sprawę! Dziękuję! Tylko jeden pin jest nieużywany w oryginalnym układzie (P 23 / ADC) i użyłem go.
    Jeszcze tylko jedno pytanie:
    Kiedy wykonuję skrypt taki jak

    Code: Text
    Log in, to see the code

    kod "synchronizacji" działa asynchronicznie i zawiera pewne opóźnienia. Czy istnieje sposób, aby poczekać na zakończenie "synchronizacji" przed wykonaniem addRepeatingEvent ?
    Mógłbym po prostu skopiować i wkleić lub użyć fikcyjnego kanału jako flagi, ale może jest jakiś bardziej wymyślny sposób ... ( waitFor polecenie nie zadziałało).
ADVERTISEMENT