Ankündigung

Einklappen
Keine Ankündigung bisher.

Diskussion zu "Alltagsprobleme und deren Lösungen mit dem OpenKNX-Logikmodul"

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

    Zitat von mumpf Beitrag anzeigen
    du musst das l-flag vom readrequest-ko (108) wegnehmen, das antwortet eben auch
    danke!

    Kommentar


      Noch was: Wenn Du im gleichen Logikmodul bist, ist es nicht sehr elegant, einen ReadRequest an sich selbst zu schicken, sind ja immerhin 2 Telegramme (Read und Antwort). ReadRequests sind für eher für andere Geräte gedacht, die das von sich aus nicht können.

      Besser: Du schickst statt dem ReadRequest den "Wert eines anderen KO", findest Du im Ausgangskonverter. Da gibst Du dann die KO-Nummer 413 ein, dann schickt der Kanal 3 den Wert von KO 413 raus. Achtung: DPTs müssen stimmen, sonst wird noch generisch konvertiert.

      Gruß, Waldemar
      OpenKNX www.openknx.de

      Kommentar


        Hallo zusammen,

        hätte da mal wieder ein Alltagsproblem was nach einer oder mehrerer Logiken schreit.

        Was möchte ich realisieren.

        Die Tagesfalle meines Automatikschlosses an der Haustür soll:

        1. ab 22:00 soll die Tagesfalle deaktiviert werden (gelöst mit einer ZSU -> soweit ok)
        2. ab 06:00 soll, wenn die Tür geöffnet wird, die Tagesfalle aktiviert werden
        3. bei fehlender Präsenz im Haus (GA dafür ist vorhanden, über mehrere Logiken der Präsenzmelder, das funktioniert), soll nach Ablauf von 10min, die Tagesfalle ebenfalls deaktiviert werden

        Ich habe es bestimmt schon wieder viel zu kompliziert gedacht, aber hier mein Lösungsversuch bisher:

        Logik 1:
        ZSU am Ausgang die GA welche die Tagesfalle de-/aktiviert
        06:00 -> 1
        22:00 -> 0


        Logik 2:
        UND Logik am Ausgang die GA welche die Tagesfalle de-/aktiviert
        E1 -> Haustür offen (GA eines Reedkontakt an der Haustür) als Trigger, damit beim Schließen der Haustür keine 0 auf den Eingang gesendet wird welche dann die Logik „false“ werden lässt
        E2 -> Präsenz im Haus
        iE3 -> Ausgang Logik 1

        Problem ist nun logischerweise, dass früh um 06:00 die Tagesfalle aufgeht, weil dann iE3 von 0 auf 1 wechselt und alle anderen Eingänge ja 1 haben.
        Gruß David

        Kommentar


          Hi David,

          Was heißt hier zu kompliziert gedacht... Du hast oben 3 Bedingungen aufgestellt und bisher nur 2 Logiken spezifiziert. In erster Näherung ist da zu wenig, damit alle Deine Wünsche funktionieren.

          Neben der unbeabsichtigten Öffnung am Morgen hast Du auch noch das Problem, dass die Tagesfalle offen bleibt, wenn Du nach 22 Uhr die Tür aufmachst. Eigentlich bräuchtest Du noch eine 3. Logik (mindestens, normalerweise braucht man pro Bedingung, die man abdecken möchte, eine oder mehrere Logikkanäle).
          Manchmal kann man aber so optimieren, dass es doch mit weniger Logikkanälen als Bedingungen funktioniert.

          Bei Dir sehe ich die Möglichkeit nicht, aber ich glaube, das gewünschte Verhalten geht mit 4 Logikkanälen:
          1. Logik 1 sendet kein EIN, sondern nur AUS. Damit schließt sie nur die Tagesfalle und öffnet diese nicht.
          2. Logik 2 bleibt so wie sie ist, nur ist Eingang 1 nicht als Trigger, sondern als normaler DPT1-Eingang ausgelegt.
          3. Logik 3 ist ein TOR (sendet beim Schließen eine 0), dass von Logik 1 normal geöffnet und geschlossen wird (intern verbunden). Am Eingang 1 liegt der Türkontakt, also ob die Tür geöffnet wurde. Dadurch hast Du am Ausgang dann jede Türöffnung nach nach 6 Uhr, aber ab 22 Uhr immer eine 0. Vor allem also auch die erste Türöffnung nach 6 Uhr.
          4. Logik 4 ist ein Schalter (RS-Flipflop), bei dem der SET-Eingang mit dem Ausgang vom TOR verbunden wird. Der RESET-Eingang wieder mit Logik 1, diesmal invertiert. Der Schalter wird also mit dem ersten öffnen der Tür nach 6 Uhr geöffnet und um 22 Uhr geschlossen. Diesen verbindest Du jetzt mit Eingang 1 von Logik 2.
          Dadurch, dass E1 vom Logik 2 jetzt nur EIN wird vom ersten öffnen der Tür bis 22 Uhr, passiert außerhalb dieser Zeit nichts mit der Tagesfalle. Um 22 Uhr wird durch die 0 von Logik 1 sowohl die Tagesfalle geschlossen wie auch das TOR geschlossen und der Schalter zurückgesetzt. Erst am nächsten Morgen nach 6 Uhr (TOR auf) wird die erste Türöffnung den Schalter einschalten und so die Tagesfallensteuerung (Logik 2) aktivieren.

          Gruß, Waldemar
          OpenKNX www.openknx.de

          Kommentar


            mumpf super dank dir. Das probier ich gleich mal.
            Frage zu dem RS FlipFlop

            kann ich bei diesem die internen Eingänge verwenden? In der Beschreibung in der ETS liest es sich mit E1 und E2 so, dass wirklich nur die "externen" Eingänge genutzt werden können und dafür dann eine GA angelegt sein muss.
            __________________________________________________ __________________________________

            edit: gerade selber gefunden in der Infobox wenn man in einem der Eingänge ist.
            also 1 oder 3 = Ein / 2 oder 4 = Aus
            Zuletzt geändert von shortyle; 11.04.2025, 21:26.
            Gruß David

            Kommentar


              shortyle Nachdem Du gestern schon mal in Richtung Zustandsautomaten gefragt hattest, hier noch mal ein Beispiel für Deinen Anwendungsfall zur Steuerung der Tagesfalle vom Automatikschloss als alternative Umsetzung verbunden mit Anwendungen von Logikkanälen zur Bereitstellung von Funktionen die die OpenKNX StateEngine bzw. das DFA-Modul von Haus aus nicht bieten, bzw. zur möglichen Vereinfachung von Automatendefinitionen:
              • Uhrzeit/Tageszeit-abhängiges Verhalten: Die Zustandsautomaten können selbst keine tagsszeitabhängige Funktionalität abbilden. Besteht ein entsprechender Bedarf, so kann dieser in vielen Fällen sehr einfach durch die einen Logikkanal konfiguriert als Zeitschaltuhr abgedeckt werden. Das ist auch der offiziell von mir empfohlene Weg um dies zu erreichen, eine direkte Integration ist angesichts der flexiblen Möglichkeiten des Logikmoduls nicht geplant und auch kaum notwendig.
              • Vermeidung von Zwischenzuständen für verzögerte Reaktionen nach längerem Aufrechterhalten eines Status: Im aktuellen Beispiel soll darauf reagiert werden, wenn 10 Minuten lang keine Präsenz mehr vorliegt. Das kann man auf zwei Arten modellieren, wobei durch Einsatz eines Logikkanals zur Vorverarbeitung eine Zustand eingespart werden kann:
                • a) Wechsel bei Ende der Präsenz in einen Zwischenzustand, aus dem nach 10 Minuten per Timeout in den Zielzustand gewechselt wird, oder zurück falls vorher erneut Präsenz erkannt wurde.
                • b) Verzögerung des Ausgabewertes im Logikkanal um 10 Minuten, so dass das der Zustandsautomat erst das Ereignis zu sehen bekommt wenn das Resultat sicher ist. In Fällen in denen sowieso schon ein Logikkanal zur Vorverarbeitung genutzt wird (z.B. Lasterkennung von Geräten mit stärker schwankender Leistungsaufnahme) erhält man diese Möglichkeit "gratis" mit und kann diese leicht nutzen, wenn man man den Zwischenzustand nicht für besondere Aktionen benötigt.
              Zum Vergleich beide Varianten des Zustandsautomaten (ungetester Entwurf, jeweils in grafischer Form und kompakt als Tabelle, ähnlich wie in der ETS):

              Beispiel__Steuerung_Tagesfalle_Automatikschloss_Haustuer.png

              Mit Einsatz eines Logikkanals mit verzögerter Ausgabe wird der Zustandsautomat übersichtlicher (wir benötigen dadurch einen Zustand und auch ein Eingabesymbol weniger, ggf. interessant für komplexere Automaten):

              Beispiel__Steuerung_Tagesfalle_Automatikschloss_Haustuer.Logik_Verzoegerung.png

              Weitere Nützliche Funktionen im Logikmodul:
              • Nachholen von Schaltzeiten
              • Startverzögerung eines Kanals
              Die Zeitschaltuhr kann beim Start den letzten Wert nachholen und somit den Zustand des Automaten passend zur Zeit setzen. Das kann aber erst nach Start des Automaten passieren, was durch eine Startverzögerung des Logikkanals erreicht werden kann.
              Zuletzt geändert von coko; 11.04.2025, 23:05. Grund: Ergänzende Erklärung für Nutzen von Logikkanal mit verzögerter Ausgabe
              OpenKNX www.openknx.de | StateEngine: Universelle Zustandsautomaten in KNX | OpenKNX Konfigurationstransfer

              Kommentar


                mumpf
                ich habe es jetzt mal versucht, aber so richtig klappt es nicht, denn trotz dass die ZSU auf 1 steht. schließt die Tagesfalle bei geschlossener Tür wieder.
                Wenn die Tür auf ist (Reedkontakt 1) dann wird auch die Tagesfalle aktiviert. aber beim schließen der Tür (Reed 0) deaktiviert sich die Tagesfalle, was so ja nicht gewünscht ist.

                Hier mal die Logikergebnisse

                Status Logikkanäle vor dem Türöffnen und nachdem Tür geschlossen wurde
                Logik1 - Ax B1 Cx Dx Q1
                Logik2 - A0 B1 C1 Dx Q0
                Logik3 - A0 Bx Cx D1 Q0
                Logik4 - Ax Bx C0 D0 Q1

                Status Logikkanäle bei geöffneter Tür
                Logik1 - Ax B1 Cx Dx Q1
                Logik2 - A1 B1 C1 Dx Q1
                Logik3 - A1 Bx Cx D1 Q1
                Logik4 - Ax Bx C1 D0 Q1​


                Hier die GA Belegung
                Bildschirmfoto 2025-04-12 um 12.34.37.png


                Hier die TransferStrings und die Screenshots dazu
                Logik 1
                Bildschirmfoto 2025-04-12 um 12.52.29.png
                Bildschirmfoto 2025-04-12 um 12.53.47.png
                Code:
                Logik1 Kanal 2
                OpenKNX,cv1,0xA600:0x9/LOG:0x35/2§f~Name=ZSU%20Tagesfalle§f~Logic=5§f~TimerName=Ha ust%C3%BCr%20Tagesfalle%2022%3A00%20zu§f~Td1DuskDa wn=1§f~Td2DuskDawn=1§f~TRestoreState=1§f~Td2ValueN um=0§f~Td1Value=1§f~Td1HourAbs=6§f~Td1MinuteAbs=0§ f~Td2HourAbs=22§f~Td2MinuteAbs=0§f~NameOutput=ZSU% 20Tagesfalle§f~OOn=0§f~OOnAll=0§;OpenKNX

                Logik 2
                Bildschirmfoto 2025-04-12 um 12.54.32.png
                Bildschirmfoto 2025-04-12 um 12.55.04.png
                Bildschirmfoto 2025-04-12 um 12.54.58.png
                Bildschirmfoto 2025-04-12 um 12.54.52.png
                Bildschirmfoto 2025-04-12 um 13.00.44.png
                Code:
                Logik2 Kanal 3
                OpenKNX,cv1,0xA600:0x9/LOG:0x35/3§f~Name=UND%20Haust%C3%BCr%20auf%2FPr%C3%A4senz%2 FZSU§f~Logic=1§f~Calculate=1§f~NameInput1=Haust%C3 %BCr%20(1%2F0)§f~E1=1§f~NameInput2=Pr%C3%A4senz%20 im%20Haus§f~E2=1§f~I1Name=ZSU%20(1%2F0)§f~I1=1§f~I 1Kind=2§f~I1FunctionRel=-1§f~NameOutput=UND%20Haust%C3%BCr%20auf%2FPr%C3%A4 senz%2FZSU§f~ODelayOnTime=5§f~ODelay=1§;OpenKNX



                Logik 3
                Bildschirmfoto 2025-04-12 um 13.04.30.png
                Bildschirmfoto 2025-04-12 um 13.04.22.png
                Bildschirmfoto 2025-04-12 um 13.04.12.png
                Bildschirmfoto 2025-04-12 um 14.09.23.png
                Logik3 Kanal 4
                OpenKNX,cv1,0xA600:0x9/LOG:0x35/4§f~Name=TOR%20Haust%C3%BCr%20(1%2F0)%2FZSU§f~Logi c=4§f~NameInput1=Haust%C3%BCr%20(1%2F0)§f~E1=1§f~I 2Name=ZSU%20(1%2F0)§f~I2=1§f~I2Kind=2§f~I2Function Rel=-2§f~NameOutput=TOR%20Haust%C3%BCr%20(1%2F0)%2FZSU§ f~OOn=0§f~OOnAll=0§;OpenKNX
                Logik 4
                Bildschirmfoto 2025-04-12 um 14.23.41.png
                Bildschirmfoto 2025-04-12 um 14.23.34.png
                Bildschirmfoto 2025-04-12 um 14.24.35.png

                Code:
                Logik4 Kanal 5
                OpenKNX,cv1,0xA600:0x9/LOG:0x35/5§f~Name=FlipFlop%20TOR%20%2F%20ZSU§f~Logic=6§f~I1 Name=TOR%20ch04§f~I2Name=ZSU%20ch02%20invertiert§f ~I1=1§f~I2=2§f~I1Kind=2§f~I2Kind=2§f~I1FunctionRel =-1§f~I2FunctionRel=-3§f~NameOutput=FlipFlop%20TOR%20%2F%20ZSU§;OpenKNX​
                Gruß David

                Kommentar


                  Naja, klar... Der Ausgang vom FlipFlop muss an den Eingang 1 der Logik 3 (da wo Du derzeit die Haustür hast). Sonst ist ja der ganze Block mit Tor und FlipFlop wirkungslos. Derzeit schließt die Tür einfach wieder die Tagesfalle.

                  Du musst Dich aber damit beschäftigen, wie das funktioniert. Es reicht nicht, das einfach nur nachzubauen, ich mach das hier, damit Du Dir in Zukunft selber helfen kannst...

                  Gruß, Waldemar
                  OpenKNX www.openknx.de

                  Kommentar


                    Zitat von mumpf Beitrag anzeigen
                    Du musst Dich aber damit beschäftigen, wie das funktioniert. Es reicht nicht, das einfach nur nachzubauen, ich mach das hier, damit Du Dir in Zukunft selber helfen kannst...
                    Das weiß ich und ich bin dir und allen dankbar die ihre Zeit investieren um das gesamte Projekt (weiter)entwickeln und vor allem auch für die Hilfe bei Problemen und Fragen.

                    Die Idee mit dem TOR hatte ich auch schon, aber die Umsetzung war mir völlig unklar und das mit dem FlipFlop noch dazu.

                    Zitat von mumpf Beitrag anzeigen
                    Diesen verbindest Du jetzt mit Eingang 1 von Logik 2.
                    und das hatte ich in der Tat überlesen. sry
                    Zuletzt geändert von shortyle; 12.04.2025, 18:53.
                    Gruß David

                    Kommentar


                      Zitat von shortyle Beitrag anzeigen
                      Die Idee mit dem TOR hatte ich auch schon, aber die Umsetzung war mir völlig unklar und das mit dem FlipFlop noch dazu.
                      Am besten versuchst Du mal kleine Teilabschnitte aufzubauen und mit Test GAs auszuprobieren. Parallel dann die Applikationsbeschreibung lesen und immer wieder ausprobieren, nachvollziehen und verstehen.

                      So wirst Du schrittweise sicherer im Umgang mit den Logikfunktionen und auch der Fehlersuche.
                      Ich weiß, es ist komplex, aber dadurch auch sehr flexibel und es lohnt sich.
                      Gruß Bernhard

                      Kommentar


                        Noch ein Tipp: Wenn dann alles läuft, musst Du Dich um das Startverhalten Deiner Logiken kümmern, damit nach einem erneuten Programmieren des Logikmoduls Deine Tagesfalle in einem definierten Zustand landet. Dazu gehört "Schaltzeiten nachholen" bei der Zeitschaltuhr und Read-Telegramme bei den Eingängen, die mit einer GA verbunden sind und eventuell auch eine verzögerte Aktivierung von Logikkanälen, damit sie bei einem Neustart nicht alle gleichzeitig anfangen, was zu machen und potentiell widersprüchliche Befehle auf den Bus oder an andere Logiken schicken.

                        Mit einem Schalter in einer Logik ist es u.U. schwierig, den korrekten Zustand nach einem Neustart herzustellen. Du willst z.B. die Tagesfalle offen haben, nachdem die Tür an dem Tag das erste Mal geöffnet wurde. Nehmen wir an, das passiert erst um 8 Uhr. Wenn Du um 10 Uhr die Logik neu programmierst, wirst Du auch mit korrekten ReadRequests in den Zustand kommen, dass die Tagesfalle zu ist und auf die erste Türöffnung wartet - weil die neu gestartete Logik nicht mehr wissen kann, dass die Tür an den Tag bereits geöffnet worden ist. Das Logikmodul bietet auch die Möglichkeit, den Startzustand statt über ein Lesetelegramm über einen lokal gespeicherten Eingangswert zu ermitteln. Das geht aber nur mit externen Eingängen, nicht mit internen. Dazu müsstest Du dann den Set-Eingang vom Schalter über eine GA mit dem Torausgang verknüpfen und bei dem Eingang "Eingangswert speichern und beim nächsten Neustart als Vorbelegung nutzen" ankreuzen.

                        Das ist alles ein 2. Schritt, nachdem die eigentliche Logik läuft. Ich entwickle die Logiken auch immer so, dass sie erstmal im Normalfall laufen und dann schaue ich, dass sie auch nach einem Neustart im korrekten Zustand "rauskommen".

                        Gruß, Waldemar
                        OpenKNX www.openknx.de

                        Kommentar


                          Hallo zusammen,

                          ich könnte noch einmal einen Tip gebrauchen. Wir haben im EG 7 Rollläden. Fünf davon im Wohn/Ess/Küchenbereich. Wenn diese z.B. durch den Dämmerungswert oder Zentral Auf/Ab, angesteuert werden dann fällt man vor Schreck fast vom Sofa. In der Homematic hatte ich das damals so gelöst, dass ich den Rollladen in der Küche z.B. zuerst starte und alle weiteren dann jeweils um 0,5s verzögert.

                          Ich könnte natürlich 7 Logikkanäle anlegen welche den Zentralbefehl abfragen dann jeweils die entsprechende Rollladen-GA mit entsprechender verzögerung absetzen. Aber gibt es da evtl. einen eleganteren Weg?

                          Gruß Theees

                          Kommentar


                            Zitat von Theees Beitrag anzeigen
                            Ich könnte natürlich 7 Logikkanäle anlegen welche den Zentralbefehl abfragen dann jeweils die entsprechende Rollladen-GA mit entsprechender verzögerung absetzen.
                            Mit dem Logikmodul würde ich das genauso machen
                            Gruß Bernhard

                            Kommentar


                              Zitat von Theees Beitrag anzeigen
                              Aber gibt es da evtl. einen eleganteren Weg?
                              Das ist einfach zu beantworten: Nein . Du vermisst bei 7 Geräten eine Verzögerung in deren Firmware, brauchst 7 Ausgänge (weil 7 verschiedene GA), mit denen Du das korrigieren willst -> ergo 7 Logikkanäle.

                              Gruß, Waldemar
                              OpenKNX www.openknx.de

                              Kommentar


                                Immer interessant… ich will keine externe Logik damit alle Rollos exakt gleich fahren daher nutze ich x Szenen um das sicher zu stellen
                                OpenKNX www.openknx.de | OpenKNX-Wiki (Beta)

                                Kommentar

                                Lädt...
                                X