brutella / hkknx-public

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

Jalousien mit separater GA für Auf/Ab steuern #82

Closed chef76 closed 3 years ago

chef76 commented 3 years ago

Hallo Matthias,

aus #81 hier mal ein neuer Punkt für die Auf/Ab Steuerung von Jalousien. Wäre super, wenn Du eine neue GA integrieren könntest, welche bei Positionsanforderung 0% geöffnet mit 1 und 100 % geöffnet mit 0 angesprochen wird. Hier mal alle GAs einer Jalousie: image Nummer 2 kannst Du ignorieren, das ist eine Szene. Für Nummer 0 und 1 gibt es noch keine Entsprechung in deiner Brücke. Die 1 braucht es meines Erachtens nicht, da hiermit die Lamelle schrittweise auf und zu gefahren werden kann. Wenn Du eine neue GA für die 0 intergrieren würdest und diese wie oben beschrieben ansteuerst, wären die größten Probleme mit der Jalousiesteuerung behoben.

Vielen Dank im Voraus!

chef76 commented 3 years ago

Wenn Du für 100 % oder 0 % auf eine separate GA 1/Ab oder 0/Auf senden würdest, wäre die Welt für Jalousien in Ordnung.

Irgendwie ist mir noch nicht ganz klar was es für einen Unterschied macht. Könntest du das nochmal genauer erläutern?

Kein Problem: bei einem Auf/Ab Befehl fährt der Aktor die Jalousie bis an den oberen/unteren Endschalter (Position 100 % geöffnet / 0 % geöffnet). Positionen werden hierbei ignoriert. Als Rückmeldung gibt der Aktor 0% für offen oder 100 % für geschlossen. Wenn du über Positionen fährst, wertet der Aktor sowohl die Position, als auch die Lamelle aus. Da hat zur Folge, dass bei einer Ab-Fahrt über HomeKit, die Jalousie auf 0% geöffnet und Lamelle 0%, also durchsichtig fährt. Das will aber niemand so haben. Zu soll zu sein. Umgekehrt bei 100 % geöffnet, fährt die Jalousie nach oben an den Endschalter, um die 0 % Lamelle zu realisieren, muss aber wieder etwas abgefahren werden, d.h. Position 98%, Lamelle 0 %, die Jalousie schaut aus dem Kasten raus und wird in HomeKit nicht als geschlossen angezeigt. Ich kann Dir gerne auch mal Bilder machen, wenn es noch nicht klar ist.

chef76 commented 3 years ago

... sorry, kleine Korrektur. Bei 0% geöffnet muss die Lamelle auf 90° stehen, damit die Jalousie zu ist. Bei einer Auf-Fahrt, werden dann am oberen Endschalter wieder etwas abgefahren, da die Lamelle immer noch auf 90° steht. Stellt man sie auf 0°, dann passt alles. Umgekehrt, bei einer Ab-Fahrt, steht die Lamelle auf 0°, ist die Jalousie unten angekommen werden die 0° eingestellt, also die Jalousie durchsichtig gestellt. Ändert aber nichts am Kern des vorherigen Posts.

So muss man halt immer 2 Befehle geben Position und Lamelle, wovon einer per Siri nicht mal funktioniert und man für den anderen erst in ein Untermenü muss. Das ist megalästig!

ring-um commented 3 years ago

Hallo zusammen, habe mir vor ein paar Wochen die hkknx-Brücke gekauft und bin schwer begeistert 👍. Danke dafür

Dennoch gibt es ein paar Schwachstellen / Verbesserungsmöglichkeiten, eine davon ist der fehlende AUF/AB Befehl sollte unbedingt noch mit aufgenommen werden...

brutella commented 3 years ago

Ok, ich denke mir ist es jetzt klar.

Wenn ich also die Jalousie mit einem Ab-Befehl schließe, wird auch die Lamellen-Position vom Aktor verstellt, damit die Jalousie auch wirklich komplett geschlossen ist. Sendet der Aktor beim Schließen der Lamellen die neue Position auf die Rückmelde GA der Soll-Position?

