Ankündigung

Einklappen
Keine Ankündigung bisher.

Loxone Automatikjalousie und KNX

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

  • raul999
    antwortet
    Ich kämpfe auch mit dem Thema. Gerade bei den Zentral Auf oder Zentral AB merke ich es besonders.
    Verbessert sich die Geschwindigkeit wenn man auf den Miniserver V2 + KNX Extension umsteigt oder bleibt es bei den 10 bis 15 Telegrammen pro Sekunde?

    Einen Kommentar schreiben:


  • mno
    kommentierte 's Antwort
    Es handelt sich nur um das eine Bild das oben angezeigt wird. Beim Attachment "image_36425.loxone" handelt es sich um das Loxone Konfigurationsfile. Entschuldige den nicht passenden Namen.

  • cricom
    antwortet
    @mno: leider kann ich die Bilder nicht sehen, schaut aus, als ob beim Upload was schiefgegangen ist.
    LG Christian

    Einen Kommentar schreiben:


  • mno
    antwortet
    Inspiriert durch den Lösungsansatz von neipsi habe ich eine Integration der KNX Jalousien in die Automatikjalousie umgesetzt. Dabei wird die Jalousie- und Lamellenposition über je einen Prozentwert (0-100%) angesteuert. Der KNX Jalousie-Aktor (ABB) liefert zeitversetzt die jeweilige aktuelle Position in Prozent an Loxone zurück.
    Falls die Jalousie über Loxone bewegt wird, wird die neue Jalousieposition sofort an den KNX Aktor gesendet. Falls aber die Jalousie über den KNX Taster bedient wird, erfolgt eine Sperre der Ansteuerung der KNX Aktoren über Loxone bis die Automatikjalousie die neue Ist-Position angefahren hat. Das hat zur Folge, dass zuerst die Jalousie fährt und erst nach dem Beenden der Fahrt die Automatikjalousie in Loxone nachgezogen wird. Das ist für mich aber kein Problem, da eine manuelle Bedienung nur sehr selten erfolgt.
    Beispiel KNX Aktoren:
    1. Position Jalousie: 1/1/164 (EIS6 0-100%)
    2. Position Lamellen: 1/1/165 (EIS6 0-100%)
    Beispiel KNX Sensoren:
    1. Position Jalousie: 1/1/162 (EIS6 0-100%)
    Beispiel Loxone Config:


    Klicke auf die Grafik für eine vergrößerte Ansicht

