OK I try, manchmal hilft es mir auch schon allein hier etwas zu posten und danach denke ich mir, ach warum hast du das noch nicht probiert oder vorher gesehen. Z.B. das ich "Wert für aus senden" auch abschalten kann. So kann ich die Logiken klein stückeln. Zeitschaltuhr habe ich jetzt auch eine erstellt. Jetzt noch die "Und" Logik angehen. Ich werde berichten 🙃
Ankündigung
Einklappen
Keine Ankündigung bisher.
Diskussion zu "Alltagsprobleme und deren Lösungen mit dem OpenKNX-Logikmodul"
Einklappen
X
-
Hi Theees,
gehen wir mal Deine Aussagen durch, da sind ein paar Sachen, die so nicht sein können/sollten:
Zitat von Theees Beitrag anzeigenDer VEML gibt eh unter 46lux nichts raus und springt danach direkt auf 0.
Zitat von Theees Beitrag anzeigenOK scheinbar funktioniert das mit dem Senden bei Abweichung nicht.
Sorry, aber ich kann das so nicht stehen lassen. Wenn Du recht hast, dann ist das ein Fehler, der korrigiert werden muss. Und wenn nicht, dann denkt hier jeder, der das liest, dass da Fehler sind, obwohl alles funktioniert.
Bei den anderen Sachen hat Bernhard ja schon was gesagt:- Damit nicht wiederholt wird, musst Du bei der Logik (beim OR) auf "nur bei Änderung" stellen
- Um zu bestimmten Zeiten was zu machen, musst Du Zeitschaltuhren verwenden
- Um mehrere Aussagen zu verbinden, musst Du logische Verknüpfungen machen, in diesem Fall wahrscheinlich ein UND. Eine Logikfunktion "verwursten" hab ich nicht
.
Wir machen übrigens Anfang April ein OpenKNX-User-Treff in Wiesbaden, da wird das Logikmodul sicher auch ein Thema sein.
Gruß, Waldemar
Kommentar
-
Hallo Waldemar,
Zitat von mumpf Beitrag anzeigenDas kann nicht sein. Ich bekomme Werte bis 1 Lux ohne Probleme. Wie hast Du das getestet?
Zitat von mumpf Beitrag anzeigenAuch das macht mich stutzig. Erneut: Wie hast Du das getestet?
Zitat von mumpf Beitrag anzeigen"nur bei Änderung"
Mit den Zeitschaltuhren und dem UND teste ich mich mal ran.
Das mit dem Treffen habe ich schon gesehen, aber Wiesbaden ist ein gutes Stückchen weg 🙁
Kommentar
-
Zitat von Theees Beitrag anzeigenaber Wiesbaden ist ein gutes Stückchen weg 🙁----------------------------------------------------------------------------------
"Der Hauptgrund für Stress ist der tägliche Kontakt mit Idioten."
Albert Einstein
Kommentar
-
Hallöchen,
ich habe mal wieder eine Aufgabe an der ich irgendwie scheitere.
Ziel ist folgendes:
Wenn in einem Raum (Raum1) eine bestimmte Szene aktiviert ist (GA 16/2/1 - Szene 1) und in einem weiteren Raum (Raum 2) von einer bestimmten Szene (GA 16/2/2 - Szene 5) auf eine andere bestimmte Szene (GA 16/2/2 - Szene 3) gewechselt per Toogle-Taster gewechselt wird, dann soll statt der Szene 3 die Szene 4 auf GA 1/1/2 aktiviert werden.
Wenn die UND Logik aus Raum1 mit Szene 1 und Raum2 mit Szene 5 nicht erfüllt ist, soll in Raum 2 "normal" von Szene 5 auf Szene 3 gewechselt werden.
Ich hoffe das war jetzt nicht ganz zu verwirrend
Meine erste Idee war, das Ganze mit mehreren Logikkanälen abzubilden.
Einmal ein UND für die Szenen in den beiden Räumen, welche wahr ist wenn Eingang 1 > Szene 1 (GA 16/2/1) hat und Eingang 2 > Szene 5 (GA 6/2/2)
Eine weitere Logik die den Toogle von Szene 5 auf Szene 3 auswertet -> hier fehlt mir aber die Fantasie mit welcher Logik ich das realisieren kann
Und zum Schluss eine TOR Logik die an Eingang 1 die Szene 4 "wartend" hat und an Eingang 2 dann das Tor geöffnet wird wenn der Google von 5 auf 3 erfolgt und Logik 1 Wahr ist.
aber keine Ahnung ob das so überhaupt klappt mit den Szenen.Zuletzt geändert von shortyle; 07.03.2025, 10:51. Grund: GA korrigiert, damit in folgenden Posts diese schlüssig sindGruß David
Kommentar
-
Ok, was hast Du denn bisher versucht umzusetzen und dann mit dem Gruppenmonitor kontrolliert?
Das ist tatsächlich der beste Weg die Logiken kennenzulernen und das Gewünschte schrittweise weiterzuentwickeln.
Eine einfache Möglichkeit einer Szenenersetzung (ein Baustein Deiner Logik) ist es am Ausgang eines UND bei z.B. False den Wert von Eingang1 senden zu lassen (Szene vom Eingang1 wird unverändert) und bei True am Ausgang eine feste andere Szene als Ersatz zu senden. Wann diese gesendet wird entscheidet die Auswertung der Szenen am Eingang1.Gruß Bernhard
Kommentar
-
Noch ein Hinweis.
Szenen abhängig von aktuellen Szenen in anderen Räumen zu wechseln mag durchaus sinnvoll sein und ist auch mit dem Logikmodul gut umsetzbar.
Wenn jedoch Sequenzen von Szenen ausgewertet werden sollen, halte ich das in der Praxis für sehr instabil (Initalisierung, manuelle Betätigungen,…) und vor allem mit dem Logikmodul nur noch sehr schwer und vor allem unübersichtlich umsetzbar.Gruß Bernhard
Kommentar
-
Zitat von willisurf Beitrag anzeigenEine einfache Möglichkeit einer Szenenersetzung (ein Baustein Deiner Logik) ist es am Ausgang eines UND bei z.B. False den Wert von Eingang1 senden zu lassen (Szene vom Eingang1 wird unverändert) und bei True am Ausgang eine feste andere Szene als Ersatz zu senden. Wann diese gesendet wird entscheidet die Auswertung der Szenen am Eingang1.
Das Einzige was noch nicht so recht klappt ist, wenn beide Eingänge wahr sind und Eingang 1 vor Eingang 2 auf false geschaltet wird, dann soll im Anschluss die Logik quasi nicht mehr auswerten wenn Eingang 2 auf false geschaltet wird.
GAs
Bildschirmfoto 2025-03-07 um 10.57.28.png
Logik
Bildschirmfoto 2025-03-07 um 10.47.03.png
Eingang 1 -> toogle zwischen Szene 1 und 2 (andere GA als Eingang2)
Bildschirmfoto 2025-03-07 um 10.37.31.png
Eingang 2 -> toogle zwischen Szene 1 und 2 (andere GA als Eingang1)
Bildschirmfoto 2025-03-07 um 10.37.48.png
Ausgang
Bildschirmfoto 2025-03-07 um 10.38.19.png
Gruß David
Kommentar
-
Zitat von shortyle Beitrag anzeigenDas Einzige was noch nicht so recht klappt ist, wenn beide Eingänge wahr sind und Eingang 1 vor Eingang 2 auf false geschaltet wird, dann soll im Anschluss die Logik quasi nicht mehr auswerten wenn Eingang 2 auf false geschaltet wird.
Du kannst für solch eine Sequenzauswertung von Botschaften ein TOR verwenden. Das wird aber wie angekündigt etwas kompliziert.
In Stichworten: Eine Botschaft am Dateneingang kommt durch, wenn nicht vorher eine Botschaft am Toreingang das Tor gesperrt hat. Soweit noch halbwegs überschaubar.
Du musst aber mit einem Timeout das Tor auch wieder freigeben, dazu könntest Du einen weiteren Logikkanal mit Treppenlicht nutzen.
Ich würde Dir empfehlen, das mal mit Test GAs auszuprobieren. Du wirst dabei viel lernen.
Ob es am Ende sinnvoll ist das so zu tun, wirst Du dann herausfinden.Zuletzt geändert von willisurf; 07.03.2025, 12:28.Gruß Bernhard
Kommentar
-
Zitat von shortyle Beitrag anzeigenDas Einzige was noch nicht so recht klappt ist, wenn beide Eingänge wahr sind und Eingang 1 vor Eingang 2 auf false geschaltet wird, dann soll im Anschluss die Logik quasi nicht mehr auswerten wenn Eingang 2 auf false geschaltet wird.Da oben steht, dass Du - wenn Eingang 2 triggert - ein E1=TRUE und ein E2=FALSE haben willst. Wobei Du dann A=FALSE haben willst.
Wertetabelle:Ergebnis ist eine OR-Logik mit invertiertem E1. Rest bleibt gleich.E1 E2 A F F T F T T T F F T T T
Gruß, Waldemar
P.S.: Immer gleich an Sequenzen zu denken ist insofern schlecht, weil man dann auch an die Zeiten zwischen den Ereignissen denken muss. Das macht vieles komplizierter.
Kommentar
-
Hallo zusammen,
ich suche die Vergleicherfunktion im OpenKNX Logikmodul.
Ich möchte im 7 Uhr die Rollos auf 30% hochfahren aber sie sollen nicht wieder zurück auf 30% fahren wenn sie offen sind. Nach meiner Recherche man man das mit einem Vergleicher. Der mir dann aufgrund des Rollostatus dann entweder ne 1 oder ne 0 schickt. Aber ich finde es einfach nicht.
zeitschaltuhr für 7Uhr als Schritt eins, der mir ne 1 sendet aber dann weis ich leider nicht weiter, welchen Operator man verwendet.
Kann mir jemand nen Schubbs geben?
Kommentar
-
Genau, jeder Eingang vom Logikmodul hat einen Eingangskonverter, der aus einem DPTx einen booleschen Wert macht. Bei Dir würde Wertintervall 31-100 Sinn machen. Wertintervall repräsentiert einen Vergleicher mit Konstanten Werten. Mit einem Differenzintervall kann man dann auch 2 Werte vom Bus miteinander vergleichen.
Gruß, Waldemar
Kommentar
-
Hallo,
ich habe das Zählermodul in der Version 0.4.1 Beta im Einsatz und möchte neben dem Auslesen eines SML-Zählers zusätzlich noch die Betriebsminuten meiner Heizungspumpen ermitteln. Das klappt auch soweit.
Der Betriebsstundenzähler schickt nur bei Eingangsänderung die Betriebszeit auf dem Bus. Nachdem zumindest eine Pumpe zumindest in der Heizperiode ziemlich den ganzen Tag läuft, möchte ich bei eingeschalteter Pumpe alle 15 min einen ReadRequest auf die entsprechende GA machen. (auch zum Üben im Umgang mit Logiken).
Ich habe 2 Logiken definiert.
Logik 1 mit ZSU, die jede Minuten eine 1 sendet. Meine Frage hier: Wie stelle ich ein, dass nur alle 15min eine 1 gesendet wird? Müsste ich 4 Schaltpunkte definieren, mit jeder Stunde und 15min, 30min, 45min und 00 min?
Das zweite ist eine UND Logik wobei E1 der Trigger der ZSU aus Logik 1 ist und E2 der Schaltzustand der Pumpe. Ausgang ist dann ein ReadRequest mit dem DPT der Pumpenlaufzeit (DPT 12). Das klappt auch, außer das 2 Antworten kommen, einmal mit 0 und dann die richtige Laufzeit.
image.png
image.png
Mhhh.
Was mache ich falsch?
Danke Euch?
Kommentar
-
Du musst das L-Flag vom ReadRequest-KO (108) wegnehmen, das antwortet eben auch.
Und das mit alle 15 Minuten - gibt viele Möglichkeiten. Die einfachste ist, den Ausgang der Logik auf zyklisch senden alle 15 Minuten zu setzen und den Eingang mit AUS vorbelegen und invertiert auf eine OR-Logik zu legen, der triggert dann beim Neustart (ist noch ein Bug, dass ein EIN nicht beim Neustart triggert, ich hab da noch nicht gesucht).
Wenn es bestimmte 15 Minute sein sollen (also z.B. 5, 20, 35, 50) dann sind entweder 4 Schaltzeiten oder eine Start-Schaltzeit und wieder zyklisch senden.
Gruß, Waldemar
Kommentar
Kommentar