Ankündigung

Einklappen

Serverwartung 21.2.



Am 21.2. im Laufe des späten Abends wird eine Serverwartung durchgeführt. Das Forum ist dadurch für gut zwei Stunden nicht erreichbar.
Es wird eine Wartungsseite geschaltet.

Mehr anzeigen
Weniger anzeigen

Wochentag ermitteln

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

    [Codebeispiel] Wochentag ermitteln

    Guten Morgen!

    leider gab es bei google keine Treffer daher würde ich mich über Eure Hilfe freuen:
    wie kann ich innerhalb einer rule den Wochentag ermitteln?
    Hintergrund: ich würde gerne eine rule immer zur gleichen Zeit ausführen lassen wollen, aber an bestimmten Tagen nicht, wenn noch andere Zustände eingetreten sind.
    Bsp.:
    Code:
    rule "RollosMorgensOeffnen"
    when
        // Rollos täglich um 6:30 öffnen
        Time cron "0 30 6 ? * * *"
    then
       // aber nicht, wenn Anwesend und Sa oder So
    Wie ermittle ich den Wochentag?

    Dankeschön für die Unterstützung
    wbuh

    #2
    Setze die Rule so um....

    Code:
    rule "RollosMorgensOeffnen"
    when
        // Rollos Mo-Fr um 6:30 öffnen
        Time cron "0 30 6 ? * MON-FRI *"
    then
        if (AnwesendItem.state == 1)
        {
            // hier Befehl für Rollos hochfahren
        }
    In dem Item AnwesendItem ist die Anwesenheit hinterlegt..... 1 = anwesend, alles andere nicht anwesend

    Grüße,
    Andreas

    Kommentar


      #3
      Oder hatte ich es falsch verstanden, und Du willst Mo-Fr immer um 6:30 Uhr hochfahren und am Sa/So nur hochfahren, wenn Du nicht anwesend bist?

      Dann würde ich zwei Rules machen:
      Rule1: Mo-Fr um 6:30 ohne weitere Bedingung
      Rule2: Sa-So um 6:30 mit der Bedingung der (nicht) Anwesenheit (vgl. obg. Beispiel)

      Kommentar


        #4
        Und ich hab noch einen.... (quasi die Lösung auf Deine eigentliche Frage):

        Code:
        Wochentag.postUpdate(now.getDayOfWeek)
        Das musst Du halt einmal Nachts ausführen, um den aktuellen Wochentag zu haben.

        Es gibt im openHAB-Wiki auch die ausgeklügelte Feiertagsberechnung, mit der Du das ganze noch weiter aufbohren kannst (z.B. zur Bestimmung von Rosenmontag): https://github.com/openhab/openhab/w...ublic-holidays

        So, aber jetzt hab' ich dann endlich alles gesagt/geschrieben.

        Andreas

        Kommentar


          #5
          Die eigentliche Lösung ist now.getDayOfWeek, was innerhalb einer Rule mit if(now.getDayOfWeek>=5) abgefragt werden könnte. Man muss jedenfalls den Wochentag nicht in einem Item zwischenspeichern, wenn man ihn nicht in der UI anzeigen möchte

          PS: bin mir jetzt gerade nicht sicher ob des Wertebereichs, aber das lässt sich ja leicht herausfinden, ob 0-6 oder 1-7 und ob Sonntag nun den niedrigsten oder den höchsten Wert darstellt.

          Kommentar


            #6
            Zitat von udo1toni Beitrag anzeigen
            Die eigentliche Lösung ist now.getDayOfWeek, was innerhalb einer Rule mit if(now.getDayOfWeek>=5) abgefragt werden könnte.
            Das habe ich gesucht. Dankeschön!

            Kommentar

            Lädt...
            X