brutella / hkknx-public

hkknx is a HomeKit KNX bridge for KNX.
https://hochgatterer.me/hkknx
98 stars 6 forks source link

Rollladen Anzeige Ist-Position #64

Closed chef76 closed 3 years ago

chef76 commented 4 years ago

Werden Rolladen nicht über eine definierte Soll-Position in % angefahren, sondern über das allgemeine Auf/Ab Kommando, wird die Ist-Position in der Home-App nicht korrekt angezeigt. Es erscheint entweder eine falsche Position (z.B. Offen bei geschlossenen Jalousien) oder schliessen und working. Das ist insofern unverständlich, da der Aktor nach Erreichen der Endposition korrekte Ist-Positionen für Jalousie und Lamelle sendet, welche in anderen Visus auch korrekt angezeigt werden.

Der Fehler steht im Zusammenhang mit https://github.com/brutella/hkknx-public/issues/61#issue-676084198

brutella commented 3 years ago

Die Darstellung in HomeKit ist deshalb falsch, da sich die Soll-Position mit einem Auf/Ab Kommando nicht ändert.

chef76 commented 3 years ago

... und da kannst du nichts machen? (Z.B. Soll-Position gleich Ist-Position setzen, wenn eine neue Ist-Position vom Bus kommt)

brutella commented 3 years ago

Diese Logik würde beim Anfahren einer Soll-Position nicht stimmen – in diesem Fall ist die Soll-Position nicht gleich der Ist-Position.

chef76 commented 3 years ago

Du hast mich falsch verstanden. Ich habe geschrieben: Soll-Position gleich Ist-Position setzen, wenn eine neue Ist-Position vom Bus kommt.

Genau das habe ich mit der Logik meines EibPort umgesetzt und es funktioniert prima.

Die Ist-Position wird vom Aktor nur gesendet, wenn die Endposition erreicht ist. Wird die Position über ein Ab/Auf Kommando angefahren und nicht über eine Soll-Position erreiche ich über das Nachsenden des Soll-Wertes, dass das Kreiseln aufhört und die korrekten Positionen von HomeKit angezeigt werden. Das ist auch kein Problem, wenn man die Soll-Position über HomeKit ansteuert, denn Soll=Ist passiert erst, wenn die Endposition erreicht ist und dann sind sie sowieso gleich!

Wenn du das Verhalten in die Brücke einbaust, kannst du eine Menge Leute glücklich machen.

brutella commented 3 years ago

Die Ist-Position wird vom Aktor nur gesendet, wenn die Endposition erreicht ist.

Genau hier sehe ich ein Problem. Das wird nicht bei jedem Aktor so sein. Wenn die Brücke immer diese Logik anwendet, dann wird das nicht in allen Fällen richtig funktionieren.

zB die Soll-Position wird von HomeKit auf 0% gesetzt. Die Ist-Position beträgt 100% und wird schrittweise auf 0% gestellt. Wenn der Aktor nun 90% als Ist-Position sendet (weil der Aktor eben kontinuierlich die Ist-Position sendet) und die Brücke somit die Soll-Position auch auf 90% setzt, dann wird in HomeKit davon ausgegangen, dass der Rollladen die Soll-Position erreicht hat – da Soll-Position == Ist-Position. Somit ist die Anzeige in HomeKit falsch.


Hast du schonmal versucht bei der "Jalousie Soll-Position"-Eigenschaft für Lesen die Gruppenadresse der Ist-Position einzutragen?

chef76 commented 3 years ago

... hat denselben Effekt! Drauf hätte ich auch kommen können! :-) Danke für den Tip!

Das solltest Du irgendwie in den Tooltip oder eine Doku aufnehmen, denn das Problem haben alle (auch andere HomeKit Brücken). Ein Problem bleibt, das Du vielleicht in der Brücke lösen kannst. Die Fahrt über ein AUF/AB Kommando kriegt Homekit nicht mit. Nach einem Neustart der App holt er sich dann die korrekten Werte. Kannst Du einen "Refresh" aus der Brücke heraus anstoßen (kein Lesen sondern ein Schreiben der Positionen) wenn ein neuer Ist-Wert auf dem Bus kommt?

brutella commented 3 years ago

Die Fahrt über ein AUF/AB Kommando kriegt Homekit nicht mit.

Wenn der Aktor die Ist-Position beim Auf/Ab Kommando korrekt sendet, sollte es doch passen, oder?

chef76 commented 3 years ago

... leider nicht. Es passiert nichts. So wie es aussieht reagiert er nur auf eine Änderung der Soll-Position und da sich diese nur auf dem Lesen-Eingang ändert (den fragt er anscheinend nur beim App-Start ab) passiert leider garnichts.

chef76 commented 3 years ago

Sorry, muss meine Aussage korrigieren: manchmal funktioniert es, manchmal nicht. Die Ist-Position wird definitiv immer richtig gesendet, nur aktualisiert die App nicht immer von alleine. :-(

c-o-m-m-a-n-d-e-r commented 3 years ago

Moin, hab für homebridge-knx ein wenig was für den Gira Aktor gemacht. Der Gira Jalousieaktor hat ja z.B ein Objekt für Bewegung.

Könnte man doch auch noch auswertbar machen oder nicht? :-)

Klappt zumindest bei mir astrein.

brutella commented 3 years ago

Welche Daten kann man über dieses Bewegungsobjekt abfragen?

c-o-m-m-a-n-d-e-r commented 3 years ago

Bei meinem Gira 216100 gibt es ein DPT1 Objekt ob die Jalousie gerade fährt.

Das werte ich im CustomHandler aus und setze den Wert für PositionState 0,1,2 lediglich darüber. Somit habe ich immer die korrekte Anzeige.

Ist jetzt keine großes Zauberei oder so ... :-)

Ach so zusätzlich Werte ich aus ob die Position "absolut" gesetzt wurde oder über einen Tastendruck (kurz/lang) kam. Wenn Tastendruck setz ich nochmals entsprechend die TargetPosition auf 0 oder 100

brutella commented 3 years ago

... nur aktualisiert die App nicht immer von alleine. :-(

Das hängt womöglich an einem Problem, welches aktuell nur unter iOS 14 auftaucht. An diesem Problem arbeite ich bereits.

chef76 commented 3 years ago

Gelöst mit 1.1.1