Hallo, ich sehe mal wieder das Problem nicht.
Versuche mich gerade mit den userReadings um ein paar Dinge zu vereinfachen.
Leider bekomme ich den Trigger nicht hin .... selbst nach undenlcihem Googlen und mehrfachen lesen der Comandref und Wiki Eintrag.
Folgende userReadings für meinen Fensterkontakt (HM-Sec-SCO) Definition funktioniert:
attr Fenster.Schlafz userReadings DateTimeLastOpened {if (ReadingsVal("Fenster.Schlafz","state","") eq "open") {ReadingsTimestamp("Fenster.Schlafz","state","")} else { ReadingsVal("Fenster.Schlafz","DateTimeLastOpened","") }}
Ich schaffe es aber nicht, einen trigger zu setzen der auf eine Änderung des State funktioniert und ich verstehe nicht warum
Mein letzter Versuch, von dem ich hoffte er würde funktionieren anbei auch mit "state.*" anstatt ":state.*" funktioniert es nicht ...
attr Fenster.Schlafz userReadings DateTimeLastOpened :state.* {if (ReadingsVal("Fenster.Schlafz","state","") eq "open") {ReadingsTimestamp("Fenster.Schlafz","state","")} else { ReadingsVal("Fenster.Schlafz","DateTimeLastOpened","") }}
Ich bin schon seit Stunden am rumändern aber finde irgendwie den Fehler nicht.
Vielen Dank, jetzt funktioniert es.
Ich habe es noch einmal etwas umgeändert auf Fenster_Bad ohne "." und den Event auf trigger_cnt umgestellt.
Jetzt habe ich saubere UserReadings, mit denen ich max 3 Reminder realisiere wenn Fenster offen ist.
attr Fenster_Schlafz userReadings DateTimeLastOpened:trigger_cnt.* {if (ReadingsVal("Fenster_Schlafz","state","") eq "open") {ReadingsTimestamp("Fenster_Schlafz","state","")} else { ReadingsVal("Fenster_Schlafz","DateTimeLastOpened","") }}, \
DateLastOpened:trigger_cnt.* {my ($DateO,$TimeO) = split(" ",ReadingsVal("Fenster_Schlafz","DateTimeLastOpened",""));; $DateO}, \
TimeLastOpened:trigger_cnt.* {my ($DateO,$TimeO) = split(" ",ReadingsVal("Fenster_Schlafz","DateTimeLastOpened",""));; $TimeO}, \
Reminder1TimeOpened:trigger_cnt.* {my $DateTimeStamp = ReadingsTimestamp("Fenster_Schlafz","state","");; time_str2num($DateTimeStamp) +1200}, \
Reminder2TimeOpened:trigger_cnt.* {my $DateTimeStamp = ReadingsTimestamp("Fenster_Schlafz","state","");; time_str2num($DateTimeStamp) +1800}, \
Reminder3TimeOpened:trigger_cnt.* {my $DateTimeStamp = ReadingsTimestamp("Fenster_Schlafz","state","");; time_str2num($DateTimeStamp) +2400}
Irre kompliziert. Eigentlich rate ich nicht zu DOIF - aber die Anzahl der Alarmierungen lässt sich damit sehr komfortabel einstellen.
LG
pah