Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Visualisierung
  4. Wie erzeugten Strom pro Tag berechnen?

NEWS

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    8
    1
    295

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    9
    1
    274

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    916

Wie erzeugten Strom pro Tag berechnen?

Geplant Angeheftet Gesperrt Verschoben Visualisierung
32 Beiträge 7 Kommentatoren 2.8k Aufrufe 7 Beobachtet
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • W warhammer73

    Hallo,

    ich bin gerade komplett lost.

    Ich bekomme vom Fronius leider keine automatisch ermittelten Tageswerte für den erzeugten Strom etc. pro Tag.
    Das einzige was ich in der InfluxDB habe ist eine Liste mit Timestamps und der zu diesem Zeitpunkt erzeugte Strom.

    Nur wie bekomme ich aus dieser Liste jetzt den insgesamt erzeugten Strom (Wenigstens näherungsweise)?

    Danke!

    BananaJoeB Online
    BananaJoeB Online
    BananaJoe
    Most Active
    schrieb am zuletzt editiert von
    #3

    @warhammer73 erzeugt = in das Hausnetz eingespeist? 1-phasig, 2-phasig oder 3-phasig?

    ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 10 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 48TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=160 Tasmota/Shelly || >=95 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV APC 750W kaskadiert || Creality CR-10 SE 3D-Drucker

    1 Antwort Letzte Antwort
    0
    • W warhammer73

      Hallo,

      ich bin gerade komplett lost.

      Ich bekomme vom Fronius leider keine automatisch ermittelten Tageswerte für den erzeugten Strom etc. pro Tag.
      Das einzige was ich in der InfluxDB habe ist eine Liste mit Timestamps und der zu diesem Zeitpunkt erzeugte Strom.

      Nur wie bekomme ich aus dieser Liste jetzt den insgesamt erzeugten Strom (Wenigstens näherungsweise)?

      Danke!

      leika241265L Offline
      leika241265L Offline
      leika241265
      schrieb am zuletzt editiert von
      #4

      @warhammer73
      Hi,
      das alles kannst du mit dem Adapter "SourceAnalytix" machen.

      https://github.com/DrozmotiX/ioBroker.sourceanalytix

      Einfach den Adapter installieren und auf dem Objekt vom Fronius Adapter "P_PV (PV Power) aktivieren.

      W D 2 Antworten Letzte Antwort
      0
      • W Offline
        W Offline
        warhammer73
        schrieb am zuletzt editiert von
        #5

        @bananajoe said in Wie erzeugten Strom pro Tag berechnen?:

        @warhammer73 erzeugt = in das Hausnetz eingespeist? 1-phasig, 2-phasig oder 3-phasig?

        Ok, es geht mir um folgende Werte:
        P_AKKU
        P_GRID
        P_LOAD
        P_PV
        REL_AUTONOMY
        SOC

        Für P_PV funktioniert die von @leika241265 vorgeschlagene Lösung mit SourceAnalytix da nur positive Werte vorhanden sind die addiert werden müssen.
        Für SOC und REL_AUTONOMY funktioniert das ganze nicht, weil hier % Werte vorhanden sind, die zwar summiert werden können dann aber durch die Anzahl der Werte dividiert werden müssen um den Mittelwert zu bekommen.
        Für die restlichen drei P_* Werte ist das Problem das negative und positive Werte vorhanden sind, die vor dem summieren mit SourceAnalytix getrennt werden müssten.

        Irgendwie habe ich bisher keine Möglichkeit innerhalb vom iobroker oder im Grafana gefunden um sowas zu bauen.

        1 Antwort Letzte Antwort
        0
        • leika241265L leika241265

          @warhammer73
          Hi,
          das alles kannst du mit dem Adapter "SourceAnalytix" machen.

          https://github.com/DrozmotiX/ioBroker.sourceanalytix

          Einfach den Adapter installieren und auf dem Objekt vom Fronius Adapter "P_PV (PV Power) aktivieren.

          W Offline
          W Offline
          warhammer73
          schrieb am zuletzt editiert von
          #6

          @leika241265 said in Wie erzeugten Strom pro Tag berechnen?:

          @warhammer73
          Hi,
          das alles kannst du mit dem Adapter "SourceAnalytix" machen.

          https://github.com/DrozmotiX/ioBroker.sourceanalytix

          Einfach den Adapter installieren und auf dem Objekt vom Fronius Adapter "P_PV (PV Power) aktivieren.

          Ja, meine Beschreibung was ich vor habe war etwas zu kurz, weil ich eine Lösung erwartet hatte die ich dann für die anderen Fälle (Siehe Beitrag vorher) anpassen kann.

          1 Antwort Letzte Antwort
          0
          • leika241265L leika241265

            @warhammer73
            Hi,
            das alles kannst du mit dem Adapter "SourceAnalytix" machen.

            https://github.com/DrozmotiX/ioBroker.sourceanalytix

            Einfach den Adapter installieren und auf dem Objekt vom Fronius Adapter "P_PV (PV Power) aktivieren.

            D Offline
            D Offline
            diwoma
            schrieb am zuletzt editiert von
            #7

            @leika241265
            Ich stehe eigentlich vor dem gleichen Problem, es betrifft nur andere Datenpunkte.
            Aus der PV bekomme ich schon die gesamt erzeugte Leistung, damit kann ich in Grafana einfach meine Diagramme über den Zeitraum machen.

            Ich bekomme aber aus der PV nicht die Gesamtmenge, der vom Grid bezogenen, oder in das Grid gelieferte Leistung. Da muss ich aus der aktuellen Leistung eigentlich bei jeder Änderung über die Zeit die kWh berechnen und zu einem Datenpunkt addieren. Dann hätte ich das auch.

            Also habe ich SourceAnalytics installiert und stehe jetzt auf dem Schlauch. Ich werde aus den Einstellungen und auch aus der Doku nicht schlau.

            Ich will weder was über dan Tag oder Monat oder Jahr. Ich will einfach den Verbrauch, bzw. die Einspeisung kumulieren.
            Was muss ich dann bei dem Datenpunkt einstellen.

            -- diwoma

            ioBroker in LX-Container in Proxmox
            Zigbee-Coordinator: CC2652P2-TCP FW: 20230507

            D 1 Antwort Letzte Antwort
            0
            • D diwoma

              @leika241265
              Ich stehe eigentlich vor dem gleichen Problem, es betrifft nur andere Datenpunkte.
              Aus der PV bekomme ich schon die gesamt erzeugte Leistung, damit kann ich in Grafana einfach meine Diagramme über den Zeitraum machen.

              Ich bekomme aber aus der PV nicht die Gesamtmenge, der vom Grid bezogenen, oder in das Grid gelieferte Leistung. Da muss ich aus der aktuellen Leistung eigentlich bei jeder Änderung über die Zeit die kWh berechnen und zu einem Datenpunkt addieren. Dann hätte ich das auch.

              Also habe ich SourceAnalytics installiert und stehe jetzt auf dem Schlauch. Ich werde aus den Einstellungen und auch aus der Doku nicht schlau.

              Ich will weder was über dan Tag oder Monat oder Jahr. Ich will einfach den Verbrauch, bzw. die Einspeisung kumulieren.
              Was muss ich dann bei dem Datenpunkt einstellen.

              D Offline
              D Offline
              diwoma
              schrieb am zuletzt editiert von
              #8

              @diwoma
              Oder mache ich mir das Leben schwer, wenn ich versuche, die kWh aus der Leistung der vorherigen Messung und der Zeit-Differenz zur aktuellen Messung ermittle und dann auf einen Datenpunkt addiere?

              Prinzipiell brauche ich sowas wie einen aktuellen Zählerstand. Ich bekomme ca. alle Sekunden ein Update. Würde es reichen, nur den aktuellen Wert jeweils zu kumulieren um mir einen "virtuellen" Zählerstand zu erstellen?

              Ich nehme an, bei Messungen im Sekundentakt wäre die Abweichung nicht so groß.
              Oder habe ich da auch einen Gedankenfehler?

              -- diwoma

              ioBroker in LX-Container in Proxmox
              Zigbee-Coordinator: CC2652P2-TCP FW: 20230507

              BananaJoeB 2 Antworten Letzte Antwort
              0
              • D diwoma

                @diwoma
                Oder mache ich mir das Leben schwer, wenn ich versuche, die kWh aus der Leistung der vorherigen Messung und der Zeit-Differenz zur aktuellen Messung ermittle und dann auf einen Datenpunkt addiere?

                Prinzipiell brauche ich sowas wie einen aktuellen Zählerstand. Ich bekomme ca. alle Sekunden ein Update. Würde es reichen, nur den aktuellen Wert jeweils zu kumulieren um mir einen "virtuellen" Zählerstand zu erstellen?

                Ich nehme an, bei Messungen im Sekundentakt wäre die Abweichung nicht so groß.
                Oder habe ich da auch einen Gedankenfehler?

                BananaJoeB Online
                BananaJoeB Online
                BananaJoe
                Most Active
                schrieb am zuletzt editiert von
                #9

                @diwoma mit einem Wert der gerade die aktuelle Einspeisung angibt kommst du nicht weiter. Das ist total ungenau, selbst wenn du es sekündlich machst.

                Du brauchst einen Wert der addiert. Einen Gesamtzähler, von mir auch Tageszähler oder so.

                Weshalb ich schon @warhammer73 die Frage gestellt habe wie denn eingespeist wird, 1-phasig, 2-phasig oder 3-phasig?
                Denn wenn dein Gerät - warum auch immer - das nicht hergibt könnte man z.B. einen Shelly 3em (3-phasig) oder Shelly em (1-phasig) einfach dazwischen hängen (die haben Mess-Adapter welche man um die Adern der Stromkabel klippst.
                Dann hättest du so einen Zähler.

                Also, nichts dabei was Wh oder kWh auspuckt?

                ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 10 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 48TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=160 Tasmota/Shelly || >=95 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV APC 750W kaskadiert || Creality CR-10 SE 3D-Drucker

                D 1 Antwort Letzte Antwort
                0
                • BananaJoeB BananaJoe

                  @diwoma mit einem Wert der gerade die aktuelle Einspeisung angibt kommst du nicht weiter. Das ist total ungenau, selbst wenn du es sekündlich machst.

                  Du brauchst einen Wert der addiert. Einen Gesamtzähler, von mir auch Tageszähler oder so.

                  Weshalb ich schon @warhammer73 die Frage gestellt habe wie denn eingespeist wird, 1-phasig, 2-phasig oder 3-phasig?
                  Denn wenn dein Gerät - warum auch immer - das nicht hergibt könnte man z.B. einen Shelly 3em (3-phasig) oder Shelly em (1-phasig) einfach dazwischen hängen (die haben Mess-Adapter welche man um die Adern der Stromkabel klippst.
                  Dann hättest du so einen Zähler.

                  Also, nichts dabei was Wh oder kWh auspuckt?

                  D Offline
                  D Offline
                  diwoma
                  schrieb am zuletzt editiert von
                  #10

                  @bananajoe said in Wie erzeugten Strom pro Tag berechnen?:

                  Also, nichts dabei was Wh oder kWh auspuckt?

                  Nur was die Erzeugung von der PV angeht, dort wird ein power_total ausgegeben.
                  Alles andere sind nur Momentanwerte (Grid, Verbrauch, Speicher)

                  Und ich warte schon seit 10 Monaten auf die Freischaltung der Schnittstelle meines Smartmeters, damit ich am Einspeise-Punkt die Daten abnehmen kann.

                  -- diwoma

                  ioBroker in LX-Container in Proxmox
                  Zigbee-Coordinator: CC2652P2-TCP FW: 20230507

                  BananaJoeB 1 Antwort Letzte Antwort
                  0
                  • D diwoma

                    @bananajoe said in Wie erzeugten Strom pro Tag berechnen?:

                    Also, nichts dabei was Wh oder kWh auspuckt?

                    Nur was die Erzeugung von der PV angeht, dort wird ein power_total ausgegeben.
                    Alles andere sind nur Momentanwerte (Grid, Verbrauch, Speicher)

                    Und ich warte schon seit 10 Monaten auf die Freischaltung der Schnittstelle meines Smartmeters, damit ich am Einspeise-Punkt die Daten abnehmen kann.

                    BananaJoeB Online
                    BananaJoeB Online
                    BananaJoe
                    Most Active
                    schrieb am zuletzt editiert von
                    #11

                    @diwoma sagte in Wie erzeugten Strom pro Tag berechnen?:

                    @bananajoe said in Wie erzeugten Strom pro Tag berechnen?:

                    Also, nichts dabei was Wh oder kWh auspuckt?

                    Nur was die Erzeugung von der PV angeht, dort wird ein power_total ausgegeben.

                    in einer ..h Einheit? Für den Tag? Als Gesamtzähler? Wenn ja hast du doch alles was du brauchst um es mit dem SourceAnalytix zu verheiraten, ggf. mit einem Skript dazwischen

                    ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 10 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 48TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=160 Tasmota/Shelly || >=95 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV APC 750W kaskadiert || Creality CR-10 SE 3D-Drucker

                    D 1 Antwort Letzte Antwort
                    0
                    • mickymM Offline
                      mickymM Offline
                      mickym
                      Most Active
                      schrieb am zuletzt editiert von
                      #12

                      Wenn Du InfluxDB hast - kannst Du doch über aggregateWindow bestimmte Summen und Mittelwerte abfragen. Wenn man diese Aggregatefunktion aber selber definieren will, da bin ich im MOment noch nicht dahinter gestiegen

                      Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                      D 1 Antwort Letzte Antwort
                      0
                      • BananaJoeB BananaJoe

                        @diwoma sagte in Wie erzeugten Strom pro Tag berechnen?:

                        @bananajoe said in Wie erzeugten Strom pro Tag berechnen?:

                        Also, nichts dabei was Wh oder kWh auspuckt?

                        Nur was die Erzeugung von der PV angeht, dort wird ein power_total ausgegeben.

                        in einer ..h Einheit? Für den Tag? Als Gesamtzähler? Wenn ja hast du doch alles was du brauchst um es mit dem SourceAnalytix zu verheiraten, ggf. mit einem Skript dazwischen

                        D Offline
                        D Offline
                        diwoma
                        schrieb am zuletzt editiert von
                        #13

                        @bananajoe said in Wie erzeugten Strom pro Tag berechnen?:

                        in einer ..h Einheit? Für den Tag? Als Gesamtzähler? Wenn ja hast du doch alles was du brauchst um es mit dem SourceAnalytix zu verheiraten, ggf. mit einem Skript dazwischen

                        Und genau das interessiert mich nicht, sondern die Werte die kein ..h am Ende haben.
                        Und Source-Analytics ist zu oversized für mich, da ich keine Kosten ausrechnen will und das ist der Hauptsinn des Adapters, wenn man keine Kostenstruktur hinterlegt funktionert er überhaupt nicht (nach schneller Prüfung)

                        -- diwoma

                        ioBroker in LX-Container in Proxmox
                        Zigbee-Coordinator: CC2652P2-TCP FW: 20230507

                        1 Antwort Letzte Antwort
                        0
                        • mickymM mickym

                          Wenn Du InfluxDB hast - kannst Du doch über aggregateWindow bestimmte Summen und Mittelwerte abfragen. Wenn man diese Aggregatefunktion aber selber definieren will, da bin ich im MOment noch nicht dahinter gestiegen

                          D Offline
                          D Offline
                          diwoma
                          schrieb am zuletzt editiert von
                          #14

                          @mickym

                          @mickym said in Wie erzeugten Strom pro Tag berechnen?:

                          Wenn Du InfluxDB hast - kannst Du doch über aggregateWindow bestimmte Summen und Mittelwerte abfragen. Wenn man diese Aggregatefunktion aber selber definieren will, da bin ich im MOment noch nicht dahinter gestiegen

                          Genau, das habe ich auch gehofft, aber bin dann an den Funktionen gescheitert. Ich kann das, was ich haben will nur aus den "Zählerständen" ermitteln. und die fehlen mir eben.

                          -- diwoma

                          ioBroker in LX-Container in Proxmox
                          Zigbee-Coordinator: CC2652P2-TCP FW: 20230507

                          W Ralla66R 2 Antworten Letzte Antwort
                          0
                          • D diwoma

                            @mickym

                            @mickym said in Wie erzeugten Strom pro Tag berechnen?:

                            Wenn Du InfluxDB hast - kannst Du doch über aggregateWindow bestimmte Summen und Mittelwerte abfragen. Wenn man diese Aggregatefunktion aber selber definieren will, da bin ich im MOment noch nicht dahinter gestiegen

                            Genau, das habe ich auch gehofft, aber bin dann an den Funktionen gescheitert. Ich kann das, was ich haben will nur aus den "Zählerständen" ermitteln. und die fehlen mir eben.

                            W Offline
                            W Offline
                            warhammer73
                            schrieb am zuletzt editiert von
                            #15

                            @diwoma

                            Ich sehe Du bist am selben Problem am verzweifeln.
                            Sowas wie den durchschnittlichen Autarkiegrad pro Tag gibts halt nicht fertig.

                            1 Antwort Letzte Antwort
                            0
                            • D diwoma

                              @diwoma
                              Oder mache ich mir das Leben schwer, wenn ich versuche, die kWh aus der Leistung der vorherigen Messung und der Zeit-Differenz zur aktuellen Messung ermittle und dann auf einen Datenpunkt addiere?

                              Prinzipiell brauche ich sowas wie einen aktuellen Zählerstand. Ich bekomme ca. alle Sekunden ein Update. Würde es reichen, nur den aktuellen Wert jeweils zu kumulieren um mir einen "virtuellen" Zählerstand zu erstellen?

                              Ich nehme an, bei Messungen im Sekundentakt wäre die Abweichung nicht so groß.
                              Oder habe ich da auch einen Gedankenfehler?

                              BananaJoeB Online
                              BananaJoeB Online
                              BananaJoe
                              Most Active
                              schrieb am zuletzt editiert von
                              #16

                              Erst schreibst du das:

                              @diwoma sagte in Wie erzeugten Strom pro Tag berechnen?:

                              @diwoma
                              Oder mache ich mir das Leben schwer, wenn ich versuche, die kWh aus der Leistung der vorherigen Messung und der Zeit-Differenz zur aktuellen Messung ermittle und dann auf einen Datenpunkt addiere?

                              Prinzipiell brauche ich sowas wie einen aktuellen Zählerstand. Ich bekomme ca. alle Sekunden ein Update. Würde es reichen, nur den aktuellen Wert jeweils zu kumulieren um mir einen "virtuellen" Zählerstand zu erstellen?

                              Ich nehme an, bei Messungen im Sekundentakt wäre die Abweichung nicht so groß.
                              Oder habe ich da auch einen Gedankenfehler?

                              und nun das:

                              @bananajoe said in Wie erzeugten Strom pro Tag berechnen?:
                              in einer ..h Einheit? Für den Tag? Als Gesamtzähler? Wenn ja hast du doch alles was du brauchst um es mit dem >> SourceAnalytix zu verheiraten, ggf. mit einem Skript dazwischen

                              Und genau das interessiert mich nicht, sondern die Werte die kein ..h am Ende haben.
                              Und Source-Analytics ist zu oversized für mich, da ich keine Kosten ausrechnen will und das ist der Hauptsinn des > Adapters, wenn man keine Kostenstruktur hinterlegt funktionert er überhaupt nicht (nach schneller Prüfung)

                              Also, hast du nun einen Zählerstand oder nicht? Und ein Zählerstand wäre immer kWh oder Wh denn es ist ja ein Zählerstand, keine Momentwert. Die Zähler zählen Verbrauchswerte und bei Strom dient dazu der Faktor Zeit(spanne) als Bezugspunkt wie bei Wasser es das Volumen wäre.

                              ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 10 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 48TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=160 Tasmota/Shelly || >=95 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV APC 750W kaskadiert || Creality CR-10 SE 3D-Drucker

                              mickymM D 2 Antworten Letzte Antwort
                              0
                              • BananaJoeB BananaJoe

                                Erst schreibst du das:

                                @diwoma sagte in Wie erzeugten Strom pro Tag berechnen?:

                                @diwoma
                                Oder mache ich mir das Leben schwer, wenn ich versuche, die kWh aus der Leistung der vorherigen Messung und der Zeit-Differenz zur aktuellen Messung ermittle und dann auf einen Datenpunkt addiere?

                                Prinzipiell brauche ich sowas wie einen aktuellen Zählerstand. Ich bekomme ca. alle Sekunden ein Update. Würde es reichen, nur den aktuellen Wert jeweils zu kumulieren um mir einen "virtuellen" Zählerstand zu erstellen?

                                Ich nehme an, bei Messungen im Sekundentakt wäre die Abweichung nicht so groß.
                                Oder habe ich da auch einen Gedankenfehler?

                                und nun das:

                                @bananajoe said in Wie erzeugten Strom pro Tag berechnen?:
                                in einer ..h Einheit? Für den Tag? Als Gesamtzähler? Wenn ja hast du doch alles was du brauchst um es mit dem >> SourceAnalytix zu verheiraten, ggf. mit einem Skript dazwischen

                                Und genau das interessiert mich nicht, sondern die Werte die kein ..h am Ende haben.
                                Und Source-Analytics ist zu oversized für mich, da ich keine Kosten ausrechnen will und das ist der Hauptsinn des > Adapters, wenn man keine Kostenstruktur hinterlegt funktionert er überhaupt nicht (nach schneller Prüfung)

                                Also, hast du nun einen Zählerstand oder nicht? Und ein Zählerstand wäre immer kWh oder Wh denn es ist ja ein Zählerstand, keine Momentwert. Die Zähler zählen Verbrauchswerte und bei Strom dient dazu der Faktor Zeit(spanne) als Bezugspunkt wie bei Wasser es das Volumen wäre.

                                mickymM Offline
                                mickymM Offline
                                mickym
                                Most Active
                                schrieb am zuletzt editiert von
                                #17

                                @bananajoe @diwoma Ja und dann könnte man sich bei Influx-DB über das aggregate window einfach den letzten Zählerstand pro Tag ausgeben lassen und die Differenz selbst berechnen.

                                Den letzten Zählerstand out of the box geht mit den InfluxDB tools.

                                Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                                1 Antwort Letzte Antwort
                                0
                                • D diwoma

                                  @mickym

                                  @mickym said in Wie erzeugten Strom pro Tag berechnen?:

                                  Wenn Du InfluxDB hast - kannst Du doch über aggregateWindow bestimmte Summen und Mittelwerte abfragen. Wenn man diese Aggregatefunktion aber selber definieren will, da bin ich im MOment noch nicht dahinter gestiegen

                                  Genau, das habe ich auch gehofft, aber bin dann an den Funktionen gescheitert. Ich kann das, was ich haben will nur aus den "Zählerständen" ermitteln. und die fehlen mir eben.

                                  Ralla66R Offline
                                  Ralla66R Offline
                                  Ralla66
                                  Most Active
                                  schrieb am zuletzt editiert von
                                  #18

                                  Kann h nicht annähernd berechnet werden wenn jede Minute der Momentwert addiert wird innerhalb einer Stunde ?
                                  Richtung Mittelwert errechnen.

                                  BananaJoeB 1 Antwort Letzte Antwort
                                  0
                                  • Ralla66R Ralla66

                                    Kann h nicht annähernd berechnet werden wenn jede Minute der Momentwert addiert wird innerhalb einer Stunde ?
                                    Richtung Mittelwert errechnen.

                                    BananaJoeB Online
                                    BananaJoeB Online
                                    BananaJoe
                                    Most Active
                                    schrieb am zuletzt editiert von
                                    #19

                                    @ralla66 klar, mit einer Fehlerquote +/- 100% ... also nein, nicht wirklich seriös weil der es ständig extrem schwankt. Sekündlich.
                                    hier ein Beispiel (Werte alle 15 Sekunden):
                                    8623fa44-88ab-444c-9359-cad5db7a8b19-image.png da kann ich noch viel weiter reinzoomen und es wird immer krakeliger

                                    ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 10 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 48TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=160 Tasmota/Shelly || >=95 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV APC 750W kaskadiert || Creality CR-10 SE 3D-Drucker

                                    Ralla66R 1 Antwort Letzte Antwort
                                    0
                                    • mickymM Offline
                                      mickymM Offline
                                      mickym
                                      Most Active
                                      schrieb am zuletzt editiert von mickym
                                      #20

                                      Wie gesagt - wenn es ein Zählerstand ist, dann braucht man sich über eine Influx DB Abfrage den letzten im 24h Window ausgeben lassen und muss dann halt selbst rechnen:

                                      768edffe-c9ca-4395-b990-c5f17a389d64-image.png

                                      Ich bin nur nicht dahintergekommen, wie man die fn Funktion in dem aggregateWindow selbst definieren kann.

                                      Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                                      1 Antwort Letzte Antwort
                                      0
                                      • BananaJoeB BananaJoe

                                        @ralla66 klar, mit einer Fehlerquote +/- 100% ... also nein, nicht wirklich seriös weil der es ständig extrem schwankt. Sekündlich.
                                        hier ein Beispiel (Werte alle 15 Sekunden):
                                        8623fa44-88ab-444c-9359-cad5db7a8b19-image.png da kann ich noch viel weiter reinzoomen und es wird immer krakeliger

                                        Ralla66R Offline
                                        Ralla66R Offline
                                        Ralla66
                                        Most Active
                                        schrieb am zuletzt editiert von Ralla66
                                        #21

                                        @bananajoe

                                        und unseriös, getriggert jede Sekunde mit Filter für Max / Min Wert entfernen ?
                                        Wie triggert das denn der Zähler vom Versorger. Alle 200 us ?
                                        Oder wie wird das gemessen.

                                        mickymM BananaJoeB 2 Antworten Letzte Antwort
                                        0
                                        • W warhammer73

                                          Hallo,

                                          ich bin gerade komplett lost.

                                          Ich bekomme vom Fronius leider keine automatisch ermittelten Tageswerte für den erzeugten Strom etc. pro Tag.
                                          Das einzige was ich in der InfluxDB habe ist eine Liste mit Timestamps und der zu diesem Zeitpunkt erzeugte Strom.

                                          Nur wie bekomme ich aus dieser Liste jetzt den insgesamt erzeugten Strom (Wenigstens näherungsweise)?

                                          Danke!

                                          P Offline
                                          P Offline
                                          picky
                                          schrieb am zuletzt editiert von picky
                                          #22

                                          @warhammer73
                                          Wäre es nicht am einfachsten, du hängst eine einfache Tasmota Steckdose oder einen Shelly zum einspeisen dazwischen ?
                                          Ich habe Tasmota Steckdose wo ich einspeiße und einen Shelly3em (3 phasen) für meinen Stromverbrauch.
                                          Zum auswerten benutze ich diese 2 Scripte, es legt dann auch die Datenpunkte für Tag, Monat usw. an.

                                          Tasmota:

                                          /*
                                          * @copyright 2020 Stephan Kreyenborg <stephan@kreyenborg.koeln>
                                          *
                                          * @author 2020 Stephan Kreyenborg <stephan@kreyenborg.koeln>
                                          *
                                          * Dieses Skript dient zur freien Verwendung in ioBroker zur Verbrauchserfassung der Tasmota Geräte.
                                          * Jegliche Verantwortung liegt beim Benutzer. Das Skript wurde unter Berücksichtigung der bestmöglichen Nutzung
                                          * und Performance entwickelt.
                                          * Der Entwickler versichert, das keine böswilligen Systemeingriffe im originalen Skript vorhanden sind.
                                          *
                                          * Sollte das Skript wider Erwarten nicht korrekt funktionieren, so hast Du jederzeit die Möglichkeit, Dich auf
                                          * https://www.kreyenborg.koeln
                                          * für Unterstützung zu melden. Jedes Skript besitzt seine eigene Kommentarseite, auf der,
                                          * nach zeitlicher Möglichkeit des Autors, Hilfe angeboten wird. Ein Anrecht hierauf besteht nicht!
                                          *
                                          * Ansprüche gegenüber Dritten bestehen nicht.
                                          *
                                          * Skript Name: Tasmota-Verbrauch
                                          * Skript Version: 1.1
                                          * Erstell-Datum: 19. März 2021
                                          *
                                          */
                                          
                                          // Datenpunkte neu erstellen
                                          var ueberschreiben = false;
                                          
                                          // Hauptdatenpunkt unterhalb javascript
                                          var datenpunkt = "TasmotaVerbrauch.";
                                          
                                          // Verbrauchs Objekte der einzelnen Tasmota
                                          const objekt = ["gesamt", "dieses_jahr", "letztes_jahr", "letzter_monat", "dieser_monat", "letzte_woche",
                                          "diese_woche", "gestern", "heute", "alter_wert", "aktueller_wert"];
                                          
                                          // Beschreibung der Objekte
                                          const beschreibung = ["Gesamter Vebrauch des Tasmota", "Verbrauch aktuelles Jahr", "Verbrauch letztes Jahr",
                                          "Verbrauch letzten Monat", "Verbrauch aktueller Monat", "Verbrauch letzte Woche", "Verbrauch diese Woche",
                                          "Verbrauch gestern", "Verbrauch heute", "Messwert alt", "Messwert neu"];
                                          
                                          // Datenpunkt der Tasmota Geräte (Standard: sonoff.0)
                                          var tasmota_dp = "sonoff.0";
                                          
                                          // Datenpunkte der Tasmota (!!! Bitte nicht ändern !!!)
                                          //const tasmotaDps = $('state[id=' + tasmota_dp + '.*.ENERGY_Total]');
                                          const tasmotaDps = $('state[id=' + tasmota_dp + '.*.ENERGY.Total]');
                                          
                                          
                                          // Datenpunkte der Tasmota Namen (!!! Bitte nicht ändern !!!)
                                          const tasmotaDpsName = $('state[id=' + tasmota_dp + '.*.DeviceName]');
                                          
                                          // Tasmota Verbrauch aktualisieren - nachts um 00:00 Uhr
                                          function tasmota_vebrauch_tag() {
                                          // Nochmals das Tagesupdate durchlaufen, damit die restlichen Werte gelesen werden
                                          tasmota_verbrauch_update();
                                          
                                          // Datumsvariable
                                          var heute = new Date();
                                          
                                          // Heute zu Gestern verschieben. Täglich um 00:00 Uhr
                                          verschiebe_verbrauch_objekt("heute", "gestern");
                                          log ("Tasmota Verbrauch: Werte für gestern und heute aktualisiert!");
                                          
                                          // aktuelle Woche in letzte Woche verschieben. Am Montag um 00:00 Uhr
                                          if (heute.getDay() === 1) {
                                          verschiebe_verbrauch_objekt("diese_woche", "letzte_woche");
                                          log ("Tasmota Verbrauch: Werte für diese und letzte Woche aktualisiert!");
                                          }
                                          
                                          // aktueller Monat in letzten Monat verschieben. Am 1. des Monats um 00:00 Uhr
                                          if (heute.getDate() === 1) {
                                          verschiebe_verbrauch_objekt("dieser_monat", "letzter_monat");
                                          log ("Tasmota Verbrauch: Werte für diesen und letzten Monat aktualisiert!");
                                          }
                                          
                                          // aktuelles Jahr in letztes Jahr verschieben. Am 1. des Monats am 1. Monat um 00:00 Uhr
                                          if (heute.getDate() === 1 && heute.getMonth() === 0) {
                                          verschiebe_verbrauch_objekt("dieses_jahr", "letztes_jahr");
                                          log ("Tasmota Verbrauch: Werte für dieses und letztes Jahr aktualisiert!");
                                          }
                                          }
                                          
                                          // Tagesverbrauch alle 15 Min von der Original Variable des Tasmota in eigene Variable kopieren
                                          function tasmota_verbrauch_update() {
                                          var anzahl_updates = 0;
                                          var anzahl_reboots = 0;
                                          var anzahl_gleich = 0;
                                          tasmotaDps.each(function (id, i) {
                                          var tasmota_verbrauch = getState(id).val;
                                          // Einige Tasmota haben keine Verbrauchswerte (noch nicht)
                                          if (tasmota_verbrauch != null) {
                                          // Hole aktuellen Wert, um zu kontrollieren, ob ein Reboot stattgefunden hat
                                          var aktueller_wert = getState(tasmota_DP(id) + "aktueller_wert").val;
                                          var alter_wert = 0;
                                          // Prüfe alten und neuen Wert
                                          if (tasmota_verbrauch > aktueller_wert) {
                                          // Verbrauchswert ist größer als alter Wert -> es wurde kein Reboot durchgeführt
                                          setState(tasmota_DP(id) + "alter_wert", aktueller_wert,true);
                                          alter_wert = aktueller_wert;
                                          anzahl_updates++;
                                          }
                                          if (aktueller_wert > tasmota_verbrauch) {
                                          // Verbrauchswert ist kleiner als alter Wert -> es wurde ein Reboot durchgeführt
                                          setState(tasmota_DP(id) + "alter_wert", 0,true);
                                          alter_wert = tasmota_verbrauch;
                                          anzahl_reboots++;
                                          }
                                          if (tasmota_verbrauch == aktueller_wert) {
                                          // Verbrauchswert ist gleich wie alter Wert -> kein Update notwendig
                                          alter_wert = aktueller_wert;
                                          anzahl_gleich++;
                                          }
                                          
                                          setState(tasmota_DP(id) + "aktueller_wert", tasmota_verbrauch);
                                          // Alter und neuer Wert -> aktuelle Differenz
                                          
                                          var verbrauch = parseFloat(tasmota_verbrauch) - alter_wert;
                                          // Tagesverbrauch aktualisieren
                                          aktualisiere_vebrauch_objekt(id, "heute", verbrauch);
                                          
                                          // Wochenverbrauch aktualisieren
                                          aktualisiere_vebrauch_objekt(id, "diese_woche", verbrauch);
                                          
                                          // Monatsverbrauch aktualisieren
                                          aktualisiere_vebrauch_objekt(id, "dieser_monat", verbrauch);
                                          
                                          // Jahresverbrauch aktualisieren
                                          aktualisiere_vebrauch_objekt(id, "dieses_jahr", verbrauch);
                                          
                                          // Gesamten Vebrauch aktualisieren
                                          aktualisiere_vebrauch_objekt(id, "gesamt", verbrauch);
                                          }
                                          });
                                          aktualisiere_namen();
                                          log("Tasmota Verbrauch: Verbrauchswerte aktualisiert: " + anzahl_updates + " | Reboots korrigiert: " + anzahl_reboots + " | Unveränderte Werte: " + anzahl_gleich);
                                          }
                                          
                                          // aktualisiert das jeweilige Verbrauchs-Objekt und addiert den Verbrauch dazu
                                          function aktualisiere_vebrauch_objekt(dp, objekt, wert) {
                                          var verbrauch = parseFloat(getState(tasmota_DP(dp) + objekt).val) + parseFloat(wert);
                                          verbrauch = parseFloat(verbrauch.toFixed(3));
                                          setState(tasmota_DP(dp) + objekt, verbrauch,true);
                                          }
                                          
                                          // Verschiebt das jeweilige Verbrauchs-Objekt und nullt den Ursprung (Tag, Woche, Monat, Jahr)
                                          function verschiebe_verbrauch_objekt(von, nach) {
                                          $('state[id=*.' + datenpunkt + '*.' + von + ']').each(function (id, i) {
                                          // Temporärer Gruppen-Datenpunkt
                                          var tmp_dp = id.slice(0, -(von.length));
                                          var verbrauch = getState(id).val;
                                          if (verbrauch != null) {
                                          setState(tmp_dp + nach, verbrauch,true);
                                          }
                                          // Setze heute zurück
                                          setState(id, 0,true);
                                          });
                                          }
                                          
                                          // Funktion um die aktuellen Namen der Tasmota abzuholen
                                          function aktualisiere_namen() {
                                          tasmotaDpsName.each(function (id, i) {
                                          setState(tasmota_DP_Name(id),String(getState(id).val),true);
                                          });
                                          }
                                          
                                          // Erstelle die benötigten Datenpunkte
                                          function datenpunkte_erstellen() {
                                          // Anzahl der gefundenen Tasmota
                                          var anzahl = tasmotaDps.length;
                                          
                                          tasmotaDps.each(function (id, j) {
                                          var initial_wert = 0;
                                          for (var i = 0; i < objekt.length; i++) {
                                          // Startwerte werden nur bei alter_wert und aktueller_wert eingetragen
                                          if (i > 8) {
                                          initial_wert = getState(id).val;
                                          }
                                          createState(tasmota_DP(id) + objekt[i], initial_wert, ueberschreiben, {
                                          name: beschreibung[i],
                                          desc: beschreibung[i],
                                          type: "number",
                                          role: "value.power",
                                          unit: "kWh"
                                          });
                                          }
                                          });
                                          
                                          // Alle Datenpunkte erstellt. Frage ersten Verbrauch ab!
                                          log("Tasmota Verbrauch: Datenpunkte erstellt! Erster Verbrauch steht nach 1 Minute zur Verfügung! Anzahl gefundener Tasmota Datenpunkte: " + anzahl);
                                          setTimeout(tasmota_verbrauch_update, 20000);
                                          
                                          // Datenpunkte für die Namen der Tasmota erstellen
                                          tasmotaDpsName.each(function(id, j) {
                                          createState(tasmota_DP_Name(id), "", ueberschreiben, {
                                          name: "Name des Tasmota",
                                          desc: "Name des Tasmota",
                                          type: "string",
                                          role: "value",
                                          unit: ""
                                          });
                                          });
                                          }
                                          
                                          function tasmota_DP(dp) {
                                          dp = dp.split(".");
                                          dp = datenpunkt + dp[2] + ".";
                                          return dp;
                                          }
                                          
                                          function tasmota_DP_Name(dp) {
                                          dp = dp.split(".");
                                          dp = datenpunkt + dp[2] + "." + dp[3];
                                          return dp;
                                          }
                                          
                                          function tasmota_verbrauch_erster_start() {
                                          log("Tasmota Verbrauch: Erster Start des Skriptes! Datenpunkte werden erstellt!");
                                          // Datenpunkte werden erstellt
                                          datenpunkte_erstellen();
                                          }
                                          
                                          // Erster Start und Initialisierung
                                          tasmota_verbrauch_erster_start();
                                          
                                          // Alle 15 Minuten das Skript für den Tagesverbrauch ausführen
                                          schedule('*/1 * * * *', tasmota_verbrauch_update);
                                          
                                          // Nachts um 24 Uhr werden die Werte in andere Variablen gespeichert, um den Verlauf zu erstellen
                                          schedule('0 0 * * *', tasmota_vebrauch_tag);
                                          

                                          shelly3em:

                                          /*
                                          * @copyright 2021 Stephan Kreyenborg <stephan@kreyenborg.koeln>
                                          *
                                          * @author 2021 Stephan Kreyenborg <stephan@kreyenborg.koeln>
                                          *
                                          * Dieses Skript dient zur freien Verwendung in ioBroker zur Verbrauchserfassung der Shelly Geräte.
                                          * Jegliche Verantwortung liegt beim Benutzer. Das Skript wurde unter Berücksichtigung der bestmöglichen Nutzung
                                          * und Performance entwickelt.
                                          * Der Entwickler versichert, das keine böswilligen Systemeingriffe im originalen Skript vorhanden sind.
                                          *
                                          * Sollte das Skript wider Erwarten nicht korrekt funktionieren, so hast Du jederzeit die Möglichkeit, Dich auf
                                          * https://www.kreyenborg.koeln
                                          * für Unterstützung zu melden. Jedes Skript besitzt seine eigene Kommentarseite, auf der,
                                          * nach zeitlicher Möglichkeit des Autors, Hilfe angeboten wird. Ein Anrecht hierauf besteht nicht!
                                          *
                                          * Ansprüche gegenüber Dritten bestehen nicht.
                                          *
                                          * Skript Name: Shelly-Verbrauch
                                          * Skript Version: 1.60
                                          * Erstell-Datum: 08. Oktober 2021 | Update: 20. Juli 2022
                                          *
                                          */
                                          
                                          // Datenpunkte neu erstellen
                                          var ueberschreiben = false;
                                          
                                          // Hauptdatenpunkt unterhalb javascript
                                          var datenpunkt = "ShellyVerbrauch."; // Abschließender Punkt !!! WICHTIG !!!
                                          
                                          // Verbrauchs Objekte der einzelnen Shelly
                                          var objekt = ["gesamt", "dieses_jahr", "letztes_jahr", "letzter_monat", "dieser_monat", "letzte_woche",
                                          "diese_woche", "gestern", "heute", "alter_wert", "aktueller_wert"
                                          ];
                                          
                                          // Beschreibung der Objekte
                                          var beschreibung = ["Gesamter Vebrauch des Shelly", "Verbrauch aktuelles Jahr", "Verbrauch letztes Jahr",
                                          "Verbrauch letzten Monat", "Verbrauch aktueller Monat", "Verbrauch letzte Woche", "Verbrauch diese Woche",
                                          "Verbrauch gestern", "Verbrauch heute", "Messwert alt", "Messwert neu"
                                          ];
                                          
                                          // Datenpunkt der Shelly (Standard: shelly.0)
                                          var shelly_dp = "shelly.0";
                                          
                                          // Datenpunkte der Shelly (!!! Bitte nicht ändern !!!)
                                          var shellyDps = $('state[id=' + shelly_dp + '.*.*.Energy]');
                                          
                                          // Datenpunkte der Shelly 3EM DP
                                          var shelly3EMDps = $('state[id=' + shelly_dp + '.*.*.Total]');
                                          
                                          // Datenpunkte der Shelly 3EM DP - Total
                                          var shelly3EMTotalDps = $('state[id=' + shelly_dp + '.*.*.ConsumedPower]');
                                          
                                          // Datenpunkte der Shelly 3EM DP - Total
                                          var shelly3EMTotalReturned = $('state[id=' + shelly_dp + '.*.*.Total_Returned]');
                                          
                                          // Datenpunkte der Shelly Namen (!!! Bitte nicht ändern !!!)
                                          var shellyDpsName = $('state[id=' + shelly_dp + '.*.name]');
                                          
                                          // Shelly Verbrauch aktualisieren - nachts um 00:00 Uhr
                                          function shelly_vebrauch_tag() {
                                          // Nochmals das Tagesupdate durchlaufen, damit die restlichen Werte gelesen werden
                                          shelly_verbrauch_update();
                                          
                                          // Datumsvariable
                                          var heute = new Date();
                                          
                                          // Heute zu Gestern verschieben. Täglich um 00:00 Uhr
                                          verschiebe_verbrauch_objekt("heute", "gestern");
                                          log("Shelly Verbrauch: Werte für gestern und heute aktualisiert!");
                                          
                                          // aktuelle Woche in letzte Woche verschieben. Am Montag um 00:00 Uhr
                                          if (heute.getDay() === 1) {
                                          verschiebe_verbrauch_objekt("diese_woche", "letzte_woche");
                                          log("Shelly Verbrauch: Werte für diese und letzte Woche aktualisiert!");
                                          }
                                          
                                          // aktueller Monat in letzten Monat verschieben. Am 1. des Monats um 00:00 Uhr
                                          if (heute.getDate() === 1) {
                                          verschiebe_verbrauch_objekt("dieser_monat", "letzter_monat");
                                          log("Shelly Verbrauch: Werte für diesen und letzten Monat aktualisiert!");
                                          }
                                          
                                          // aktuelles Jahr in letztes Jahr verschieben. Am 1. des Monats am 1. Monat um 00:00 Uhr
                                          if (heute.getDate() === 1 && heute.getMonth() === 0) {
                                          verschiebe_verbrauch_objekt("dieses_jahr", "letztes_jahr");
                                          log("Shelly Verbrauch: Werte für dieses und letztes Jahr aktualisiert!");
                                          }
                                          }
                                          
                                          // Tagesverbrauch alle 15 Min von der Original Variable des Shelly in eigene Variable kopieren
                                          function shelly_verbrauch_update() {
                                          var anzahl_updates = 0;
                                          var anzahl_reboots = 0;
                                          var anzahl_gleich = 0;
                                          shellyDps.each(function (id, i) {
                                          var shelly_verbrauch = getState(id).val;
                                          // Einige Shelly haben keine Verbrauchswerte (noch nicht)
                                          if (shelly_verbrauch != null) {
                                          // Hole aktuellen Wert, um zu kontrollieren, ob ein Reboot stattgefunden hat
                                          var aktueller_wert = getState(shelly_DP(id) + "aktueller_wert").val;
                                          var alter_wert = 0;
                                          // Prüfe alten und neuen Wert
                                          if (shelly_verbrauch > aktueller_wert) {
                                          // Verbrauchswert ist größer als alter Wert -> es wurde kein Reboot durchgeführt
                                          setState(shelly_DP(id) + "alter_wert", aktueller_wert, true);
                                          alter_wert = aktueller_wert;
                                          anzahl_updates++;
                                          }
                                          if (aktueller_wert > shelly_verbrauch) {
                                          // Verbrauchswert ist kleiner als alter Wert -> es wurde ein Reboot durchgeführt
                                          setState(shelly_DP(id) + "alter_wert", 0, true);
                                          alter_wert = 0;
                                          anzahl_reboots++;
                                          }
                                          if (shelly_verbrauch == aktueller_wert) {
                                          // Verbrauchswert ist gleich wie alter Wert -> kein Update notwendig
                                          alter_wert = aktueller_wert;
                                          anzahl_gleich++;
                                          }
                                          
                                          setState(shelly_DP(id) + "aktueller_wert", shelly_verbrauch, true);
                                          // Alter und neuer Wert -> aktuelle Differenz
                                          
                                          var verbrauch = parseFloat(shelly_verbrauch) - alter_wert;
                                          // Tagesverbrauch aktualisieren
                                          aktualisiere_vebrauch_objekt(shelly_DP(id), "heute", verbrauch);
                                          
                                          // Wochenverbrauch aktualisieren
                                          aktualisiere_vebrauch_objekt(shelly_DP(id), "diese_woche", verbrauch);
                                          
                                          // Monatsverbrauch aktualisieren
                                          aktualisiere_vebrauch_objekt(shelly_DP(id), "dieser_monat", verbrauch);
                                          
                                          // Jahresverbrauch aktualisieren
                                          aktualisiere_vebrauch_objekt(shelly_DP(id), "dieses_jahr", verbrauch);
                                          
                                          // Gesamten Vebrauch aktualisieren
                                          aktualisiere_vebrauch_objekt(shelly_DP(id), "gesamt", verbrauch);
                                          }
                                          });
                                          shelly3EMDps.each(function (id, i) {
                                          var shelly_verbrauch = getState(id).val;
                                          // Einige Shelly haben keine Verbrauchswerte (noch nicht)
                                          if (shelly_verbrauch != null) {
                                          // Hole aktuellen Wert, um zu kontrollieren, ob ein Reboot stattgefunden hat
                                          var aktueller_wert = getState(shelly_DP(id) + "aktueller_wert").val;
                                          var alter_wert = 0;
                                          // Prüfe alten und neuen Wert
                                          if (shelly_verbrauch > aktueller_wert) {
                                          // Verbrauchswert ist größer als alter Wert -> es wurde kein Reboot durchgeführt
                                          setState(shelly_DP(id) + "alter_wert", aktueller_wert, true);
                                          alter_wert = aktueller_wert;
                                          anzahl_updates++;
                                          }
                                          if (aktueller_wert > shelly_verbrauch) {
                                          // Verbrauchswert ist kleiner als alter Wert -> es wurde ein Reboot durchgeführt
                                          setState(shelly_DP(id) + "alter_wert", 0, true);
                                          alter_wert = 0;
                                          anzahl_reboots++;
                                          }
                                          if (shelly_verbrauch == aktueller_wert) {
                                          // Verbrauchswert ist gleich wie alter Wert -> kein Update notwendig
                                          alter_wert = aktueller_wert;
                                          anzahl_gleich++;
                                          }
                                          
                                          setState(shelly_DP(id) + "aktueller_wert", shelly_verbrauch, true);
                                          // Alter und neuer Wert -> aktuelle Differenz
                                          
                                          var verbrauch = parseFloat(shelly_verbrauch) - alter_wert;
                                          // Tagesverbrauch aktualisieren
                                          aktualisiere_vebrauch_objekt(shelly_DP(id), "heute", verbrauch);
                                          
                                          // Wochenverbrauch aktualisieren
                                          aktualisiere_vebrauch_objekt(shelly_DP(id), "diese_woche", verbrauch);
                                          
                                          // Monatsverbrauch aktualisieren
                                          aktualisiere_vebrauch_objekt(shelly_DP(id), "dieser_monat", verbrauch);
                                          
                                          // Jahresverbrauch aktualisieren
                                          aktualisiere_vebrauch_objekt(shelly_DP(id), "dieses_jahr", verbrauch);
                                          
                                          // Gesamten Vebrauch aktualisieren
                                          aktualisiere_vebrauch_objekt(shelly_DP(id), "gesamt", verbrauch);
                                          }
                                          });
                                          shelly3EMTotalDps.each(function (id, i) {
                                          var shelly_verbrauch = getState(id).val;
                                          // Einige Shelly haben keine Verbrauchswerte (noch nicht)
                                          if (shelly_verbrauch != null) {
                                          // Hole aktuellen Wert, um zu kontrollieren, ob ein Reboot stattgefunden hat
                                          var aktueller_wert = getState(shelly_DP(id) + "aktueller_wert").val;
                                          var alter_wert = 0;
                                          // Prüfe alten und neuen Wert
                                          if (shelly_verbrauch > aktueller_wert) {
                                          // Verbrauchswert ist größer als alter Wert -> es wurde kein Reboot durchgeführt
                                          setState(shelly_DP(id) + "alter_wert", aktueller_wert, true);
                                          alter_wert = aktueller_wert;
                                          anzahl_updates++;
                                          }
                                          if (aktueller_wert > shelly_verbrauch) {
                                          // Verbrauchswert ist kleiner als alter Wert -> es wurde ein Reboot durchgeführt
                                          setState(shelly_DP(id) + "alter_wert", 0, true);
                                          alter_wert = 0;
                                          anzahl_reboots++;
                                          }
                                          if (shelly_verbrauch == aktueller_wert) {
                                          // Verbrauchswert ist gleich wie alter Wert -> kein Update notwendig
                                          alter_wert = aktueller_wert;
                                          anzahl_gleich++;
                                          }
                                          
                                          setState(shelly_DP(id) + "aktueller_wert", shelly_verbrauch, true);
                                          // Alter und neuer Wert -> aktuelle Differenz
                                          
                                          var verbrauch = parseFloat(shelly_verbrauch) - alter_wert;
                                          // Tagesverbrauch aktualisieren
                                          aktualisiere_vebrauch_objekt(shelly_DP(id), "heute", verbrauch);
                                          
                                          // Wochenverbrauch aktualisieren
                                          aktualisiere_vebrauch_objekt(shelly_DP(id), "diese_woche", verbrauch);
                                          
                                          // Monatsverbrauch aktualisieren
                                          aktualisiere_vebrauch_objekt(shelly_DP(id), "dieser_monat", verbrauch);
                                          
                                          // Jahresverbrauch aktualisieren
                                          aktualisiere_vebrauch_objekt(shelly_DP(id), "dieses_jahr", verbrauch);
                                          
                                          // Gesamten Vebrauch aktualisieren
                                          aktualisiere_vebrauch_objekt(shelly_DP(id), "gesamt", verbrauch);
                                          }
                                          });
                                          shelly3EMTotalReturned.each(function (id, i) {
                                          var shelly_verbrauch = getState(id).val;
                                          // Einige Shelly haben keine Verbrauchswerte (noch nicht)
                                          if (shelly_verbrauch != null) {
                                          // Hole aktuellen Wert, um zu kontrollieren, ob ein Reboot stattgefunden hat
                                          var aktueller_wert = getState(shelly_DP(id, true) + "aktueller_wert").val;
                                          var alter_wert = 0;
                                          // Prüfe alten und neuen Wert
                                          if (shelly_verbrauch > aktueller_wert) {
                                          // Verbrauchswert ist größer als alter Wert -> es wurde kein Reboot durchgeführt
                                          setState(shelly_DP(id, true) + "alter_wert", aktueller_wert, true);
                                          alter_wert = aktueller_wert;
                                          anzahl_updates++;
                                          }
                                          if (aktueller_wert > shelly_verbrauch) {
                                          // Verbrauchswert ist kleiner als alter Wert -> es wurde ein Reboot durchgeführt
                                          setState(shelly_DP(id, true) + "alter_wert", 0, true);
                                          alter_wert = 0;
                                          anzahl_reboots++;
                                          }
                                          if (shelly_verbrauch == aktueller_wert) {
                                          // Verbrauchswert ist gleich wie alter Wert -> kein Update notwendig
                                          alter_wert = aktueller_wert;
                                          anzahl_gleich++;
                                          }
                                          
                                          setState(shelly_DP(id, true) + "aktueller_wert", shelly_verbrauch, true);
                                          // Alter und neuer Wert -> aktuelle Differenz
                                          
                                          var verbrauch = parseFloat(shelly_verbrauch) - alter_wert;
                                          // Tagesverbrauch aktualisieren
                                          aktualisiere_vebrauch_objekt(shelly_DP(id, true), "heute", verbrauch);
                                          
                                          // Wochenverbrauch aktualisieren
                                          aktualisiere_vebrauch_objekt(shelly_DP(id, true), "diese_woche", verbrauch);
                                          
                                          // Monatsverbrauch aktualisieren
                                          aktualisiere_vebrauch_objekt(shelly_DP(id, true), "dieser_monat", verbrauch);
                                          
                                          // Jahresverbrauch aktualisieren
                                          aktualisiere_vebrauch_objekt(shelly_DP(id, true), "dieses_jahr", verbrauch);
                                          
                                          // Gesamten Vebrauch aktualisieren
                                          aktualisiere_vebrauch_objekt(shelly_DP(id, true), "gesamt", verbrauch);
                                          }
                                          });
                                          aktualisiere_namen();
                                          log("Shelly Verbrauch: Verbrauchswerte aktualisiert: " + anzahl_updates + " | Reboots korrigiert: " + anzahl_reboots + " | Unveränderte Werte: " + anzahl_gleich);
                                          }
                                          
                                          // aktualisiert das jeweilige Verbrauchs-Objekt und addiert den Verbrauch dazu
                                          function aktualisiere_vebrauch_objekt(dp, objekt, wert) {
                                          // Hole alten Verbrauch
                                          let alter_verbrauch = getState(dp + objekt).val;
                                          let verbrauch = 0;
                                          // Kein Wert vorhanden - nutze den übermittelten Wert
                                          if (alter_verbrauch < 1 || alter_verbrauch == null) {
                                          verbrauch = parseFloat(wert)
                                          } else {
                                          verbrauch = parseFloat(alter_verbrauch) + parseFloat(wert);
                                          }
                                          setState(dp + objekt, parseFloat(verbrauch.toFixed(2)), true);
                                          }
                                          
                                          // Verschiebt das jeweilige Verbrauchs-Objekt und nullt den Ursprung (Tag, Woche, Monat, Jahr)
                                          function verschiebe_verbrauch_objekt(von, nach) {
                                          $('state[id=*.' + datenpunkt + '*.*.' + von + ']').each(function (id, i) {
                                          // Temporärer Gruppen-Datenpunkt
                                          var tmp_dp = id.slice(0, -(von.length));
                                          var verbrauch = getState(id).val;
                                          if (verbrauch != null) {
                                          setState(tmp_dp + nach, verbrauch, true);
                                          }
                                          // Setze "von" zurück
                                          setState(id, 0, true);
                                          });
                                          }
                                          
                                          // Funktion um die aktuellen Namen des Shelly abzuholen
                                          function aktualisiere_namen() {
                                          if (typeof extendObject === "function") {
                                          shellyDpsName.each(function (id, i) {
                                          if (existsState(id)) {
                                          setState(shelly_DP_Name(id), String(getState(id).val), true);
                                          extendObject("javascript.0." + shelly_DP_Name_Main(id), {
                                          common: {
                                          name: String(getState(id).val),
                                          desc: String(getState(id).val)
                                          },
                                          type: "channel"
                                          });
                                          }
                                          });
                                          }
                                          }
                                          
                                          // Erstelle die benötigten Datenpunkte
                                          function datenpunkte_erstellen() {
                                          // Anzahl der gefundenen Shelly
                                          var anzahl = shellyDps.length;
                                          
                                          shellyDps.each(function (id, j) {
                                          var initial_wert = 0.0;
                                          for (var i = 0; i < objekt.length; i++) {
                                          // Startwerte werden nur bei alter_wert und aktueller_wert eingetragen
                                          if (i > 8) {
                                          initial_wert = getState(id).val;
                                          }
                                          createState(shelly_DP(id) + objekt[i], initial_wert, ueberschreiben, {
                                          name: beschreibung[i],
                                          desc: beschreibung[i],
                                          type: "number",
                                          role: "value.power",
                                          unit: "Wh"
                                          });
                                          }
                                          });
                                          
                                          // Anzahl der gefundenen Shelly 3EM
                                          var anzahl_3em = shelly3EMDps.length;
                                          
                                          shelly3EMDps.each(function (id, j) {
                                          var initial_wert = 0.0;
                                          for (var i = 0; i < objekt.length; i++) {
                                          // Startwerte werden nur bei alter_wert und aktueller_wert eingetragen
                                          if (i > 8) {
                                          initial_wert = getState(id).val;
                                          }
                                          createState(shelly_DP(id) + objekt[i], initial_wert, ueberschreiben, {
                                          name: beschreibung[i],
                                          desc: beschreibung[i],
                                          type: "number",
                                          role: "value.power",
                                          unit: "Wh"
                                          });
                                          }
                                          });
                                          
                                          // Anzahl der gefundenen Shelly 3EM - Total
                                          var anzahl_3em_total = shelly3EMTotalDps.length;
                                          
                                          shelly3EMTotalDps.each(function (id, j) {
                                          var initial_wert = 0.0;
                                          for (var i = 0; i < objekt.length; i++) {
                                          // Startwerte werden nur bei alter_wert und aktueller_wert eingetragen
                                          if (i > 8) {
                                          initial_wert = getState(id).val;
                                          }
                                          createState(shelly_DP(id) + objekt[i], initial_wert, ueberschreiben, {
                                          name: beschreibung[i],
                                          desc: beschreibung[i],
                                          type: "number",
                                          role: "value.power",
                                          unit: "Wh"
                                          });
                                          }
                                          });
                                          
                                          // Anzahl der gefundenen Shelly 3EM - Total
                                          var anzahl_3em_total_returned = shelly3EMTotalReturned.length;
                                          
                                          shelly3EMTotalReturned.each(function (id, j) {
                                          var initial_wert = 0.0;
                                          for (var i = 0; i < objekt.length; i++) {
                                          // Startwerte werden nur bei alter_wert und aktueller_wert eingetragen
                                          if (i > 8) {
                                          initial_wert = getState(id).val;
                                          }
                                          createState(shelly_DP(id, true) + objekt[i], initial_wert, ueberschreiben, {
                                          name: beschreibung[i],
                                          desc: beschreibung[i],
                                          type: "number",
                                          role: "value.power",
                                          unit: "Wh"
                                          });
                                          }
                                          });
                                          
                                          // Alle Datenpunkte erstellt. Frage ersten Verbrauch ab!
                                          log("Shelly Verbrauch: Datenpunkte erstellt! Erster Verbrauch steht nach 30 Sekunden zur Verfügung! Anzahl gefundener Shelly Datenpunkte: " + (anzahl_3em + anzahl + anzahl_3em_total + anzahl_3em_total_returned));
                                          setTimeout(shelly_verbrauch_update, 30000);
                                          
                                          // Datenpunkte für die Namen der Shelly erstellen
                                          shellyDpsName.each(function (id, j) {
                                          createState(shelly_DP_Name(id), "", ueberschreiben, {
                                          name: "Name des Shelly",
                                          desc: "Name des Shelly",
                                          type: "string",
                                          role: "value",
                                          unit: ""
                                          });
                                          });
                                          }
                                          
                                          /**
                                          * Wenn 3EM DP, dann anderen Wert zurückgeben
                                          * @param {any} dp
                                          * @param {boolean} extended
                                          */
                                          function shelly_DP(dp, extended = false) {
                                          dp = dp.split(".");
                                          dp = datenpunkt + dp[2] + "." + dp[3];
                                          if (extended) {
                                          dp = dp + "_Returned.";
                                          } else {
                                          dp = dp + ".";
                                          }
                                          return dp;
                                          }
                                          
                                          function shelly_DP_Name(dp) {
                                          dp = dp.split(".");
                                          dp = datenpunkt + dp[2] + "." + dp[3];
                                          return dp;
                                          }
                                          
                                          function shelly_DP_Name_Main(dp) {
                                          dp = dp.split(".");
                                          dp = datenpunkt + dp[2];
                                          return dp;
                                          }
                                          
                                          function shelly_verbrauch_erster_start() {
                                          log("Shelly Verbrauch: Erster Start des Skriptes! Datenpunkte werden erstellt!");
                                          // Datenpunkte werden erstellt
                                          datenpunkte_erstellen();
                                          }
                                          
                                          // Erster Start und Initialisierung
                                          shelly_verbrauch_erster_start();
                                          
                                          // Alle 15 Minuten das Skript für den Tagesverbrauch ausführen
                                          schedule('*/15 * * * *', shelly_verbrauch_update);
                                          
                                          // Nachts um 24 Uhr werden die Werte in andere Variablen gespeichert, um den Verlauf zu erstellen
                                          schedule('0 0 * * *', shelly_vebrauch_tag);
                                          
                                          W 1 Antwort Letzte Antwort
                                          0

                                          Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

                                          Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

                                          Mit deinem Input könnte dieser Beitrag noch besser werden 💗

                                          Registrieren Anmelden
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          364

                                          Online

                                          32.8k

                                          Benutzer

                                          82.8k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe