Ankündigung

Einklappen
Keine Ankündigung bisher.

Thread::sleep(1000) oder was?

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

    Thread::sleep(1000) oder was?

    Hallo,

    ich nute für eine Pause und für Verzögerungen derzeit immer Thread::sleep(1000)

    Ist dies das Richtige, wenn man beispielsweise 30 Min nach einem Event etwas schalten möchte?

    Z.B.:

    rule SchlafenOff
    when
    Item Schlafen_schalten received command OFF
    then
    sendCommand(Zentral_EIN, ON)
    Thread::sleep(1800000)
    sendCommand(JAL_EG_Zentral, DOWN)
    end

    Oder geht das auch Intelligenter?

    #2
    Ich denke folgendes ist eleganter
    Code:
    createTimer(now.plusMinutes(2)) [|
    postUpdate(irgendwas, ON)
    weiterer Code ...
    ]
    Wichtig zu wissen ist, dass diese Timer einen openhab restart nicht überleben, aber das machen Deine sleeps ja auch nicht.

    Kommentar


      #3
      das createTimer Konstrukt hat die Einschränkung, dass in dem Enclosure keine Variablen verwendet werden können.
      Außerdem ist das createTimer keine äquivalente Formulierung zu dem ersten Ansatz.
      Oben wird der Thread angehalten, mit createTimer wird ein neuer Thread zeitlich verzögert gestartet und der "Mutterthread" weiter ausgeführt.

      Kommentar


        #4
        Danke für die Erläuterung. Jetzt verstehe ich auch, warum er mir mit createTimer und einem nachgelagerten Kommando in einer when Schleife eine DauerSchleife in timerlänge gebaut hat...
        Bei Thread::sleep(1800000) habe ich nur ein bisschen Angst, wegen der langen Zeit von 30 Min.. Ist das stabile genug oder gibt es bessere Lösungen?

        Kommentar

        Lädt...
        X