Hallo,
ich möchte mir in Home.app den status der Fenster anzeigen lassen, d.h. ob sie offen oder geschlossen sind.
Die Fenster verfügen über einen Homematic Fenster Sensor (HM-SEC-SCO), der "open" oder "closed" liefert. Diesen status möchte ich per
attr genericDeviceType window
und
CurrentPosition=state,values=open:100;;closed:0
TargetPosition=CurrentPosition
PositionState=state,values=open:STOPPED;;closed:STOPPED
über Homebridge in der Apple Home.app anzeigen lassen.
Das Anzeigen funktioniert so weit auch problemfrei. Wenn man aber in Home.app auf das entsprechende icon clickt, wird der Wert "TargetPosition" getoggelt, d.h. entweder von 0 vorher auf 100 gesetzt oder von 100 vorher auf 0 gesetzt. Dadurch stimmen "CurrentPosition" und "TargetPosition" nicht mehr überein und das Fenster wird in Home.app als "opening" bzw "closing" angezeigt. Was ich also erreichen möchte, ist, das Commands von Home.app ignoriert werden oder auf ein anderes reading(?) umgeleitet werden. Wie kann ich das erreichen?
(PS: Wer sich über die Zeile
PositionState=state,values=open:STOPPED;;closed:STOPPED
wundert: Ich möchte PositionState eigentlich nur auf einen festen Wert, auf eine Konstante setzen, die Werte "Increasing" und "Decreasing", die hier ebenfalls möglich wären, dann ich mit meinem Sensor nicht abbilden. Allerdings habe ich keine Syntax herausgefunden, wie man hier einfach eine Konstante übergeben kann....)
window und die diversen position characteristics sind für motor betriebene fenster und nicht das was du willst.
reine offen/geschlossen sensoren sind vom typ contact bzw. ContactSensor und haben nur die ContactSensorState characteristic. ob das ganze in der home app dann als tür, fenster oder sonstiges dargestellt wird lässt sich dann in home konfigurieren.
HM-SEC-RHS und HM-SEC-SCO werden im übrigen automatisch und passend angelegt ohne das man genericDeviceType oder homebridgeMapping selber angeben muss. weniger ist manchmal mehr.
Super, Du hast mir sehr geholfen, vielen Dank!
"contact" + Anpassen in der Home.app war der entscheidende Hinweis. Das automatische Erkennen funktioniert leider so nicht, da ich einen Zwischenschritt unterschlagen hatte: Ich habe mehrere Fenster per structure zu einem zusammengefasst - es ist mir egal, ob das linke oder rechte Fenster in einem Raum offen ist... Aber per contact funktioniert es auch mit der structure...
Zur Vollständigkeit und vielleicht für zukünftige Leser hier nochmals das komplette list:
Es werden mehrere (in diesem Fall 2) Fenster in einer structure zusammengefasst. Wenn eines dieser Fenster offen ist, wird auch die Structure offen angezeigt. Diese gemeinsame Status wird per homebridge an homekit weitergeleitet. In der Home.app kann man ggf. noch einstellen, dass dort ein hübsches Fenster-Symbol verwendet wird.
Internals:
ATTR GroupState
CFGFN
CHANGEDCNT 21
DEF GroupState EG_SZ_Fenster_links EG_SZ_Fenster_rechts
FUUID 6326fdf1-f33f-4a82-40dc-9878a0f00287d861
NAME EG_SZ_Fenster
NOTIFYDEV EG_SZ_Fenster_links,EG_SZ_Fenster_rechts,global
NR 1627
NTFY_ORDER 50-EG_SZ_Fenster
STATE open
TYPE structure
eventCount 21
READINGS:
2022-09-18 14:52:28 LastDevice EG_SZ_Fenster_links
2022-09-18 14:52:28 LastDevice_Abs EG_SZ_Fenster_links
2022-09-18 14:52:28 state open
Attributes:
clientstate_behavior relative
clientstate_priority open closed
devStateIcon open:fts_window_1w_open closed:fts_window_1w
genericDeviceType contact
homebridgeMapping ContactSensorState=state,values=closed:CONTACT_DETECTED;open:CONTACT_NOT_DETECTED
icon fts_window_1w
room EG_Schlafzimmer,Homekit
siriName Fenster Schlafzimmer