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

    Hallo miteinander,

    ich scheitere anhaltend an der Formulierung eines Pfads im XML/JSON-Parser - ich habe aber ehrlicherweise auch keinen Schimmer von XML json, xpath etc

    Ich frage mit dem Web Request Baustein ab:
    192.168.178.26/get/json/v1/1/fps/37

    und bekomme die Antwort, von der ich denke, dass sie im json-Format ist:
    {"37": {"value": 0}}

    Mit einem json-Pathfinder bekommen ich die Formulierung:
    x.37.value

    Bei vielen Varianten, die ich versucht habe, wie zB:
    /root/37/value
    bekomme ich die Fehlermeldung "muss in einem Knotensatz enden"

    Muss ich etwas in [Klammer] hinzufügen?

    Würde mich über Hilfe freuen!

    Stefan




    Bildschirmfoto 2022-08-17 um 21.41.08.png

    Kommentar


      Das Problem ist bekannt; Zahlen können nicht als Schlüssel verwendet werden. Der Workaround ist schon weiter oben im Thread beschrieben. Und in einem anderen Thread sogar schon mehrfach, zuletzt hier.

      Kommentar


        Oja, ja, das war das Problem:

        Mein Pfad sieht jetzt so aus:
        /root/three_seven/value

        und so klappt‘s

        Lg und Danke!

        Kommentar


          Neustart
          Kann es sein, dass wenn das GPA Projekt neu übertragen wird, der Baustein wieder mit 0 anfängt, sobald ein neuer Wert eintrifft?

          Ich nütze den Baustein u.a. um einen Energieverbauch p.a. darzustellen. Bei Neustart waren die Werte weg. Das ist natürlich unpraktisch. Wäre super wenn er sich einfach alles merkt und da weiter macht, wo er aufgehört hat.

          Kommentar


            Ja, beim Download des X1 gehen alle vorher lokal gespeicherten Informationen verloren; das ist beim Laden einer Applikation durch die ETS ebenso.
            Es gibt eine Option, "Wert beibehalten" für jeden Datenpunkt; das Speichern erfolgt in einem elektrisch löschbaren Speicher, bei dem mit einer endlichen Anzahl von Schreibzugriffen die Lebensdauer begrenzt ist.
            Da heißt es abwägen.

            Kommentar


              Lieber knxPaul, Du hast meine Frage nicht verstanden oder ich falsch formuliert. Es geht darum, dass der Statistik Baustein nicht intern (im Baustein selbst) seine Werte speichert und diese nach Neustart weg sind. Also geht die Statistik von neuem los. Das kann ich selbst m.W. nicht ändern.

              PS: Gruppenadressen Permanent speichern, ist klar. Hilft aber nicht weiter. Und, es gibt sehr wohl ETS Applikationen, die sich Zustände merken können und diese im Download nicht überschreiben. Simples Beispiel Szenen.
              Zuletzt geändert von Axel; 16.09.2022, 08:56.

              Kommentar


                Zitat von Axel Beitrag anzeigen
                Es geht darum, dass der Statistik Baustein nicht intern (im Baustein selbst) seine Werte speichert und diese nach Neustart weg sind. Also geht die Statistik von neuem los. Das kann ich selbst m.W. nicht ändern.
                Wir reden über den Baustein "Statistik für Zeitreihen"? Bei dem ist das in der Tat so und kannst Du nicht ändern. Ich werde es auch nicht ändern, weil der Baustein sonst die Werte u. U. sehr oft weg schreiben müsste in einen Speicher der nur begrenzte Schreibzyklen zulässt.

                Was Du aber tun kannst:
                1. Den oder die Ausgabewerte des Bausteins permanent speichern
                2. Den Parameter "Erste Werte ausgeben nach" so einstellen, dass neue Ausgabewerte erst wieder ausgegeben werden, wenn sie wieder aussagekräftig sind
                Ich weiß, dass das nicht genau das ist, was Du willst. Aber vielleicht ist es besser als nix ...
                Zuletzt geändert von hyman; 16.09.2022, 13:46.

                Kommentar


                  Hy hyman,
                  danke für die Klarstellung.
                  Könnte man so einen Speicher nicht unter Hinweis als Parameter einstellbar machen? Ich schreibe hier einen Wert pro Tag rein, dass sollte dem X1 Speicher egal sein. Ist ja bei einer Gruppenadresse auch dem Programmierer überlassen.

                  Sonst wäre dieser Klasse Baustein für diverse Auswertungen echt unbrauchbar.

                  Kommentar


                    Beschreib mir doch mal Deinen Anwendungsfall bißchen genauer ... ich hab meinen letzten Beitrag übrigens nochmal editiert, nachdem Du schon geantwortet hattest ...

                    Kommentar


                      Naja, ich will einfach selbst entscheiden können, ob ich etwas dauerhaft speichern möchte oder nicht :-)

                      Im konkreten Fall ist die Logik (Statistik für Zeitreihen) so aufgebaut, dass jeweils um 0 Uhr der aktuelle Stromverbrauch in kWh in das Statistik Logikmodul reinfließt. Die maximale Anzahl ist auf 365 begrenzt. Dadurch lasse ich mir den Durchschnitts-, Min- und Maxverbrauch p.a. anzeigen.

                      Funktioniert klasse. Aber leider nach einem Neustart ist alles weg :-(

                      Kommentar


                        Zitat von Axel Beitrag anzeigen
                        Naja, ich will einfach selbst entscheiden können, ob ich etwas dauerhaft speichern möchte oder nicht :-)
                        Das reicht mir nicht …

                        Zitat von Axel Beitrag anzeigen
                        Im konkreten Fall ist die Logik (Statistik für Zeitreihen) so aufgebaut, dass jeweils um 0 Uhr der aktuelle Stromverbrauch in kWh in das Statistik Logikmodul reinfließt. Die maximale Anzahl ist auf 365 begrenzt. Dadurch lasse ich mir den Durchschnitts-, Min- und Maxverbrauch p.a. anzeigen.

                        Funktioniert klasse. Aber leider nach einem Neustart ist alles weg :-(
                        … aber das schon – zumindest um mal mit dem Nachdenken anzufangen.

                        Damit das mit dem Statistikbaustein so funktioniert, hast Du hoffentlich auch den Betrachtungszeitraum auf ein Jahr gestellt. Sonst fängt er zwar nach einem Jahr an, alte Werte zu entsorgen, berücksichtigt die aber immer noch “so gut es geht” (näheres in der Dokumentation) in den Ausgabewerten.

                        Du hast auf der Zeitachse äquidistante Eingabewerte, was die Sache schon mal vereinfacht. Aus denen möchtest Du Min, Max, und Durchschnitt haben. Unklar ist mir noch, ob Du diese Ausgabewerte gleitend für den Zeitraum eines Jahres oder fürs aktuelle Kalenderjahr haben möchtest.

                        Der zweite Fall wäre der einfachere: Am Jahresanfang wird der erste Eingabewert in alle drei Ausgänge gespeichert und die Anzahl der Werte auf 1 gesetzt. Bei jedem weiteren ankommenden Wert werden Min und Max aus aktuellem Ausgabewert und neuem Wert gerechnet. Der neue Durchschnitt errechnet sich als gewichtetes Mittel aus bisheriger Anzahl der Werte, bisherigem Durchschnitt und neuem Wert. Zum Schluss wird die Zahl der Werte erhöht. Man muss also nur vier Werte speichern und nur einmal am Tag. Das kann man wahrscheinlich mit einer Formelberechnung und ein paar persistenten Datenpunkten hin bekommen.

                        Der erste Fall (gleitender Durchschnitt) ist viel aufwändiger: Da muss man sich alle Eingabewerte des Betrachtungszeitraums (also 365 in diesem Fall) speichern, weil ja mit jedem neuen Wert einer raus fallen kann und alle anderen weiterhin berücksichtigt werden müssen. Das ist dann ganz bestimmt nix mehr für die Formelberechnung.

                        Im bestehenden Baustein würde ich beides nicht machen wollen. Der hat, um auch mit nicht äquidistanten Eingangswerten umgehen zu können, eine deutlich umfangreichere Datenhaltung als sie für diese beiden Fälle nötig ist. Und ehe ich das alles konfigurierbar mache, sehe ich da eher einen neuen Baustein “Monats-/Jahresstatistik”. Der würde gleich nur Tageswerte entgegen nehmen und die als äquidistant betrachten, was vieles vereinfacht.

                        Grüße von Horst

                        Kommentar


                          Moin,

                          hyman
                          ich hoffe du bist noch aktiv.

                          ich habe folgende Problematik.

                          Ich möchte die Daten meiner PV Anlage(Qcells) auf den KNX Bus haben.

                          jetzt bin ich auf deine Logkibausteine gestoßen.

                          Mittel HTTP Request frage ich die Daten ab und Werte diese über dein XML / Jason Parser aus. In der Simulation funktioniert alles super, wenn ich die Daten dann aber übertrage leider nicht mehr.

                          Kommentar


                            Schuss ins Blaue: Möglicherweise der Klassiker; HTTPS funktioniert nicht. Kannst Du die Daten auch ohne gesicherte Verbindung, also über HTTP (ohne S) abholen?

                            Wenn es das nicht ist, brauche ich ein wesentlich genauere Beschreibung des Problems ...

                            Kommentar


                              Ja, ich kann die Daten auch über http abrufen. Leider hat sich das Ergebnis nicht geändert.
                              Auch dies Funktioniert in der Simulation ohne Probleme.
                              Hier die Logikübersich

                              Telegrammgenerator

                              Bausteintyp
                              LogicModule.Nodes.ClockGenerator

                              Version
                              1.2.103

                              Letzte Ausführung
                              21.9.2022, 15:50:50


                              Eingangsname
                              Wert
                              Verbindungen

                              Cycle
                              00:00:10




                              Ausgangsname
                              Wert
                              Verbindungen

                              Output
                              true
                              Web Request - Trigger


                              Web Request

                              Bausteintyp
                              d_albuschat_gmail_com.logic.WebRequest.WebRequestN ode

                              Version
                              3.0.5

                              Letzte Ausführung
                              21.9.2022, 15:50:50


                              Eingangsname
                              Wert
                              Verbindungen

                              Trigger
                              true
                              Telegrammgenerator - Output

                              URL
                              http://www.portal-q-cells.usXXXXXXXX...XXXXXXXXXXXXXX X


                              Method
                              GET


                              AuthType
                              NoAuth




                              Ausgangsname
                              Wert
                              Verbindungen

                              Response
                              null Die Null an der Stelle wurd das Problem sein. Ich weiß nur nicht warum es in der Simulation Funktioniert.
                              XML/JSON-Parser - Input


                              XML/JSON-Parser

                              Bausteintyp
                              Recomedia_de.Logic.VisuWeb.XmlJsonParser

                              Version
                              1.4.5

                              Letzte Ausführung
                              -


                              Eingangsname
                              Wert
                              Verbindungen

                              Input
                              null
                              Web Request - Response

                              Path1
                              /root/result/acpower


                              Path2
                              /root/result/yieldtoday


                              Path3
                              /root/result/yieldtotal


                              Path4
                              /root/result/feedinpower


                              Path5
                              /root/result/feedinenergy


                              Path6
                              /root/result/consumeenergy


                              Path7
                              /root/result/feedinpowerM2


                              Path8
                              /root/result/soc


                              Path9
                              /root/result/peps1


                              Path10
                              /root/result/peps2


                              Path11
                              /root/result/peps3


                              Path12
                              /root/result/batPower


                              Path13
                              /root/result/powerdc1


                              Path14
                              /root/result/powerdc2


                              Path15
                              /root/result/batStatus


                              SelOperParam8





                              Ausgangsname
                              Wert
                              Verbindungen

                              RuntimeError
                              null


                              Output1
                              null
                              Typ-Konverter - Input

                              Output2
                              null
                              0/3/101 0/3/101 PV- Anlage Täglicher Ertrag kWh - Input

                              Output3
                              null
                              0/3/102 0/3/102 PV- Anlage Gesamtertrag in kWh - Input

                              Output4
                              null
                              0/3/103 0/3/103 PV- Anlage Einspesiung / Bezug Leistung - Input

                              Output5
                              null
                              PV- Anlage Einspesiung / Bezug Strom - Input

                              Output6
                              null
                              0/3/105 0/3/105 PV- Anlage Anlagenstrom - Input

                              Output7
                              null
                              0/3/106 0/3/106 PV- Anlage (2) - Input

                              Output8
                              null
                              0/3/107 0/3/107 PV- Anlage Batterie Ladung - Input

                              Output9
                              null
                              0/3/108 0/3/108 PV- Anlage (3) - Input

                              Output10
                              null
                              0/3/109 0/3/109 PV- Anlage - Input

                              Output11
                              null
                              0/3/110 0/3/110 PV- Anlage (4) - Input

                              Output12
                              null
                              0/3/111 0/3/111 PV- Anlage Batterie Leistung - Input

                              Output13
                              null
                              0/3/112 0/3/112 PV- Anlage String 1 Leistung - Input

                              Output14
                              null
                              0/3/113 0/3/113 PV- Anlage String 2 Leistung - Input

                              Output15
                              null
                              0/3/114 0/3/114 PV- Anlage Batterie Status - Input


                              Typ-Konverter

                              Bausteintyp
                              LogicModule.Nodes.AnyToAny

                              Version
                              1.2.103

                              Letzte Ausführung
                              -


                              Eingangsname
                              Wert
                              Verbindungen

                              Input
                              null
                              XML/JSON-Parser - Output1



                              Ausgangsname
                              Wert
                              Verbindungen

                              Output
                              null
                              0/3/100 0/3/100 PV- Anlage Leistung in W - Input






                              Hier ein ausdruck aus der Simulation. Wie du siehst werden Daten am Ausgang gesetzt.

                              grafik.png

                              Schon mal vielen Dank für deine Mühe.

                              Kommentar


                                OK, hab die Problematik gefunden.

                                Der X1 kann leider kein TLS 1.2

                                https://knx-user-forum.de/forum/%C3%...niel-albuschat

                                Kommentar

                                Lädt...
                                X