Seite 1 von 1

Rule eine Woche später erinnern ?!

Verfasst: 14. Jul 2020 20:00
von Piko
Nabend zusammen,

Ist es möglich über eine rule und ein Switch Item eine Art Erinnerung zu erstellen ?

Hintergrund ich vergesse gerne mal wann ich die Blumen gedüngt habe und würd mit das gerne in OpenHAB hinterlegen.

Wenn ich den Switch Blumen_geduengt heute umgelegt (On) habe, das er nach frühestens 6 Tagen sagt (Off).

Vielleicht kann man sogar den Tag anzeigen an dem ich den Switch umgelegt habe ?

Ich weiß ich bin bescheuert aber durch die Arbeit und co bleibt der Balkon gerne mal auf der Strecke.

Danke euch für die Ratschläge.


Gesendet von iPhone mit Tapatalk

Re: Rule eine Woche später erinnern ?!

Verfasst: 14. Jul 2020 20:25
von Pepe1907
Was mir jetzt spontan als Laie einfällt wäre über Timecron zu triggern und diese z.B. jeden Sonntag triggern lassen.
Dann z.B. über Telegram eine Nachricht schicken: "Es ist Sonntag. Die Blumen müssen gedüngt werden.
Natürlich musst du dafür das Telegram Binding installiert und eingerichtet haben.

Code: Alles auswählen

rule "Blumen düngen"
  when
    Time cron "0 0 7 ? * SUN" // Jeden Sonntag um 7:00
then
  sendTelegram("bot1", "Es ist Sonntag Zeit um die Blumen zu düngen")

end
Aber denke udo1toni hat da wieder eine smartere Idee

Re: Rule eine Woche später erinnern ?!

Verfasst: 14. Jul 2020 21:42
von Piko
Grundsätzlich bin ich da bei dir.

Allerdings dünge ich nicht immer sonntags.
Also ich will quasi das wenn ich den Switch auf on stelle nach 7 Tagen der Switch auf off steht.

Ich denke aber das ein Timer dafür nicht gedacht ist oder ?
Bzw. Es ja nicht von der Zeit sondern vom Tag abhängig sein soll.

Sonst hätte ich es über nen Timer bzw. Time cron generiert.


Aber danke für die Idee [emoji4]


Gesendet von iPhone mit Tapatalk

Re: Rule eine Woche später erinnern ?!

Verfasst: 14. Jul 2020 22:20
von Pepe1907
Habe evtl. eine einfachere Idee.
Und zwar über das expire binding.
blumen.items

Code: Alles auswählen

Switch 	Blumen_geduengt           {expire="168h,command=OFF"} 
Dann die passende Rule dazu.

Code: Alles auswählen

rule "Blumen düngen"
  when
    item blumen_geduengt changed
then
  if (blumen_geduengt.state == OFF) {
  				sendTelegram("bot1", "Es ist Zeit die Blumen zu düngen")
  }
end
erinnerung-blumen.rules

Code: Alles auswählen

rule "Blumen düngen"
  when
    Time cron "0 0 18 * * ?" // 18:00:00 
then
  if (blumen_geduengt.state == OFF) {
  sendTelegram("bot1", "Es ist Zeit die Blumen zu düngen")
  }
end
Nachteil dieser Variante ist wenn du zum Beispiel morgen um 17:58 den Schalter auf an stellst.
Erhälst du Nächste Woche Mittwoch um 17:58 eine Nachricht und um 18:00 nochmal eine Nachricht.

Re: Rule eine Woche später erinnern ?!

Verfasst: 14. Jul 2020 23:25
von udo1toni
Also, expire Binding ginge problemlos - vorausgesetzt, openHAB wird nicht zwischendurch neu gestartet.

Das ist das eigentliche Problem bei den ganzen Langzeit-Timern.
Man kommt natürlich auch ohne expire Binding aus, einfach mit einem stinknormalen Timer. Im Unterschied zum expire Binding kann man den aber dazu überreden, nach einem Reboot trotzdem pünktlich zu alarmieren (vorausgesetzt natürlich, der Reboot findet nicht gerade genau zum Alarmtermin statt).
Die Idee:

