Hallo zusammen,
ich habe in den letzten Tagen Homebridge auf dem FHEM-Rechner zum Laufen bekommen. Das funktioniert auch weitestgehend gut, aber ich habe noch ein Problem, bei einem Dummy-Device (das ich für die Anwesenheitserkennung nutze).
Das Phänomen ist, dass homebridge-fhem bzw. das Frontend immer wieder auf einen gecachten Status zurückspringt (der aber nicht der in FHEM sein muss...).
homebridge-fhem läuft als child-bridge und ist mit HomeKit gekoppelt.
Das Dummy-Device sieht folgendermaßen aus:
Internals:
CFGFN
FUUID
NAME dStatus
NR 495
STATE on
TYPE dummy
eventCount 31
READINGS:
2025-10-30 22:45:54 presence 1
2025-10-30 22:45:54 state on
hmccu:
Attributes:
genericDeviceType scene
homebridgeMapping clear On=state,valueOn=ON:on,valueOff=OFF:off,cmdOn=on,cmdOff=off
room Homebridge,Residents
setList on off
userReadings presence {if(ReadingsVal("dStatus","state","") eq "on") {return 1} else {return 0}}
webCmd on:off
Hat jemand eine Idee, woran das liegen kann? Danke!
Was genau versuchst du darzustellen? Es gibt kein genericDeviceType (= Service)
scene.
Generell bietet es sich an, sich an den zwei wesentlichen Dokumenten von HAP-NodeJS zu orientieren, nämlich an
- ServiceDefinitions.ts (https://github.com/homebridge/HAP-NodeJS/blob/latest/src/lib/definitions/ServiceDefinitions.ts) (da findet man heraus, welche genericDeviceTypes (= Services) es gibt und welche Characteristics der jeweilige Service erfordert) und
- CharacteristicDefinitions.ts (https://github.com/homebridge/HAP-NodeJS/blob/latest/src/lib/definitions/CharacteristicDefinitions.ts) (da findet man heraus, was für Werte die jeweiligen Characteristics jeweils haben können).
Für einen Präsenzmelder bräuchtest du
- genericDeviceType (= Service) OccupancySensor
- mit dem required Characteristic OccupancyDetected (klick (auch für 1.) (https://github.com/homebridge/HAP-NodeJS/blob/05962539034379dc2dd6dab25230870f509c1b1c/src/lib/definitions/ServiceDefinitions.ts#L945C1-L946C62)),
- wobei bei OccupancyDetected ein Wert von 0 steht für OCCUPANCY_NOT_DETECTED und ein Wert für 1 OCCUPANCY_DETECTED steht (klick (https://github.com/homebridge/HAP-NodeJS/blob/05962539034379dc2dd6dab25230870f509c1b1c/src/lib/definitions/CharacteristicDefinitions.ts#L2340C1-L2341C49)).
Also z.B.:
defmod dStatus dummy
attr dStatus devStateIcon on:user_available off:user_away@orange
attr dStatus genericDeviceType OccupancySensor
attr dStatus homebridgeMapping clear\ OccupancyDetected=state,values=on:1;;off:0
attr dStatus room Homebridge,Residents
attr dStatus setList on off
attr dStatus on:off
attr dStatus siriName AnwesenheitDas userReading brauchst du nicht (außer du verwendest es für etwas anderes als homebridge). Ich würde im Übrigen auch lieber mittels siriName filtern. Für die homebridge config:
"filter": "siriName=.+",Achtung, das oben ist natürlich raw defintion, zum Reinkopieren direkt in den Attribut-Editor sieht das homebridgeMapping so aus:
clear
OccupancyDetected=state,values=on:1;off:0(Bin mir ehrlich gesagt gar nicht so sicher, ob du das wirklich brauchst, oder nicht ein einfaches
OccupancyDetected=state ausreicht, habs jetzt nicht nochmal getestet. So ist es aber jedenfalls transparent ...)
Guten Morgen,
danke für die Erklärung und Erläuterungen - habe ich alles ausprobiert, klappt nicht...
Ich versuche mal, meine Herausforderung zu beschreiben.
Ich möchte, dass immer dann, wenn ich mit meinem iPhone das "Zuhause" verlasse, dass dieser Zustand in FHEM erkannt wird.
Das funktionierte bis jetzt über den Umweg "Schalte per Automation Device in Home" -> HomeKit in Homeassistant -> MQTT -> FHEM Dummy -> FHEM Resident ganz gut und zuverlässig. Da Homeassistant aber auf einem separaten Pi läuft, möchte ich das gerne umstellen auf den NUC, auf dem auch FHEM läuft.
Also Homebridge installiert. Klappt alles, bis auf die Anzeige in der Homebridge-UI und damit auch im Home auf den Apple-Geräten. Dort springt das Dummy-Device immer wieder zurück. Die Schaltung in FHEM läuft übrigens, die Sets und Readings werden übertragen.
Vielleicht hat ja jemand dafür eine gute Umsetzung?
Achso, sorry, jetzt verstehe ich. Es ist also einfach andersherum, d.h. du willst mit deinem iPhone einfach ein Gerät in FHEM schalten?
Dann nimm einfach dein homebridgeMapping von oben und setze
outlet als genericDeviceType.
Als homebridgeMapping dürfte auch folgendes reichen (du musst on/off nicht nochmal extra mappen):
On=state,valueOn=on,valueOff=off,cmdOn=on,cmdOff=offWenn das nicht funktioniert, poste bitte mal einen Auszug aus dem Log von homebridge. Interessant wäre sowohl ganz am Anfang der Teil nach einem restart, wo dStatus geladen wird. Und dann auch
- was geloggt wird, wenn du den dummy aus FHEM heraus schaltest,
- wenn du ihn von deinem iPhone aus schaltest und
- im Fehlerfall, d.h. wenn er zurückspringt.
Danke! Ja, genau, ich möchte einen Schalter vom iPhone schalten.
Ich habe das so umgestellt, wie du beschrieben hast, funktioniert aber leider nicht. Im Log von Homebridge sehe ich folgendes:
[31.10.2025, 16:13:45] [FHEM] dStatus: executing set cmd for On with value false
[31.10.2025, 16:13:45] [FHEM] executing: http://localhost:8088/fhem?cmd=set%20dStatus%20off&fwcsrf=...=1
...
[31.10.2025, 16:14:11] [FHEM] query: On for dStatus-state
[31.10.2025, 16:14:11] [FHEM] cached: true (as boolean)
Dazwischen habe ich nur in der Homebridge-UI von "log" auf "Geräte" gewechselt. Scheint also, als würde irgendwie der Status in Homebridge gecached werden. In FHEM ist er nämlich korrekt auf "off", also der Prozess funktioniert, nur eben die Anzeige nicht ;)
Nachtrag: ich habe gerade nochmal eine Lampe (genericDeviceType lightbulb) getestet, hier sehe ich im Log ein:
2025-10-31 16:12:41 caching: SteckdoseB-state: off
Genau dieses Caching fehlt bei dem dummy....
Nachtrag:
das scheint ein Bug zu sein, ich mache das Issue mal wieder auf
Link zum Issue (https://github.com/justme-1968/homebridge-fhem/issues/16)
Ah ok. Ich verstehe.
Was passiert, wenn du das dStatus device mal löscht und neu anlegst, so, dass es in FHEM eine neue UUID kriegt und danach mal homebridge neu startest? Könnte mir vorstellen, dass da einfach irgendwo etwas hängen geblieben ist.
Vielleicht kannst du zum testen aber auch einfach parallel mal ein zweites, in FHEM identisches device mit einem anderen siriName anlegen und schauen, ob das was ändert.
(Habe übrigens bei deinem Issue mal diesen Thread hier als Kontext verlinkt.)
Warum machst Du das nicht mit ROOMMATE sondern mit dummy?
Bei mir läuft das sein langem ohne Problem.
Zitat von: volschin am 01 November 2025, 16:21:36Warum machst Du das nicht mit ROOMMATE sondern mit dummy?
Bei mir läuft das sein langem ohne Problem.
Bis jetzt hat es bei mir nie funktioniert, die ROOMMATE-devices korrekt einzubinden, sodass ich sie auch schalten kann.
Könntest du deine Config (Fhem und homebridge/home) teilen? Danke!
Nachtrag: habe das Mapping per Hand eingegeben, jetzt scheint es zu gehen, danke für den Tipp!