Zitat von mumpf
Beitrag anzeigen
Ankündigung
Einklappen
Keine Ankündigung bisher.
Diskussion zu "Alltagsprobleme und deren Lösungen mit dem OpenKNX-Logikmodul"
Einklappen
X
-
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
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:- Logik 1 sendet kein EIN, sondern nur AUS. Damit schließt sie nur die Tagesfalle und öffnet diese nicht.
- Logik 2 bleibt so wie sie ist, nur ist Eingang 1 nicht als Trigger, sondern als normaler DPT1-Eingang ausgelegt.
- 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.
- 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.
Gruß, Waldemar
- Likes 3
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 = AusZuletzt 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.
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
Zuletzt geändert von coko; 11.04.2025, 23:05. Grund: Ergänzende Erklärung für Nutzen von Logikkanal mit verzögerter Ausgabe
- Likes 2
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
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
- Likes 1
Kommentar
-
Zitat von mumpf Beitrag anzeigenDu 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...
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 anzeigenDiesen verbindest Du jetzt mit Eingang 1 von Logik 2.Zuletzt geändert von shortyle; 12.04.2025, 18:53.Gruß David
Kommentar
-
Zitat von shortyle Beitrag anzeigenDie Idee mit dem TOR hatte ich auch schon, aber die Umsetzung war mir völlig unklar und das mit dem FlipFlop noch dazu.
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
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 anzeigenIch könnte natürlich 7 Logikkanäle anlegen welche den Zentralbefehl abfragen dann jeweils die entsprechende Rollladen-GA mit entsprechender verzögerung absetzen.Gruß Bernhard
Kommentar
-
Zitat von Theees Beitrag anzeigenAber gibt es da evtl. einen eleganteren Weg?. 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
Kommentar
Kommentar