Ankündigung

Einklappen
Keine Ankündigung bisher.

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