Der Schalter wird persistiert (mapdb sollte reichen, aber nur mit everyChange, restoreOnStartup (ich hab's jetzt nicht ausprobiert, gehe aber davon aus, dass beim Neustart kein Zeitstempel gesetzt wird, auch wenn das Item durch den Restore einen Change erfährt. Sollte das allerdings passieren, darf das Item nicht regulär persistiert werden, sondern nur "manuell" über eine Rule)
Nun wird beim Betätigen des Schalters über die UI ein Command empfangen. Das command ON nutzen wir, um einen Timer +7 Tage zu erstellen.
Der Timer setzt den Schalter wieder auf OFF zurück (aber nicht mit sendCommand, sondern mit postUpdate).
über Switch.previousState(true,"mapdb").timestamp bekommt man den Zeitstempel, an dem Switch zuletzt umgeschaltet wurde. Diese Information kann man auch nutzen, um beim Systemstart den Timer neu auszurechnen. Wenn openHAB beim Start feststellt, dass Switch vor mehr als 7 Tagen auf ON geschaltet wurde, kann es Switch umgehend auf OFF schalten und an das Nachdüngen erinnern. Ansonsten wird ein passender Timer angelegt.
Falls das restoreOnStartup wider Erwarten in der Persistence als Change gespeichert wird, muss man das Item nicht in der betreffenden .persist Datei eintragen und stattdessen in einer Rule den Befehl Switch.persist("mapdb") ausführen. Dafür kann man beim previousState Aufruf auch auf false umschalten.

Alles klar? ;)

Re: Rule eine Woche später erinnern ?!

Verfasst: 15. Jul 2020 10:30
von Piko
Guten Morgen,

also erstmal Respekt Udo was du da wieder zu stande gebracht hast.

Klingt grundsätzlich erstmal umsetzbar. Muss mich da nur ein wenig durchfummeln glaub ich. Allerdings hab ich eine SQL datenbank laufen. Deshalb muss ich mir das dann umbauen.

Das einzige was mir noch einfällt ist der Fall das es wieder Exakt 7 Tage sind.
Also im Beispiel:

Montag um 18:07 setze ich den Schalter auf ON.
Erstelle einen Timer für 7 Tage
Erhalte am nächsten Montag um 18:07 die Meldung das Gedüngt werden kann/muss.



Ich weiß ich hab komische ideen, aber kann man nicht sagen das Ab dem Montag 00:00 Uhr der Switch wieder auf Off gestellt wird ?


Danke

Re: Rule eine Woche später erinnern ?!

Verfasst: 15. Jul 2020 11:02
von eiGelbGeek
Piko hat geschrieben: 15. Jul 2020 10:30 Allerdings hab ich eine SQL datenbank laufen. Deshalb muss ich mir das dann umbauen.
mapDB ist nur die einfachste Lösung.... unterm Strich ist es egal welche Persistence du benutzt. Die Befehle in openHAB sind ja immer die gleichen.

Natürlich kannst du auch MapDB neben SQL benutzen :mrgreen:

Re: Rule eine Woche später erinnern ?!

Verfasst: 15. Jul 2020 11:08
von eiGelbGeek
Du kannst es auch mit 2 Rules machen...

Die erste Rule wird beim Düngen durch betätigen des Switch ausgeführt und trägt das Aktuelle Datum + 7 Tage in ein Item ein.
Die Zweite Rule prüft über einen Time Cron z.b. jeden Tag um 8 Uhr ob das Aktuelle Datum mit den im Item geschriebenen Datum übereinstimmt.

Re: Rule eine Woche später erinnern ?!

Verfasst: 15. Jul 2020 11:15
von Piko
Hi eiGelbGeek,

Das ist natürlich auch eine Idee. Daran hab ich selber noch gar nicht gedacht. Ich glaub manchmal stell ich mich einfach ein wenig Blöd an. Auf so eine Idee hätte ich auch selber kommen können :-D