Ankündigung

Einklappen
Keine Ankündigung bisher.

Openhab2 - Jalousiensteuerung KNX Kurzzeitsignal/Langzeitsignal

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Openhab2 - Jalousiensteuerung KNX Kurzzeitsignal/Langzeitsignal

    Hallo,

    ich habe hier eine KNX-Installation laufen, die der Elektriker geplant und installiert hat. Diese wird über den Gira Homeserver gesteuert. Dort werden die Jalousien u.a. so gesteuert, dass wenn ich in der Gira App den Pfeil der Jalousiensteuerung nur kurz antippe, diese kurz nach oben oder unten fährt bzw.. sich bewegt. Drücke ich die Pfeiltaste länger, fährt die Jalousie entweder komplett nach oben oder nach unten.

    Die Gruppenadressen pro Jalousie lauten wie folgt (Beispiel)

    2/2/45 Jalousie Essen LZ 1Bit
    2/2/46 Jalousie Essen KZ 1Bit
    2/2/47 Jalousie Essen POS 1Byte
    2/2/48 Jalousie Essen POS Lamellen 1Byte

    Ich vermute, LZ steht für Langzeitsignal oder Kurzzeitsignal.

    Darüber hinaus kann ich die Gira App die Position der Jalousie oder der Lammellen sehen bzw. einstellen.

    Ich möchte dies nun über Openhab steuern. Ich verwende die aktuellste Version (2.3) mit dem neuen KNX 2 Binding.

    Ich komme mit diesem LZ und KZ nicht zurecht, da in den Forenbeiträgen immer von Hoch/Runter bzw. Stopp die Rede ist bei den KNX Adressen.

    Wie müsste mein Thing bzw. Item aussehen, damit ich über die Basic Sitemap analog zu der Gira App die Jalousien steuern kann? Hat jemand dazu ein Beispiel?

    Liebe Grüße

    Claudio
    Zuletzt geändert von Kalki; 24.06.2018, 08:09.

    #2
    Hallo und willkommen

    Was die Jalousien betrifft, gibt es in openHAB einen gravierenden Unterschied zu m HS. openHAB kennt keine Jalousien.

    Was Du aber nutzen kannst, ist das Rollershutter Item und ein weiteres Item. Das Rollershutter Item ist dann für die Langzeit (aka hoch/runter) zuständig, wogegen das zweite Item für den Stellwinkel der Lamellen zuständig ist.

    knx kennt für die Jalousiesteuerung keinen Stopp-Befehl. Stattdessen gibt es MOVE UP/DOWN und STEP UP/DOWN, wobei der Stopp-Befehl dann ein STEP UP/DOWN ist.

    Dementsprechend brauchst Du trotzdem für das Rollershuter Item sowohl die Langzeit als auch die Kurzzeit GA. Für das zweite Item brauchst Du dann nur die Kurzzeit GA.
    Weiterhin brauchst Du jeweils noch die Positions-GA. Jetzt kommt die erste Hürde. Es sollte nämlich insgesamt 4 Positions-GA geben, je Funktion (MOVE/STEP) zwei Stück, nämlich Positionsbefehl und Positionsrückmeldung.
    Manche Aktoren vereinen das jeweils in einer GA, so dass es möglich ist, dass Du tatsächlich nur zwei GA hast, es kann aber sein, dass es dann mit OH2.3 nicht richtig funktioniert (wirst Du dann sehen...)

    Ich habe jetzt die ganze Zeit von Items gesprochen, streng genommen brauchst Du ja als erstes Channel:
    Code:
    Bridge knx:ip:bridge [
         ipAddress="192.168.0.10", //Die IP des knx/IP Gateways (nur bei TUNNEL nötig, bei ROUTER als default 224.0.23.12
         //portNumber=3671,
         localIp="192.168.0.11", //Die IP des openHAB Servers (nicht localhost, keine Namensauflösung!)
         type="TUNNEL", //TUNNEL oder ROUTER?
         //readingPause=50,
         //responseTimeout=10,
         //readRetriesLimit=3,
         //autoReconnectPeriod=30,
        localSourceAddr="0.0.0" ] //ebenfalls default...
    {
        Thing device generic [
            //address="1.2.3",
            //fetch=true,
            //pingInterval=300,
            //readInterval=3600
        ] {
            Type rollershutter : ch1a "Jalousie 1"       [ upDown="2/2/45", stopMove="2/2/46", position="<2/2/47" ]
            Type rollershutter : ch1b "Lamelle 1"       [ upDown="2/2/46", stopMove="2/2/46", position="<2/2/48" ]
      }
    Was ich auskommentiert habe, sind Default Werte, die nicht unbedingt gesetzt werden müssen. Die localSourceAddr="0.0.0" ist ebenfalls default, aber weil in der letzten unkommentierten Zeile noch ein Komma steht, muss noch eine Zeile ohne abschließendes Komma folgen

    Das Thing ist entweder ein allgemeines (das wäre dann prinzipiell der gesamte knx Bus) oder der Jalousie-Aktor, der die Befehle entgegen nimmt. Entsprechend habe ich auch dort alles, was konfiguriert werden kann, auskommentiert.

    Der interessante Teil sind die Channel.
    Der erste Channel ch1a ist für den Langzeitbetrieb (Jalousie hoch/runter).
    Der zweite Channel ch1b ist für den Kurzzeitbetrieb (Lamellenwinkel verstellen).

    Da ich selbst keine Jalousien habe, weiß ich nicht mit letzter Gewissheit, ob das in ch1b so stimmt, aber das sind dann nur noch Details (evtl. kann z.B. stopMove entfallen...)

    Dazu gehören nun zwei Items, die mit den Channels gekoppelt werden:
    Code:
    Rollershutter genericCh1a "Jalousie 1 [%d %%]"  <rollershutter> { channel="knx:device:bridge:generic:ch1a" }
    Rollershutter genericCh1b "Lamelle 1 [%d %%]"  <rollershutter> { channel="knx:device:bridge:generic:ch1b" }
    Jetzt kommen ein paar Abers was vor allem daran liegt, dass ich (hab ich ja schon erwähnt... ) keine Jalousien besitze.
    Man könnte die Classic UI verwenden, dann hat man mit dem Slider Widget für die Lamellen drei Knöpfe für UP/DOWN (und STOP - der ist in diesem Zusammenhang sinnlos). In der Classic UI gibt es einen Parameter sendFrequency, mit dem man vorgeben kann, in welchem Abstand (in ms) der UP/DOWN Befehl gesendet wird - damit hätte man dann bei langem Knopfdruck exakt die gewünschte Funktion. Für die UP/DOWN Funktion nimmt man ein Switch Widget, das konfiguriert sich automatisch mit drei Knöpfen für UP/STOP/DOWN.
    Code:
    Switch item=genericCh1a
    Slider item=genericCh1b sendFrequency=400
    ABER das funktioniert nur mit der Classic UI. Die Classic UI ist alt. Sie nimmt viel Platz weg. Sie kann nur ein Widget pro Zeile anzeigen. Sie ist hässlich. (ok, das ist Geschmacksache )

    Wenn Du die Basic UI verwendest, gibt es den Parameter sendFrequency nicht. Außerdem erzeugt das Slider Widget jetzt tatsächlich (wie der Name schon sagt) einen Slider und keine Knöpfe.
    Deshalb kannst Du auch nicht "lange" drücken, stattdessen kannst Du nur Positionen anfahren lassen. De facto sendet openHAB dann keinen StopMove Befehl mehr, wenn die Lamellen verstellt werden.
    Und an dieser Stelle können wir uns dann überlegen, ob wir nicht lieber gleich einen number Channel für die Lamellen verwenden und ausschließlich die Posiiton weitergeben.
    Im Thing:
    Code:
            Type number : ch1b "Lamelle 1"       [ ga="<2/2/48" ]
    Im Item:
    Code:
    Number genericCh1b "Lamelle 1 [%d %%]"  <rollershutter> { channel="knx:device:bridge:generic:ch1b" }
    In der Sitemap:
    Code:
    Switch item=genericCh1a
    Slider item=genericCh1b
    Eventuell hast Du bestimmte "Lieblingslamellenwinkel" , das lässt sich sehr elegant lösen: (sowohl in Classic UI als auch in Basic UI)
    Code:
    Switch item=genericCh1b mappings=[0="0°", 25="45°", 50="90°", 75="135°",100="180°"]
    Die Winkelangaben stimmen natürlich nicht... aber das sind ja auch nur die Beschriftungen der Knöpfe.

    Was mit den anderen UIs zu beachten ist, entzieht sich meiner Kenntnis , zumindest im HABpanel gibt es aber meines Wissens die Möglichkeit, zwischen langem und kurzen Druck zu unterscheiden, das wäre dann wieder ähnlich zu konfigurieren wie die Classic UI, aber auch die andere Option - direktes Ansteuern - geht dort ohne Probleme.

    PS: Ich habe die Schreibweise für die Konfiguration über Text Dateien verwendet, natürlich lassen sich Bridge, Thing und Items auch über Paper UI konfigurieren - nur die Sitemap ist (noch) zwingend eine Text Datei.
    Zuletzt geändert von udo1toni; 24.06.2018, 11:19.

    Kommentar


      #3
      Vielen Dank für die turboschnelle und umfassende Beantwortung. Ich habe die Vorschläge umgesetzt. Die Ansteuerung, dass die Jalousie nach oben oder unten fährt, klappt problemlos. Über die Classi UI konnte ich auch die Lamellen ansteuern durch die kurzen Schaltsignale. Bei der Umsetzung mit der Basic UI passiert hinsichtlich der Lamellen nichts, wenn ich den Slider bewege oder die Auswahl über die Winkel anhand des Mappings. Fehlt dort nicht irgendwo noch eine Umsetzung, dass die Winkelwerte dann auch über die Signale an den Aktor zu einer Aktion führen?

      Kommentar


        #4
        Funktioniert denn direktes Anfahren überhaupt? Das wäre die Variante mit
        Code:
        Switch item=genericCh1b mappings=[0="0°", 25="45°", 50="90°", 75="135°",100="180°"]
        Das müsste unabhängig von der UI funktionieren, auch ein Befehl innerhalb einer Rule:
        Code:
        genericCh1b.sendCommand(50)
        oder auch aus der Karaf Konsole heraus:
        Code:
        smarthome send genericCh1a 50
        müsste funktionieren. Wenn nicht, bedeutet dass, dass die GA für die absolute Position reine Rückmelde-GA sind. Aktoren, die die Position rückmelden haben aber im Allgemeinen auch eine Möglichkeit, sich absolut steuern zu lassen. Im Zweifel müsste Dein Elektriker die entsprechenden Kommunikationsobjekte mit zusätzlichen GA verbinden.

        Es gibt noch die Möglichkeit, die Kurzzeitbefehle über eine Rule zu schicken und diese Rule über ein Switch Widget zu triggern. Da aber die Basic UI keinen Unterschied zwischen lang/kurz drücken kennt, muss man dann wiederholt die entsprechende Richtung drücken, das ist nicht sehr elegant.

        Kommentar


          #5
          Das direkte Anfahren funktioniert nicht über die oben vorgeschlagenen Wege. Anscheinend sind es wirklich nur Rückmelde-GA.

          Ich kann mich erinnern, dass der KNX-Programmierer damals irgendetwas sagte von Zeiträumen, die er Einprogrammieren würde.

          Bedeutet dies, dass bei Auswahl einer bestimmten Stellung die Jalousie einfach eine gewisse Zeit hoch oder runter fährt, abhängig von der aktuellen Position?

          Wenn ja, wie steuere ich dies dann zeitmäßg an? Hat dies etwas mit diesen DPT Werten von dem KNX-Bindung zu tun oder muss ich tatsächlich ein Zeitmanagement in eine Rule programmieren?

          Kommentar


            #6
            Grundsätzlich funktioniert die absolute Position fast immer über die Zeit. Der Aktor hat die Information, wie lange es braucht, den Behang von ganz oben nach ganz unten zu fahren, und wie viel länger es braucht, den Behang von ganz unten nach ganz oben zu fahren (gegen die Schwerkraft). Aus diesen beiden Zeiten und der Betriebsdauer des Motors incl. Richtung kann man dann die Position berechnen. Natürlich ist das nicht 100% genau, aber man kann leicht in die obere oder untere Endlage fahren, indem man einfach den Motor erst später abschaltet als eigentlich vorgesehen (als Referenzfahrt). Es gibt auch Aktoren, die über die Stromaufnahme das Erreichen der Endlagen erkennen können und so die entsprechenden Zeiten selbst lernen.
            Die dritte Variante wären im Rollladenmotor eingebaute Aktoren, die dann eine echte Drehwinkelrückmeldung haben können. Diese Variante ist natürlich die genaueste, aber nur selten anzutreffen, weil die Motoren natürlich viel teurer sind als konventionelle Motoren mit einem konventionellen Aktor.

            Wenn ein Aktor die absolute Position zurückmelden kann, kann er auch eine absolute Position ansteuern, dafür muss aber je Kanal eine weitere GA auf das passende KO verbunden werden, dieses KO wird nur selten von vornherein angelegt, weil es praktisch keine konventionellen Steuergeräte (Taster) dafür gibt.

            Kommentar

            Lädt...
            X