chef76 commented 3 years ago

Ja, das tut er. Es wird sowohl Status Position, als auch Status Lamelle zurückgemeldet.

brutella commented 3 years ago

Perfekt, dann werde ich es so umbauen, dass Auf/Ab-Befehle versendet werden statt 100% und 0% Offen.

chef76 commented 3 years ago

Kriegst du von HomeKit eiegentlich die Rückmeldung, wann die Jalousie fährt? Dann könnte man auch noch die Adresse für die Lamellenverstellung mit einbinden und könnte so die Jalousie auch während der Fahrt stoppen. Siehe Screenshot oben Nummer 1 ist die Lamellenverstellung. Eine 1 kippt die Lamelle um ein paar grad nach außen eine 0 ein paar grad nach innen. Wenn man während der Fahrt 1 oder 0 auf die Adresse schickt stoppt die Jalousie. Also wenn während der Fahrt noch mal ein Fahrbefehl von HomeKit kommt könnte man so stoppen.

brutella commented 3 years ago

Diese Funktion ist jetzt in 1.2.0 verfügbar. Bitte testen und Feedback geben.

chef76 commented 3 years ago

... geil! Zum ersten Mal, dass sich meine Jalousien in HomeKit so verhalten, wie man es erwarten würde.

Was mir nicht so gut gefällt ist, dass ich alle 21 Stück neu anlegen soll. Lässt sich das nicht noch besser lösen, dass die neuen Felder einfach bei den bestehenden Geräten mit auftauchen und beim Speichern ein neuer Gerätesatz geschrieben wird?

Wenn du es noch ganz perfekt machen willst, muss der Lamellenschritt (Stop) aber auch noch rein, sonst können die, die alte Aktoren nur mit Auf/Ab Befehl haben diese nicht zwischendrin stoppen.

Aber schon mal vielen Dank für Version 0.

brutella commented 3 years ago

Wenn du es noch ganz perfekt machen willst, muss der Lamellenschritt (Stop) aber auch noch rein, sonst können die, die alte Aktoren nur mit Auf/Ab Befehl haben diese nicht zwischendrin stoppen.

Hast du eine Stop-Funktion in deiner Applikation zum Testen? Dazu wird vermutlich 1 Bit verwendet, oder?

chef76 commented 3 years ago

welche Applikation meinst Du? ETS? Ja, ich kann die testen. Ich hab's 3 Posts weiter oben beschrieben. 1-Bit - 1 kippt ein paar Grad nach außen 0 ein paar grad nach innen. In einer Ab-Fahrt stoppt die 1 die Fahrt ohne dass sich die Lamelle verändert, in der Auf-Fahrt die 0.

brutella commented 3 years ago

Wie verhält sich der Aktor, wenn eine Jalousie gestoppt wird?

Sagen wir die Jalousie wird zu 80% geschlossen. Während der Fahrt wird über einen KNX Taster die Jalousie gestoppt. Sendet der Aktor nun eine neue Soll-Position (also die gestoppte Position ist jetzt die Soll-Position)? Wenn nein, dann würde in HomeKit immer noch angezeigt werden, dass die Jalousie noch fährt, da die Soll-Position noch nicht erreicht ist.

chef76 commented 3 years ago

... der Aktor sendet bei jedem Stop die aktuellen Positionen. Das sollte also problemlos funktionieren.

brutella commented 3 years ago

Unterstützung für Jalousie Stop ist jetzt im aktuellsten Pre-Release Build 1.2.0 drin.

chef76 commented 3 years ago

... Sorry, er sendet nur die aktuellen Ist-Positionen. Eine Soll-Position gibt es bei einer Fahrt über Auf/Ab Kommando garnicht. Da ich aber die Ist-Position bei Lesen und Initialisieren der Soll Position drin hab funktioniert das.

