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:
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.
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.