jeden 2 Tag

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Benutzeravatar
Boxana
Beiträge: 125
Registriert: 19. Feb 2020 16:24
Answers: 0

jeden 2 Tag

Beitrag von Boxana »

hallo,
gibt es eine Möglichkeit das ich in einer rule überprüfen kann ob ein tag gerade oder ungerade ist.
Ich würde gerne jeden zweiten tag eine if Bedingung erfüllen.
Es soll kein trigger sein sondern eine Bedingung.
Openhab auf einem Qnap NAS
Gruß
Christian

harteknut
Beiträge: 235
Registriert: 3. Dez 2019 08:21
Answers: 9

Re: jeden 2 Tag

Beitrag von harteknut »

Wenns kein Trigger sein soll (also keine cron-Bedingung), würde ich es mit

Code: Alles auswählen

val Integer Tag = now.getDayOfWeek
versuchen: Die Variable "Tag" durch zwei Teilen, abrunden, verdoppeln, von der Urprungsvariable subtrahieren. Ist das Ergebnis == 0, dann hast Du einen geraden Tag.
Ist etwas kompliziert, aber ein findiger Syntaxler kann das bestimmt in einer Zeile berechnen.
Gruß,
Simon

Benutzeravatar
udo1toni
Beiträge: 15249
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: jeden 2 Tag

Beitrag von udo1toni »

Hmm... das könnte man dann aber mit einem Vergleich auf Montag Mittwoch Freitag Sonntag erledigen. Ich denke eher, dass Boxana tatsächlich jeden 2. Tag meint, also in der einen Woche Montag, Mittwoch,Freitag, Sonntag, in der nächsten Woche Dienstag, Donnerstag Samstag, Danach geht's wieder von vorne los.

Du kannst das im Zweifel am einfachsten aus Now.millis extrahieren, also (ungetestet)

Code: Alles auswählen

val Boolean evenDay = if((now.millis/1000/60/60/24).intValue % 2 == 0) true else false
Falls das mit dem Modulo nicht geht, kann man es so versuchen:

Code: Alles auswählen

val Boolean evenDay = if((now.millis/1000/60/60/24).intValue/2 == ((now.millis/1000/60/60/24).intValue/2).intValue) true else false
aber das ist hässlich...

now.millis enthält die Anzahl Millisekunden seit dem 1.1.1970, 00:00:00.000 Uhr. Dieser Tag wäre also ein gerader Tag.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Benutzeravatar
Boxana
Beiträge: 125
Registriert: 19. Feb 2020 16:24
Answers: 0

Re: jeden 2 Tag

Beitrag von Boxana »

Ja udo1toni ,
mir würde es reichen wenn ich wochentage setzen könnte.
Z.B. Mo Mi Fr So und dann Die

kann ich das irgendwie abfragen welchen Wochentag man hat?
Openhab auf einem Qnap NAS
Gruß
Christian

violine21
Beiträge: 600
Registriert: 20. Sep 2019 05:49
Answers: 7

Re: jeden 2 Tag

Beitrag von violine21 »

Boxana hat geschrieben: 19. Mai 2020 18:38 kann ich das irgendwie abfragen welchen Wochentag man hat?
So zum Beispiel:

Code: Alles auswählen

rule "Tag ermitteln"
when
    Time cron "0 0 0 * * ?"  //Mitternacht
then
    logInfo("Kalender", "Tag-Nr.: " + now.getDayOfWeek)
end

Code: Alles auswählen

2020-05-19 21:28:00.332 [INFO ] [ipse.smarthome.model.script.Kalender] - Tag-Nr.: 2
now.getDayOfWeek gibt den Tag der Woche an. Das Ergebnis ist eine normale Zahl. Damit kannst Du dann rechnen.

Tokamak
Beiträge: 183
Registriert: 20. Aug 2019 08:37
Answers: 4
Wohnort: Aachen

Re: jeden 2 Tag

Beitrag von Tokamak »

Wenn du bestimmte Tage nehmen kannst und willst, geht es direkt mit Timer cron:

Code: Alles auswählen

rule "Wochentag"
when
	Timer cron "0 0 4 * * MON,WED,FRI"
then
	...
Jeder zweite Tag, beginnend ab dem 1. eines Monats, wäre

Code: Alles auswählen

rule "Wochentag"
when
	Timer cron "0 0 4 1/2 * *"
then
	...
Wenn du tatsächlich genau jeden zweiten Tag benötigst, reicht die Wochentagsbetrachtung alleine nicht, sondern musst auch die Kalenderwoche berücksichtigen. Und dann musst du den Spezialfall Jahreswechsel berücksichtigen.

Wenn also exakt, würde ich es genauso machen wie von udo1toni vorgeschlagen, die Millisekunden bestimmen, durch 24*60*60*1000 teilen, dann hast du die Anzahl der Tage seit "the epoch", und diesen Wert darauf prüfen, ob es gerade oder ungerade ist (mittels %).
Proxmox mit OH 4.2 und HABApp 24 im LXC-Container

Benutzeravatar
Boxana
Beiträge: 125
Registriert: 19. Feb 2020 16:24
Answers: 0

Re: jeden 2 Tag

Beitrag von Boxana »

violine21 hat geschrieben: 19. Mai 2020 21:33
Boxana hat geschrieben: 19. Mai 2020 18:38 kann ich das irgendwie abfragen welchen Wochentag man hat?
So zum Beispiel:

Code: Alles auswählen

rule "Tag ermitteln"
when
    Time cron "0 0 0 * * ?"  //Mitternacht
then
    logInfo("Kalender", "Tag-Nr.: " + now.getDayOfWeek)
end

Code: Alles auswählen

2020-05-19 21:28:00.332 [INFO ] [ipse.smarthome.model.script.Kalender] - Tag-Nr.: 2
now.getDayOfWeek gibt den Tag der Woche an. Das Ergebnis ist eine normale Zahl. Damit kannst Du dann rechnen.

DANKE!
Das ist mehr als genug und so komme ich weiter.

Cron ist gut wenn man darauf triggern möchte aber ich möchte bestimmte tage überspringen je nach Wetter und da ist das was du hier vorschlägst mehr als gut.
Openhab auf einem Qnap NAS
Gruß
Christian

Antworten