Hallo Leute,
ich habe ein Garagentor das den Status von mehreren notifies bekommt.
Das Problem ist in der (manuell kreierten) Lüftungsstellung (das reading state vom Garagentor Device wird nach einer gewissen Zeit von einem notify auf "stopped" gesetzt) bleibt die Anzeige des Garagentors in Homekit auf "schließen..."
Außerdem versteht er "opening" auch nicht (mehr). Ich dachte das war mal besser ;)
Garagentor:
Internals:
DEF
FUUID 654fb4bb-f33f-1cf4-6393-4c5c387e8adbf7bf
NAME Garagentor
NR 68
STATE closed
TYPE dummy
eventCount 65
Helper:
DBLOG:
state:
dbLogMaria:
TIME 1772177355.46737
VALUE closed
READINGS:
2026-02-27 08:30:16 state closed
Attributes:
comment gelbes Netzwerkkabel/weiss-braun
devStateIcon closed:fts_garage_door_100 open:fts_garage_door_10@red opening:fts_garage_door_up@blue closing:fts_garage_door_down@blue stopped:fts_garage_door_manual@red
event-on-change-reading state
genericDeviceType GarageDoorOpener
group Garage
homebridgeMapping CurrentDoorState=state,values=closed:CLOSED;;open:OPEN;;opening:OPENING;;closing:CLOSING;;stopped:STOPPED\
TargetDoorState=state,cmds=OPEN:open;;CLOSED:closed;;OPENING:opening;;CLOSING:closing;;STOPPED:stopped,values=closed:CLOSED;;open:OPEN;;opening:OPENING;;closing:CLOSING;;stopped:STOPPED
icon fts_garage
room Garage,Homekit
setList open closed opening closing stopped
Notify um Lüftungsstellung zu starten:
Internals:
DEF d_LueftenManual { if ( "$EVENT" eq "start") {fhem("set GPIO5 on-1; sleep 2; set GPIO5 on-1; set d_LueftenManual off; defmod -temporary atDelay at +02:00:00 {fhem \"set GPIO5 on-1\" if (Value(\"Garagentor\") eq \"stopped\")}")}}
FUUID 655dee15-f33f-1cf4-c2f0-8b684e314746a0f2
NAME n_lueftmanual
NOTIFYDEV d_LueftenManual
NR 78
NTFY_ORDER 50-n_lueftmanual
REGEXP d_LueftenManual
STATE 2026-02-27 08:19:34
TRIGGERTIME 1772176774.92524
TYPE notify
READINGS:
2025-12-31 11:12:46 state active
2026-02-27 08:19:34 triggeredByDev d_LueftenManual
2026-02-27 08:19:34 triggeredByEvent off
Attributes:
comment d_LueftenManual { if ( "$EVENT" eq "start") {fhem("set GPIO5 on-1; sleep 2; set GPIO5 on-1; set d_LueftenManual off")} }
room Garage
Notify setzt status stopped wenn Keine Endschalter erreicht sind (Lüftungsstellung):
Internals:
DEF GPIO5:on defmod at_Garagentor_stopped at +00:00:20 { if( Value ("GPIO22") eq "off" && Value ("GPIO17") eq "off") { fhem "set Garagentor stopped" }}
FUUID 6557a06a-f33f-1cf4-0e63-5e39879c91d2e32a
NAME n_Tor_stopped
NOTIFYDEV GPIO5
NR 73
NTFY_ORDER 50-n_Tor_stopped
REGEXP GPIO5:on
STATE 2026-02-27 08:29:13
TRIGGERTIME 1772177353.41478
TYPE notify
READINGS:
2025-12-31 11:12:46 state active
2026-02-27 08:29:13 triggeredByDev GPIO5
2026-02-27 08:29:13 triggeredByEvent on
Attributes:
room Garage
Homebridge-Log:
[27/02/2026, 08:19:32] [FHEM2] d_LueftenManual: executing set cmd for On with value true
[27/02/2026, 08:19:32] [FHEM2] executing: http://192.168.1.124:8083/fhem?cmd=set%20d_LueftenManual%20start&fwcsrf=csrf_277345447265328&XHR=1
2026-02-27 08:19:32 caching: Garagentor-state: OPENING
[27/02/2026, 08:19:32] [FHEM2] Garagentor-state value OPENING not handled in values
[27/02/2026, 08:19:32] [FHEM2] Garagentor-state value OPENING not handled in values
2026-02-27 08:19:32 caching: Garagentor-state: opening
[27/02/2026, 08:19:32] [FHEM2] caching: CurrentDoorState: 2 (as number; means OPENING; from 'opening')
[27/02/2026, 08:19:32] [FHEM2] Garagentor-state not a number: opening
2026-02-27 08:19:32 caching: GPIO5-state: on
[27/02/2026, 08:19:32] [FHEM2] caching: On: true (as boolean; from 'on')
2026-02-27 08:19:32 caching: d_LueftenManual-state: start
[27/02/2026, 08:19:32] [FHEM2] caching: On: false (as boolean; from 'start')
2026-02-27 08:19:33 caching: GPIO5-state: off
[27/02/2026, 08:19:33] [FHEM2] caching: On: false (as boolean; from 'off')
2026-02-27 08:19:34 caching: GPIO5-state: on
[27/02/2026, 08:19:34] [FHEM2] caching: On: true (as boolean; from 'on')
2026-02-27 08:19:34 caching: d_LueftenManual-state: off
[27/02/2026, 08:19:34] [FHEM2] caching: On: false (as boolean; from 'off')
2026-02-27 08:19:35 caching: GPIO5-state: off
[27/02/2026, 08:19:35] [FHEM2] caching: On: false (as boolean; from 'off')
2026-02-27 08:19:54 caching: Garagentor-state: stopped
[27/02/2026, 08:19:54] [FHEM2] Garagentor-state not a number: stopped
[27/02/2026, 08:19:54] [FHEM2] Garagentor-state not a number: stopped
Vielen Dank für Hinweise!
Vielleicht hilft's ja schon ein wenig in die richtige Richtung: TargetDoorState kennt nur OPEN und CLOSED.
https://developers.homebridge.io/#/characteristic/TargetDoorState (https://developers.homebridge.io/#/characteristic/TargetDoorState)
ok danke dafür. Habe es abgeändert zu:
CurrentDoorState=state,values=closed:CLOSED;;open:OPEN;;opening:OPENING;;closing:CLOSING;;stopped:STOPPED\
TargetDoorState=state,cmds=OPEN:open;;CLOSED:closed,values=closed:CLOSED;;open:OPEN
Irgendwie passt das immer noch nicht mit den Werten, er versteht sie nicht.
Ausserdem steht immer noch schließen... wenn ich das Tor öffne.
2026-03-01 11:14:01 caching: Garagentor-state: OPENING
[01/03/2026, 11:14:01] [FHEM2] Garagentor-state value OPENING not handled in values
[01/03/2026, 11:14:01] [FHEM2] Garagentor-state value OPENING not handled in values
2026-03-01 11:14:01 caching: Garagentor-state: opening
[01/03/2026, 11:14:01] [FHEM2] caching: CurrentDoorState: 2 (as number; means OPENING; from 'opening')
[01/03/2026, 11:14:01] [FHEM2] Garagentor-state value opening not handled in values
2026-03-01 11:14:01 caching: GPIO5-state: on
[01/03/2026, 11:14:01] [FHEM2] caching: On: true (as boolean; from 'on')
2026-03-01 11:14:13 caching: GPIO5-state: off
[01/03/2026, 11:14:13] [FHEM2] caching: On: false (as boolean; from 'off')
2026-03-01 11:14:21 caching: Garagentor-state: stopped
[01/03/2026, 11:14:21] [FHEM2] Garagentor-state not a number: stopped
[01/03/2026, 11:14:21] [FHEM2] Garagentor-state value stopped not handled in values
2026-03-01 11:14:23 caching: Garagentor-state: opened
[01/03/2026, 11:14:23] [FHEM2] Garagentor-state value opened not handled in values
[01/03/2026, 11:14:23] [FHEM2] Garagentor-state value opened not handled in values
2026-03-01 11:15:03 caching: Garagentor-state: CLOSING
[01/03/2026, 11:15:03] [FHEM2] Garagentor-state value CLOSING not handled in values
[01/03/2026, 11:15:03] [FHEM2] Garagentor-state value CLOSING not handled in values
2026-03-01 11:15:03 caching: Garagentor-state: closing
[01/03/2026, 11:15:03] [FHEM2] caching: CurrentDoorState: 3 (as number; means CLOSING; from 'closing')
[01/03/2026, 11:15:03] [FHEM2] Garagentor-state value closing not handled in values
2026-03-01 11:15:03 caching: GPIO5-state: on
[01/03/2026, 11:15:03] [FHEM2] caching: On: true (as boolean; from 'on')
2026-03-01 11:15:16 caching: GPIO5-state: off
[01/03/2026, 11:15:16] [FHEM2] caching: On: false (as boolean; from 'off')
2026-03-01 11:15:23 caching: Garagentor-state: stopped
[01/03/2026, 11:15:23] [FHEM2] Garagentor-state not a number: stopped
[01/03/2026, 11:15:23] [FHEM2] Garagentor-state value stopped not handled in values
2026-03-01 11:15:26 caching: Garagentor-state: closed
[01/03/2026, 11:15:26] [FHEM2] caching: CurrentDoorState: 1 (as number; means CLOSED; from 'closed')
[01/03/2026, 11:15:26] [FHEM2] caching: TargetDoorState: 1 (as number; means CLOSED; from 'closed')
2026-03-01 11:16:02 caching: Garagentor-state: OPENING
[01/03/2026, 11:16:02] [FHEM2] Garagentor-state value OPENING not handled in values
[01/03/2026, 11:16:02] [FHEM2] Garagentor-state value OPENING not handled in values
2026-03-01 11:16:02 caching: Garagentor-state: opening
[01/03/2026, 11:16:02] [FHEM2] caching: CurrentDoorState: 2 (as number; means OPENING; from 'opening')
[01/03/2026, 11:16:02] [FHEM2] Garagentor-state value opening not handled in values
2026-03-01 11:16:02 caching: GPIO5-state: on
[01/03/2026, 11:16:02] [FHEM2] caching: On: true (as boolean; from 'on')
2026-03-01 11:16:03 caching: GPIO5-state: off
[01/03/2026, 11:16:03] [FHEM2] caching: On: false (as boolean; from 'off')
2026-03-01 11:16:06 caching: GPIO5-state: on
[01/03/2026, 11:16:06] [FHEM2] caching: On: true (as boolean; from 'on')
2026-03-01 11:16:07 caching: GPIO5-state: off
[01/03/2026, 11:16:07] [FHEM2] caching: On: false (as boolean; from 'off')
2026-03-01 11:16:26 caching: Garagentor-state: stopped
[01/03/2026, 11:16:26] [FHEM2] Garagentor-state not a number: stopped
[01/03/2026, 11:16:26] [FHEM2] Garagentor-state value stopped not handled in values
Naja, du fütterst TargetDoorState mit state, welches ja bei dir "open/closed/opening/closing/stopped" annehmen kann. Aber TargetDoorState kennt eben kein "opening/closing/stopped". Da musst du dann die values mit regexps anpassen, wenn du für TargetDoorState weiterhin state als Reading benutzen willst.
Ansonsten meckert HomeKit durchaus berechtigt weiterhin über "opening/closing/stopped".
Hi Wolfpunk, kannst du mir da mal auf die Sprünge helfen wie das funktioniert bitte, danke!
Das hier lesen:
https://forum.fhem.de/index.php?topic=142893.msg1350613#msg1350613
Dann das hier lesen:
https://github.com/justme-1968/homebridge-fhem?tab=readme-ov-file#fhem---homekit-parameters
Die Vorgehensweise bei sowas ist:
1. Herausfinden, was für Werte Homebridge erwartet (das ist im ersten Link erklärt und du erfährst es aus CharacteristicDefinitions.ts. Welche Characteristics für ein Garagentor relevant sind erfährst du aus ServiceDefinitions.ts.
2. Herausfinden, wie du aus FHEM diese Werte an Homebridge übermittelst. Dazu den zweiten Link lesen, der zugegebenermaßen ein bisschen verklausuliert geschrieben ist. Am besten dazu die weiter unten auf dem GitHub-README aufgeführten Beispiele lesen und auch sonst im Forum nach Beispielen lesen. Und nicht verzweifeln, wenn du es nicht auf Anhieb verstehst, sondern ein bisschen rumprobieren und dabei (so wie du es ja schon gemacht hast) parallel immer das homebridge-Log anschauen, denn da steht genau drin, wie homebridge eigentlich den seitens FHEM übermittelten Wert interpretiert (homebridge neustarten nicht vergessen, nachdem du das homebridgeMapping änderst).
fwiw hier mal ein Beispiel von einem homebridgeMapping einer Markise, wo man z.B. das Mapping im Rahmen von PositionState sieht:
clear
CurrentPosition:pct
TargetPosition:target,cmd=target,delay=2000
PositionState:state,values=/-1/:1;/1/:0;/0/:2
Probier mal:
CurrentDoorState=state,values=closed:CLOSED;open:OPEN;opening:OPENING;closing:CLOSING;stop:STOPPED
TargetDoorState=state,cmds=OPEN:open;CLOSED:closed,values=open:OPEN;opening:OPEN;closed:CLOSED;closing:CLOSED;stopped:CLOSED
...wobei du selbst entscheiden kannst, ob im TargetDoorState der state "stopped" als "CLOSED" oder "OPEN" interpretiert, also gemappt werden soll. Im obigen Beispiel ist es "CLOSED". Wenn du es aber als "OPEN" interpretiert haben möchtest, probiere:
CurrentDoorState=state,values=closed:CLOSED;open:OPEN;opening:OPENING;closing:CLOSING;stop:STOPPED
TargetDoorState=state,cmds=OPEN:open;CLOSED:closed,values=open:OPEN;opening:OPEN;closed:CLOSED;closing:CLOSED;stopped:OPEN
Hi, danke für die Zeilen, aber muss es im TargetDoorState nicht heißen: stopped:STOPPED ?
Guck mal in die HomeBridge Doku, den Link hatte ich dir oben schon gegeben. Es gibt halt für TargetDoorState kein STOPPED. Ist ja auch logisch, denn wer sagt auch schon zu seiner Tür ,,Fahre auf die Position stop"? Das ist ja das ZIEL deiner Tür und nicht der aktuelle ZUSTAND, was TargetDoorState da beschreibt.