Ankündigung

Einklappen
Keine Ankündigung bisher.

Zeitabfrage in if-Anweisung

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

    Zeitabfrage in if-Anweisung

    Hallo,

    ich habe bzgl. meines Anliegens bereits die Suche benutzt, bin aber leider nicht so recht fündig geworden...

    Ich habe folgendes Problem: ich lasse meine Rolladen Event-getriggert ab einer bestimmten Temperatur während eines bestimmten Sonnenstand-Intervall automatisiert herunterfahren. Sollte die Temperatur auf einen gewissen Wert dann wieder abfallen (z.B durch ein Gewitter) und der Schalter für den Sonnenuntergang noch nicht auf ON stehen, sollen die Rolläden wieder hochfahren. Die Rule schaut wie folgt aus:


    rule "Rollo Schlafzimmer runter, wenn wärmer als 28°"
    when
    Item Azimuth changed
    then
    var int azimuth = (Azimuth.state as DecimalType).intValue

    if (azimuth > 230 && azimuth < 300 && Temperatur_aussen.state >= 28 && Autoshading_Schlafzimmer.state==OFF)
    {
    sendCommand(Autoshading_Schlafzimmer, ON)
    sendCommand(Rollo_Schlafzimmer, STOP)
    }
    if (azimuth > 230 && azimuth < 300 && Temperatur_aussen.state <= 24 && Autoshading_Schlafzimmer.state==ON && Sonnenuntergang_control.state==OFF)
    {
    sendCommand(Rollo_Schlafzimmer, OPEN)
    sendCommand(Autoshading_Schlafzimmer, OFF)
    }



    Nun kann es allerdings auch mal vorkommen, dass unser Junior mal wieder im elterlichen Schlafzimmer nächtigen möchte Er geht jeden Tag gegen 20 Uhr ins Bett. Nun möchte ich vermeiden, dass die zweite if-Anweisung nach 20 Uhr ausgeführt wird. Diese sollte also irgendwie so ausschauen:

    if (azimuth > 230 && azimuth < 300 && Temperatur_aussen.state <= 24 && Autoshading_Schlafzimmer.state==ON && Sonnenuntergang_control.state==OFF && UHRZEIT IST KLEINER 20 UHR)

    Sicher könnte ich hier eine weitere Regel bauen und um 20 Uhr einen Schalter setzen, den ich dann mit abfrage... Aber das muss doch auch irgendwie 'eleganter' funktionieren!? Hat jemand eine Idee???


    Danke
    Daniel

    #2
    Ich hab das in einer Regel mal folgendermaßen gelöst:

    Code:
    var Calendar current_time = java::util::Calendar::getInstance(TimeZone::getTimeZone("Europe/Berlin"))
    var Number hour = current_time.get(java::util::Calendar::HOUR_OF_DAY )
    
    if(hour > 12) {..}
    Geht aber bestimmt auch einfacher.
    Zuletzt geändert von Jockel; 05.06.2015, 21:50.

    Kommentar


      #3
      Was Du suchst, ist if ([...] && now.getHourOfDay < 20) wozu auf jeden Fall am Beginn des Rule-Files noch ein import org.joda.time.DateTime stehen muss.

      Kommentar


        #4
        Vielen dank, dass ist genau das, was ich gesucht habe! Werde ich mal implementieren und testen... Danke!!!

        Kommentar

        Lädt...
        X