Ankündigung

Einklappen
Keine Ankündigung bisher.

OpenKNX-Logikmodul release

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

    Ja, da arbeite ich gefühlt seit Wochen dran. Und habe jetzt schweren Herzens etwas beschlossen, wass einigen weh tun wird (ich weiß nicht, ob Du dazu gehörst), aber es geht nicht anders. Ich werde jetzt erstmal den VPM mit der neuen Infrastruktur (und dem neuen Logikmodul) rausbringen (heute oder morgen), dann das Sensormodul (kommendes Wochenende). Beide aber nur für die RP2040-Hardware. Es geht einfach nicht mehr mit dem SAMD. Ich habe wirklich mehrere Wochen lang (nicht am Stück, aber immer wieder) versucht, noch RAM zu sparen, um es hin zu bekommen. Aber es ist nicht stabil und der hängt sich immer wieder auf. Damit würde ich keinem eine Freude machen.

    Natürlich dann das SAMD-Sensormodul noch in der alten Variante weiter betrieben werden, die ist durchaus robust und funktioniert zuverlässig, aber alle neuen Funktionen kosten einfach zu viele Ressourcen, dass es der SAMD noch schaffen kann.

    In der ersten Runde wird das neue Sensormodul auch noch ohne 1-Wire-Unterstützung sein, das gibt es erst in ca. 2-3 Monaten, nach meinem Urlaub .

    Gruß, Waldemar

    P.S.: Das neue Logikmodul wird in alle Module Einzug halten, die ein Update rausbringen und ein Logikmodul anbieten, z.B. auch der neue Fingerprint...
    OpenKNX www.openknx.de

    Kommentar


      mumpf willisurf

      Hallo,

      ich bräuchte mal Hilfe der Logikexperten, ich stehe auf dem Schlauch....
      Ich versuche über den Anstieg der Luftfeuchtigkeit im Bad "Duschbeginn" zu detektieren.
      Dazu habe ich an folgende Logik gedacht:
      Kanal 1 hat als Eingang die Luftfeuchte und gibt diese nach einer Verzögerung von xx Sekunden an Kanal 2 weiter.
      Kanal 2 macht ein Differenzintervall zwischen der verzögerten Luftfeuchte (Eingang 1 mit internem KO) und der Luftfeuchte (Eingang 2). Wenn die Differenz negativ ist (also die aktuelle Luftfeuchte größer als die verzögerte) dann schicke ein EIN.
      Irgendwie klappt das nicht und ich finde den Fehler nicht.

      Wie macht man das richtig?

      Kommentar


        Zitat von mumpf Beitrag anzeigen
        Ich werde jetzt erstmal den VPM mit der neuen Infrastruktur (und dem neuen Logikmodul) rausbringen (heute oder morgen), dann das Sensormodul (kommendes Wochenende). Beide aber nur für die RP2040-Hardware.
        Das verstehe ich.

        Die Frage ist, ob die SAMD Sensormodule mit dem alten Logikmodul weiter gepflegt werden können?
        Sprich: Sensormodul v5 ohne LM aber auf SAMD.

        Kommentar


          Genau so... aber Du hast wahrscheinlich trotzdem einen Denkfehler drin .

          Wenn Du (was wahrscheinlich ist) Kanal 1 mit Einschaltverzögerung programmiert hast, dann denkst Du, dass ein Trigger am Eingang 1 den Wert, der getriggert hat, auch speichert. Das ist aber nicht der Fall. Der Ausgangskonverter vom Kanal 1 wird z.B. nach 30 Sekunden getriggert, und dann macht er das, was in der Anleitung steht: Er gibt den Wert von Eingang 1 auf den Ausgang. Und zwar den AKTUELLEN Wert. Wenn das noch der ist, der getriggert hat, ist das prima, wenn es ein neuer Wert ist, dann gibt er diesen Wert aus. Es gibt keinen Speicher im Loigkmodul, nut die KOs, die man als Speicher nutzen kann.

          Ich habe als Kanal 1 ein Tor, dass Auf- und sofort wieder Zugeht. Dadurch wird die aktuelle Luftfeuchte vom Eingang auf den Ausgang geschrieben. Das Tor wird jede Minute (per Zeitschaltuhr) getriggert, geht als jede Minute kurz auf. Damit hat man am Ausgang immer einen max. 1 Minute alten Wert.
          Das Differenzintervall lasse ich nur vom Eingang der akt. Luftfeuchte triggern. Damit wird immer, wenn eine neue Luftfeuchte reinkommt, mit dem anderen Wert verglichen, der max. 1 Minute alt ist. So weißt Du, ob innerhalb der letzten Minute der Wert stark gestiegen ist.

          Gruß, Waldemar
          OpenKNX www.openknx.de

          Kommentar


            Zitat von henfri Beitrag anzeigen
            Sprich: Sensormodul v5 ohne LM aber auf SAMD.
            Naja, das Sensormodul ist nicht so sehr von Erweiterungen betroffen. Auch im aktuellen Sensormodul (RP2040-Version) ist es ein verbesserter KNX-Stack und ein verbessertes Logikmodul, die zu einem Update führen. Im Sensormodul hat sich da nichts getan (außer einem UI-Redesign). Und genau die Änderungen am "Unterbau" sind es aber, die den SAMD "sprengen", da bleibt es also bei der bisherigen Infrastruktur.

            Ich werde noch einen halbautomatischen Upgrade-Pfad für das Sensormodul anbieten (mit unserem neuen Konfigurationstransfer), wenn jemand die Hardware wechseln möchte. Und wenn noch irgendwo ein grober Bug entdeckt wird, für den es keinen Workaround gibt, dann würde ich den fixen.

            Was ich nicht machen werde, ist neue Sensoren implementieren, falls das im neuen Sensormodul passieren sollte (ist nur hypothetisch, derzeit ist nichts geplant). Denn wer das SAMD-Modul verwendet, hat ja schon seine Sensoren dran, und die funktionieren ja. Und es sind recht viele möglich. Wer dann auf einen neuen Sensor wechseln will (falls es den mal gibt), müsste auch auf die neuere Hardware wechseln. Aber warum sollte man das machen? Temperatur bleibt Temperatur, egal von welcher Sensorgenaration gemessen .

            Ich hoffe, das deckt das ab, was Du wissen wolltest?

            Gruß, Waldemar

            OpenKNX www.openknx.de

            Kommentar


              Hallo,

              gibt es eine Möglichkeit im Logikmodul eine Einschaltverzögerung mit berechnetem Wert (in Sekunden) zu belegen?

              Hintergrund: ich will für ein Fenstermotor Positionsfahrten nachbauen. Der Motor wird über zwei Kontakte (Impulssteuerung) Auf und Zu gesteuert. Wobei ein weiteres Auf während der Fahrt den Motor stoppt (selbes für Zu). Ich muss also anhand der letzten Position und der anzufahrenden Position die Zeit berechnen und ein weiteres Telegramm senden.

              Vielen Dank und Grüße!

              Kommentar


                Zitat von kleinklausi Beitrag anzeigen
                gibt es eine Möglichkeit im Logikmodul eine Einschaltverzögerung mit berechnetem Wert (in Sekunden) zu belegen?
                Man bekommt das hin, aber es ist keine fertige Funktion. Ich hab in der Doku ein Beispiel für einen Betriebsstundenzähler (der zählt aber die Sekunden). Den könnte man jetzt immer runter zählen lassen, sobald ihm ein Sekundenwert gesetzt wird und bei 0 stoppen und eine Aktion auslösen. Mit dem neusten Logikmodul 3.3 geht das noch einfacher, weil jetzt Zähler ohne Rückkopplung auf den Eingang möglich sind und so versehentliche Schleifen vermieden werden.

                Also: Es wird gehen, aber man muss die passende Logik parmetrisieren und sie wird sicherlich aus mehreren Kanälen bestehen. Schau Dir das Zählerbeispiel in der Doku an und versuch es zu verstehen. Wenn Du noch Fragen hast, melde Dich einfach.

                Gruß, Waldemar
                OpenKNX www.openknx.de

                Kommentar


                  Super, danke Waldemar. Ich lese mich weiter ein!

                  Kommentar


                    kleinklausi: Inzwischen gibt es ein Countdown-Beispiel im Thread zur Einführung in den Konfigurationstransfer: https://knx-user-forum.de/forum/proj...60#post1967860

                    Falls Du das noch nicht gesehen hast.

                    Gruß, Waldemar
                    OpenKNX www.openknx.de

                    Kommentar


                      Ja, habe es gesehen. Danke trotzdem!

                      Kommentar


                        Auch das Logikmodul hat heute einen kleinen Fix erhalten auf 3.3.1.

                        Der Ausgangskonverter von irgendeiner Zahl auf DPT16 funktionierte nicht mehr. Ist irgendwann zu 1.2 kaputtgegangen, hat seitdem keiner gemerkt (ich auch nicht, weil ich es nicht mehr brauche). Ist somit sicherlich keine wichtige Funktion, wurde aber jetzt mal wieder gewünscht.

                        Alles zu, Release 3.3 gesagte gilt natürlich auch für die 3.3.1.

                        Gruß, Waldemar
                        OpenKNX www.openknx.de

                        Kommentar


                          Ich habe gerade mal eine Benutzerformel getestet und wollte mal ein Feedback geben. Die Funktion hatte ich bisher nie getestet und es funktionierte beim ersten Versuch.

                          Der Steinel TPM sendet gerne auch mal 102% Luftfeuchtigkeit beim Duschen, worauf ich immer wieder angesprochen worden bin. Also habe ich das nun einmal auf 100% begrenzt.
                          Formel: if(e1>=100,100,e1)
                          Also wenn Eingang 1 größer oder gleich 100 ist, gib 100 aus, sonst das, was an Eingang 1 anliegt. Falls jemand fragt, mir ist auch gerade aufgefallen, dass e1>100 auch gereicht hätte, aber so ist es nun parametriert und funktioniert
                          Am Ausgang noch schnell auf DPT 9.xxx gestellt, Wert für EIN & Aus auf "Ja - Wert einer Funktion" und mit dem Wert "A=B1(E1,E2,A), Eingang mit der GA vom Steinel verknüpft und Ausgang mit dem GA für die Anzeige und es funktioniert.
                          Vorher natürlich einfach mit Diagnosemonitor getestet und mit "Benutzerformel testen", was super funktionierte.
                          Ich nutze es als ODER, da ich eh nur einen Eingang belege...

                          Tolle Funktion und sehr nützlich. Vielen Dank dafür!
                          So konnte ich schnell ein kleines Problem lösen, um den Feinschliff der Anzeige zu verbessern.


                          Viele Grüße
                          Nils

                          Kommentar


                            Hallo Nils,

                            vielen Dank für die positive Rückmeldung und es freut mich sehr, dass es auf anhieb geklappt hat. Und es gibt natürlich viele Wege zum Ziel, aber das ist nicht der, den ich empfehlen würde, wenn man einfache logische Aussagen treffen will. Benutzerformeln sind eher für komplexere mathematische Aufgaben gedacht, wie eine Taupunktberechnung oder das Volumen einer Zisterne in abhängigkeit von der Füllhöhe oder so. Du hast hier also sozusagen "mit Kanonen auf Spatzen geschossen".

                            Anders gesagt, Dein Problem konnte man schon mit der ersten Version vom OpenKNX-Logikmodul von vor 2 Jahren lösen. Eine logische Bedingung kann man nicht immer nur durch ein if formulieren, warum das auch immer in den Köpfen der Leute so drin steckt.
                            Wenn Du Dir den Eingang eines Logikkanals anschaust und den auf DPT9 stellst, steht da ein Eingangskonverter, der eine Einstellung erlaubt, wann dieser Eingang logisch 1 werden soll. Wenn Du da beim Wertintervall 0 bis 100 wählst (für die Benutzerformel wirst Du 0 bis 200 oder so gewählt haben), ist der Eingang EIN, wenn der Wert zwischen 0 und 100 liegt, sonst ist er AUS.
                            Jetzt nur noch am Ausgang der Logik bei EIN den Wert vom Eingnang 1 senden, bei AUS den konstanten Wert 100 und Du hast das gewünschte Ergebnis, ganz ohne Benutzerformeln.

                            Hier noch das Beispiel als Transfer-String:
                            Code:
                            OpenKNX,cv1,*/LOG:0x33/*§f~Name=Filter%20Luftfeuchte%20(nicht%20mehr%20als%20100%25)§f~Logic=2§f~NameInput1=Luftfeuchte%20vom%20TP§f~E1=1§f~E1Dpt=7§f~E1HighDpt9:1=100§f~NameOutput=Gefilterte%20Luftfeuchte§f~ODpt=7§f~OOn=2§f~OOnAll=2§f~OOffDpt9=100§;OpenKNX
                            Bitte nicht als Kritik sehen, ich nutze solche Fragen/Beispiele auch gerne als Fortbildungsmaßnahme, um auch anderen, die hier mitlesen, die Möglichkeiten des Logikmoduls nahezubringen.

                            Gruß, Waldemar
                            OpenKNX www.openknx.de

                            Kommentar


                              Und ich hab dabei was gelernt/vertieft

                              Kommentar


                                Dem kann ich mich nur anschließen. Vielen Dank für die Erläuterungen.

                                Ich habe zuerst an Formel gedacht und damit einfach mal probiert. Vor allem, da ich noch nicht damit gearbeitet hatte, bisher. Aber gut zu wissen, dass es auch einen einfacheren Weg gibt.
                                Die IF-Bedingung ist halt einfach gedacht. Wenn eine Bedingung zutrifft, möchte ich das oder wenn etwas anderes zutrifft, dann was anderes. Ist direkt IF, Else

                                Ich werde mir Deinen Weg aber auf jeden Fall auch anschauen. Stört ja nicht, wenn man sich mit dem Modul besser auskennt.


                                Viele Grüße
                                Nils

                                Kommentar

                                Lädt...
                                X