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

OpenBeken Konfigurowanie przycisków Otwórz/Zatrzymaj/Zamknij na przełączniku Sma

richardsg307 17 Kwi 2023 18:44 5130 17
REKLAMA
Treść została przetłumaczona angielski » polski Zobacz oryginalną wersję tematu
  • #1 20544322
    richardsg307
    Poziom 5  
    Posty: 18
    Ocena: 5
    Sflashowałem i częściowo skonfigurowałem Smart Life Switch, ale mam problem z wyzwalaniem skryptów lub poleceń backlog w przypadku kliknięcia przycisku. Znam Tasmota, ale nigdy wcześniej nie korzystałem z OpenBeken.
    Oto urządzenie ze zdjętym panelem przednim:
    OpenBeken Konfigurowanie przycisków Otwórz/Zatrzymaj/Zamknij na przełączniku Sma
    Aktualna konfiguracja to przycisk otwarcia, dioda LED otwarcia i przekaźnik otwarcia na kanale 1, przycisk zatrzymania i dioda LED zatrzymania na kanale 2, przycisk zamknięcia, dioda LED zamknięcia i przekaźnik zamknięcia na kanale 3. Nie ustawiono żadnych typów kanałów. Mam plik autoexec.bat do oznaczania przycisków w GUI i zamykania okna.
    // Add names to the buttons
    setChannelLabel 1 Open 1
    setChannelLabel 2 Stop 1
    setChannelLabel 3 Close 1
    // Close window
    setChannel 1 0
    setChannel 2 0
    setChannel 3 1
    delay_s 10
    setChannel 3 0
    setChannel 2 1
    delay_s 3
    setChannel 2 0
    addEventHandler OnChannelChange 2 backlog setchannel 1 0; setchannel 2 1; setchannel 3 0; delay_s 3; setchannel 2 0

    Ale obsługa zdarzeń nie działa, gdy kliknę przycisk Stop!
    ATM Chciałbym, aby zachowywał się tak, jak w przypadku oprogramowania układowego Tuya.
    Po kliknięciu przycisku Otwórz powinien upewnić się, że przekaźnik zamykania nie jest włączony, a następnie włączyć przekaźnik otwierania i diodę LED otwierania na 10 sekund, a następnie wyłączyć oba, a następnie włączyć diodę LED zatrzymania na 3 sekundy. Przycisk zamykania powinien działać odwrotnie. Przycisk Stop powinien wyłączyć oba przekaźniki (każdy z nich może być włączony), a następnie włączyć diodę LED Stop na 3 sekundy.
    Potrzebuję więc pomocy w powiązaniu kliknięć przycisku z jakąś akcją. Ponadto, czy powinienem używać różnych kanałów dla przycisków z dala od przekaźników / diod LED, aby zatrzymać automatyczne powiązanie. Nie chcę, aby oba przekaźniki były włączone w tym samym czasie, ponieważ mogłoby to wysadzić sam otwieracz!
    Kiedy skończę, zapiszę to jako projekt i nowe urządzenie w repozytorium.
    Z góry dzięki.
  • REKLAMA
  • #2 20545521
    p.kaczmarek2
    Moderator Smart Home
    Posty: 14580
    Pomógł: 654
    Ocena: 12604
    Cześć, po pierwsze, jakie zachowanie próbujesz osiągnąć? Czy to ma być sterownik migawki?

    Zamiast delay_s 3 w backlog powinieneś użyć addRepeatingEvent 3 1 , delay_s może teraz działać w wątku skryptu, a nie w backlogu.

    Jeśli chcesz, mogę napisać następujący skrypt:
    Cytat:

    Po kliknięciu Open btn, powinien upewnić się, że przekaźnik zamykający nie jest włączony, następnie włączyć przekaźnik otwarty i diodę LED otwarcia na 10 sekund, następnie wyłączyć oba, a następnie włączyć diodę Stop na 3 sekundy. Close btn powinien zrobić coś przeciwnego. Stop btn powinien wyłączyć oba przekaźniki (każdy z nich może być włączony), a następnie włączyć diodę Stop na 3 sekundy.

    Nie używałbym do tego etykiet kanałów. Użyłbym przycisków skryptowych. Ale czy to kontroler migawki? Dziś wieczorem zobaczę, co mogę dla ciebie zrobić.
    Pomogłem? Kup mi kawę.
  • #3 20545650
    richardsg307
    Poziom 5  
    Posty: 18
    Ocena: 5
    Tak, w koncepcji jest to „migawka”, ale w tym przypadku otwiera/zamyka świetlik.
    OpenBeken Konfigurowanie przycisków Otwórz/Zatrzymaj/Zamknij na przełączniku Sma
    Jest to system 4-przewodowy - uziemienie, neutralny, na żywo/otwarty i na żywo/zamknięty. Potrzebuję więc jednego z 2 przekaźników, ale zdecydowanie nie obu. Sposób działania przełącznika z oprogramowaniem Tuya polegał na tym, że po około 10 sekundach (przypuszczalnie wystarczająco długo, aby okno mogło się otworzyć/zamknąć, oba przekaźniki zgasły (chyba w celu oszczędzania energii i odizolowania mechanizmu).
    W systemie plików stworzyłem 3 proste pliki skryptów. np. dla zamknięcia, plik close.bat zapewnia, że przekaźnik Open jest wyłączony przed włączeniem przekaźnika Close, odczekanie 10 sekund, a następnie wyłączenie. Następnie włącza kanał zatrzymania lub diodę LED na zaledwie 3 sekundy.
    / Close - Turns Open relay off, then turns Close relay on for 10s
    // Then shows Stop LED for 3s
    setchannel 1 0
    setchannel 2 0
    delay_ms 250
    setchannel 3 1
    delay_s 10
    setchannel 3 0
    setchannel 2 1
    delay_s 3
    setchannel 2 0
    
    Podobnie dla skryptów stop.bat i open.bat. Wszystkie działają, gdy naciskam przycisk „Zapisz, uruchom plik jako wątek skryptu” w interfejsie internetowym.
    Nie mogę zrozumieć, jak uruchomić skrypty po kliknięciu przycisku. Próbowałem dodać procedury obsługi zdarzeń w pliku autoexec.bat, ale wydaje się, że nic nie działa.
    // Add names to the buttons
    setChannelLabel 1 Open 1
    setChannelLabel 2 Stop 1
    setChannelLabel 3 Close 1
    setChannel 1 0
    setChannel 2 0
    setChannel 3 1
    echo "Closing Skylight"
    delay_s 10
    setChannel 3 0
    echo "Loading Event Handlers"
    addEventHandler OnClick 1 startScript open.bat * 123

    Po prostu czegoś mi brakuje, więc przydałoby się kilka wskazówek we właściwym kierunku.
    Na marginesie - gdzie zapisywane są echa?
    Dzięki
  • REKLAMA
  • #4 20545686
    p.kaczmarek2
    Moderator Smart Home
    Posty: 14580
    Pomógł: 654
    Ocena: 12604
    Ok, przygotuję dla Ciebie przykład, ale najpierw czy możesz mi powiedzieć, co powinno się stać, jeśli użytkownik naciśnie przycisk otwórz, a następnie po 1 sekundzie zamknij?
    a) otwarcie powinno przerwać, a zamknięcie powinno rozpocząć
    b) open powinien kontynuować i zignorować żądanie zamknięcia
    Pomogłem? Kup mi kawę.
  • REKLAMA
  • REKLAMA
  • Pomocny post
    #6 20545714
    p.kaczmarek2
    Moderator Smart Home
    Posty: 14580
    Pomógł: 654
    Ocena: 12604
    Może byłoby lepiej, gdybym po prostu stworzył dedykowany sterownik do rolet? Wygląda na to, że twój przypadek użycia jest bardzo ogólny.

    Dodano po 3 [minutach]:

    Oto nieprzetestowany (UWAGA!) pomysł na scenariusz:
    
    
    // Channel 10 - Relay 1
    // Channel 11 - Relay 2
    
    alias Set_Up setChannel 10 0; setChannel 11 1
    alias Set_Down setChannel 10 1; setChannel 11 0
    alias Set_None setChannel 10 0; setChannel 11 0
    
    // command "Start_Opening" will first kill other script threads, and start with clear open
    alias Start_Opening backlog stopAllScripts; startScript autoexec.bat openShutter
    // command "Start_Closing" will first kill other script threads, and start with clear close
    alias Start_Closing backlog stopAllScripts; startScript autoexec.bat closeShutter
    // command "Start_Closing" will first kill other script threads, and then stop
    alias Stop_All backlog stopAllScripts; Set_None
    
    // create GUI buttons for HTTP panel
    startDriver httpButtons
    setButtonEnabled 0 1
    setButtonLabel 0 "Open"
    setButtonCommand 0 Start_Opening
    
    setButtonEnabled 1 1
    setButtonLabel 1 "Close"
    setButtonCommand 1 Start_Closing
    
    setButtonEnabled 2 1
    setButtonLabel 2 "Stop"
    setButtonCommand 2 Stop_All
    
    // link the same commands to physical button on GPIO pins
    // 8 and 9 are GPIO indices, like P9, etc
    addEventHandler OnClick 8 Start_Opening
    addEventHandler OnClick 9 Start_Closing
    addEventHandler OnClick 10 Stop_All
    
    // do not proceed
    return
    
    // Script thread for opening
    openShutter:
    // setup none
    Set_None
    // wait 0.1 seconds
    delay_s 0.1
    // setup up
    Set_Up
    // wait 10 seconds
    delay_s 10
    Set_None
    // done
    return
    
    // Script thread for closing
    closeShutter:
    // setup none
    Set_None
    // wait 0.1 seconds
    delay_s 0.1
    // setup down
    Set_Down
    // wait 10 seconds
    delay_s 10
    Set_None
    // done
    return
    
    Pomogłem? Kup mi kawę.
  • #7 20545826
    richardsg307
    Poziom 5  
    Posty: 18
    Ocena: 5
    Dam mu szansę, gdy go zrozumiem. W tej chwili mam przełącznik zamontowany w skrzynce testowej i nic nie jest podłączone do przekaźników, więc powinno być bezpiecznie!
    Zdam raport.

    Aktualizacja:
    Prawie gotowe! Mam 3 pytania...
    1) [Rozwiązane] Czy mogę wyłączyć domyślne przyciski, skoro autoexec utworzył własne? Problem polega na tym, że z domyślnymi przyciskami mogę mieć jednocześnie włączone przekaźniki Otwórz i Zamknij! Czy mogę je wyłączyć lub sprawić, by uruchamiały te same procedury obsługi zdarzeń, co przyciski HTTP GUI? (Znaleziono - polecenie setChannelVisible).
    2) [Rozwiązany] Jaki jest numer pinu RXD1 do użycia w poleceniu addEventHandler OnClick. RXD1 jest wejściem z przycisku Pause/Stop na moim panelu! (Znalazłem - RXD1 to pin 10, a TXD1 to pin 11).
    3) [Rozwiązano] Połączyłem się przez MQTT z Home Assistant i użyłem kodu YAML podanego na stronie HA Cfg, ale to pozwala mi tylko włączać lub wyłączać poszczególne przekaźniki. Jak mogę wysłać polecenie, aby aktywować skrypty Otwórz lub Zamknij? (Znalazłem - opublikuj temat MQTT cmnd/skylight/Start_Opening, gdzie Start_Opening to alias procedury otwierającej świetlik).

    Jutro podłączę otwieracz i jeśli wszystko będzie w porządku, prześlę całość jako rozbiórkę.
  • #9 20548745
    p.kaczmarek2
    Moderator Smart Home
    Posty: 14580
    Pomógł: 654
    Ocena: 12604
    Tak, wykonałeś świetną robotę z tym przewodnikiem. Wyślemy Ci wiadomość na PW. Pamiętaj, że możesz też opublikować kolejny.
    Pomogłem? Kup mi kawę.
  • #10 20552378
    mbolty
    Poziom 3  
    Posty: 6
    OpenBeken Konfigurowanie przycisków Otwórz/Zatrzymaj/Zamknij na przełączniku Sma Witam, posiadam moduł cb2s. Próbowałem wprowadzić kod, aby móc używać go jako modułu migawki, dodając drugi przekaźnik i drugi przycisk, ale u mnie to nie działa. kod pliku autoexec.bat jest następujący:
    // Channel 1 - Relay 1
    // Channel 2 - Relay 2
    setChannelVisible 1 0
    setChannelVisible 2 0
    
    alias Set_Up setChannel 1 0; setChannel 2 1
    alias Set_Down setChannel 2 0; setChannel 1 1
    alias Set_None setChannel 1 0; setChannel 2 0
    
    // command "Start_Opening" will first kill other script threads, and start with clear open
    alias Start_Opening backlog stopAllScripts; startScript autoexec.bat openShutter
    // command "Start_Closing" will first kill other script threads, and start with clear close
    alias Start_Closing backlog stopAllScripts; startScript autoexec.bat closeShutter
    // command "Start_Closing" will first kill other script threads, and then stop
    alias Stop_All backlog stopAllScripts; set_none
    
    // create GUI buttons for HTTP panel
    startDriver httpButtons
    setButtonEnabled 0 1
    setButtonLabel 0 "Open"
    setButtonCommand 0 Start_Opening
    
    setButtonEnabled 1 1
    setButtonLabel 1 "Close"
    setButtonCommand 1 Start_Closing
    
    setButtonEnabled 2 1
    setButtonLabel 2 "Stop"
    setButtonCommand 2 Stop_All
    
    // link the same commands to physical button on GPIO pins
    // 8 and 9 are GPIO indices, like P9, etc
    addEventHandler OnClick 24 Start_Opening
    addEventHandler OnClick 26 Start_Closing
    addEventHandler OnClick 10 Stop_All
    
    // do not proceed
    return
    
    // Script thread for opening
    openShutter:
    // setup none
    set_none
    // wait 0.1 seconds
    delay_s 0.1
    // set up
    Set_Up
    //wait 10 seconds
    delay_s 10
    set_none
    // done
    return
    
    // Script thread for closing
    closeShutter:
    // setup none
    set_none
    // wait 0.1 seconds
    delay_s 0.1
    // setup down
    Set_Down
    // wait 10 seconds
    delay_s 10
    set_none
    // done
    return

    Ale żadne z wyjść nie jest aktywne.
    Proszę, doceniam każdą pomoc
    OpenBeken Konfigurowanie przycisków Otwórz/Zatrzymaj/Zamknij na przełączniku Sma OpenBeken Konfigurowanie przycisków Otwórz/Zatrzymaj/Zamknij na przełączniku Sma OpenBeken Konfigurowanie przycisków Otwórz/Zatrzymaj/Zamknij na przełączniku Sma OpenBeken Konfigurowanie przycisków Otwórz/Zatrzymaj/Zamknij na przełączniku Sma


    Dziennik:

    Info:CMD:CMD_StartScript: uruchomiono autoexec.bat na etykiecie openShutter
    Info:CMD:[Wynik polecenia WebApp Cmd 'Start_Opening'] OK
    Info:GEN:Brak zmian w kanale 1 (nadal ustawiony na 0) - ignorowanie

    Info:GEN:Brak zmian w kanale 1 (nadal ustawiony na 0) - ignorowanie

    Info: MAIN:Time 451, bezczynny 160941/s, wolny 68640, MQTT 1(2), bWi
  • #11 20552440
    p.kaczmarek2
    Moderator Smart Home
    Posty: 14580
    Pomógł: 654
    Ocena: 12604
    Edytuj post i użyj znacznika kodu, aby opublikować kod.

    Załącz zrzut ekranu konfiguracji pinów urządzenia. Czy ustawiłeś role Relay dla odpowiednich GPIO i przypisałeś im kanały?

    Czy widziałeś poradnik migawki?
    https://www.elektroda.com/rtvforum/topic3972935.html
    Pomogłem? Kup mi kawę.
  • #12 20552484
    mbolty
    Poziom 3  
    Posty: 6
    Dzięki, już przeczytałem ten post. Edytowałem swój post i dodałem obraz konfiguracji oraz część dziennika.
  • #13 20552493
    p.kaczmarek2
    Moderator Smart Home
    Posty: 14580
    Pomógł: 654
    Ocena: 12604
    Widzę, że masz dwa przekaźniki, jeden na kanale 1, a drugi na kanale 2.

    Jeśli zmieniasz stany kanałów z panelu www, to czy przekaźniki klikają?
    Pomogłem? Kup mi kawę.
  • #14 20552569
    mbolty
    Poziom 3  
    Posty: 6
    już rozwiązałem.
    
    //Configurar alias  Aliases
    alias Set_Stop backlog setChannel 2 0; setChannel 1 0
    alias Set_Open backlog setChannel 1 1
    alias Set_Close backlog setChannel 2 1
    alias Start_Opening backlog stopAllScripts; startScript autoexec.bat openBlind
    alias Start_Closing backlog stopAllScripts; startScript autoexec.bat closeBlind
    alias Stop_All backlog stopAllScripts; startScript autoexec.bat stopBlind
    
    // Channel 60 segundos de trabajo
    setChannel 60 15
    
    //crear botones GUI  para el panel HTTP
    startDriver httpButtons
    
    setButtonEnabled 1 1
    setButtonLabel 1 "Open"
    setButtonCommand 1 Start_Opening
    
    setButtonEnabled 3 1
    setButtonLabel 3 "Close"
    setButtonCommand 3 Start_Closing
    
    setButtonEnabled 2 1
    setButtonLabel 2 "Stop"
    setButtonCommand 2 Stop_All
    setButtonColor 2 red
    
    // Ocultar los botones de los reles en la  GUI HTTP
    setChannelVisible 1 0
    setChannelVisible 2 0
    setChannelVisible 3 0
    
    // Cargar Event Handlers
    addEventHandler OnHold 26 Start_Closing
    addEventHandler OnHold 24 Start_Opening
    addEventHandler OnClick 11 Stop_All
    
    // Detener persiana al encender
    goto stopBlind
    return
    
    // Script abrir
    openBlind:
    Set_Stop
    delay_s 0.1
    Set_Open
    delay_s $CH60
    Set_Stop
    return
    
    // Script cerrer
    closeBlind:
    Set_Stop
    delay_s 0.1
    Set_Close
    delay_s $CH60
    Set_Stop
    return
    
    // Script detener
    stopBlind:
    Set_Stop
    return
    




    Mam tylko jedno pytanie o wartości 60 dolarów. Wartość nie mogła zostać wysłana przez MQTT przez Home Assistant, aby móc ją zmodyfikować zgodnie z czasem każdego silnika?
    Bardzo dziękuję
    (prześlę zdjęcia gotowego projektu)
  • #15 20552977
    richardsg307
    Poziom 5  
    Posty: 18
    Ocena: 5
    W końcu odkryłem, że mogę nacisnąć przycisk Otwórz okno po raz drugi i otworzy się trochę (dużo) więcej. Aby go zamknąć, potrzebowałem więcej czasu, więc zmieniłem ten kod z powrotem na liczbę taką jak 25 (sekund), aby upewnić się, że jest zamknięty bez względu na to, jak daleko go otworzyłem. Siłownik ma odcięcie, gdy osiągnie pozycję zamkniętą lub gdy samo okno zostanie zamknięte (przed położeniem zamknięcia siłownika) i silnik utknie.
  • #16 20553095
    p.kaczmarek2
    Moderator Smart Home
    Posty: 14580
    Pomógł: 654
    Ocena: 12604
    Bardzo dobra robota,
    mbolty napisał:

    Mam tylko jedno pytanie o wartości 60 dolarów. Wartość nie mogła zostać wysłana przez MQTT przez Home Assistant, aby móc ją zmodyfikować zgodnie z czasem każdego silnika?


    Domyślnie kanały są wysyłane tylko wtedy, gdy są używane do podstawowych operacji we/wy, ale to zachowanie można zmienić.
    Podam Ci dwie metody:
    1. Po prostu ręcznie opublikuj wartość kanału
    
    addEventHandler OnChannelChange 30 publishInt myCustomValue $CH30 
    

    2. Możesz także zaktualizować OpenBeken do najnowszej wersji, a następnie upewnić się, że używasz kanału do 31, a następnie w aplikacji internetowej zmienić typ:
    OpenBeken Konfigurowanie przycisków Otwórz/Zatrzymaj/Zamknij na przełączniku Sma
    Jeśli ustawisz typ, na przykład na „Niestandardowy”, Obk będzie wiedział, że coś jest na tym kanale i opublikuje to, gdy się zmieni.
    OpenBeken Konfigurowanie przycisków Otwórz/Zatrzymaj/Zamknij na przełączniku Sma
    Pamiętaj, że możesz również łatwo ustawić dowolny kanał za pomocą MQTT.
    https://github.com/openshwprojects/OpenBK7231T_App/blob/main/docs/mqttTopics.md
    Pomogłem? Kup mi kawę.
  • #17 20556900
    mbolty
    Poziom 3  
    Posty: 6
    Witam, poprawiłem autoexec.bat i stworzyłem kilka czujników i automatyzacji w asystencie domowym.
    Chciałbym poznać waszą opinię i czy jest możliwe ulepszenie tego, co stworzyłem.
    Dziękuję wszystkim.
    
    //Configurar alias  Aliases
    alias Set_Stop backlog setChannel 2 0; setChannel 1 0
    alias Set_Open backlog setChannel 1 1
    alias Set_Close backlog setChannel 2 1
    alias Start_Opening backlog stopAllScripts; startScript autoexec.bat openBlind
    alias Start_Closing backlog stopAllScripts; startScript autoexec.bat closeBlind
    alias Stop_All backlog stopAllScripts; startScript autoexec.bat stopBlind
    
    // Channel 31 segundos de trabajo por defecto configurable por mqtt
    setChannel 31 5
    //crear botones GUI  para el panel HTTP
    startDriver httpButtons
    
    setButtonEnabled 1 1
    setButtonLabel 1 "Open"
    setButtonCommand 1 Start_Opening
    
    setButtonEnabled 3 1
    setButtonLabel 3 "Close"
    setButtonCommand 3 Start_Closing
    
    setButtonEnabled 2 1
    setButtonLabel 2 "Stop"
    setButtonCommand 2 Stop_All
    setButtonColor 2 red
    
    // Ocultar los botones de los reles en la  GUI HTTP
    setChannelVisible 1 0
    setChannelVisible 2 0
    setChannelVisible 3 0
    setChannelVisible 31 1
    setChannelVisible 32 0
    setChannelVisible 60 0
    
    // Cargar Event Handlers
    addEventHandler OnClick 26 Start_Closing
    addEventHandler OnClick 24 Start_Opening
    addEventHandler OnClick 10 Stop_All
    
    // Detener persiana al encender
    goto stopBlind
    return
    
    openBlind:
    Set_Stop
    delay_s 0.1
    Set_Open
    publish state_topic opening
    delay_s $CH31
    Set_Stop
    publish state_topic open
    return
    
    closeBlind:
    Set_Stop
    delay_s 0.1
    Set_Close
    publish state_topic closing
    delay_s $CH31
    publish state_topic close
    Set_Stop
    return
    
    stopBlind:
    Set_Stop
    publish state_topic stopped
    return
    

    
    sensor:
        - name: "estado persiana"
          state_topic: "obk_02/state_topic/get"
        - name: "tiempo persiana"
          state_topic: "obk_02/31/get"
    

    
    alias: timeblindha_2device
    description: send work time to device from home assistant
    trigger:
      - platform: state
        entity_id:
          - input_button.set_tiem_blind
    condition: []
    action:
      - service: mqtt.publish
        data:
          qos: 0
          retain: false
          topic: obk_02/31/set
          payload_template: "{{ states('input_number.timepersiana')|float }}"
    mode: single
    

    
    alias: timeblind_device2ha
    description: synchronize device working time with home assistant
    trigger:
      - platform: mqtt
        topic: obk_02/31/get
    condition: []
    action:
      - service: input_number.set_value
        data:
          value: "{{ states('sensor.tiempo_persiana')|float }}"
        target:
          entity_id: input_number.timepersiana
    mode: single
    

    Utwórz przycisk "input_button.set_tiem_blind", aby nowy czas pracy był wysyłany tylko po kliknięciu przycisku, a nie po zmianie wartości "input_number.set_value".
    Czekam na dostarczenie przekaźników, aby dodać je do modułów.
  • #18 21701031
    balucio
    Poziom 1  
    Posty: 1
    >>20545714 >>20556900

    Mam przełącznik wifi z trzema wyjściami, które kontrolują pojedynczą kolorową diodę LED. Dzięki poprzedniemu postowi znalazłem rozwiązanie, aby zablokować wyjścia i losowo zmieniać kolor diody co 60 sekund....

    To jest główna część mojego pliku startup.bat

    // Handle colors
    
    alias Violet backlog cancelRepeatingEvent 30; setChannel 1 1 
    alias Blue backlog cancelRepeatingEvent 30; setChannel 2 1
    alias Green backlog cancelRepeatingEvent 30; setChannel 3 1
    
    alias Random backlog cancelRepeatingEvent 30; setChannel 60 $rand01*3 1; setChannel $CH60 1;addRepeatingEventID 60 -1 30 Random
    
    alias onViolet backlog setChannel 2 0; setChannel 3 0; setChannel 60 1
    alias onBlue backlog setChannel 1 0; setChannel 3 0; setChannel 60 2
    alias onGreen backlog setChannel 1 0; setChannel 2 0; setChannel 60 3
    
    alias changeColor backlog setChannel 1 0; setChannel 2 0; setChannel 60 3
    
    
    // interlook events
    addChangeHandler Channel1 == 1 onViolet
    addChangeHandler Channel2 == 1 onBlue
    addChangeHandler Channel3 == 1 onGreen
    
    // Gui buttons
    startDriver HTTPButtons
    
    // Random
    setButtonEnabled 10 1
    setButtonLabel 10 "Random"
    setButtonCommand 10 Random
    setButtonColor 10 gray
    
    setButtonEnabled 11 1
    setButtonLabel 11 "Blue"
    setButtonCommand 11 Blue
    setButtonColor 11 blue
    
    setButtonEnabled 12 1
    setButtonLabel 12 "Violet"
    setButtonCommand 12 Violet
    setButtonColor 12 BlueViolet
    
    setButtonEnabled 13 1
    setButtonLabel 13 "Green"
    setButtonCommand 13 Green
    setButtonColor 13 green
    
    // Hide the default GUI buttons
    setChannelVisible 1 0
    setChannelVisible 2 0
    setChannelVisible 3 0
    
    // Start color
    Random

