Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • 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. Skripten / Logik
  4. Script zur Berechnung des Eigenverbrauchs

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.9k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.3k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.6k

Script zur Berechnung des Eigenverbrauchs

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
10 Beiträge 4 Kommentatoren 5.0k Aufrufe 1 Watching
  • Ä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.
  • M Offline
    M Offline
    Marcolotti
    schrieb am zuletzt editiert von
    #1

    Hallo,

    vielleicht kann mir einer leicht auf die Sprünge helfen. Ich versuche aus den Angaben von aktueller PV-Leistung, Netzeinspeisung und Netzbezug den Eigenverbrauch zu berechnen.

    vorhandene Objekte:
    721_unbenannt.jpg

    sowie ein globales Objekt = Eigenverbrauch
    721_unbenannt2.jpg

    Die Formel müsste lauten: Wenn PV-Leistung größer 0 dann Eigenverbrauch = PV-Leistung - Netzeinspeisung

    Leider haperts an meinen Javascript-Kenntnissen. :cry: (VB.net wäre kein Problem <- bitte nicht prügeln)

    Viele Grüße

    Marco

    CCU2-CuxD&Cul868MHz, 44xHM Geräte, 20xMAX Fenstersensoren.Acer Revo mit IoBroker, Tablet Captiva 9,7 SFHD. SMA SB2.5,STP7000TL20,SMA Energy Meter, Echo, Harmony, JeeLink868, Arduino 433MHz, MaxtoxCUL868,MilightEasyLED,Hue

    1 Antwort Letzte Antwort
    0
    • P Offline
      P Offline
      pix
      schrieb am zuletzt editiert von
      #2

      Hallo Marco, kann ich dir heute oder morgen machen. Sind die werte Zahlen oder Strings?

      Welche Ordnerstruktur soll herauskommen?

      /PVAnlage/Eigenverbrauch

      Und für die Schönheit: welche Einheit?

      Gruß

      Pix

      Gesendet von meinem iPhone mit Tapatalk

      ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

      1 Antwort Letzte Antwort
      0
      • M Offline
        M Offline
        Marcolotti
        schrieb am zuletzt editiert von
        #3

        Hallo Pix,

        die Zahlen sind Werte, die Ordnerstruktur wäre okay. Mir würde aber schon einfach ein kleiner Anfang genügen. Möchte hier niemand in Arbeit stürzen. :o

        Einheit würde ich weglassen, so kann ich mit den Werten später noch kalkulieren.

        Vielen Dank und viele Grüße

        Marco

        CCU2-CuxD&Cul868MHz, 44xHM Geräte, 20xMAX Fenstersensoren.Acer Revo mit IoBroker, Tablet Captiva 9,7 SFHD. SMA SB2.5,STP7000TL20,SMA Energy Meter, Echo, Harmony, JeeLink868, Arduino 433MHz, MaxtoxCUL868,MilightEasyLED,Hue

        1 Antwort Letzte Antwort
        0
        • P Offline
          P Offline
          pix
          schrieb am zuletzt editiert von
          #4

          Hallo Marco,
          @Marcolotti:

          Zahlen sind Werte ` das war mir eh klar! :lol:

          Da ich den Adapter mit den entsprechenden Werten nicht habe, konnte ich das Skript nicht testen. Ich bin einfach davon ausgegangen, dass alle Werte reine Zahlen sind und ich keine Strings umwandeln musste.

          /*  PV Eigenverbrauch
          Skript errechnet den Eigenverbrauch aus den Daten des modbus Adapters
          
          erstellt: 09.11.2015 von Pix
          */
          
          // Objekt erstellen
          createState('PV_Anlage.Eigenverbrauch',0, {
              name: 'PV-Anlage: Eigenverbrauch',
              desc: 'Eigenverbrauch = PV-Leistung - Einspeisung',
              read: true,
              write: true,
              type: 'number',
              unit: 'kWh'
          });
          
          var idEinspeisung = 'modbus.0.inputRegisters.30867_Einspeisung',
              idPVLeistung = 'modbus.0.inputRegisters.30775_PVLeistung',
              idEigenverbrauch = 'PV_Anlage.Eigenverbrauch';
          
          // Berechnung mit aktuellen Daten, wenn Leistung >0
          on({
              id: idPVLeistung,
              change: 'ne',
              valGt: 0
          }, function (data) {
              var einspeisung = getState(idEinspeisung).val,
                  eigenverbrauch;          // zu errechnen
              eigenverbrauch = data.newState.val - einspeisung;
              log('PV-Anlage - Eigenverbrauch: ' + eigenverbrauch + 'kWh');
              setState(idEigenverbrauch, eigenverbrauch);
          });
          

          Ein neues Objekt wird erstellt und konfiguriert (Einheit kWh - ist das richtig?),

          die komplizierten Objektnamen mit der Adapterinstanz vorneweg werden in "leichtere" Variablen id*** gespeichert,

          der Datenpunkt PV_Leistung wird überwacht (wenn Änderung und neuer Wert > 0, dann Berechnung mit aktuellen Zahlen ausführen und in State schreiben).

          Drittletzte Zeile (log****) kannst du später auskommentieren oder löschen, sonst müllt sie dir bei jeder Änderung der PV-Leistung das log zu.

          Die Einheit kWh ist nicht als Text im Objekt gespeichert. Du kannst also trotzdem weiter mit dem Wert rechnen.

          Gib mir bescheid, ob es läuft.

          Gruß

          Pix

          ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

          1 Antwort Letzte Antwort
          0
          • M Offline
            M Offline
            Marcolotti
            schrieb am zuletzt editiert von
            #5

            Hallo Pix,

            habe das Script eben eingebaut und es funktioniert hervorragend. :D

            An dich ein großes Dankeschön!

            Gruß Marco
            2858_blue.jpg
            2858_view_multiroom.txt

            CCU2-CuxD&Cul868MHz, 44xHM Geräte, 20xMAX Fenstersensoren.Acer Revo mit IoBroker, Tablet Captiva 9,7 SFHD. SMA SB2.5,STP7000TL20,SMA Energy Meter, Echo, Harmony, JeeLink868, Arduino 433MHz, MaxtoxCUL868,MilightEasyLED,Hue

            1 Antwort Letzte Antwort
            0
            • S Offline
              S Offline
              starfish
              schrieb am zuletzt editiert von
              #6

              interessant wäre auch der tägliche Verbrauch bzw. Produktion. Dazu müsste 1x pro Tag der Zählerstand abgespeichert werden und am nächsten Tag zur selben Zeit die DIfferenz gebildet werden. @ Pix : wie würdest Du dies lösen? (ggf. in Anlehnung an obiges Skript)

              Gruss

              Beat

              1 Antwort Letzte Antwort
              0
              • M Offline
                M Offline
                Marcolotti
                schrieb am zuletzt editiert von
                #7

                Bei mir wird das schon aus dem energymeter ausgelesen. Um Mitternacht startet ein Programm in der ccu und setzt den aktuellen Gesamtverbrauch in die Variable "Verbrauchgestern".

                Gesendet von meinem HTC One_M8 mit Tapatalk

                CCU2-CuxD&Cul868MHz, 44xHM Geräte, 20xMAX Fenstersensoren.Acer Revo mit IoBroker, Tablet Captiva 9,7 SFHD. SMA SB2.5,STP7000TL20,SMA Energy Meter, Echo, Harmony, JeeLink868, Arduino 433MHz, MaxtoxCUL868,MilightEasyLED,Hue

                1 Antwort Letzte Antwort
                0
                • S Offline
                  S Offline
                  starfish
                  schrieb am zuletzt editiert von
                  #8

                  @Marcolotti mein Energiemessgerät akkumuliert den Verbrauch fortlaufend. Eine CCU läuft hier auch nicht (mehr). Deshalb würde sich ein script in iobroker gut eignen.

                  1 Antwort Letzte Antwort
                  0
                  • P Offline
                    P Offline
                    pix
                    schrieb am zuletzt editiert von
                    #9

                    Hallo starfish,

                    ich bin selbst noch in der Entwicklung eines solchen Skripts. Zur Zeit läuft die Testphase und es hat sich ein Problem ergeben. Ich nutze neben EM1000 Zwischensteckern (sehr solide) noch die HM-Zwischenstecker mit Leistungsmessung. Leider verlieren die ihren Zählerstand bei Stromausfall oder beim Ausstecken. Deshalb brauche ich noch eine Funktion, die in solch einem Fall (z.B. aktueller Zähler < Zähler Mitternacht) die Berechnung umstellt. Leider ist es nicht möglich, den Datenpunkt im Gerät wieder auf den alten Zustand zu setzen.

                    Sonst kannst du eine Variable anlegen für den Tageszähler und täglich um 0Uhr mit dem aktuellen Zählerstand füllen. Dann zur Anzeigen einfach gespeicherten Tageszählerstand vom aktuellen Zählerstand abziehen, ohne das in eine Variable zu schreiben (Berechnung mit VIS-bindings direkt in VIS). Natürlich kann das Javascript-Skript diesen Wert auch wieder in eine weitere Variable schreiben (Tagesverbrauch) und auf Wunsch mit dem Preis multiplizieren (Tageskosten/Ertrag bei Verkauf). Geht auch für die Woche, den Monat, das Quartal, das Jahr. Ich habe das alles bei 6 verschiedenen Strommessgeräten gemacht und es ist recht kompliziert geworden. Und wie gesagt, jetzt stehe ich vor einem Problem: Die Daten sind Futsch, da die HM-Stromzähler ihren internen Zähler genullt haben.

                    Die beste Lösung wäre es, wenn ich die History-Daten direkt einlesen könnte. Das geht aber noch nicht. Vielleicht klappt das noch vor dem Jahreswechsel. Bis dahin heißt es warten.

                    Gruß

                    Pix

                    ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

                    1 Antwort Letzte Antwort
                    0
                    • wendy2702W Online
                      wendy2702W Online
                      wendy2702
                      schrieb am zuletzt editiert von
                      #10

                      @pix:

                      Hallo Marco,
                      @Marcolotti:

                      Zahlen sind Werte ` das war mir eh klar! :lol:

                      Da ich den Adapter mit den entsprechenden Werten nicht habe, konnte ich das Skript nicht testen. Ich bin einfach davon ausgegangen, dass alle Werte reine Zahlen sind und ich keine Strings umwandeln musste.

                      /*  PV Eigenverbrauch
                      Skript errechnet den Eigenverbrauch aus den Daten des modbus Adapters
                      
                      erstellt: 09.11.2015 von Pix
                      */
                      
                      // Objekt erstellen
                      createState('PV_Anlage.Eigenverbrauch',0, {
                          name: 'PV-Anlage: Eigenverbrauch',
                          desc: 'Eigenverbrauch = PV-Leistung - Einspeisung',
                          read: true,
                          write: true,
                          type: 'number',
                          unit: 'kWh'
                      });
                      
                          var idEinspeisung = 'modbus.0.inputRegisters.30867_Einspeisung',
                          idPVLeistung = 'modbus.0.inputRegisters.30775_PVLeistung',
                          idEigenverbrauch = 'PV_Anlage.Eigenverbrauch';
                      
                      // Berechnung mit aktuellen Daten, wenn Leistung >0
                      on({
                          id: idPVLeistung,
                          change: 'ne',
                          valGt: 0
                      }, function (data) {
                          var einspeisung = getState(idEinspeisung).val,
                              eigenverbrauch;          // zu errechnen
                          eigenverbrauch = data.newState.val - einspeisung;
                          log('PV-Anlage - Eigenverbrauch: ' + eigenverbrauch + 'kWh');
                          setState(idEigenverbrauch, eigenverbrauch);
                      });
                      

                      Ein neues Objekt wird erstellt und konfiguriert (Einheit kWh - ist das richtig?),

                      die komplizierten Objektnamen mit der Adapterinstanz vorneweg werden in "leichtere" Variablen id*** gespeichert,

                      der Datenpunkt PV_Leistung wird überwacht (wenn Änderung und neuer Wert > 0, dann Berechnung mit aktuellen Zahlen ausführen und in State schreiben).

                      Drittletzte Zeile (log****) kannst du später auskommentieren oder löschen, sonst müllt sie dir bei jeder Änderung der PV-Leistung das log zu.

                      Die Einheit kWh ist nicht als Text im Objekt gespeichert. Du kannst also trotzdem weiter mit dem Wert rechnen.

                      Gib mir bescheid, ob es läuft.

                      Gruß

                      Pix `

                      Hi,

                      ich würde auch gerne meinen Eigenverbrauch berechnen. Habe aber das Problem das ich keinen Datenpunkt````
                      modbus.0.inputRegisters.30867_Einspeisung

                      
                      Ob ich Energie Einspeise oder Beziehe kann ich nur am "Vorzeichen" meiner Wirkleistung erkennen.
                      
                      Bei Bezug ist der Wert "positiv" und bei Einspeisung "negativ" (- als Vorzeichen).
                      
                      Wenn ich das Script jetzt so übernehme und nur den Punkt:
                      
                      

                      var idEinspeisung = 'modbus.0.inputRegisters.30867_Einspeisung',

                      
                      gegen meinen Datenpunkt Wirkleistung ersetze:
                      
                      

                      modbus.3.holdingRegisters.20498_Wirkenergie_Total

                      
                      Bleibt der neu angelegte Datenpunkt "Eigenverbrauch" auf "0" stehen obwohl ich ja aktuell Bezug/Verbrauch habe.
                      
                      Kann mir bitte jemand helfen das Script entsprechend zu ändern?
                      
                      Ich kann leider kein Javascript und habe aktuell keinen Schimmer warum bei Eigenverbrauch nichts angezeigt wird.
                      
                      Vielen Dank
                      
                      Mirko

                      Bitte keine Fragen per PN, die gehören ins Forum!

                      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                      1 Antwort Letzte Antwort
                      0
                      Antworten
                      • In einem neuen Thema antworten
                      Anmelden zum Antworten
                      • Älteste zuerst
                      • Neuste zuerst
                      • Meiste Stimmen


                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      489

                      Online

                      32.5k

                      Benutzer

                      81.6k

                      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