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

Skrypt OpenBeken: Przerwanie timera w pętli i utrzymanie aktywnego kanału

2greatsecret 02 Gru 2024 22:25 972 0
REKLAMA
Treść została przetłumaczona niemiecki » polski Zobacz oryginalną wersję tematu
  • #1 21330336
    2greatsecret
    Poziom 1  
    Posty: 1
    Czy istnieje sposób na przerwanie pętli rozpoczętej w skrypcie?

    Znalazłem następujący skrypt w przykładach na git, który spełnia część mojego zamiaru w nieco okrojonej formie:
    // display seconds timer
    setChannelType 5 TimerSeconds
    // set start values as "remember in flash"
    SetStartValue 4 -1
    SetStartValue 5 -1
    
    // channel 5 is timer
    // channel 4 is relay
    
    // here is countdown value in seconds - 300
    alias turn_off_after_time backlog setChannel 5 300
    alias on_turned_off setChannel 5 0
    alias turn_off_relay setChannel 4 0
    alias do_check if $CH5==0 then turn_off_relay
    alias do_tick backlog addChannel 5 -1; do_check
    
    // this will run the turn off command every time that CH4 becomes 1
    //addChangeHandler Channel4 == 1 turn_off_after_time
    // this will run the turn off command every time that CH4 becomes 0
    addChangeHandler Channel4 == 0 on_turned_off
    
    
    again:
    
    if $CH5!=0 then do_tick
    delay_s 1
    goto again
    

    Jeśli teraz wywołam alias "turn_off_after_time" w przeglądarce, timer odlicza 5 minut i wyłącza kanał 4.
    Chciałbym jednak w razie potrzeby anulować timer, ale żeby kanał 4 pozostał włączony.
    Będę bardzo wdzięczny za wszelkie pomocne sugestie.
    AI: Na jakiej platformie lub w jakim środowisku działa skrypt?
    OpenBeken

    Właśnie sam znalazłem rozwiązanie problemu.
    Jeśli jednak jest to nieprawidłowe rozwiązanie, proszę o korektę:

    Wywołując komendę "on_turned_off" timer kanału 5 jest ponownie ustawiany na 0 i przestaje zliczać, a kanał 4 pozostaje aktywny.
  • REKLAMA
REKLAMA