Podsumowanie tematu

✨ Dyskusja dotyczy konfiguracji przycisków Otwórz/Zatrzymaj/Zamknij na przełączniku Smart Life z oprogramowaniem OpenBeken, wykorzystywanym do sterowania siłownikiem okiennym (świetlikiem) w systemie 4-przewodowym. Użytkownik implementuje skrypty w pliku autoexec.bat, które sterują przekaźnikami na kanałach 1, 2 i 3, realizując sekwencje włączania i wyłączania przekaźników z opóźnieniami, aby symulować działanie migawki. Wskazano, że zamiast używać delay_s w backlogu, lepiej stosować addRepeatingEvent do obsługi opóźnień. Zaproponowano dedykowany sterownik rolet z aliasami i obsługą zdarzeń, który zatrzymuje poprzednie skrypty przy uruchamianiu nowych akcji, co pozwala na przerwanie otwierania przez zamykanie. Omówiono także wyłączanie domyślnych przycisków i zastępowanie ich własnymi, przypisanymi do GUI HTTP, oraz konfigurację pinów RXD1 i TXD1 do obsługi przycisków. Wskazano metody publikacji stanów kanałów przez MQTT i integrację z Home Assistant, w tym ustawianie typów kanałów na „Niestandardowy” dla automatycznej publikacji. Użytkownicy dzielili się przykładami skryptów z aliasami, event handlerami i konfiguracją GUI, a także problemami z czasem działania siłownika i koniecznością wydłużenia czasu pracy przekaźników. Dyskusja zawierała także porady dotyczące formatowania kodu i przypisywania ról GPIO do przekaźników. W efekcie powstał funkcjonalny system sterowania świetlikiem z wykorzystaniem OpenBeken, MQTT i Home Assistant, z możliwością dalszej rozbudowy i optymalizacji skryptów.
Wygenerowane przez model językowy.
REKLAMA