Skip to content

Handler: WindowCoveringTilt

Raoul edited this page Nov 16, 2016 · 2 revisions

Dieser Handler ist gedacht um eine Jalousiesteuerung inkl. Lammellenneigung anzubinden.

Zuordnung der Objekte

Dabei werden die KNX-Objekte so zugeordnet:

Objektfunktion in ETS Bedeutung KNX DPT Characteristic im Handler Wertebereich im HomeKit
Langzeitbetrieb Rolladen Fahrt DPT1, Subtype auf/ab ShutterMove NA
Rückmeldung Rolladenposition Rückmeldung in Prozent DPT5 CurrentPosition 0-100%
Position Rollade/Markise Anfahrt Position DPT5 TargetPosition 0-100%
Rückmeldung Lamellenposition Rückmeldung Lamellenposition in Prozent DPT5 CurrentHorizontalTiltAngle -90° - +90°
Position Lamelle Anfahrt Lamellenposition in Prozent DPT5 TargetHorizontalTiltAngle -90° - +90°

Zusätzlich werden das Characteristic PositionState verwendet. Dabei wird PositionState nur deklariert, aber nicht mit Gruppenadressen verknüpft. Diese Eigenschaft müssen wir nur deklarieren, damit das Add-in darauf in Richtung HomeKit schreiben kann.

Als lokale Konstante wird ninetyDegRotation benötigt. Mögliche Werte sind true und false, wobei der Wert auf true zu setzen ist, wenn die verbauten Raffstores (Lamellen) nur eine Positionierung zwischen 0° und 90° erlauben. Ansonsten steht der wert auf false (Lamellen können von -90° bis +90° gedreht werden). Für den Fall das man ninetyDegRotation auf true setzt, reagiert das AddIn nur auf Änderungen wenn diese Sich zwischen 0° und 90° befinden, andernfalls wird immer auf 0° gesetzt.

Die CurrentPosition ist aus Sicht von HomeKit nicht beschreibbar - wir bekommen diesen Wert nur vom Aktor, daher brauchen wir keine Set-Einträge. Selbiges gilt für CurrentHorizontalTiltAngle.
Die TargetPosition ist aus Sicht von HomeKit beschreibbar (das heisst, man kann auf dem iPhone eine neue Zielposition vorgeben, so dass der Rollo diese Position anfährt), brauchen wir (mindestens) eine Set-Adresse. Damit das iPhone auch den Zielwert richtig anzeigt, falls wir über KNX die Position ändern, lauschen wir mit Listen auf der gleichen Adresse.
Selbiges gilt auch für TargetHorizontalTiltAngle.
ShutterMove ist nicht mit einer echten HomeKit-Eigenschaft verknüpft, deshalb taucht es nicht bei den Characteristics, sondern in den KNXObjects auf - diese werden nur vom Handler beschrieben/gelesen. Wir benötigen hier nur eine hörende Adresse. Die Angabe des DPT ist zwingend und es funktioniert in diesem Handler für diese Adresse nur DPT1!

Für die Positionen gilt, und das ist fest verdrahtet: In KNX: 0% ist oben/geöffnet; 100% ist unten/geschlossen. HomeKit verhält sich genau umgekehrt. Es gibt aktuell keine Möglichkeit die Bedeutung der Positionen umzudrehen!

Das Beispiel sieht daher folgendermaßen aus: ###Beispiel

{
    "ServiceType": "WindowCovering",
    "Handler": "WindowCoveringTilt",
    "ServiceName": "Jalousie Wohnzimmer",
    "Characteristics": [
        {
            "Type": "TargetPosition",
            "Set": [
                "2/1/32"
            ],
            "Listen": [
                "2/1/32"
            ],
            "DPT": "DPT5"
        },
        {
            "Type": "CurrentPosition",
            "Listen": [
                "2/1/33"
            ],
            "DPT": "DPT5"
        },
        {
            "Type": "PositionState"
        },
        {
            "Type": "TargetHorizontalTiltAngle",
            "Set": [
                "2/1/34"
            ],
            "Listen": [
                "2/1/34"
            ],
            "DPT": "DPT5"
        },
        {
            "Type": "CurrentHorizontalTiltAngle",
            "Listen": [
                "2/1/35"
            ],
            "DPT": "DPT5"
        }
    ],
    "KNXObjects": [
        {
            "Type": "ShutterMove",
            "Listen": "2/1/30",
            "DPT": "DPT1"
        }
    ],
    "KNXReadRequests": [
        "2/1/33",
        "2/1/35"
    ],
    "LocalConstants": {
        "ninetyDegRotation": "true"
    }
}