FHEM Forum

FHEM - Hausautomations-Systeme => Homematic => Thema gestartet von: FunkOdyssey am 22 September 2015, 18:13:27

Titel: HM-SEC-SCo: Letzte Türöffnung im State anzeigen?
Beitrag von: FunkOdyssey am 22 September 2015, 18:13:27
Gerät: HM-SEC-SCo (threeStateSensor)

Hallo, hat jemand einen Tipp, wie man die letzte Türöffnung z.B. mittels stateformat im STATE anzeigen lassen kann?

Die Readings state, contact, etc. werden kontinuierlich aktualisiert. Somit kann ich auch nicht mit dem Attribut "showtime" arbeiten, die ich es vom Bewegungsmelder gewohnt bin.
Titel: Antw:HM-SEC-SCo: Letzte Türöffnung im State anzeigen?
Beitrag von: Ralli am 22 September 2015, 18:46:52

attr Sensor stateFormat {ReadingsVal("Sensor","contact","") =~ "open.*" ? "open " . ReadingsTimestamp("Sensor","contact","") : "closed"}
Titel: Antw:HM-SEC-SCo: Letzte Türöffnung im State anzeigen?
Beitrag von: FunkOdyssey am 22 September 2015, 20:07:56
Das ist schon sehr geil. Aber sobald der Kontakt wieder geschlossen ist, springt der Status wieder auf "closed". Ich würde den Timestamp des letzten Öffnens aber gerne behalten. Hast du ne Idee?  Danke.
Titel: Antw:HM-SEC-SCo: Letzte Türöffnung im State anzeigen?
Beitrag von: marvin78 am 22 September 2015, 20:08:37
Mach dir ein userreading mit dem Timestamp.
Titel: Antw:HM-SEC-SCo: Letzte Türöffnung im State anzeigen?
Beitrag von: Ralli am 22 September 2015, 20:19:50
Zitat von: Ralli am 22 September 2015, 18:46:52

attr Sensor stateFormat {ReadingsVal("Sensor","contact","") =~ "open.*" ? "open " . ReadingsTimestamp("Sensor","contact","")}

Titel: Antw:HM-SEC-SCo: Letzte Türöffnung im State anzeigen?
Beitrag von: FunkOdyssey am 22 September 2015, 21:09:54
@Ralli:
Das hatte ich auch schon ausprobiert. Dann erhalte ich aber folgenden Fehler.
Error evaluating diele_tuersensor stateFormat: syntax error at (eval 4670) line 2, at EOF
Titel: Antw:HM-SEC-SCo: Letzte Türöffnung im State anzeigen?
Beitrag von: Ralli am 23 September 2015, 05:53:48
Dann mach halt


attr Sensor stateFormat {if (ReadingsVal("Sensor","contact","") =~ "open.*") {"open " . ReadingsTimestamp("Sensor","contact","")}}
Titel: Antw:HM-SEC-SCo: Letzte Türöffnung im State anzeigen?
Beitrag von: martinp876 am 23 September 2015, 07:49:52
Braucht man das if? Readingtimestamp müsste doch default zurückgeben, wenn das reading nicht existiert. Also ohne wenn.
attr Sensor stateFormat {"open " . ReadingsTimestamp("Sensor","contact","")}
.
Titel: Antw:HM-SEC-SCo: Letzte Türöffnung im State anzeigen?
Beitrag von: Ralli am 23 September 2015, 08:04:14
Dieses Reading ist aber immer da - dann, wenn geöffnet und dann wenn geschlossen wird jeweils mit dem entsprechenden Eintrag.

Im State soll aber immer nur die Zeit des letzten Öffnens stehen bleiben.

Daher: wenn ein Event gegeben ist, schaut fhem nach, ob Öffnung, wenn ja, dann wird STATE neu gesetzt. Wenn stattdessen Schließung, passiert eben nichts.
Titel: Antw:HM-SEC-SCo: Letzte Türöffnung im State anzeigen?
Beitrag von: justme1968 am 23 September 2015, 08:12:49
ich denke das funktioniert nicht. im else fall nicht der alte wert angezeigt sondern nichts oder blödsinn oder etwas das du nicht willst.

du brauchst ein notify das nur auf open reagiert. darin erzeugst du mit setreading ein neues reading und dieses verwendest du dann in stateFormat.

gruß
  andre
Titel: Antw:HM-SEC-SCo: Letzte Türöffnung im State anzeigen?
Beitrag von: frank am 23 September 2015, 08:27:43
dann könntest du auch das modul hourcounter "anwerfen". das liefert dir dann noch einiges mehr.
Titel: Antw:HM-SEC-SCo: Letzte Türöffnung im State anzeigen?
Beitrag von: Ralli am 23 September 2015, 08:37:31
@Andre: Du hast Recht. Das kann man dann so umgehen  ;D :


attr Sensor stateFormat {if (ReadingsVal("Sensor","contact","") =~ "open.*") {"open " . ReadingsTimestamp("Sensor","contact","")} else {InternalVal("Sensor","STATE","")}}
Titel: Antw:HM-SEC-SCo: Letzte Türöffnung im State anzeigen?
Beitrag von: FunkOdyssey am 23 September 2015, 10:36:06
Super, vielen Dank für eure Hilfe.
Ich habe es bisher nur mit einem manuell durchgeführten "setreading" ausprobiert und es sieht ganz gut aus.

Ich werde mir mal notieren, diese Info ins Wiki zu packen.
Titel: Antw:HM-SEC-SCo: Letzte Türöffnung im State anzeigen?
Beitrag von: FunkOdyssey am 03 Oktober 2015, 21:06:32
Sorry, dass ich noch einmal nachfragen muss.
Ich war mit euren Tipps absolut zufrieden.
Nun würde ich das gerne um den aktuellen Status von "contact" erweitern.

Ich hatte es erst damit versucht, einfach stateformat hinter der geschwungenen Klammer mit "Aktuell: contact" zu erweitern. Kommagetrennt oder mit Leerzeichen. Beides ohne Erfolg. Dann wird die Perl-Formel als String interpretiert.

Nun versuche ich es gerade über die Userreadings, aber das will auch nicht funktionieren.

Irgendwie bin ich betriebsblind.

Wäre jemand so nett und kann mir dabei helfen? Ich wäre sehr dankbar.
Titel: Antw:HM-SEC-SCo: Letzte Türöffnung im State anzeigen?
Beitrag von: FunkOdyssey am 04 Oktober 2015, 19:42:05
Ach, Denkblockade. Das ist ja eigentlich ganz einfach, wenn man eure Basis nutzt.

Ich habe ein userreading angelegt:
last:contact {if (ReadingsVal("contactsensor","contact","") =~ "open.*") {ReadingsTimestamp("contactsensor","contact","")} else {ReadingsVal("contactsensor","last","")}}

Und dann im Stateformat:
Zuletzt:last Aktuell:contact