Hallo zusammen,
ich habe ein dummy (AQ_WW), bei dem ich mit readingList (AQ_WW_TIME) eine Zeit in Sekunden setze.
Jetzt soll, wenn diese Zeit erreicht ist, ein notify den Status des dummys (AQ_WW) ändern.
Aber es will nicht Funktionieren.
Es fehlen mir diesbezüglich auch die Erfahrungen :-(
Hier mein notify
AQ_WW:AQ_WW_TIME:.* {
my $zeit = time();
my $aqzeit = ReadingsVal("AQ_WW","AQ_WW_TIME","");
if ($zeit == $aqzeit) { fhem("set AQ_WW 3")} }
Ich komme absolut nicht mehr weiter.
Vielleicht ist es auch der absolut falsche Weg zum Ziel.
Ich denke mal, ihr könnt mir da bestimmt weiterhelfen.
Danke schon mal für eure Hilfe.
Liebe Grüße
Jörg
Mach ein paar Log Befehle in deinem Code, so wirst Du sehen, was Du vergleichst:
AQ_WW:AQ_WW_TIME:.* {
my $zeit = time();
my $aqzeit = ReadingsVal("AQ_WW","AQ_WW_TIME","");
Log3 ($name, 1, "zeit= $zeit aqzeit= $aqzeit");
if ($zeit == $aqzeit) { fhem("set AQ_WW 3")} }
time() ergibt nw. ein unix timestamp (Anzahl Sekunden seit epoch), und dein Reading hat wahscheinlich ein anderes Format. Somit vergleichst Du zwei Strings, die miteinander nichts zu tun haben...
Ein Notify reagiert auf einen Event NICHT auf Zeit oder abgelaufene Zeit...
Du brauchst vermutlich ein Notify auf Änderung der Zeit beim Dummy...
Im Notify musst du dann ein "at" definieren mit der Zeit aus dem Dummy (Achtung: Zeitformat bei "at" beachten! Also "umrechnen"...) das "at" setzt dann eben genau nach der Zeit den Dummy auf "was auch immer"... ;)
Bzw.: was genau willst du mit diesem "Konstrukt" erreichen?
Gruß, Joachim
Hallo amenomade,
Zitat
time() ergibt nw. ein unix timestamp (Anzahl Sekunden seit epoch), und dein Reading hat wahscheinlich ein anderes Format. Somit vergleichst Du zwei Strings, die miteinander nichts zu tun haben...
Das Reading hat das richtige Format (2019.06.24 21:05:15 1 : zeit= 1561403115 aqzeit= 1561403160)
Daher sollte das passen.
Zitat von: joewanne am 24 Juni 2019, 21:10:56
Hallo amenomade,
Das Reading hat das richtige Format (2019.06.24 21:05:15 1 : zeit= 1561403115 aqzeit= 1561403160)
Daher sollte das passen.
Und damit siehst Du, dass Du kaum eine Chance hast, sowas zu schaffen: dein notify reagiert auf alle Events des Devices. Was ist die warhscheinlichkeit, dass die Änderung dieses Devices gleichzeitig mit der vordefinierten Zeit passiert?
Joachim hat Recht, Du musst anders übelegen.
Zitat von: MadMax-FHEM am 24 Juni 2019, 21:06:55
Ein Notify reagiert auf einen Event NICHT auf Zeit oder abgelaufene Zeit...
Du brauchst vermutlich ein Notify auf Änderung der Zeit beim Dummy...
Im Notify musst du dann ein "at" definieren mit der Zeit aus dem Dummy (Achtung: Zeitformat bei "at" beachten! Also "umrechnen"...) das "at" setzt dann eben genau nach der Zeit den Dummy auf "was auch immer"... ;)
Bzw.: was genau willst du mit diesem "Konstrukt" erreichen?
Gruß, Joachim
Hallo MadMax-FHEM,
okay das war dann ein Denkfehler von mir.
Also, ich habe damit vor, den Wasserwechsel von meinem Aquarium zu steuern.
Sprich, wenn das Datum von dem Dummy erreicht wird, werden xx Liter vom Aquarium abgepumpt und xx Liter aufgefüllt
Das ganze soll erst mal halbautomatisch funktionieren, so das ich noch extra Bestätigen muss.
Daher wollte ich mir erst mal ein notify machen der mir bei dem dummy einen Wert 1 - 3 setzt, das ganze zu verschiedene Zeiten
Zitat von: amenomade am 24 Juni 2019, 21:19:22
Oder so: https://fhem.de/commandref_DE.html#DOIF_Indirekten_Zeitangaben
Das hab ich mir auch schon angesehen, aber da habe ich dann nur eine Uhrzeit und kein Datum.
Oder verstehe ich das nun alles falsch ?
define time dummy
set time 08:00
define di_time DOIF ([[time]])(set lamp on)
attr di_time do always
Ja, sorry, deswegen hatte ich mein Post gelöscht, aber das war schon zu spät, du hattest es schon gelesen.
Kein Problem,
ich werde mich dann mit mit dem at auseinander setzen.
Vielleicht komme ich dann ja so ans Ziel.
Hab ich jetzt nicht so ganz verstanden bzw. nicht alles...
Aber wie geschrieben:
Notify auf Datums/Zeitänderung des Dummy, wenn das deine manuelle "Bestätigung" sein soll...
In dem Notify dann ein "at" anlegen, was zum eingestellten Datum/Uhrzeit "auslöst" und den Dummy setzt...
Was/wie wird gepumpt?
Manuell? Soll das auch automatisch nach/bei der eingestellten Zeit passieren?
Kann man auch automatisieren: Dummy setzen (wenn du einen Status willst / würde ich aber im Notify zurück setzen sonst siehst du ja nach dem 1. Schalten keinen Unterschied mehr...)
Es gibt aber auch Fhem-Module, die evtl. machen was du willst:
MSwitch könnte das vermutlich...
Weekdaytimer vielleicht auch...
Wahrscheinlich auch mit DOIF ohne Dummy machbar...
Und wahrscheinlich noch weitere...
...es gab auch mal einen "Notify-Wecker", wo man bei Dummies Datum/Uhrzeit einstellen konnte und dann noch wählen konnte was geschalten werden soll...
...aber geht mit den genannten Moduleb wohl (deutlich) einfacher...
Gruß, Joachim
Hi,
und einfach Kalender? Ein Serientermin und fertig?
Gruß Otto
Zitat von: MadMax-FHEM am 24 Juni 2019, 21:28:44
Hab ich jetzt nicht so ganz verstanden bzw. nicht alles...
Aber wie geschrieben:
Notify auf Datums/Zeitänderung des Dummy, wenn das deine manuelle "Bestätigung" sein soll...
In dem Notify dann ein "at" anlegen, was zum eingestellten Datum/Uhrzeit "auslöst" und den Dummy setzt...
Was/wie wird gepumpt?
Manuell? Soll das auch automatisch nach/bei der eingestellten Zeit passieren?
Kann man auch automatisieren: Dummy setzen (wenn du einen Status willst / würde ich aber im Notify zurück setzen sonst siehst du ja nach dem 1. Schalten keinen Unterschied mehr...)
Es gibt aber auch Fhem-Module, die evtl. machen was du willst:
MSwitch könnte das vermutlich...
Weekdaytimer vielleicht auch...
Wahrscheinlich auch mit DOIF ohne Dummy machbar...
Und wahrscheinlich noch weitere...
...es gab auch mal einen "Notify-Wecker", wo man bei Dummies Datum/Uhrzeit einstellen konnte und dann noch wählen konnte was geschalten werden soll...
...aber geht mit den genannten Moduleb wohl (deutlich) einfacher...
Gruß, Joachim
Wasser wird aus dem Aquarium abgepumpt und anschließend wieder aufgefüllt.
Dies soll aber erst mal nur halbautomatisch gehen, wäre da schon gerne dabei bevor es nachher eine Überschwemmung gibt.
Zitat von: Otto123 am 24 Juni 2019, 21:33:27
Hi,
und einfach Kalender? Ein Serientermin und fertig?
Gruß Otto
Daran hab ich noch gar nicht gedacht, werde ich mir gleich mal anschauen
Es gibt wirklich gute Beispiele in der langen Doku zu Calendar.
Wenn Du meine Notiz (https://heinz-otto.blogspot.com/2019/01/kalender-in-fhem-auf-bestimmte-termine.html)gebrauchen kannst. ;)
Gruß Otto
Hallo Otto,
ich glaub das ist die beste Lösung für mein Problem.
Ich lese mir das morgen mal alles in Ruhe durch.
Liebe Grüße Jörg
Zitat von: Otto123 am 24 Juni 2019, 21:45:27
Es gibt wirklich gute Beispiele in der langen Doku zu Calendar.
Wenn Du meine Notiz (https://heinz-otto.blogspot.com/2019/01/kalender-in-fhem-auf-bestimmte-termine.html)gebrauchen kannst. ;)
Gruß Otto
Hallo Otto,
das mit dem Calendar funktioniert Prima!
Das war dann auch die Lösung des Problems
define AquariumWW Calendar ical url https://xxxxx mein Kalender xxxxx.ical
define myAquarium CALVIEW AquariumWW 1
attr myAquarium modes next
define myAquarium_notify_1 notify AQ_WW:status:.*|myAquarium:t_001_daysleft:.* {\
my $status = ReadingsVal("AQ_WW","status","");;\
my $wwtage = ReadingsVal("myAquarium","t_001_daysleft","");;\
Log3 ($wwtage, 1, "wwtage= $wwtage");;\
if ($wwtage >= 3 && $status == 1) { fhem("set AQ_WW alarm 1")}\
if ($wwtage == 2 && $status == 1) { fhem("set AQ_WW alarm 2;; set AQ_WW status 2;; set pushmsg msg Wasserwechsel steht an!")}\
if ($wwtage == 0 && $status == 2) { fhem("set AQ_WW alarm 3;; set AQ_WW status 3;; set pushmsg msg Wasserwechsel steht heute an!")}\
}
Dann habe ich mir in FTUI noch einen Schalter erstellt, der den Status bei Betätigung wieder auf 1 stellt.
Vielen lieben Dank für Eure Hilfe.
Liebe Grüße
Jörg