Ich bin der Meinung die Felder (Soll Lesen und Soll Initialisieren) solltest du rausnehmen, denn die Fahrt über einen Taster Auf/Ab ist der Standardfall in KNX Installationen. Über Soll-Positionen wird da eher selten gefahren. Das macht Dir nur Probleme, weil die Leute es nicht unbedingt verstehen, warum sich der Status noch dreht, wenn sie über einen Taster gefahren sind und es wie in Deiner Anleitung konfiguriert haben.

chef76 commented 3 years ago

Unterstützung für Jalousie Stop ist jetzt im aktuellsten Pre-Release Build 1.2.0 drin.

Ich probiere es gleich mal aus.

brutella commented 3 years ago

Ich bin der Meinung die Felder (Soll Lesen und Soll Initialisieren) solltest du rausnehmen, denn die Fahrt über einen Taster Auf/Ab ist der Standardfall in KNX Installationen. Über Soll-Positionen wird da eher selten gefahren. Das macht Dir nur Probleme, weil die Leute es nicht unbedingt verstehen, warum sich der Status noch dreht, wenn sie über einen Taster gefahren sind und es wie in Deiner Anleitung konfiguriert haben.

Das Problem ist halt nur, dass in HomeKit eine Anfahrt an eine bestimmte Position im Interface angezeigt wird. Was soll angezeigt werden, wenn nur während der Fahrt gestoppt wird und die Halte-Position nicht bekannt ist? Dann ist der Rollladen zwar offen aber wie weit?

Abhilfe könnten man sich mit einem Garagentor machen. Dieses würde sich so verhalten wie ein Rollladen, der nur mit Auf/Ab Befehl gesteuert wird. Leider wird aber in der Home-App dann ein Garagentor angezeigt – was auch nicht schön ist. (In Home+ könnte man wenigstens das Icon auf einen Rollladen ändern.)

chef76 commented 3 years ago

Ich glaube Du verstehst mich nicht ganz richtig. Wenn man bei Soll-Lesen und Initialisieren die Ist-Position einträgt ist alles o.k., da der Aktor am Ende seiner Fahrt immer Position-Ist und Lamelle-Ist sendet. Wenn du das jetzt hart codest, kannst Du die Felder weglassen. Die verwirrren nur.

