HM-SEC-SCo: Letzte Türöffnung im State anzeigen?

Begonnen von FunkOdyssey, 22 September 2015, 18:13:27

Vorheriges Thema - Nächstes Thema

FunkOdyssey

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.

Ralli

#1

attr Sensor stateFormat {ReadingsVal("Sensor","contact","") =~ "open.*" ? "open " . ReadingsTimestamp("Sensor","contact","") : "closed"}
Gruß,
Ralli

Proxmox 8.4 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.4 dev, virtualisierte RaspberryMatic (3.81.5.20250527) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.4.1) und HMW-GW, FRITZBOX 7490 (07.59), FBDECT, Siri und Alexa

FunkOdyssey

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.

marvin78


Ralli

Zitat von: Ralli am 22 September 2015, 18:46:52

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

Gruß,
Ralli

Proxmox 8.4 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.4 dev, virtualisierte RaspberryMatic (3.81.5.20250527) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.4.1) und HMW-GW, FRITZBOX 7490 (07.59), FBDECT, Siri und Alexa

FunkOdyssey

@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

Ralli

Dann mach halt


attr Sensor stateFormat {if (ReadingsVal("Sensor","contact","") =~ "open.*") {"open " . ReadingsTimestamp("Sensor","contact","")}}
Gruß,
Ralli

Proxmox 8.4 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.4 dev, virtualisierte RaspberryMatic (3.81.5.20250527) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.4.1) und HMW-GW, FRITZBOX 7490 (07.59), FBDECT, Siri und Alexa

martinp876

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","")}
.

Ralli

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.
Gruß,
Ralli

Proxmox 8.4 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.4 dev, virtualisierte RaspberryMatic (3.81.5.20250527) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.4.1) und HMW-GW, FRITZBOX 7490 (07.59), FBDECT, Siri und Alexa

justme1968

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
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

frank

dann könntest du auch das modul hourcounter "anwerfen". das liefert dir dann noch einiges mehr.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Ralli

@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","")}}
Gruß,
Ralli

Proxmox 8.4 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.4 dev, virtualisierte RaspberryMatic (3.81.5.20250527) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.4.1) und HMW-GW, FRITZBOX 7490 (07.59), FBDECT, Siri und Alexa

FunkOdyssey

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.

FunkOdyssey

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.

FunkOdyssey

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