Ankündigung

Einklappen
Keine Ankündigung bisher.

Timer in GUI anzeigen lassen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Timer in GUI anzeigen lassen

    Hallo,

    ich habe folgende Regel mit Timer:
    Code:
    rule "Keller60MinSteckdose"
    when
        Item Dose_KG_Haupt received command ON
    then
        if(timer_Kellersteckdose != null){
            timer_Kellersteckdose.cancel
            timer_Kellersteckdose = null
            timer_Kellersteckdose = createTimer(now.plusMinutes(60)) [|
                sendCommand(Dose_KG_Haupt, off)
            ]
        }else{
            timer_Kellersteckdose = createTimer(now.plusMinutes(60)) [|
                sendCommand(Dose_KG_Haupt, off)
            ]
        }
    end
    Jetzt möchte ich mir gerne die Restzeit des Timers in der GUI anzeigen lassen. Gibt es da eine Möglichkeit?

    #2
    Nein, eine Restzeitanzeige ist nicht ohne Umwege möglich.
    Allerdings könntest Du die rule so umbauen, dass Du ein Number Item vom 60 auf 0 runter zählst. Dann gehört ein timer dazu, der eine Minute läuft und so lange immer wieder neu gestartet wird, bis der Zähler bei null angekommen ist. Die Anzeige der Gui ist ohnehin nur eingeschränkt in der Lage, Elemente dynamisch anzuzeigen, eine genauere Auflösung als eine Minute ist also wahrscheinlich eh nicht drin.

    Kommentar


      #3
      Bastle dir ein Timer mit Java, bau dir ne Webseite, die den Timer digital darstellt, binde die Webseite in deine Sitemap ein. In deiner Regel löst du dann das Script aus.

      Kommentar


        #4
        Also meine Lösung sieht jetzt so aus:

        Code:
        Switch             Dose_AB_Huette             "Huette"                 <socket>    (gAB, gDosenALL) { knx = "4/1/69+4/2/69" }
        Switch             Dose_AB_Huette_Timer    "Huette 1 Std."             <socket>    (gAB)
        Number             Dose_AB_Huette_TimerT    "HuetteT [%d]"             <socket>    (gAB)
        Code:
        rule "Huette60MinSteckdose"
        when
            Item Dose_AB_Huette_Timer received command ON
        then
            sendCommand(Dose_AB_Huette, ON)
            if(timer_Huettensteckdose != null){
                timer_Huettensteckdose.cancel
                timer_Huettensteckdose = null
                timer_Huettensteckdose = createTimer(now.plusMinutes(1)) [|
                    sendCommand(Dose_AB_Huette, OFF)
                    sendCommand(Dose_AB_Huette_Timer, OFF)
                    Dose_AB_Huette_TimerT.postUpdate(0)
                ]
                var l = 60
                while((timer_Huettensteckdose != null) && (l > 1)){
                    l = l - 1            
                    Dose_AB_Huette_TimerT.postUpdate(l)
                    Thread::sleep(1000)
                }
            }else{
                timer_Huettensteckdose = createTimer(now.plusMinutes(1)) [|
                    sendCommand(Dose_AB_Huette, OFF)
                    sendCommand(Dose_AB_Huette_Timer, OFF)
                    Dose_AB_Huette_TimerT.postUpdate(0)
                ]
                var l = 60
                while((timer_Huettensteckdose != null) && (l > 1)){
                    l = l - 1
                    Dose_AB_Huette_TimerT.postUpdate(l)
                    Thread::sleep(1000)
                }
            }
        end
        Die Frage wäre jetzt noch ob ich den Timer auch in dem Switch-Item anzeigen lassen kann. Ich meine sowas:
        Code:
        Switch             Dose_AB_Huette_Timer    "Huette 1 Std. [B][VAR(Dose_AB_Huette_TimerT):%d][/B]"             <socket>    (gAB)
        Geht sowas?

        Kommentar


          #5
          Nein, das geht nicht, Du kannst aber das Item selbst anzeigen und ausblenden, wenn es null ist

          Kommentar

          Lädt...
          X