Leider funktioniert das Stop Kommando nicht. Wenn man während der Fahrt noch mal auf den Knopf drückt, kehrt die Fahrt nur um und als Starus wird sofort geöffnet angezeigt obwohl er noch fährt:-(

brutella commented 3 years ago

Ich glaube Du verstehst mich nicht ganz richtig. Wenn man bei Soll-Lesen und Initialisieren die Ist-Position einträgt ist alles o.k., da der Aktor am Ende seiner Fahrt immer Position-Ist und Lamelle-Ist sendet. Wenn du das jetzt hart codest, kannst Du die Felder weglassen. Die verwirrren nur.

Meiner Meinung nach ist das aber eine falsche Konfiguration. Denn wenn eine neue Ist-Position gesendet wird, ist die Soll-Position gleich Ist-Position, was ja nicht richtig ist.

Für die Soll-Position Lesen sollte entweder

Somit ist sichergestellt, dass wenn der Rollladen zb über einen Taster an eine bestimmte Position gefahren wird, diese Information auch an HomeKit weitergeleitet wird.

Leider funktioniert das Stop Kommando nicht. Wenn man während der Fahrt noch mal auf den Knopf drückt, kehrt die Fahrt nur um und als Starus wird sofort geöffnet angezeigt obwohl er noch fährt:-(

Das ist ein Problem der Home-App – diese fährt nämlich bei neuerlichem Drücken der Rollladen wieder in die andere Richtung. Ein Stoppen ist da nicht angedacht. Mit anderen HomeKit-Apps kannst du das aber machen – zwar etwas umständlicher aber es geht.

chef76 commented 3 years ago

Meiner Meinung nach ist das aber eine falsche Konfiguration. Denn wenn eine neue Ist-Position gesendet wird, ist die Soll-Position gleich Ist-Position, was ja nicht richtig ist.

Für die Soll-Position Lesen sollte entweder

  • die Gruppenadresse des Rückmelde-Objektes der Soll-Position verwendet werden. (Ich glaube in deinem Fall gibt es das nicht, oder?)

  • oder die Gruppenadresse der Soll-Position.

Somit ist sichergestellt, dass wenn der Rollladen zb über einen Taster an eine bestimmte Position gefahren wird, diese Information auch an HomeKit weitergeleitet wird.

Nochmal: das ist die einzige Konfiguration die Funktioniert!

Ich habe sehr wohl ein Rückmeldeobjekt für die Soll-Adresse.

Wenn man aber nicht über Soll-Position fährt (z.B. über Taster), dann gibt es keine Soll-Position oder nur eine alte. Der Aktor sendet aber seine Ist-Position nach dem Stop, was dazu führt, dass Soll<>Ist und HomeKit immer beschäftigt zeigt.

Ich habe dazu im KNX Forum schon unzähligen Leuten diesen Tip gegeben und bei allen funktioniert's.

Ich will Dir nur helfen, aber wenn du das nicht verstehen kannst oder willst, dann lass das so wie es ist und ärgere Dich selbst mit allen rum, die sich darüber beschweren. Für mich ist das so auch o.k..

Ich bin gerne bereit dich zu unterstützen, dass du mehr Lizenzen verkaufst und sich das Projekt weiterentwickelt, aber du musst dann auch auf mich hören, wenn es um das Verhalten von KNX Komponenten geht. Da habe ich eindeutig mehr Erfahrung. In HomeKit ist es sicher umgekehrt.

Nochmal zur Stop Adresse:

Wenn du von HomeKit keine Rückmeldung kriegst, dass die Jalousie fährt und so ein erneutes Fahrtkommando als Stop interpretieren kannst, macht die Stop Adresse keinen Sinn.

brutella commented 3 years ago

Wenn man aber nicht über Soll-Position fährt (z.B. über Taster), dann gibt es keine Soll-Position oder nur eine alte. Der Aktor sendet aber seine Ist-Position nach dem Stop, was dazu führt, dass Soll<>Ist und HomeKit immer beschäftigt zeigt.

Genau das hatte ich gemeint. Somit sollte die Brücke beim Empfangen eines Stops die Soll-Position = Ist-Position setzen. Somit wird das dann in HomeKit richtig angezeigt.

Ich habe dazu im KNX Forum schon unzähligen Leuten diesen Tip gegeben und bei allen funktioniert's.

Ich habe die Tipps auch im Forum gesehen. Ich dachte aber, dass war auf das Problem beim Schließen und Öffnen mit den Lamellen zurückzuführen. Da das jetzt mit dem Auf/Ab aber behoben wurde, sollte das mit der Rückmelde-Adresse der Soll-Position auch funktionieren.

Nochmal zur Stop Adresse:

Wenn du von HomeKit keine Rückmeldung kriegst, dass die Jalousie fährt und so ein erneutes Fahrtkommando als Stop interpretieren kannst, macht die Stop Adresse keinen Sinn.

Das geht nicht so einfach. Wenn der Rollladen geschlossen ist und man tippt in der Home-App auf das Feld, wird der Rollladen geöffnet (Soll-Position = 100% Offen). Nochmal tippen schließt den Rollladen wieder (Soll-Position = 0% Offen). Es liegt also nicht an der Brücke sondern an der Home-App. Diese könnte ganz einfach beim Tippen auf das Feld die Soll-Position = Ist-Position setzen und somit den Rollladen stoppen.

chef76 commented 3 years ago

... du hast teilweise recht, teilweise nicht.

Ich glaube, wenn wir das so lösen wollen brauchen wir Tage.

Ich denke ich kann dir das in 10 Minuten erklären, wenn wir mal kurz Skypen, Teams, Zoom oder auch telefonieren.

Was meinst Du? Ich kann Dir gerne Kontaktdaten per Mail schicken.

brutella commented 3 years ago

Ja, gerne können wir mal telefonieren.