Ankündigung

Einklappen
Keine Ankündigung bisher.

MDT JAL Aktorik; (ent)sperren ist nicht "synchron"?

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

    MDT JAL Aktorik; (ent)sperren ist nicht "synchron"?

    Ausgangssituation:
    Meine Rollladen funktionieren weitgehend vollautomatisch. Trotzdem hab ich eine Taste je Rollo um auch manuell steuern zu können.
    Für alle Rollotasten gilt KNX-nativ:
    - ein kurzer Druck fährt auf, bzw. stoppt eine Auf- oder Abfahrt
    - ein langer Tastendruck fährt ab

    Wenn der Server (eibpc2) aktiv ist wird das System etwas erweitert:
    meine Rollos kennen u.a. die Zustände/Positionen (%-absteigend) offen, Beschattung, Zu (Schlitze offen), geschlossen (100% zu)
    - wenn der Rollo nicht fährt führt ein langer Tastendruck (neben KNX-nativ) dazu dass die Beschattung freigegeben wird, und wenn die Position < Zu ist, dass die Zu-Position angesteuert wird. Das führt dann dazu dass bei langem Tastendruck die Beschattungsposition angefahren wird wenn Bedarf besteht, wenn nicht, dann wird die Zuposition angesteuert. Wenn der Rollo auf Zu-Position ist dann wird er ganz geschlossen, und wenn der Rollo ganz geschlossen ist dann wird wieder die Zuposition angesteuert. Ein langer Tastendruck wechselt quasi zwischen Zu und geschlossen.
    - wenn der Rollo gerade verfährt und man drückt erneut lang, dann wird sofort 100% angesteuert.

    Das mag jetzt erstmal kompliziert klingen, ist hier aber mittlerweile etabliert und intuitiv.

    Zu Halloween letzten Jahres kam der Wunsch auf dass die Terrassenrollos abends aufbleiben sollen, auch wenn niemand im Haus ist, damit man von draußen die "Spuk-Beleuchtung" sehen kann. Normalerweis gingen die Rollos immer vollautomatisch runter. Für eine Sperrr-Funktion will ich jetzt aber keine Taste opfern, das Handy will ich auch nicht rauskramen.

    Ich habe also kurzerhand die eine Rollo-Taste erweitert: Wenn der Rollo eh schon ganz oben ist, und ich drücke kurz (Auffahrt), dann macht das ja keinen Sinn. Diese Sinnlosigkeit hab ich als weitere Funktion vorgesehen. Ich habe also die Taste per eibpc erweitert:
    - wenn der Rollo ganz oben ist und die Rollo-Taste wird kurz gedrückt, dann wird (zusätzlich zu KNX-nativ) die Sperre gesetzt. Die Sperre wird indiziert durch die LED an der Taste.
    Die Sperre soll nur manuell entfernt werden können, die dient ja gerade dazu die Automatik zu sperren wenn niemand da ist, so dass der Rollo oben bleibt. Wenn jemand da ist kann er auch die Sperre wegnehmen
    Die Sperre soll manuell weggenommen werden wenn
    - erneut die Rollo-Taste kurz gedrückt wird und der Rollo gesperrt ist, oder
    - wenn die Rollo-Taste lang gedrückt wird (Abfahrt)
    das hat damals zu Halloween nicht so wirklich funktioniert, und ich habe damals auf die Schnelle eine Workaround programmiert und das würde ich jetzt gerne säubern.

    Der Grund dass das damals nicht funktioniert war möglich ein
    Bug im JAL-Aktor?

    wie hier ersichtlich:
    image.png​​vor #7 war der Rollo ganz oben und ich hab die Rollo-Taste kurz gedrückt (Auffahrt). KNX-nativ schickt die Taste eine 0 an SingleObjectControl des Aktors. Da der bei 0% steht fährt er nicht weiter hoch und schickt bei

    #7 seinen Status_Position 0%
    #8 der eibPC stellt fest Rollo oben, Rollotaste kurz gedrückt, also setzt er die Sperre
    #9 der Jal-Aktor sendet seinen Sperrstatus

    jetzt drücke ich die Taste lang, will also eine Abfahrt im gesperrten Zustand machen. Die Taste_lang sendet eine 1 an "Abfahrt des JAL", da die Sperre sitzt macht der Aktor nix. Ist ja richtig so.
    #15 der eibpc stellt fest Taste lang gedrückt, Sperre sitzt, also wird die Sperre zurückgenommen!
    #16 der eibpc schickt eine Positionsansteuerung (Zu-Position, 75%) hinterher. Ich erwarte dass die Position angefahren wird, da ja zuvor die Sperre zurückgenommen wurde. Es passiert aber nichts!

    #17 der JAL-Aktor schickt stattdessen seinen Status_Position 0% und
    #18 den Status der Sperre (inaktiv)

    Ist dieses Verhalten so gewollt? Es ist NICHT das Verhalten dass ich erwarte!
    Angehängte Dateien

    #2
    Wieso Bug? Lies doch mal, was Du selber analysiert hast, das beinhaltet die Antwort:
    #15 wird die Sperre zurückgenommen
    #18 wird das zurücknehmen bestätigt
    Wenn Du danach eine neue Position schickst und auf diese keine Reaktion erfolgen würde, dann wäre das ein Bug.
    Vor #18 ist die Sperre einfach noch aktiv.

    Zitat von TabSel Beitrag anzeigen
    Es ist NICHT das Verhalten dass ich erwarte!
    Hier würde ich klar sagen, dass Deine Erwartungshaltung falsch ist.

    Gruß, Waldemar
    OpenKNX www.openknx.de

    Kommentar


      #3
      Zitat von mumpf Beitrag anzeigen
      …Vor #18 ist die Sperre einfach noch aktiv…
      obwohl der Aktor fast 200ms zuvor, zu #15 den Befehl erhielt die Sperre zurückzunehmen.

      für mich ist das Verhalten nicht erwartbar. Wieso soll es 200ms dauern bis die Sperre zurückgenommen wird?

      Ein Statustelegramm ist - wenn überhaupt vorhanden - seltenst „synchron“. Status_Position wird z.B. auch nur alle 10% gesendet…

      ich hätte erwartet dass die Sperre weg ist wenn der Aktor den Befehl dazu erhalten hat, und nicht irgendwann danach…

      ich weiß nicht ob das ein Bug ist oder gewolltes Design, wobei ich in letzterem Fall nicht wüsste was die Entscheidungskriterien dafür wären?

      daher der Thread. Vielleicht kann ja hjk was dazu sagen? So, muss ich mir nen komplizierten Worksround basteln und Telegramme verzögern etc…

      Kommentar


        #4
        Wobei man sich schon die frage stellt, warum es so kompliziert ist die Sperre aufzuheben Die Antwort ist vermutlich das die beiden Telegramme die internen Werte gesetzt haben aber die Logik des Aktors noch nicht gelaufen ist. Und wenn die Logik erst das PosKO und dann das SperrKO auswertet hätte man so ein verhalten.

        Also ja, du müsstest also im Idealfall die Rückgabe auswerten oder sagen man muss erst manuell entsperren wie man gesperrt hat (kurz) und dann Runter fahren (lang).
        OpenKNX www.openknx.de | OpenKNX-Wiki (Beta)

        Kommentar


          #5
          Ah, Ja, das erklärt es, die Logik ist nicht gelaufen zwischen #15 und #16, und die Logik wertet zuerst Pos dann Sperre aus. Das würde es erklären. Stimmt.

          danke traxanos! Trotzdem blöd, muss ich wieder gehirnschmalzen…

          Kommentar


            #6
            Ja definitiv doof. Daher bin ich froh das bei unserem Stack die Telegramme zwar teilverarbeitet werden, aber erst zur normalen Laufzeit syncron abgearbeitet werden. Da hat man das Problem normal nicht.

            PS: Alternativ könntest du auch einfach eine Zeitverzöggerung einbauen von vielleicht 300ms. Durch den Langdruck fällt das sowieso nicht auf.
            OpenKNX www.openknx.de | OpenKNX-Wiki (Beta)

            Kommentar


              #7
              Zitat von TabSel Beitrag anzeigen
              Ein Statustelegramm ist - wenn überhaupt vorhanden - seltenst „synchron“. Status_Position wird z.B. auch nur alle 10% gesendet…
              In KNX ist alles asynchron... das ist ja das tolle. Auch die Schlussfolgerung ist hier eher falsch, oder? Es geht nicht darum, wie häufig Statusmeldungen verschickt werden, sondern dass sie erst verschickt werden, NACHDEM der Zustand eingetreten ist, der zur Statusmeldung führt. Vorher kann man einfach keine Aussage treffen, weil wir nicht wissen, wie das intern implementiert ist.

              Zitat von TabSel Beitrag anzeigen
              die Logik ist nicht gelaufen zwischen #15 und #16,
              Hier habt ihr mich abgehängt... welche Logik läuft da noch?

              Gruß, Waldemar
              OpenKNX www.openknx.de

              Kommentar


                #8
                Mal sehen wie ich das elegant löse. Das sind bei mir alles “gekapselte Makros” für die verschiedensten Taster und das betrifft nur die zwei Terrassen-Rollos, ich will nicht bei allen Tastern verzögern. Danke auf jeden Fall für die Idee und das Stupsen in die richtige Richtung!

                Kommentar


                  #9
                  Zitat von mumpf Beitrag anzeigen
                  …welche Logik läuft da noch?
                  Die Logik des Jalousieaktors. Die wird wohl auch zyklisch laufen und zuerst PosKO auswerten (und nix machen weil gesperrt) und danach das SperrKO.
                  Zwischen #15 und #16 liegen nur wenige ms, da hat der Aktor zwar die Daten erhalten, aber der nächste Zyklus läuft mit zwei veränderten KOs…

                  Kommentar


                    #10
                    Ah... ja, das könnte so sein. Ich finde es schwierig, aus einer Beobachtung gleich auf die Art der Abarbeitung zu schließen. Aber wenn Du davon ausgehst, dann
                    Zitat von TabSel Beitrag anzeigen
                    ich will nicht bei allen Tastern verzögern
                    wäre es vielleicht bei allen Tasten sinnvoll, oder?

                    OpenKNX-Geräte prozessieren übrigens die Telegramme in Eingangsreihenfolge .

                    Gruß, Waldemar
                    OpenKNX www.openknx.de

                    Kommentar


                      #11
                      solange sich MDT hjk nicht dazu äußert ist das ne Blackbox für mich und ich muss mir trotzdem ne Lösung einfallen lassen und dazu möchte ich erst verstehen was hier vor sich geht, oder vor sich gehen kann, um eine gute, stabile Lösung zu finden.
                      ich hätte mir z.B. den Kopf zerbrechen können wie ich Telegramme verzögere bis ein Status_Sperre-inaktiv-Telegramm kommt, wobei das aber ja gar nicht immer kommen muss, weil ja auch gar nicht gesperrt sein könnte, dann warte ich ewig…
                      oder aber ich gehe davon aus die der JAL-Zyklus-Zeit konstant x ms beträgt und es an sequentiell abgearbeiteter JAL-Logik liegt, dann verzögere ich nur relevante Telegramme um x*2 ms…
                      Das soll ja kein Vorwurf sein, vielleicht liegen wir ja auch alle falsch, ich möchte nur ne Lösung finden? Vielleicht liegts ja auch gar nicht an mir…..

                      “Bug” ist nix schlimmes das an einem Dev-Ego kratzen muss bin selbst Dev und entwickle Bugs…

                      Kommentar


                        #12
                        Wenn ich sehe, wie viel Zeit du hier zum Beschreiben investierst, da würde ich lieber die nächsten 10 Jahre das Handy zücken Wenn du dann noch siehst, wie oft eine Fehlbedienung vorkommt (Halloween ist ja relativ selten) sehe ich nur Probleme, oder eben eine akademische Aufgabe.

                        Gruß Florian

                        Kommentar


                          #13
                          Sperre aufheben und Pos kommen mit 28ms Versatz quasi gleichzeitig. Das dürfte das Problem sein, also wie in #2 beschrieben.
                          Du könntest die Pos über eine einfache Logik nochmal schicken. Dann wird es etwas verzögert einfach nochmal gesendet.
                          Eine Verzögerung von 100-200ms ist vermutlich aufwendiger.

                          Kommentar


                            #14
                            Bei meinen JALs hab ich eingestellt dass er bei Rücknahme die Position nachholen soll, das scheint er auch zu tun.

                            Sonst, wenn eh schon ein eibpc läuft, kann man ja einen Workaround machen. Ist ja nicht so, als wenn andere Geräte das nicht haben, ein Gira Tastsensor 4 will Leuchtzeit+100ms für die überlagerte LED Funktion, wenn die LED sonst als Betätigungsanzeige funktioniert

                            Kommentar


                              #15
                              Position nachholen haben die dezentralen JALB1UP.02 leider nicht:
                              IMG_1294.jpg

                              Kommentar

                              Lädt...
                              X