logo elektroda
logo elektroda
X
logo elektroda

OpenBeken Script: Timer im Loop unterbrechen und Channel aktiv halten

2greatsecret 279 0
WERBUNG
  • #1 21330336
    2greatsecret
    Niveau 1  
    Gibt es eine Möglichkeit, einen im Script gestarteten loop zu unterbrechen?

    Ich habe in den Examples auf git folgenden Script gefunden, der ein bisschen beschnitten einen Teil meines Vorhabens erfühlt:

    // 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
    

    Rufe ich nun im Browser den alias "turn_off_after_time", zählt der Timer die 5 Minuten runter und schaltet Channel 4 aus.
    Nun möchte ich aber bei Bedarf den Timer abbrechen, so das Channel 4 doch an bleibt.
    Wäre für hilfreiche Vorschläge sehr dankbar.
    AI: Auf welcher Plattform oder in welcher Umgebung läuft das Script?
    OpenBeken

    Habe so eben selbst die Lösung des Problems gefunden.
    Sollte es sich jedoch um eine unsaubere Lösung handeln, bitte ich trotzdem um Berichtigung:

    Also mit Aufruf des Befehles "on_turned_off" wird der Timer auch Channel 5 wieder auf 0 gesetzt und hört auf zu zählen und Channel 4 bleibt aktiv.
  • WERBUNG
WERBUNG