Hallo Zusammen,
ich möchte mir in einer Readingsgroup alle Tür- und Fensterkontakte und deren Status anzeigen lassen und in den Floorplan einbinden.
Es gibt viele Beispiele, die dann zum Tragen kommen wenn man auf eine einheitliche Namensgebung geachtet hat.
define TuerKontakte readingsGroup <%fts_door_right_open@darkblue>,<Status>,<> .*_(TK|FK)..:state,battery
Das habe ich leider versäumt und nun habe ich 23 Sensoren mit unterschiedlichen Namen in Fhem installiert. Umbenennen möchte ich die ungern.
Es sind nur: HM-SEC-SC, HM-SEC-SCo und noch einige CUL_FHTTK Sensoren im Einsatz.
Hierzu meine Frage: Wie kann ich auf genau diese 3 Arten von Sensoren, die sich alle in einem Raum: "Fenster und Türen" befinden, in einer ReadingsGroup einbinden?
Gruß Günter
Ich mache das über "structure".
okay, kannst du mir ein Beispiel zukommen lassen?
@Gueco315
Vermutlich hilft u.a. dieser Beitrag beim Formulieren der Bedingung für readingsGroup: https://forum.fhem.de/index.php/topic,97245.0.html (https://forum.fhem.de/index.php/topic,97245.0.html)
list lässt sich meist schneller austesten; die finale Bedingung sollte ja dann 1:1 übernommen werden können ...
bin etwas weitergekommen ..
Mit list room~FK state alias
erhalte ich alle Informationen, die ich in der ReadingsGrouß auswerten möchte.
Nur, wie frage ich die in der Definition ab?
define TuerKontakte readingsGroup <%fts_door_right_open@darkblue>,<Status>,<> .*_(TK|FK)..:state,battery
@Gueco315
Ausprobiert habe ich es nicht, aber vermutlich müsste ".*_(TK|FK)..:state,battery" durch "room~FK:state,battery" ersetzt werden ...
Prima, das geht auch schon mal. Langsam ernärt sich das Eichhörnchen ... :-)
Die Definition:
defmod TuerKontakte readingsGroup <%fts_door_right_open@darkblue>,<Status>,<> room=FKTK:state,battery\
ergibt folgende Ausagabe:
DG_Badfenster:Activity
alive
DG_Badfenster:D-firmware
1.0
DG_Badfenster:D-serialNr
OEQ1426389
DG_Badfenster:PairedTo
0xFF2366
DG_Badfenster:R-OG_Bad_Heizung_WindowRec-expectAES
off
DG_Badfenster:R-OG_Bad_Heizung_WindowRec-peerNeedsBurst
on
DG_Badfenster:R-cyclicInfoMsg
on
DG_Badfenster:R-eventDlyTime
0 s
DG_Badfenster:R-pairCentral
0xFF2366
DG_Badfenster:R-sabotageMsg
on
DG_Badfenster:R-sign
on
DG_Badfenster:RegL_00.
00:00 02:01 09:01 0A:FF 0B:23 0C:45 10:01 14:06
DG_Badfenster:RegL_01.
00:00 08:01 20:9C 21:00 30:06
DG_Badfenster:RegL_04.OG_Bad_Heizung_WindowRec
00:00 01:01
DG_Badfenster:alive
yes
DG_Badfenster:battery
DG_Badfenster:cfgState
ok
DG_Badfenster:commState
CMDs_done
DG_Badfenster:contact
closed (to VCCU)
DG_Badfenster:peerList
OG_Bad_Heizung_WindowRec
DG_Badfenster:powerOn
2020-01-13 12:14:29
DG_Badfenster:recentStateType
info
DG_Badfenster:sabotageError
off
DG_Badfenster:state
Ich möchte die Ausgabe aber nur auf Name, Alias und State (open/closed) einschränken, wie geht das?
FILTER nimmt er nicht an.
.. auch das hier schränkt die Auswahlliste nicht ein:
<%fts_door_right_open@darkblue>,<Status> room=FKTK:state,battery alias state battery
@Gueco315
Wenn Du ein list Deiner readingsGroup einstellst, kommen wir Deinem Problem vermutlich auf die Spur ...
damit habe ich auch schon stundenlang rumexperimentiert.
@Gueco315
Folgendes sollte die gewünschten Geräte und ebenso nur die angegebenen Werte (TYPE ; state ; alias) darstellen.
defmod TuerKontakte readingsGroup <%fts_door_right_open@darkblue>,<INTERNAL>,<READING>,<ALIAS> .*:FILTER=room=FKTK:+TYPE,state,?alias
In meinem Testfall sind dies
- das Internal TYPE, daher das zusätzliche Kennzeichen "+"
- das Reading state - kein zusätzliches Kennzeichen notwendig
- das Attribut alias, daher das zusätzliche Kennzeichen "?"
genau das funktioniert, prima. Vielen Dank!