Name: image_36424.jpg
Ansichten: 278
Größe: 178,2 KB
ID: 311327

    Falls jemand dieses Beispiel testen möchte wünsche ich viel Spaß, gebe aber keine Gewähr auf Funktions- bzw. Vollständigkeit.

    Einen Kommentar schreiben:


  • neipsi
    antwortet
    Ich habe folgenden Aufbau:

    Der Chef ist der KNX-Jalousieaktor von MDT. In Loxone will ich aber die Visualisierung vom Automatkjalousie-Baustein verwenden. Ich hab zuerst auch in Loxone herumgedoktert, bin jetzt aber den Weg über ioBroker gegangen. Hier mein Script, anschließend die Erklärung:

    Code:
    var Jalousien = [];
    Jalousien.push({name:'J1',loxid:'1771f065-013d-89b8-ffff79aba8a7b59c',t_up:37,t_down:37,modus:null});
    Jalousien.push({name:'J2',loxid:'1771f068-023d-b2bc-ffff79aba8a7b59c',t_up:55,t_down:55,modus:null});
    Jalousien.push({name:'J3',loxid:'1771f066-01b6-9e1f-ffff79aba8a7b59c',t_up:37,t_down:37,modus:null});
    Jalousien.push({name:'J4',loxid:'1771f063-00c1-7587-ffff79aba8a7b59c',t_up:37,t_down:37,modus:null});
    Jalousien.push({name:'J5',loxid:'17712410-0191-14bd-ffff79aba8a7b59c',t_up:37,t_down:37,modus:null});
    Jalousien.push({name:'J6',loxid:'1771f14a-0320-0439-ffff79aba8a7b59c',t_up:37,t_down:37,modus:null});
    Jalousien.push({name:'J7',loxid:'1771f106-03b7-e2bb-ffffcf75c05c7cf1',t_up:55,t_down:55,modus:null});
    // Event-Handler anmelden
    for (var i in Jalousien)
    {
        let j = Jalousien[i];
        
        on({id: 'loxone.0.'+j.loxid+'.down',change: 'any'},loxone_fahrt);
        on({id: 'loxone.0.'+j.loxid+'.up',  change: 'any'},loxone_fahrt);
        on({id: 'knx.0.Beschattung.Status.Verfahrstatus_ab_'+j.nam e,  change: 'any'},knx_fahrt);
        on({id: 'knx.0.Beschattung.Status.Verfahrstatus_auf_'+j.na me, change: 'any'},knx_fahrt);
        on({id: 'knx.0.Beschattung.Status.Position_'+j.name,change : 'any'},position);
        //on({id: 'knx.0.Beschattung.Status.Lamellenposition_'+j.nam e,change: 'any'},position);
    }
    /**
     * Jalousie-Fahrt ausgelöst durch Loxone-Baustein
     */
    function loxone_fahrt (o)
    {
        var richtung = o.id.split('.').pop();
        var j;
        
        for (var i in Jalousien)
        {
            if (Jalousien[i].loxid == o.id.split('.')[2])
            {
                j = Jalousien[i];
                break;
            }
        }
        if (!j)
        {
            return;
        }
        
        if (j.modus == 'KNX')
        {
            return;
        }
        else if (o.state.val)
        {
            setState('knx.0.Beschattung.Auf_Ab.'+j.name, (richtung == 'down'));
            j.modus = 'Loxone';
            
        }
        else
        { 
            // Stop
            setState('knx.0.Beschattung.Lamellenverstellung___ Stop.'+j.name,false);
            setTimeout(function() { j.modus = null;  }, 500);
        }
    }
    /**
     * Jalouxie-Fahrt ausgelöst durch KNX
     */
    function knx_fahrt (o)
    {
        var richtung = o.id.split('.').pop().split('_')[1].replace('ab','down').replace('auf','up');
        var name = o.id.split('.').pop().split('_').pop();
        var j;
        for (var i in Jalousien)
        {
            if (Jalousien[i].name == name)
            {
                j = Jalousien[i];
                break;
            }
        }
        if (!j)
        {
            return;
        }
        if (j.modus == 'Loxone')
        {   return;
        }
        else if (o.state.val)
        {
            setState('loxone.0.'+j.loxid+'.'+richtung,true);
            j.modus = 'KNX';
        }
        else
        {
            setState('loxone.0.'+j.loxid+'.'+richtung,true);
            setTimeout(function() { j.modus = null;  }, 500);
        }
    }
    /**
     * Position in Loxone nachführen
     */
    function position (o)
    {
        var name = o.id.split('.').pop().split('_').pop();
        var j;
        for (var i in Jalousien)
        {
            if (Jalousien[i].name == name)
            {
                j = Jalousien[i];
                break;
            }
        }
        if (!j)
        {
            return;
        }
        if (j.modus != null)
        {
            // in 100 ms nochmal probieren ob Status frei ist
            setTimeout(function () { position(o); },100);
            return;
        }
        var p_knx = o.state.val;
        var p_lox = getState('loxone.0.'+j.loxid+'.position').val;
        if (Math.abs(p_knx - p_lox) > 2)
        {
            var richtung = (p_knx < p_lox ? 'up' : 'down');
            var dauer = Math.round(Math.abs(p_knx - p_lox) * j['t_'+richtung] * 10);
            
            setState('loxone.0.'+j.loxid+'.'+richtung,true);
            j.modus = 'KNX';
            
            setTimeout(function ()
            { setState('loxone.0.'+j.loxid+'.'+richtung,true);
              j.modus = null;
            },dauer);
        }
    }
    Im ioBroker hab ich den Loxone und den KNX-Adapter im Einsatz. Im Array "Jalousien" lege ich mir Objekte für alle Jalousien an. Da brauche ich jeweils den Namen (wird verwendet für die KNX-Gruppenadressen) und die ID im Loxone_Adapter. Dann noch die Zeiten für Auf- und Abfahrt und den Modus.

    Beim Initialisieren mache ich für jede Jalousie 2 Event-Handler auf "Up" und "Down" beim Loxone-Baustein, und dann je 2 auf die KNX-Adressen "Verfahrstatus_ab" und "Verfahrstatus_auf". Zusätzlich melde ich auch noch die KNX-Position an, dazu später mehr.

    Also wenn in Loxone der Ausgang "Auf" oder "Ab" gesetzt wird, springe ich in die Funktion "loxone_fahrt", wenn sich in KNX der Status für Auf und Ab ändert, springe ich in die Funktion "knx_fahrt".

    In den beiden Unterfunktionen suche ich mir zuerst jeweils über das globale Jalousien-Array die Zuordnung heraus. Wenn von Loxone aus bedient wurde, setze ich die entsprechende KNX-Gruppenadresse, genauso bei Stop. Wenn in der KNX-Welt bedient wurde, simuliere ich in Loxone den "Fahrbefehl".

    Wichtig ist jetzt dass ich im globalen Array den jeweiligen Modus setze. Wenn ich in Loxone starte, darf die KNX-Unterfunktion nicht noch einen Fahrbefehl generieren. Beim Stoppen hab ich ein Timeout von 500ms eingebaut, weil sich das immer ein wenig überschnitten hat.


    Zusätzlich liefert mir der KNX-Baustein nach Fahrtende die absolute Position. Auf diesen reagiere ich in der Unterfunktion "position". Da warte ich zuerst bis der Status "frei" wird. Danach lese ich mir die Loxone-Position aus. Wenn da ein Unterschied aufgetreten ist (also die absolute Position in KNX von Loxone abweicht), rechne ich mir die Differenz aus und starte eine Loxone-Fahrt und beende diese nach x Millisekunden. Zuerst wollte ich die absolute Position in Loxone setzen, der ist mir aber immer bis Endanschlag gefahren, keine Ahnung warum. Aber so funktionierts jetzt auch.


    Die automatische Beschattung übernimmt mir der KNX-Baustein. Dazu habe ich bei allen Jalousie-Bausteinen die Himmelsrichtung auf Norden eingestellt, somit ist das unwirksam. Ich setze nur über die Automatik-Bausteine die KNX-Gruppenadressen. Die Logik kann aber natürlich auch in Loxone passieren.



    Ich hoffe ich konnte mich einigermaßen verständlich ausdrücken... Vielleicht kann das ja wer brauchen.

    Einen Kommentar schreiben:


  • sprobst
    kommentierte 's Antwort
    Stimmt, da war ja noch was... Jetzt wo Du es erwähnst - die manuelle Steuerung an meinen Aktoren ist genau aus dem Grund auch deaktiviert... :-(

  • Christian Fenzl
    kommentierte 's Antwort
    sprobst Darum geht’s doch nicht, sondern dass der Status beim KNX-Aktor IMMER stimmt, aber der von Loxone nur, wenn du _nur_ von Loxone steuerst (und bei KNX gibt’s diesen Single-Point-Of-Failure nicht).

  • sprobst
    kommentierte 's Antwort
    Woher kennt KNX den echten Zustand? Dazu müsste es ja irgendwo (Jalousie/Rolladen/Motor) Sensoren geben die etwas an KNX zurückmelden. Ansonsten schätzt auch der KNX Aktor nur an Hand von Laufzeiten oder ähnlichem...

  • AlexAn
    kommentierte 's Antwort
    Nein da es keinen Eingang beim Baustein Automatikjalousie gibt - gleiche Thema wie bei der Lichtsteuerung

  • FabiaDarkblue
    antwortet
    Gibt es eine Möglichkeit, in diese Ansteuerung der Jalousie die echte Positions-Rückmeldung vom KNX-Aktor mit einfließen zu lassen, damit Loxone und KNX immer zu 100 % synchron sind?

    Einen Kommentar schreiben:


  • SEDATEK
    kommentierte 's Antwort
    hallo Andy,

    Vielen Dank, Herr Andy, für diese Lösung. Ich habe versucht, dass es funktioniert, aber ich habe ein knx-Touchpanel. Die Bewegung der Jalousie durch touch panel wird nur mit MOVE TO POSITION Befehle ausgeführt. Mein Problem ist . Ich kenne die Position leider nicht wenn ich das Touchpanel benutze. Wie kann ich dieses Problem bitte lösen?

  • TomT
    kommentierte 's Antwort
    Jetzt habe ich mich doch noch dazu durchgerungen, nochmals nachzufragen:
    Ich habe das bei allen Jalousien im Haus im Einsatz. Aber einem Phänomen komme ich nicht auf die Spur: Wenn die Lox Automatik in den Beschatungsmodus geht, sprich die entspr. Jalousien herunterfährt: die fahren ganz nach unten, warten etwas und drehen dann in die enspre. Neigung der Lamellen. Dabei fährt nach dem Zufallsprinzip die ein oder andere Jalousie wieder ganz nach oben! Lox denkt aber immer noch, die wäre unten und in Position. Meistens (auch nicht immer) kommt es beim nachjustieren der Lamellen dazu, dass die Jal wieder nach unten und in die korrekte Position fährt.... Dem WAF ist dieses Gehabe der Automatik gar nicht zuträglich, wie ihr euch denken könnt...

    Hat jemand eine grobe Idee, was ich noch alles prüfen/nachjustieren/im Programm abfangen kann?

    Danke und Gruß, TomT

  • Christian Fenzl
    antwortet
    Hast du die komplexe Beschaltung schon mal gebaut, damit man sich das anschauen und evt. optimieren kann.
    Das Thema ist ja von allgemeinem Interesse, vielleicht kommt was Sinnvolles dabei raus.

    Einen Kommentar schreiben:


  • Labmaster
    antwortet
    Nein es geht hier wirklich um den Trigger um damit KNX Kommado auf den KNX Bus geschrieben wird.
    Also angenommen ich habe ein Signal mit einm Analogwert welcher auf den Bus soll.
    Wenn ich diesen direkt mit dem KNX Aktor verbinde, dann wird jeweils ein KNX Tekegram auf dem Bus generiert sibald sich der Wert ändert. Soweit so gut.
    Ich suche nun zusätzlich eine Möglichkeit das KNX Telegram auf den Bus zu schreiben, getriggert durch ein Flanke an einem zusätzlichen Digital Signal, auch wenn sich der Analoge Wert eben nicht geändert hat.

    Ich bekomme das auch grundsätzlich hin, muß dazu aber einen Analogspeicher, eine Verzögerung + Vergleicher sowie einige Logikbausteine verwenden. Also viel Aufwand für eine kleine Aufgabe welche ich jedoch sehr sehr oft brauchen werde.
    Ich dachte eben da gibt es einen Trick oder einen Baustein den ich nicht auf dem Schirm habe ....

    Einen Kommentar schreiben:


  • AndyH
    kommentierte 's Antwort
    Das klingt nach einer guten Lösung, um KNX und Loxone zu verbinden.
    Allerdings:
    - Nur durchführbar, falls der entsprechende KNX-Jalousieaktor die Statusmeldung ausgibt, ob gerade das Relais/der Kanal angesteuert wird, oder nicht.
    - Bei meinem Merten-Jalousieaktor leider nicht gegeben: Ich kann daher mit der Lösung nicht arbeiten bzw. nur für meinen anderen Aktor (Busch-Jäger).
Lädt...
X