Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Visualisierung
    4. Stromverbrauch protokollieren

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Stromverbrauch protokollieren

    This topic has been deleted. Only users with topic management privileges can see it.
    • S
      special_b @Codierknecht last edited by

      @codierknecht
      Ja, der Zählerstand wird vom Smartmeter Adapter bereits als absoluter Wert mit 4 Kommastellen ausgelesen. Seit ich den funktionierenden Pin bekommen habe läuft das.

      Tagesauswertungen liefen bereits von Sourceanalytics, hab ich aber aktuell wieder rausgenommen.

      Am liebsten wäre mir, wenn ich eine Tagesverlaufskurve erstellen könnte. Also alle 10 oder 15 Minuten eine Säule im Diagramm oder eben ein Punkt auf der Linie wieviel Strom bezogen wurde.

      Dann kann man ja immer noch leicht aus den Werten den Tagesverbrauch protokollieren.

      mfg

      Special_B

      Homoran Codierknecht 2 Replies Last reply Reply Quote 0
      • Homoran
        Homoran Global Moderator Administrators @special_b last edited by

        @special_b sagte in Stromverbrauch protokollieren:

        Also alle 10 oder 15 Minuten eine Säule im Diagramm oder eben ein Punkt auf der Linie wieviel Strom bezogen wurde.

        so?

        Screenshot_20220930-192109_Firefox.jpg

        das ist einfach live der Wert vom Smartmeter alle 6 Sekunden (und vom Wechselrichter)

        1 Reply Last reply Reply Quote 0
        • Codierknecht
          Codierknecht Developer Most Active @special_b last edited by

          Also ich mache es so, dass ich zwischen zwei Impulsen die Zeit ermittle und mir damit die während der Impulse (durchschnittlich) bezogene Leistung errechne.
          Den Tagesverbrauch logge ich auch noch, auch wenn das in SA schon drin ist. Was man hat, hat man 😉

          Dazu habe ich verschiedene Datenpunkte:

          • Aktuelle Leistung
            Wird mit der durchschnittlich zwischen 2 Impulsen bezogenen Leistung gefüttert
          • Aktueller Zählerstand
            Benötige ich, da ich Impulse zähle. Fällt bei Dir weg
          • Laufender Verbrauch
            Zählt am Tag den auflaufenden Verbrauch
          • Berechneter Tagesverbrauch
            Wird nachts geschrieben und historisiert

          1d872e98-5cb4-43d1-bbb7-0d213ae6cba9-grafik.png

          Wenn Du bei Dir auf die Änderung des Zählerstandes triggerst, kannst Du über den Baustein Wert den aktuellen Stand und über Vorheriger Wert den vorherigen Wert ermitteln.
          Über Zeitstempel und Vorheriger Zeitstempel kommt man (mit einfacher Substraktion) an die verstrichenen Sekunden. Daraus die Leistung zu errechnen ist dann simpel.
          Die kann man dann historisieren und 'ne schöne Grafik bauen, um die bezogene Leistung im Tagesverlauf darzustellen.

          4ae6a0d4-a6b8-4df2-afc3-6711016b7986-grafik.png

          1 Reply Last reply Reply Quote 0
          • S
            special_b last edited by

            Alle 6 Sekunden brauche ich eigentlich nicht, mir würde alle 10 Minuten oder so reichen. Also am besten nach Zeitplan, um 0:00 Uhr das erste mal, um 23:50 das letzte mal. Dann könnte man um 0:00 Uhr auch den Tagesverbrauch speichern.

            Was ich momentan nicht ganz so verstehe ist bei meiner Zeile: Setze NeuerZählerstand auf Wert: Wie kann ich da angeben dass hier der Wert der Objekt ID vom Verbrauchszähler genommen wird?
            Und wie komme ich dann mit dem Datenpunkt weiter sodass dann der Wert historisiert werden kann?

            mfg

            Special_B

            Codierknecht Homoran 2 Replies Last reply Reply Quote 0
            • Codierknecht
              Codierknecht Developer Most Active @special_b last edited by

              @special_b sagte in Stromverbrauch protokollieren:

              Was ich momentan nicht ganz so verstehe ist bei meiner Zeile: Setze NeuerZählerstand auf Wert: Wie kann ich da angeben dass hier der Wert der Objekt ID vom Verbrauchszähler genommen wird?

              So wie das in Deinem Script aussieht, ist es relativ sinnbefreit.
              Du hast doch schon den jeweils absoluten Zählerstand vorliegen. Also brauchst Du da ja nix an den DP ändern.
              Was Du brauchst ist ein DP um den Verbrauch zu loggen.
              Du musst Dir also unterhalb von 0_userdata.0 einen numerischen DP anlegen, in den Du jeweils den ermittelten Verbrauch im Zeitraum schreibst.

              7444cd19-8656-4ff5-bb56-61034c1f2288-image.png

              Schritt für Schritt - programming for runaways 😉

              • Die Variable verbrauch wird beim Start des Scriptes auf 0 gesetzt und in die Variable zaehlerstand der aktuelle Stand Deines Zählers eingelesen.
              • Alle 10 Minuten wird vom jetzigen Zählerstand der zuletzt gemerkte Wert abgezogen.
                Das ist der Verbrauch in den letzten 10 Minuten.
              • In der Variablen zaehlerstand wird jetzt der aktuelle Wert "gemerkt".
                Der wird ja für den nächsten Durchlauf in 10 Minuten wieder benötigt.
              • In den DP für den Verbrauch wird jetzt der ermittelte Wert eingetragen.
                Diesen DP musst Du historisieren!

              Den Tagesverbrauch sollte Dir SourceAnalytics ja bereits sauber protokollieren.

              Ich hoffe das war jetzt einigermaßen verständlich 😉

              1 Reply Last reply Reply Quote 0
              • Homoran
                Homoran Global Moderator Administrators @special_b last edited by

                @special_b sagte in Stromverbrauch protokollieren:

                Alle 6 Sekunden brauche ich eigentlich nicht,

                das ist halt das Intervall in dem die Daten aus dem Smartmeter kommen.
                Da braucht es dann keine weitere Logik, DPs usw.

                @special_b sagte in Stromverbrauch protokollieren:

                mir würde alle 10 Minuten oder so reichen

                Dann musst du Scripte bemühen.


                So ganz habe ich noch nicht verstanden was du wirklich erreichen willst, wenn du

                @special_b sagte in Stromverbrauch protokollieren:

                meinen Stromverbrauch analysieren um einen PV Akku zu planen.

                willst.

                Wofür brauchst du dann die Lastverteilung?
                zum einen ist die Tagesenergie interessant um die Kapazität zu planen, zum anderen die Spitzen um die maximale notwendige Entladeleistung zu kennen.
                Weiterhin die Einspeisung pro Tag, weil das die höchstmögliche Lademenge wäre.

                S 1 Reply Last reply Reply Quote 0
                • S
                  special_b @Homoran last edited by

                  Danke erstmal für euere Antworten.

                  Mir ist da vorhin noch was durch den Kopf gegangen. Wie bekomme ich den z.B. in History bzw. Flot die Daten? Werden da Grafiken erzeugt?
                  Wäre es nicht möglich, alle 10 Minuten den Verbrauch in eine CSV Datei zu schreiben und diese dann vom Mac auslesen zu lassen?
                  Mein IOBroker läuft mittlerweile auf einem Mac und dort könnte ich die Daten dann aus einer CSV Datei in Numbers importieren und dort weiter verarbeiten.

                  Würde der CSV Export funktionieren?

                  mfg

                  Special_B

                  Codierknecht 1 Reply Last reply Reply Quote 0
                  • Codierknecht
                    Codierknecht Developer Most Active @special_b last edited by

                    @special_b sagte in Stromverbrauch protokollieren:

                    Wäre es nicht möglich, alle 10 Minuten den Verbrauch in eine CSV Datei zu schreiben und diese dann vom Mac auslesen zu lassen?

                    Klingt wie "von hinten durch die Brust ins Auge".

                    Ich lade die in MariaDB geloggten Daten in Grafana und zeige die dort erzeugten Grafiken in der Vis an.
                    Geht natürlich auch mit Flot oder mit E-Charts.

                    1 Reply Last reply Reply Quote 0
                    • S
                      special_b last edited by special_b

                      Ok, wenn ihr meint dass das mit einer CSV nichts ist, dann halt so.

                      Ich habe das Skript nachgebaut:

                      iobroker3.png

                      Bei der letzten Zeile habe ich eine Weile gebraucht. Laufender_Verbrauch habe ich ewig gesucht und das mit dem Datenpunkt "unterhalb 0_userdata.0 hab ich auch nicht verstanden was das sein soll. Aber irgendwann hab ich mir fast gedacht, dass das zusammenhängen muss. Dann hab ich 0_userdata gefunden und konnte da tatsächlich einen Datenpunkt anlegen. Zustandstyp Number ist richtig, oder?
                      Dann lasse ich das Skript mal laufen und beobachte diesen Datenpunkt.
                      Dann muss ich halt mal schauen wie ich daraus dann ein Diagramm erstellen kann.

                      Danke euch schon mal.

                      Edit:

                      Ich bekomme Warnmeldungen im Log:

                      2023-01-05 18:10:00.008 - warn: javascript.0 (519) State "Object ID" not found
                      2023-01-05 18:10:00.010 - warn: javascript.0 (519) at setState (/usr/local/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1719:20)
                      2023-01-05 18:10:00.010 - warn: javascript.0 (519) at Object. (script.js.Stromzaehler_CSV:9:3)
                      2023-01-05 18:10:00.010 - warn: javascript.0 (519) at Job.job (/usr/local/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1595:34)
                      2023-01-05 18:10:00.010 - warn: javascript.0 (519) at Job.invoke (/usr/local/iobroker/node_modules/node-schedule/lib/Job.js:171:15)
                      2023-01-05 18:10:00.010 - warn: javascript.0 (519) at /usr/local/iobroker/node_modules/node-schedule/lib/Invocation.js:268:28
                      2023-01-05 18:10:00.010 - warn: javascript.0 (519) at Timeout._onTimeout (/usr/local/iobroker/node_modules/node-schedule/lib/Invocation.js:228:7)
                      2023-01-05 18:10:00.011 - warn: javascript.0 (519) at listOnTimeout (node:internal/timers:564:17)
                      2023-01-05 18:10:00.011 - warn: javascript.0 (519) at processTimers (node:internal/timers:507:7)
                      

                      Das ist doch wohl nicht normal, oder? Und das Skript muss ich noch ein bisschen umbenennen. Daran sollte es aber nicht liegen.

                      mfg

                      Special_B

                      Homoran Codierknecht 2 Replies Last reply Reply Quote 0
                      • Homoran
                        Homoran Global Moderator Administrators @special_b last edited by

                        @special_b sagte in Stromverbrauch protokollieren:

                        Das ist doch wohl nicht normal, oder?

                        doch!
                        wenn man keine ID zuweist ist das so.

                        S 1 Reply Last reply Reply Quote 1
                        • S
                          special_b @Homoran last edited by

                          @homoran

                          Welche ID? Wo? Im Datenpunkt? In Blockly? Wo?

                          mfg

                          Special_B

                          Homoran 1 Reply Last reply Reply Quote 0
                          • Homoran
                            Homoran Global Moderator Administrators @special_b last edited by

                            @special_b sagte in Stromverbrauch protokollieren:

                            In Blockly

                            da hast du den Baustein aktualisiere ohne Datenpunkt ID

                            1 Reply Last reply Reply Quote 0
                            • Codierknecht
                              Codierknecht Developer Most Active @special_b last edited by

                              @special_b
                              Ich befürchte, da fehlt noch 'ne ganze Menge grundsätzliches Verständnis. Aber keine Sorge - das kriegen wir schon hin.

                              Lösche zunächst mal den ersten „Aktualisiere“ Block.
                              Der soll ja einen DP aktualisieren den es gar nicht gibt.

                              S 1 Reply Last reply Reply Quote 1
                              • S
                                special_b @Codierknecht last edited by special_b

                                @codierknecht
                                Danke. Ja, da fehlt mir eine Menge grundsätzliches. Ich bin kein Programmierer und kenne mich mit dem Zeugs überhaupt nicht aus.

                                Ich hab jetzt meinen ersten aktualisiere Block gelöscht, ja der hat keinen Sinn gemacht. Sehe ich jetzt auch. In einer Minute werde ich sehen ob jetzt wieder Fehler kommen.

                                Edit: Sieht gut aus. Jetzt muss ich mich mit Flot vertraut machen. Oder doch was anderes? Was würdet ihr mir empfehlen?

                                mfg

                                Special_B

                                1 Reply Last reply Reply Quote 0
                                • S
                                  special_b last edited by

                                  So,

                                  nachdem das Skript nun schon einen ganzen Tag lief und funktioniert, habe ich nun das Skript um eine Durchschnittsberechnung erweitert. Ich habe die Auswertung einfach nur jede Stunde laufen lassen. Schaut euch einfach das Skript mal an:

                                  iobroker4.jpg

                                  Oder wie würdet ihr das machen?

                                  mfg

                                  Special_B

                                  1 Reply Last reply Reply Quote 0
                                  • S
                                    special_b last edited by

                                    Noch was, was mir nicht ganz so gefällt:

                                    Das ist mein aktueller Stromverbrauch.
                                    IOBroker5.jpg

                                    Gibt es eine Möglichkeit, die markierte Linie zu entfernen solange diese Werte noch nicht vorliegen?

                                    mfg

                                    Special_B

                                    Homoran 1 Reply Last reply Reply Quote 0
                                    • Homoran
                                      Homoran Global Moderator Administrators @special_b last edited by

                                      @special_b sagte in Stromverbrauch protokollieren:

                                      Gibt es eine Möglichkeit, die markierte Linie zu entfernen solange diese Werte noch nicht vorliegen?

                                      Ja!

                                      NULL Werte ignorieren

                                      S 1 Reply Last reply Reply Quote 0
                                      • S
                                        special_b @Homoran last edited by special_b

                                        @homoran

                                        Danke, aber der Strich bleibt. Er geht jetzt nur waagerecht rüber. Oder muss ich da noch wo anders als in History was machen?
                                        Die Durchschnittsberechnung hat natürlich auch nicht richtig funktioniert, da hätte ich vorher schon drauf kommen müssen. Jetzt scheint es aber zu funktionieren.

                                        mfg

                                        Special_B

                                        Homoran 1 Reply Last reply Reply Quote 0
                                        • Homoran
                                          Homoran Global Moderator Administrators @special_b last edited by

                                          @special_b sagte in Stromverbrauch protokollieren:

                                          Oder muss ich da noch wo anders als in History was machen?

                                          wieso History? in flot!

                                          @special_b sagte in Stromverbrauch protokollieren:

                                          Die Durchschnittsberechnung hat natürlich auch nicht richtig funktioniert,

                                          natürlich!
                                          hat nix mit Visualisierung zu tun

                                          S 1 Reply Last reply Reply Quote 0
                                          • S
                                            special_b @Homoran last edited by

                                            @homoran
                                            🙈🙈🙈 Meinte ich doch. Da hab ich das geändert aber die Linie ist nicht weg. Na gut, damit könnte ich eventuell leben.

                                            mfg

                                            Special_B

                                            Homoran 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            918
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            4
                                            42
                                            4432
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo