Ankündigung

Einklappen

Serverwartung 21.2.



Am 21.2. im Laufe des späten Abends wird eine Serverwartung durchgeführt. Das Forum ist dadurch für gut zwei Stunden nicht erreichbar.
Es wird eine Wartungsseite geschaltet.

Mehr anzeigen
Weniger anzeigen

OpenKNX-Logikmodul release

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

    Moinsen, eine Frage da ich ein Logikmodul benötige. Kann ich das Logikmodul eigentlich auch auf dem OpenKNX REG1-Eth installieren und diesen dann zusätzlich als IP Router nutzen?



    Kommentar


      Nein. entweder oder
      OpenKNX www.openknx.de | OpenKNX-Wiki (Beta)

      Kommentar


        Ein Router kann keine KOs haben - damit fällt jegliches weitere Modul aus. Also wie traxanos schon schrieb: Du kannst nur eines haben.

        Aber ehrlich gesagt ist unsere Hardware wirklich nicht teuer. Oder Du compilierst Dir selber was für einen RP2040 oder einen ESP32. Theoretisch ginge sogar was für WLAN (ungetestet). Da geht schon viel - Du musst etwas (wenig) Geld oder einige Zeit investieren, dann hast Du ein OpenKNX-Modul.

        Gruß, Waldemar
        OpenKNX www.openknx.de

        Kommentar


          Hi zusammen,

          zunächst einmal das obligatorische DANKE. Das OpenKNX Projekt ist klasse, insbesondere das Logikmodul. Ich stehe aber gerade ein bisschen auf dem Schlauch:

          Ich möchte mittels Hysterese einen Frostalarm für meine Rollläden realisieren. Kann ich dabei den Ausgang vorbelegen falls die Logik undefiniert sein sollte?

          Konkret: Untere Grenze ist aktuell 0.2°C, obere Grenze 1.2°C. Wenn ich das OpenKNX Gerät mit dem Logikmodul nun neu starte, ist der Ausgang undefiniert, wenn die Temperatur genau zwischen den beiden Grenzen ist. Hier wäre es toll, wenn ich dann den Frostalarm zur Sicherheit "Ein" schalte. Mir ist klar, dass ich den Temperatureingang anstatt vom Bus zu lesen auch entsprechend vorbelegen kann. Das fühlt sich aber wie eine Krücke an, da ich ja dann auch immer im Sommer grundsätzlich bei Neustart den Frostalarm an habe und immer warten muss, bis mein Thermometer einen anderen Wert sendet. Gibt es eine Möglichkeit, zum Beispiel bei Hysterese oder generell den AUSGANG vorzubelegen, sodass das Modul einen Wert auf den Bus sendet falls der Kanal undefiniert ist?

          Kommentar


            Kein Problem, Du kannst in einem zweiten Logikkanal die Außentemperatur einlesen und bei z.B. kleiner 2°C das Ausgangs KO des Frostalarms einmalig nach einem Reset direkt beschreiben.
            Für das Einmalige kannst Du einen zweiten Eingang dieses neuen Logikkanals mit 1 initialisieren UND verknüpfen und außen keine GA verknüpfen. Dann wird das nur einmalig ausgeführt. Startverzögerung sinnvollerweise 1s länger als beim Frostalarm (wobei das glaube ich auch nicht unbedingt nötig, aber schöner ist).
            Zuletzt geändert von willisurf; 04.01.2026, 11:06.
            Gruß Bernhard

            Kommentar


              Sorry, aber das verstehe ich nicht. Kannst du ein bisschen mehr dazu schreiben?

              Ich fasse mal zusammen, was ich verstanden habe:

              Ich mache eine neue Logik, UND verknüpft.
              Eingang 1: Externer Eingang, meine Außentemperatur
              Eingang 2: Externer Eingang, keine Gruppenadresse aber "EIN" vorbelegt.

              Einstellungen Eingang 1, Hysterese bei <=2 "AUS", bei >2 "EIN"
              Einstellungen Eingang 2: Vorbelegung mit "EIN"

              Generelle Einstellungen: Logik auswerten erst wenn alle Werte gültig sind, Logik sendet ihren Wert bei jedem Eingangstelegramm.

              erwartetes (und für mich auch logisches) Ergebnis: Der Kanal sendet immer, wenn eine Temperatur übertragen wird sein "EIN" oder "AUS".

              Wo habe ich dich missverstanden?

              Edit: Ich habe auch nochmal ohne diesen zweiten Logikkanal getestet: Das Logikmodul beschreibt bei Neustart und einem Wert im Hystereseintervall bei mir immer mit "EIN". Das scheint also nicht so zu sein, wie in der Dokumentation beschrieben. ["Falls vorher noch kein gültiges Signal erzeugt worden ist (z.B. beim Gerätestart), wird auch weiterhin kein Signal erzeugt. Somit beginnt ein Hysterese-Konverter nach einem Systemstart erst zu arbeiten, wenn einer der beiden Schwellwerte erreicht wurde."] Scheinbar wird (zufällig wie gewünscht) hier immer für mich passend gesendet.

              Anmerkung: Ich habe auch versucht, bei der Temperatur mit einem invertierten Eingang zu arbeiten. Mein gewunschtes Ergebnis war "bei Eingang <=x, sende "EIN", bei >y sende "AUS". (Der Frostalarm soll ja EIN sein, wenn es kalt ist.) Das Logikmodul reagiert aber sehr komisch und nicht nachvollziehbar. Diesen Swap von EIN auf AUS und andersherum mache ich jetzt stattdessen im Ausgang.
              Zuletzt geändert von knxDes; 04.01.2026, 12:31.

              Kommentar


                Zitat von knxDes Beitrag anzeigen
                Das Logikmodul reagiert aber sehr komisch und nicht nachvollziehbar.
                Um gezielt helfen zu können, brauchen wir eine genaue Beschreibung und Screenshots inkl. gefiltertem Gruppenmonitorauszug, siehe
                Gruß Bernhard

                Kommentar


                  Alles klar, danke für deinen Kommentar. Die Fehlerbeschreibung "sehr komisch" ist natürlich nicht ausreichend. Ich denke, ich trenne das thematisch voneinander: Die für mich nicht nachvollziehbaren Verhalten des Logikmoduls lagere ich in ein neues Thema mit sinnvoller Beschreibung und Screenshots aus.

                  Würdest du trotzdem noch etwas zu deiner oben erwähnten Funktion schreiben? Wie kann ich mit einem Logikkanal einmalig bei Gerätestart den Frostalarm in Abhängigkeit von der Außentemperatur korrekt setzen? (Also einmalig: wenn Eingang <=2°, "EIN", sonst "AUS")

                  Kommentar


                    Zitat von knxDes Beitrag anzeigen
                    Wie kann ich mit einem Logikkanal einmalig bei Gerätestart den Frostalarm in Abhängigkeit von der Außentemperatur korrekt setzen?
                    Du kannst bei den Sendebedingungen auch wählen, das nur bei einer Eingangsbotschaft auf einem Kanal gesendet wird. Wenn Du dafür den 2. Eingang nutzt und dieser nicht mit einer GA verbunden ist, sondern nur mit einem Wert initialisiert wird, sollte das klappen. Lässt sich ja schnell mal mit Test GAs im Gruppenmonitor ausprobieren.image.png
                    Gruß Bernhard

                    Kommentar


                      Hallo zusammen,
                      ich habe gestern das Logikmodul in Funktion gebracht und bin begeistert. Es soll verschiedene Funktionen übernehmen, die bisher über Homeassistant ausgeführt wurden, damit ich soviel wie möglich auf der KNX-Seite halte. Ich habe halt immer mal wieder wegen der dutzenden Updates (Hardware, HA) Unterbrechungen in der Logik, die damit Geschichte sein sollten.

                      Nun habe ich aber entweder einen Denkfehler, oder ich verstehe die Anleitung nicht.
                      Ziel: die Temperatur am Warmwassereingang der Dusche schaltet mit die Duschszene ein.
                      1. Ich lese mir einen Temperaturfühler über einen Temperatursensor (KTY-Fühler an Theben QUAD plus) ein, der damit leider nicht kompatibel ist und Werte aussendet, die keiner der auswählbaren Kennlinien des QUAD plus entsprechen.
                      2. Diesen Wert behandele ich in der ersten Benutzerformel mit ((E1*(-1))+9)*9, welche mit auf den Ausgang tatsächlich die naheliegendste Temperatur ausgibt. Das funktioniert einwandfrei. Den Ausgang schreibe ich als Temperaturwert auf den Bus (klappt auch wunderbar)
                      3. Nun muss ich diesen vergleichen, damit ich die Duschszene starten kann. Dies soll passieren, sobald die Warmwassertemperatur größer 20 Grad beträgt. In einer weiteren Benutzerformel vergleiche ich daher E1>20. Diesen benutze ich in der zweiten Logik, und möchte da aber nur ein "EIN" senden, da der Handbetrieb entweder manuell über den Taster oder per Zeitablauf zurückgesetzt wird. Die Sendung eines "AUS" über die Logik möchte ich nicht mache. Daher habe ich das so parametriert:
                        Konfiguration.png
                        Daher würde ich davon ausgehen, dass ein "EIN" gesendet wird, das "AUS" aber über den Sendefilter (weil "Wert für AUS senden" auf "NEIN" steht) nicht gesendet wird.
                      4. Schreibe ich nun über die Diagnose in das Kommunikationsobjekt in den Fühlerwert 2 Grad (entspricht 63 Grad nach der Umrechnung mit o.g. Formel), wird eine Telegramm mit "EIN" an die Spiegelheizung gesendet (läuft für 15 Minuten als Treppenlichtfunktion und geht dann von selbst aus). Soweit - so richtig.
                      5. Nun wird das Wasser wieder kalt und ich schreibe über die die Diagnose den Fühlerwert 8 Grad (entspricht rund 9 Grad nach der Umrechnung mit o.g. Formel), wird der Vergleich natürlich zu einer "0", aber über den Sendefilter habe ich ja "AUS" auf nicht senden parametriert.
                      Warum sendet der trotzdem ein "AUS"? Das möchte ich gar nicht:
                      Diagnose.png

                      Hier die Benutzerformeln (er rechnet einwandfrei - Hintergrund der Korrektur des Messwerts ist ein KTY-Fühler, für den es keine vorgefertigte Linearisierungskennlinie im Theben-Sensor gibt), und er vergleicht auch einwandfrei:
                      Formeln.png
                      Nochmal das Ziel: ich möchte immer nur bei einer Überschreitung des Temperaturwerts einmalig ein EIN-Telegramm senden, niemals ein "AUS"
                      Warum funktioniert das bei dem eingestellten Sendefilter nicht?

                      Viele Grüße

                      Kommentar


                        ich habe es noch nicht ganz verstanden. aber warum nutzt eine benutzerformel, wenn dass eine einfach hysterese ist? das kann ein logikkanal doch auch ohne benutzerformel. grob gesagt.

                        wenn wert größer als 24 ist dann EIN. wenn der wert wieder unter 20 ist dann aus. dann ein wiederholungsfilter auf EIN, damit die szene nicht immer wieder getriggert wird. auf dem ausgang sagst du dann bei EIN sende bitte die dusch szene. bei AUS halt nichts.
                        OpenKNX www.openknx.de | OpenKNX-Wiki (Beta)

                        Kommentar


                          Denkfehler .
                          Du triggerst den Logikkanal über den Eingang E1 mit einem Eingangskonverter, der eine 1 ergibt.
                          Beim Ausgangskonverter vom Ein-Signal lässt du das Ergebnis der Benutzerformel ausgeben. Das ist 1 bei E1 >20 und 0 sonst. Also wird 0 ausgegeben.
                          Du brauchst für deinen Fall gar keine Benutzerformel. Einfach beim Eingangskonverter Wertintervall 20-100 angeben. Und am Ausgang eine 1 bei Ein senden.

                          Gruß, Waldemar
                          OpenKNX www.openknx.de

                          Kommentar


                            Ich habs es mal versucht auf die schnelle zusammen zu klicken (ungetestet).

                            Code:
                            OpenKNX,cv1,0xAFFF:0x41/LOG:0x38/1§f~Name=Dusche§f~Logic=1§f~NameInput1=Temperatur§f~E1ConvertFloat=2§f~E1=1§f~E1Dpt=7§f~E1Default=1§f~E1LowDpt9:2=20§f~E1HighDpt9:2=24§f~NameOutput=Sende%20Duschszene§f~OOutputFilter=3§f~ODpt=9§f~OOnDpt17=1§f~OOffLed=0§f~OOffAll=0§;OpenKNX
                            OpenKNX www.openknx.de | OpenKNX-Wiki (Beta)

                            Kommentar


                              mumpf und traxanos : Danke für den Input. Ich war so gut im Flow mit den benutzerdefinierten Formeln, dass ich den komplizierten Weg genommen habe.
                              Mit der Hysterese geht's problemlos. Ich hatte nur die Funktion nicht gefunden 😖

                              Danke!!!

                              Kommentar


                                Zitat von tsb2001 Beitrag anzeigen
                                ich habe gestern das Logikmodul in Funktion gebracht und bin begeistert. Es soll verschiedene Funktionen übernehmen, die bisher über Homeassistant ausgeführt wurden, damit ich soviel wie möglich auf der KNX-Seite halte.
                                Guter Plan, schön zu hören.

                                Welches Softwarerelease hast Du benutzt?

                                Hintergrund: Das reine Logikmodul wird durch die wesentlichen umfangreicheren Module RaumController bzw. Stateengine ersetzt und daher nicht mehr neu released.
                                Beide Module haben weiterhin 99 Logikkanäle, aber viele zusätzliche Möglichkeiten.
                                Von der Idee her ist der RaumController mit Fokus auf die Steuerungsaufgaben eines Raumes zugeschnitten und die Stateengine fokussiert mit mehr Statemachinekanälen mehr auf zentrale Logik.
                                Gruß Bernhard

                                Kommentar

                                Lädt...
                                X