Ankündigung

Einklappen
Keine Ankündigung bisher.

Neue Logikbausteine für den L1/X1: Formelberechnung, Statistik und mehr...

Einklappen
Dieser Beitrag wurde beantwortet.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Ich bin gerade dabei den Formelbaustein neu zu erstellen und dann die text outputs und den Trigger direkt auf den KNX zu senden um festzumachen an was es liegt .
    Also ob der HTTP Request Baustein eine Meldung bekommt aber zu lange braucht die Meldung abzuschicken. Ich habe diesen den HTTP Baustein sonst noch nirgends im Projekt verwendet und kann deshalb nicht sagen ob er normalerweise zuverlässig ist. Ich nutze sonst immer den Baustein von Fabian Fischer . Der läuft zuverlässig lässt mir aber keinen Variablen Request String zu..

    Das mit den Rückmeldungen wäre eine Option aber dann müsste Ich einen Schaltausgang haben der in jeder Option aktiv ist. Im Nacht Modus sind nur Retro Glühlampen ein die über Dali gesteuert werden.. dh. ich müsste dann im KNX wieder einen KNX ONLY Logikbaustein haben der mir die verschiedenen RMs zu einer Zusammenfasst. Ich hab mir schon überlegt das über meine Netzteil Standby Abschaltung zu lösen aber dann habe ich wieder das Problem das Wenn das WLED Netzteil aktiv wird müsste ich den Wled Controller Default als Aus Starten. dann habe ich wieder eine Einschaltverzögerung um auf die Richtige Wled Stimmung zu springen. Wenn ich das Wled Default on starte dann leuchtet im Nachtmodus auch das Wled sofort mit.

    Wie schon gesagt es ist Gar nicht so einfach hier eine Lösung zu finden um auch einen Eventuellen Ausfall des X1 einbezogen zu haben.

    Lüfter über Luftqualität geht leider nicht weil ich keinen entsprechenden Sensor verbaut habe..

    Ich melde mich dann nochmal mit dem Testergebnis falls ich die Ursache finde.

    Kommentar


      Hallo ..

      Es lag tatsächlich am HTTP Baustein. wenn der Empfänger im Netzwerk nicht reagiert passiert vermutlich in der Logik so lange nichts mehr bis ein Timeout erfolgt.
      Das Blockiert den Ganzen Logikbaustein.

      Ich habe das Ganze nun wie vorgeschlagen an die Rückmeldung der Steuerspannung gekoppelt und wenn diese nicht ein ist werden keine Befehle abgesetzt.
      Die Wichtigsten befehle habe ich dann mit dem HTTP Baustein von Fabian Fischer gelöst. Dieser scheint bei nichtreaktion eines Teilnehmers keine unterbrechung der Logiken zu verursachen. Das läuft zwar nicht ganz so komfortabel wie zuvor aber ist dafür Ausfallsicherer.

      beste grüße Georg

      Kommentar


        Horst, das ist echt ma ein sehr repektabler Move, dieses unfassbar geniale Tool einfach so zur Verfügung zu stellen. Vielen Dank!

        Ich versuche, die Absolute Feuchte zu berechnen um eine Garagenbelüftung zu steuern.
        Leide rbekomme ich immer einen Fehlercode und ich finde nicht heraus, warum. Laufzeitfeler: Formel 1 (vor Zeichen 43) CS0126 "unexpectet symbol ";" expect ")"

        Die DPT für Temperatur und relative euchte sind 5.001 und 9.001.
        Ich habe den verdacht, dass es am Fließkomma der verwendeten Eingangsdaten liegt, weiß aber nicht, wie ich da Abhilfe leisen kann.

        Ich wäre sehr dankbar, wenn mich jemand erleuchten würde...
        Screenshot 2026-04-12 092006.png
        Grüße,
        Seb

        edit: Was mir außerdem auffällt, ist, dass in der Simulation der GPA die EIngangswerte vertauscht werden (siehe Screenshot). Sobald man die Simu verlässt, stehen die Werte wieder korrekt da. Ich glaube, das wurde im Threat schon ml diskutiert. Kann das auch der Fehler sein?

        edit 2: Wie so oft liegt das Problem zwischen den Ohren des Schreibers. Ich habe jetzt zwei Tage lang alles zu dem Thema gelesen und alle möglichen Konstellationen im Logikbaustein probiert bis mir heute auffiel, dass ich am Ende der Formel einfach eine Klammer vergessen hatte. Es funzt alles wie es soll. Danke für die Tolle Funktion, Horst.
        Zuletzt geändert von cptjack; 13.04.2026, 07:13.

        Kommentar


          Hallo Horst.

          Ich verwende zum ersten mal deinen Baustein und hab mich gefreut das es so etwas gibt.

          An dieser stelle also schon mal vielen Dank.

          Ich habe eine Zysterne und der Sensor gibt mir werte zwischen 4mA und 13mA an den Eingang. Die Formel soll an den Ausgang die Lieter Zahl die sich im Tank befindet senden. In Excel funktioniert es, hier kriege ich es nicht hin das ein Eingang generiert wird. Was verstehe ich hier nicht. ???

          Die Formel im Anhang Screenshot 2026-07-12 182904.png :


          Ich hoffe du Horst, oder jemand aus dem Forum sieht was ich hier falsch mache.

          LG
          Thorsten

          Kommentar


            Normalerweise hat der Baustein auch Eingänge. Ruf doch mal die Hilfe auf, wenn du den Baustein angeklickt hast.
            Viel Erfolg, Florian

            Kommentar


              Ich nehme an, Dein "a" in der Formel soll der Eingabewert sein. Hier muss stattdessen jeweils ein geeigneter Platzhalter stehen, der Namen und Typ festlegt. Erst dadurch entsteht der entsprechende Eingang. Das ist in der Hilfe zum Baustein ausführlich beschrieben.

              Kommentar


                Hallo hyman!

                Da bin ich ja an die direkte Quelle geraten.

                Mit der Formel bin ich etwas weiter, mit der Lösung keineswegs.

                Dies ist die angepasste Formel.
                V=(96.7*(75*75*acos((75-h)/75)-(75-h)*sqrt(150*h-h*h))+3.14159265*h*h*(225-h)/3)/1000

                V= Liter
                h= Eingang vom sensor


                Ich verstehe aber nicht was ein geeigneter Platzhalter ist.
                Die Hilfe habe ich inzwischen mehrfach gelesen aber vielleicht fehlen mir die Mathematischen Kenntnisse. ?!?
                Auch in der Hilfe Seite erschließt es sich mir nicht.

                Das zweite was mir nicht klar ist sind die gezackten Klammern. In Excel wären es normale Klammern. Brauche ich hier dann andere weil "Programmiersprache" oder habe ich das schon falsch gemacht.

                Ich hoffe hier noch die Lösung zu finden.

                LG und vielen Dank

                Kommentar


                  Für mich war es anfänglich auch nicht selbsterklärend. Bau doch mal die Beispiele nach und experimentiere mit den Abschnitten, 1 Eingabewert, 2 Werte, eventuell 2 unterschiedliche Formeln etc. Und dann immer wieder testen, bis du die Syntax verstanden hast warum ist jetzt 1+2 3 . Das geht mit der Simulation in den Logikblättern recht gut. Wenn du damit fertig bist, dann kannst du an deine längere Formel gehen.
                  Viel Erfolg, Florian

                  Kommentar


                    Zitat von Thorsten 305 Beitrag anzeigen
                    Ich verstehe aber nicht was ein geeigneter Platzhalter ist.
                    Die Eingangsgröße Deiner Formel ist h. Das musst Du dem Formelinterpreter durch die geschweiften Klammern mitteilen. Es müssen für die richtige Syntax hier die geschweiften Klammern sein.
                    Beim ersten Auflisten der Eingangsgröße muss noch mit : getrennt der Wertetyp angegeben werden. Bei Dir wahrscheinlich F für float. Bei den folgenden Bezügen auf den Eingang ist das dann nicht mehr nötig.

                    In Deinem Beispiel also
                    (96.7*(75*75*acos((75-{h:F})/75)-(75-{h})*sqrt(150*{h}-{h}*{h}))+3.14159265*{h}*{h}*(225-{h})/3)/1000

                    Natürlich kann man die Formel noch vereinfachen, aber ich habe das mal so belassen.
                    Danach wird Dein Formelbaustein den Eingang für h haben und am Ausgang wird der Wert V berechnet.
                    Zuletzt geändert von willisurf; Heute, 06:30.
                    Gruß Bernhard

                    Kommentar


                      So isses: Die geschweiften Klammern sind der Schlüssel. In der Anleitung ist das so beschrieben:

                      Platzhalter für Variablen

                      Platzhalter in den Formeln dienen dazu, variable Eingangswerte in den Berechnungen zu verwenden. Sie dürfen überall stehen, wo auch eine Konstante des gleichen Typs stehen dürfte.

                      Es gibt zwei grundlegende Arten von Platzhaltern:
                      • Definition – definiert erstmals einen Eingang mit Namen und Typ und hat die folgende Form:
                        {Eingangsname:T}
                      • Referenz – bezieht sich auf einen vorher definierten Eingang. Sie folgt der gleichen Form, wobei :T weg gelassen werden darf.
                      Eingangsname wird als Bezeichnung des Baustein-Eingangs verwendet. Definitionen legen Eingänge an und setzen deren Werte in die Formel ein. Referenzen beziehen sich auf einen vorher definierten Namen und verwenden den Wert des entsprechenden Eingangs erneut. Sie dürfen sich auch auf Namen beziehen, die in einer anderen Formel mit einer niedrigeren Nummer definiert worden sind. Referenzen dürfen keinen von der Definition abweichenden Datentyp festlegen.

                      Eingangsname muss mit einem Buchstaben beginnen. Weiter kann er auch Ziffern (0..9) und Unterstriche (_) enthalten. Leerzeichen und andere Sonderzeichen sind nicht zulässig. Leerzeichen am Anfang oder am Ende sind erlaubt, werden aber nicht in den Namen übernommen.

                      T ist ein Buchstabe, der den Datentyp des Eingangs festlegt.
                      Folgende Buchstaben – Groß- und Kleinbuchstaben haben gleiche Bedeutung – sind möglich:
                      • B – Wahrheitswert (bool) – Mögliche Werte: true, false
                      • I – Ganzzahl (int) – Wertebereich -2 147 483 648 .. 2 147 483 647
                      • F, N, G oder P – Fließkommazahl (double) – Wertebereich etwa -1.7 × 10308 .. 1.7 × 10308 mit einer Genauigkeit von mindestens 15 geltenden Ziffern
                      • S – Text (string) – ASCII-, ISO-8859-1- oder Unicode-Text​
                      Mathematische Kenntnisse sind zum Verständnis hoffentlich nicht notwendig. Wenn ich da was klare formulieren kann, bin ich dafür offen. Wer diese etwas formale Beschreibung nicht auf Anhieb versteht, findet in den Beispielen Anschauungsmaterial.

                      Zitat von Thorsten 305 Beitrag anzeigen
                      Das zweite was mir nicht klar ist sind die gezackten Klammern. In Excel wären es normale Klammern. Brauche ich hier dann andere weil "Programmiersprache" oder habe ich das schon falsch gemacht.
                      ​Du hast das richtig erkannt: Es handelt sich um eine Programmiersprache (C# in diesem Fall). Die Platzhaltersyntax ist allerdings nicht Teil dieser Programmiersprache, sondern die habe ich so festgelegt. Notwendig ist das, weil ich einen Weg brauche, um Namen und Typ einer Eingabevariablen festzulegen, da reicht ein simpler Variablenbezeichner, wie er in einem C#-Ausdruck vorkommen darf leider nicht aus.

                      Der Zuweisungsoperator = ist überflüssig, weil das Ergebnis der Berechnung des Ausdrucks direkt auf dem entsprechenden Ausgang landet. Dafür brauchen wir also nicht unbedingt einen Namen. Wenn wie ihn doch brauchen, um das Ergebnis in einer weiteren Formel weiterzuverwenden, wird er automatisch festgelegt.
                      Zuletzt geändert von hyman; Heute, 06:25.

                      Kommentar


                        Ich danke euch allen,
                        ich werde mich am Wochenende in aller ruhe damit auseinander setzten.
                        Da sind schon auf den ersten Blick fortschritte für mich zu erkennen.
                        ein einfaches "kopieren" der Formel in der Antwort von Bernhard hatte zumindest den Eingang generiert und ich denke ich verstehe auch warum.
                        dennoch markiert er einen Fehler der wohl mit der Formel als solches zusammen hängt.
                        Fehler Formel 1.png


                        Wie gesagt. Am Wochenende versuche ich es zu lösen.
                        sollte noch jemand einen Tip haben den ich mitnehmen soll, dann gerne!

                        Habt ein schönes Wochenende!
                        Thorsten
                        Angehängte Dateien

                        Kommentar

                        Lädt...
                        X