Problem mit userReadings trigger

Begonnen von AnonymousHolger, 30 November 2024, 16:00:31

Vorheriges Thema - Nächstes Thema

AnonymousHolger

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.

Prof. Dr. Peter Henning


AnonymousHolger

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}

Prof. Dr. Peter Henning

Irre kompliziert. Eigentlich rate ich nicht zu DOIF - aber die Anzahl der Alarmierungen lässt sich damit sehr komfortabel einstellen.

LG

pah