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. ioBroker Allgemein
  4. Solaredge Adapter (Photovoltaikanlage)

NEWS

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

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

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

Solaredge Adapter (Photovoltaikanlage)

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
431 Beiträge 59 Kommentatoren 149.3k Aufrufe 45 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.
  • K Kanumouse

    @glasfaser

    Hi,

    ich wollte mal fragen, ob du auch so ein Verhalten der Batterieleistung (57716 Battery_1 Instantaneous Power) nachts hast.
    Wo kommt die Ladeleistung immer nachts her, das kann nicht sein?
    Batterie.jpg

    Wechselrichter SE 8k RWS, Batterie BYD LVS 4.0

    GlasfaserG Offline
    GlasfaserG Offline
    Glasfaser
    schrieb am zuletzt editiert von
    #300

    @kanumouse sagte in Solaredge Adapter (Photovoltaikanlage):

    Wo kommt die Ladeleistung immer nachts her, das kann nicht sein?

    Habe ich auch (manchmal ) .
    Die LG Batterie ist dann bei 9 % im Leerlauf / aus bei mir und wird manchmal dann per 1000 W Ladung ( Erhaltungsladung ) beladen und bleibt dann bei 10 % .

    96f130b4-04b6-4c4c-ad9b-a4b707c34a19-grafik.png

    Synology 918+ 16GB - ioBroker in Docker v9 , VISO auf Trekstor Primebook C13 13,3" , Hikvision Domkameras mit Surveillance Station .. CCU RaspberryMatic in Synology VM .. Zigbee CC2538+CC2592 .. Sonoff .. KNX .. Modbus ..

    K 1 Antwort Letzte Antwort
    0
    • GlasfaserG Glasfaser

      @kanumouse sagte in Solaredge Adapter (Photovoltaikanlage):

      Wo kommt die Ladeleistung immer nachts her, das kann nicht sein?

      Habe ich auch (manchmal ) .
      Die LG Batterie ist dann bei 9 % im Leerlauf / aus bei mir und wird manchmal dann per 1000 W Ladung ( Erhaltungsladung ) beladen und bleibt dann bei 10 % .

      96f130b4-04b6-4c4c-ad9b-a4b707c34a19-grafik.png

      K Offline
      K Offline
      Kanumouse
      schrieb am zuletzt editiert von
      #301

      @glasfaser
      Danke für die schnelle Antwort. Konnte ich mir nicht erklären.

      GlasfaserG 1 Antwort Letzte Antwort
      0
      • K Kanumouse

        @glasfaser
        Danke für die schnelle Antwort. Konnte ich mir nicht erklären.

        GlasfaserG Offline
        GlasfaserG Offline
        Glasfaser
        schrieb am zuletzt editiert von
        #302

        @kanumouse sagte in Solaredge Adapter (Photovoltaikanlage):

        Konnte ich mir nicht erklären.

        Ist aber normal , google mal nach Erhaltungsladung

        Synology 918+ 16GB - ioBroker in Docker v9 , VISO auf Trekstor Primebook C13 13,3" , Hikvision Domkameras mit Surveillance Station .. CCU RaspberryMatic in Synology VM .. Zigbee CC2538+CC2592 .. Sonoff .. KNX .. Modbus ..

        K 1 Antwort Letzte Antwort
        0
        • GlasfaserG Glasfaser

          @kanumouse sagte in Solaredge Adapter (Photovoltaikanlage):

          Konnte ich mir nicht erklären.

          Ist aber normal , google mal nach Erhaltungsladung

          K Offline
          K Offline
          Kanumouse
          schrieb am zuletzt editiert von
          #303

          @glasfaser

          ok, ich wusste nicht, dass die Batterie von Zeit zu Zeit mit einer Erhaltungsladung beaufschlagt wird. Der Zustand tritt natürlich in diesen dunklen Tagen öffter auf.

          Ich habe aber noch ein anderes Phänomän.
          Für Batterie-/Wechselrichter-Fehler und Batterieuntertemperatur (bei mir Temperatur < 5 °C, da meine Batterie in der Garage steht) habe ich ein kleines Programm, dass mir die Fehler/Untertemperatur per WhatsApp gemeldet werden.
          Ich werte die entsprechenden Holding-Statusregister aus.

          Nun habe ich immer wieder feststellen müsssen, das sowohl Fehler als auch Untertemperatur gemeldet werden, obwohl es gar nicht an dem ist (Batteriedurchschnittstemperatur z. B. 11 °C).

          Hast du das auch?

          GlasfaserG 1 Antwort Letzte Antwort
          0
          • K Kanumouse

            @glasfaser

            ok, ich wusste nicht, dass die Batterie von Zeit zu Zeit mit einer Erhaltungsladung beaufschlagt wird. Der Zustand tritt natürlich in diesen dunklen Tagen öffter auf.

            Ich habe aber noch ein anderes Phänomän.
            Für Batterie-/Wechselrichter-Fehler und Batterieuntertemperatur (bei mir Temperatur < 5 °C, da meine Batterie in der Garage steht) habe ich ein kleines Programm, dass mir die Fehler/Untertemperatur per WhatsApp gemeldet werden.
            Ich werte die entsprechenden Holding-Statusregister aus.

            Nun habe ich immer wieder feststellen müsssen, das sowohl Fehler als auch Untertemperatur gemeldet werden, obwohl es gar nicht an dem ist (Batteriedurchschnittstemperatur z. B. 11 °C).

            Hast du das auch?

            GlasfaserG Offline
            GlasfaserG Offline
            Glasfaser
            schrieb am zuletzt editiert von
            #304

            @kanumouse sagte in Solaredge Adapter (Photovoltaikanlage):

            Hast du das auch?

            Nein habe ich nicht , habe alles im HAR installiert und wie schon erwähnt eine LG Chem RESU 10

            Batterie-/Wechselrichter-Fehler

            .... Fehler als auch Untertemperatur gemeldet ..
            ist (Batteriedurchschnittstemperatur z. B. 11 °C).

            Welches Register fragst du dazu genau ab und
            wie macht sich das im Register bemerkbar , dauerhaft oder sporalisch .

            Du kannst ja auch mal im Solaredge-Portal überprüfen ob Fehler vorliegen .

            Auf den Wechselrichter , rechte Maustaste dann auf Info , dann kommt ein neuer Reiter dort bei Fehler .

            b99fbefb-f070-4923-a632-6b0037c619bd-grafik.png

            Synology 918+ 16GB - ioBroker in Docker v9 , VISO auf Trekstor Primebook C13 13,3" , Hikvision Domkameras mit Surveillance Station .. CCU RaspberryMatic in Synology VM .. Zigbee CC2538+CC2592 .. Sonoff .. KNX .. Modbus ..

            K 1 Antwort Letzte Antwort
            0
            • GlasfaserG Glasfaser

              @kanumouse sagte in Solaredge Adapter (Photovoltaikanlage):

              Hast du das auch?

              Nein habe ich nicht , habe alles im HAR installiert und wie schon erwähnt eine LG Chem RESU 10

              Batterie-/Wechselrichter-Fehler

              .... Fehler als auch Untertemperatur gemeldet ..
              ist (Batteriedurchschnittstemperatur z. B. 11 °C).

              Welches Register fragst du dazu genau ab und
              wie macht sich das im Register bemerkbar , dauerhaft oder sporalisch .

              Du kannst ja auch mal im Solaredge-Portal überprüfen ob Fehler vorliegen .

              Auf den Wechselrichter , rechte Maustaste dann auf Info , dann kommt ein neuer Reiter dort bei Fehler .

              b99fbefb-f070-4923-a632-6b0037c619bd-grafik.png

              K Offline
              K Offline
              Kanumouse
              schrieb am zuletzt editiert von
              #305

              @glasfaser

              ich frage Register 577708 Battery_1 Average Temperatur und das Register 107 I_Status ab. Im SE-Portal werden keine Fehler angezeigt.

              GlasfaserG 1 Antwort Letzte Antwort
              0
              • K Kanumouse

                @glasfaser

                ich frage Register 577708 Battery_1 Average Temperatur und das Register 107 I_Status ab. Im SE-Portal werden keine Fehler angezeigt.

                GlasfaserG Offline
                GlasfaserG Offline
                Glasfaser
                schrieb am zuletzt editiert von Glasfaser
                #306

                @kanumouse

                Zeichnest du das Register 40107_I_Status // 57708_Battery_1 Average Temperature auf

                a276d35e-fc77-4887-b83a-f623cf720dab-grafik.png
                .
                994c2229-1941-4a7d-9c41-46244a6a69be-grafik.png
                .

                @glasfaser sagte in Solaredge Adapter (Photovoltaikanlage):
                wie macht sich das im Register bemerkbar , dauerhaft oder sporalisch .

                ?

                Synology 918+ 16GB - ioBroker in Docker v9 , VISO auf Trekstor Primebook C13 13,3" , Hikvision Domkameras mit Surveillance Station .. CCU RaspberryMatic in Synology VM .. Zigbee CC2538+CC2592 .. Sonoff .. KNX .. Modbus ..

                K 1 Antwort Letzte Antwort
                0
                • GlasfaserG Glasfaser

                  @kanumouse

                  Zeichnest du das Register 40107_I_Status // 57708_Battery_1 Average Temperature auf

                  a276d35e-fc77-4887-b83a-f623cf720dab-grafik.png
                  .
                  994c2229-1941-4a7d-9c41-46244a6a69be-grafik.png
                  .

                  @glasfaser sagte in Solaredge Adapter (Photovoltaikanlage):
                  wie macht sich das im Register bemerkbar , dauerhaft oder sporalisch .

                  ?

                  K Offline
                  K Offline
                  Kanumouse
                  schrieb am zuletzt editiert von
                  #307

                  @glasfaser

                  Nein, ich habe erst vorhin die history-Funktion für beide Datenpunkte in Betrieb genommen, um eventuell die Ursachen zu ergründen.

                  GlasfaserG 1 Antwort Letzte Antwort
                  0
                  • K Kanumouse

                    @glasfaser

                    Nein, ich habe erst vorhin die history-Funktion für beide Datenpunkte in Betrieb genommen, um eventuell die Ursachen zu ergründen.

                    GlasfaserG Offline
                    GlasfaserG Offline
                    Glasfaser
                    schrieb am zuletzt editiert von Glasfaser
                    #308

                    @kanumouse

                    57708_Battery_1 Average Temperature

                    ist eine Durchschnittstemperatur des Akkus , nicht die reine Umgebungstemperatur

                    Batterieuntertemperatur (bei mir Temperatur < 5 °C, da meine Batterie in der Garage steht) habe ich ein kleines Programm,

                    wohnst du am Nordpol oder ist deine Garage undicht , dafür gibt es von BYD extra für Innen- und Außenbereich ?

                    Lebensdauer ... usw :

                    https://bwg-solarkonzept.de/lebensdauer-von-solarstromspeicher/

                    Synology 918+ 16GB - ioBroker in Docker v9 , VISO auf Trekstor Primebook C13 13,3" , Hikvision Domkameras mit Surveillance Station .. CCU RaspberryMatic in Synology VM .. Zigbee CC2538+CC2592 .. Sonoff .. KNX .. Modbus ..

                    K 1 Antwort Letzte Antwort
                    0
                    • GlasfaserG Glasfaser

                      @kanumouse

                      57708_Battery_1 Average Temperature

                      ist eine Durchschnittstemperatur des Akkus , nicht die reine Umgebungstemperatur

                      Batterieuntertemperatur (bei mir Temperatur < 5 °C, da meine Batterie in der Garage steht) habe ich ein kleines Programm,

                      wohnst du am Nordpol oder ist deine Garage undicht , dafür gibt es von BYD extra für Innen- und Außenbereich ?

                      Lebensdauer ... usw :

                      https://bwg-solarkonzept.de/lebensdauer-von-solarstromspeicher/

                      K Offline
                      K Offline
                      Kanumouse
                      schrieb am zuletzt editiert von
                      #309

                      @glasfaser

                      Das ist mir schon klar, dass das die Durchschnittstemperatur des Akkus ist.

                      Bei diesen Außentemperaturen wird diese zwischen 10-13 °C angezeigt.
                      Bei frostigen Außentemperaturen und der ungeheizten Garage wird auch die Innentemperatur der Garage deutlich zurückgehen.
                      Aus der Erfahrung der vergangenen Jahre ist auch nicht ausgeschlossen, dass diese bis in den negativen Bereich sinkt.
                      Aus diesem Grunde habe ich zur Zeit die Temperaturüberwachung auf 5° C eingestellt.

                      Zur Zeit bin ich außerdem dabei die Batterie einzuhausen und intern mit einer eigenen Temperatursteuerung auszurüsten.

                      Vielen Dank für den Link zum Artikel, diesen hatte ich bereits gelesen.

                      1 Antwort Letzte Antwort
                      0
                      • C Offline
                        C Offline
                        cybtrash
                        schrieb am zuletzt editiert von
                        #310

                        Hallo,

                        ich habe mich aus zeitlichen Gründen hiermit seit ein paar Monaten nicht beschäftigt. Hatte es damals eingerichtet und alles lief eigentlich.

                        Nun zeigt mir modbus.0.holdingRegisters.40083_I_AC_Leistung nachts Werte um 625 Watt (ebenso DC_Leistung). PV-Produktion ist jedoch natürlich 0 (keine Sonne) und die Batterie dümpelt im Idle Modus bei 10% herum (modbus.0.holdingRegisters.57716_Battery_1 Instantaneous Power = 0W)

                        Wisst ihr was hier los ist? Mein Wechselrichter wird ja nicht wirklich 600W verbraten im Leerlauf....

                        Skale-Faktor ist korrekt eingestellt, bzw. mit diesen Einstellungen hatte ich Monate zuvor korrekte Werte (um 30-60W Leerlauf-Eigenverbrauch nachts).

                        GlasfaserG 1 Antwort Letzte Antwort
                        0
                        • C cybtrash

                          Hallo,

                          ich habe mich aus zeitlichen Gründen hiermit seit ein paar Monaten nicht beschäftigt. Hatte es damals eingerichtet und alles lief eigentlich.

                          Nun zeigt mir modbus.0.holdingRegisters.40083_I_AC_Leistung nachts Werte um 625 Watt (ebenso DC_Leistung). PV-Produktion ist jedoch natürlich 0 (keine Sonne) und die Batterie dümpelt im Idle Modus bei 10% herum (modbus.0.holdingRegisters.57716_Battery_1 Instantaneous Power = 0W)

                          Wisst ihr was hier los ist? Mein Wechselrichter wird ja nicht wirklich 600W verbraten im Leerlauf....

                          Skale-Faktor ist korrekt eingestellt, bzw. mit diesen Einstellungen hatte ich Monate zuvor korrekte Werte (um 30-60W Leerlauf-Eigenverbrauch nachts).

                          GlasfaserG Offline
                          GlasfaserG Offline
                          Glasfaser
                          schrieb am zuletzt editiert von
                          #311

                          @cybtrash sagte in Solaredge Adapter (Photovoltaikanlage):

                          um 30-60W Leerlauf-Eigenverbrauch nachts

                          Das ist zu viel ...
                          da gibt es schon lange ein Update für den Wechselrichter , das er in den Standby/Nachtmodus geht ( ~9W)

                          Dieses ist aber ein Thema für dieses Forum :

                          https://www.photovoltaikforum.com/thread/149753-achtung-der-hybrid-wechselrichter-solaredge-sek10-rws-48v-mit-48-v-lg-6-5-batter/?pageNo=19

                          Synology 918+ 16GB - ioBroker in Docker v9 , VISO auf Trekstor Primebook C13 13,3" , Hikvision Domkameras mit Surveillance Station .. CCU RaspberryMatic in Synology VM .. Zigbee CC2538+CC2592 .. Sonoff .. KNX .. Modbus ..

                          D 1 Antwort Letzte Antwort
                          0
                          • GlasfaserG Glasfaser

                            @cybtrash sagte in Solaredge Adapter (Photovoltaikanlage):

                            um 30-60W Leerlauf-Eigenverbrauch nachts

                            Das ist zu viel ...
                            da gibt es schon lange ein Update für den Wechselrichter , das er in den Standby/Nachtmodus geht ( ~9W)

                            Dieses ist aber ein Thema für dieses Forum :

                            https://www.photovoltaikforum.com/thread/149753-achtung-der-hybrid-wechselrichter-solaredge-sek10-rws-48v-mit-48-v-lg-6-5-batter/?pageNo=19

                            D Offline
                            D Offline
                            danielos
                            schrieb am zuletzt editiert von
                            #312

                            Guten Tag zusammen

                            Ich habe seit kurzem einen Solaredge-Wechselrichter und bin auf diesen Thread gestossen. Nutzt ihr diesen Adapter hier? https://www.npmjs.com/package/iobroker.solaredge . Denn dieser startet bei mir nicht mal, obwohl ich die Anlagennummer und API-Token mit Bestimmtheit korrekt eingegeben habe.

                            Danke für eure Hilfe.

                            Gruss
                            Danielos

                            L 1 Antwort Letzte Antwort
                            0
                            • D danielos

                              Guten Tag zusammen

                              Ich habe seit kurzem einen Solaredge-Wechselrichter und bin auf diesen Thread gestossen. Nutzt ihr diesen Adapter hier? https://www.npmjs.com/package/iobroker.solaredge . Denn dieser startet bei mir nicht mal, obwohl ich die Anlagennummer und API-Token mit Bestimmtheit korrekt eingegeben habe.

                              Danke für eure Hilfe.

                              Gruss
                              Danielos

                              L Offline
                              L Offline
                              lisalisa
                              schrieb am zuletzt editiert von
                              #313

                              @danielos sagte in Solaredge Adapter (Photovoltaikanlage):

                              ...Nutzt ihr diesen Adapter hier?...

                              Nein, ich nutze den Adapter nicht, weil der bringt nichts.

                              Aber habe ihn gerade mal installiert, funktionieren tut er schon, ruft alle 15 Minuten Daten von der Solaredge Seite ab.

                              io solaredge.jpg

                              GlasfaserG 1 Antwort Letzte Antwort
                              0
                              • L lisalisa

                                @danielos sagte in Solaredge Adapter (Photovoltaikanlage):

                                ...Nutzt ihr diesen Adapter hier?...

                                Nein, ich nutze den Adapter nicht, weil der bringt nichts.

                                Aber habe ihn gerade mal installiert, funktionieren tut er schon, ruft alle 15 Minuten Daten von der Solaredge Seite ab.

                                io solaredge.jpg

                                GlasfaserG Offline
                                GlasfaserG Offline
                                Glasfaser
                                schrieb am zuletzt editiert von Glasfaser
                                #314

                                @danielos

                                @lisalisa sagte in Solaredge Adapter (Photovoltaikanlage):
                                funktionieren tut er schon, ruft alle 15 Minuten Daten von der Solaredge Seite ab.

                                Habe Ihn auch mal vor langer Zeit mal getestet , aber ist nichts wares per API.

                                Die Werte werden per API abgrufen , nachteil es kann nicht so oft abgefragt werden und usw .......
                                Da ist schon die Abfrage mit Modbus zu empfehlen.

                                Ist das gleich wie mit einem Script per request

                                //
                                
                                // Abholen der livetime Daten Produktion via API
                                
                                //
                                
                                var request = require('request');
                                
                                const akey = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
                                
                                const PATH='javascript.0.Solar.EdgeAPI';
                                
                                let ID_PROD=PATH+'ProduktionLifetime';
                                
                                let ID_CURP=PATH+'CurrentPower';
                                
                                let ID_DELTA=PATH+'ProduktionDelta2Modbus';
                                
                                let ID_MODBUSDATA='modbus.3.holdingRegisters.40093_I_AC_Energie_WH'
                                
                                let ID_CONVERTERSTATUS='modbus.3.holdingRegisters.40107_I_Status'/*Operation State*/
                                
                                
                                
                                
                                // erstellen des Objekte, wenn noch nicht vorhanden
                                
                                mk_prodlifetime(ID_PROD);
                                
                                mk_CurrentPower(ID_CURP);
                                
                                mk_delta2modbus(ID_DELTA);
                                
                                mk_apikey(PATH);
                                
                                setState(PATH,akey,true);
                                
                                
                                
                                
                                let api_key=getState(PATH+'apikey').val;
                                
                                let logging=true;
                                
                                
                                
                                
                                
                                
                                
                                
                                // abholen der Daten nur, wenn PV produziert um Anzahl der API calls zu begrenzen
                                
                                // 4=prod
                                
                                //*/10 * * * *
                                
                                getOverviewSolaredge(api_key);
                                
                                
                                
                                schedule('* * * * *', function () {
                                
                                   var statusPV=Number(getState(ID_CONVERTERSTATUS).val);
                                
                                   tolog(logging,"StatusPV: "+statusPV);
                                
                                   if (statusPV == 4) {
                                
                                       tolog(logging,"Aktualisiere PV LifetimeProd");
                                
                                       getOverviewSolaredge(api_key);
                                
                                   }
                                
                                });
                                
                                
                                
                                on({id:ID_PROD,change:'ne'}, function (obj) {
                                
                                   setState(ID_DELTA,obj.state.val-(getState(ID_MODBUSDATA).val/1000));
                                
                                });
                                
                                
                                
                                function getOverviewSolaredge(){
                                
                                   var url = 'https://monitoringapi.solaredge.com/site/XXXXXXXX/overview.json?api_key=' + akey; //+akey
                                
                                   tolog(logging,"GET DATA FROM: "+url);
                                
                                   var answer;
                                
                                   request(url, function (err, state, body){
                                
                                       if (body) {
                                
                                           tolog(logging,'Request - alles ok');
                                
                                           var obTyp=typeof(body);
                                
                                           tolog(logging,"Reques return type:"+obTyp);
                                
                                           tolog(logging,"response: "+state);
                                
                                           if (testJSON(body) === true) {
                                
                                               body=JSON.parse(body);
                                
                                               var lifetimeProd=body.overview.lifeTimeData.energy/1000;
                                
                                               setState(ID_PROD,lifetimeProd,true);
                                
                                               tolog(logging,"get lifetime prod:"+lifetimeProd);
                                
                                               var currentPower=body.overview.currentPower.power;
                                
                                               setState(ID_CURP,currentPower,true);
                                
                                               tolog(logging,"Power:"+currentPower);
                                
                                
                                           }
                                
                                       } else {
                                
                                           log('Request meldet Fehler: ' + err, 'error');  
                                
                                       }
                                
                                
                                
                                   });
                                
                                }  
                                
                                
                                
                                function testJSON(text){
                                
                                   if (typeof text!=="string"){
                                
                                       return false;
                                
                                   }
                                
                                   try{
                                
                                       JSON.parse(text);
                                
                                       return true;
                                
                                   }
                                
                                   catch (error){
                                
                                       return false;
                                
                                   }
                                
                                }
                                
                                
                                
                                function mk_delta2modbus (path){
                                
                                   
                                
                                   var obj = {};
                                
                                       obj.type = 'state';
                                
                                       obj.common = {};
                                
                                       obj.common.name = 'prodDelta2modbus';
                                
                                       obj.common.type = 'number';
                                
                                       obj.common.role = 'value';
                                
                                       obj.common.unit = 'kWh' ;
                                
                                       obj.common.read = true;
                                
                                       obj.common.write = false;
                                
                                   setzeObject(path, obj);
                                
                                }  
                                
                                
                                
                                function mk_prodlifetime (path){
                                
                                   
                                
                                   var obj = {};
                                
                                       obj.type = 'state';
                                
                                       obj.common = {};
                                
                                       obj.common.name = 'Lifetime production';
                                
                                       obj.common.type = 'number';
                                
                                       obj.common.role = 'value';
                                
                                       obj.common.unit = 'kWh' ;
                                
                                       obj.common.read = true;
                                
                                       obj.common.write = false;
                                
                                   setzeObject(path, obj);
                                
                                }  
                                
                                function mk_CurrentPower (path){
                                
                                   
                                
                                   var obj = {};
                                
                                       obj.type = 'state';
                                
                                       obj.common = {};
                                
                                       obj.common.name = 'CurrentPower';
                                
                                       obj.common.type = 'number';
                                
                                       obj.common.role = 'value';
                                
                                       obj.common.unit = 'W' ;
                                
                                       obj.common.read = true;
                                
                                       obj.common.write = false;
                                
                                   setzeObject(path, obj);
                                
                                }  
                                
                                
                                function mk_apikey (id){
                                
                                  var obj = {};
                                
                                  obj.type = 'state';
                                
                                  obj.common = {};
                                
                                  obj.common.name = 'API api_key';
                                
                                  obj.common.role = 'value';
                                
                                  obj.common.read = true;
                                
                                  obj.common.write = true;
                                
                                  setzeObject(id, obj);
                                
                                }  
                                
                                
                                
                                function setzeObject(id, obj) {
                                
                                  log("ID: "+id);
                                
                                  //if(getObject(path + idDev + '.status')) return;
                                
                                  
                                
                                  
                                
                                  if (getObject(id)) {
                                
                                           log("Objekt: "+id+" existiert lege es nicht erneut an");
                                
                                   } else {
                                
                                       log("Objekt: "+id+" existiert nicht, lege es an");
                                
                                       setObject(id, obj, function(err) {
                                
                                           if(err) log('Cannot write object: ' + err);
                                
                                           else setState(id, obj.common.def);
                                
                                       }); 
                                
                                   }
                                
                                   
                                
                                }
                                
                                
                                
                                
                                
                                
                                
                                
                                
                                function tolog(logging,val) {
                                
                                   if (logging===true) {
                                
                                       log(val);
                                
                                   }
                                
                                }
                                

                                Synology 918+ 16GB - ioBroker in Docker v9 , VISO auf Trekstor Primebook C13 13,3" , Hikvision Domkameras mit Surveillance Station .. CCU RaspberryMatic in Synology VM .. Zigbee CC2538+CC2592 .. Sonoff .. KNX .. Modbus ..

                                D 1 Antwort Letzte Antwort
                                0
                                • H Offline
                                  H Offline
                                  hennerich
                                  schrieb am zuletzt editiert von
                                  #315

                                  Moin, auch ich sehe das so wie meine Vorgänger. Abfragen per API aus der Cloud machen nur dann Sinn, wenn du keine andere Möglichkeit hast mit deinem Wechselrichter zu kommunizieren.
                                  Besser (ja, und vermutlich auch komplizierter) ist der Abruf der Daten via Modbus.

                                  Grüße
                                  Henri

                                  Tutorial UVR1611 C.M.I. Integration
                                  Tutorial SolarEdge Integration via ModBus

                                  1 Antwort Letzte Antwort
                                  0
                                  • GlasfaserG Glasfaser

                                    @danielos

                                    @lisalisa sagte in Solaredge Adapter (Photovoltaikanlage):
                                    funktionieren tut er schon, ruft alle 15 Minuten Daten von der Solaredge Seite ab.

                                    Habe Ihn auch mal vor langer Zeit mal getestet , aber ist nichts wares per API.

                                    Die Werte werden per API abgrufen , nachteil es kann nicht so oft abgefragt werden und usw .......
                                    Da ist schon die Abfrage mit Modbus zu empfehlen.

                                    Ist das gleich wie mit einem Script per request

                                    //
                                    
                                    // Abholen der livetime Daten Produktion via API
                                    
                                    //
                                    
                                    var request = require('request');
                                    
                                    const akey = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
                                    
                                    const PATH='javascript.0.Solar.EdgeAPI';
                                    
                                    let ID_PROD=PATH+'ProduktionLifetime';
                                    
                                    let ID_CURP=PATH+'CurrentPower';
                                    
                                    let ID_DELTA=PATH+'ProduktionDelta2Modbus';
                                    
                                    let ID_MODBUSDATA='modbus.3.holdingRegisters.40093_I_AC_Energie_WH'
                                    
                                    let ID_CONVERTERSTATUS='modbus.3.holdingRegisters.40107_I_Status'/*Operation State*/
                                    
                                    
                                    
                                    
                                    // erstellen des Objekte, wenn noch nicht vorhanden
                                    
                                    mk_prodlifetime(ID_PROD);
                                    
                                    mk_CurrentPower(ID_CURP);
                                    
                                    mk_delta2modbus(ID_DELTA);
                                    
                                    mk_apikey(PATH);
                                    
                                    setState(PATH,akey,true);
                                    
                                    
                                    
                                    
                                    let api_key=getState(PATH+'apikey').val;
                                    
                                    let logging=true;
                                    
                                    
                                    
                                    
                                    
                                    
                                    
                                    
                                    // abholen der Daten nur, wenn PV produziert um Anzahl der API calls zu begrenzen
                                    
                                    // 4=prod
                                    
                                    //*/10 * * * *
                                    
                                    getOverviewSolaredge(api_key);
                                    
                                    
                                    
                                    schedule('* * * * *', function () {
                                    
                                       var statusPV=Number(getState(ID_CONVERTERSTATUS).val);
                                    
                                       tolog(logging,"StatusPV: "+statusPV);
                                    
                                       if (statusPV == 4) {
                                    
                                           tolog(logging,"Aktualisiere PV LifetimeProd");
                                    
                                           getOverviewSolaredge(api_key);
                                    
                                       }
                                    
                                    });
                                    
                                    
                                    
                                    on({id:ID_PROD,change:'ne'}, function (obj) {
                                    
                                       setState(ID_DELTA,obj.state.val-(getState(ID_MODBUSDATA).val/1000));
                                    
                                    });
                                    
                                    
                                    
                                    function getOverviewSolaredge(){
                                    
                                       var url = 'https://monitoringapi.solaredge.com/site/XXXXXXXX/overview.json?api_key=' + akey; //+akey
                                    
                                       tolog(logging,"GET DATA FROM: "+url);
                                    
                                       var answer;
                                    
                                       request(url, function (err, state, body){
                                    
                                           if (body) {
                                    
                                               tolog(logging,'Request - alles ok');
                                    
                                               var obTyp=typeof(body);
                                    
                                               tolog(logging,"Reques return type:"+obTyp);
                                    
                                               tolog(logging,"response: "+state);
                                    
                                               if (testJSON(body) === true) {
                                    
                                                   body=JSON.parse(body);
                                    
                                                   var lifetimeProd=body.overview.lifeTimeData.energy/1000;
                                    
                                                   setState(ID_PROD,lifetimeProd,true);
                                    
                                                   tolog(logging,"get lifetime prod:"+lifetimeProd);
                                    
                                                   var currentPower=body.overview.currentPower.power;
                                    
                                                   setState(ID_CURP,currentPower,true);
                                    
                                                   tolog(logging,"Power:"+currentPower);
                                    
                                    
                                               }
                                    
                                           } else {
                                    
                                               log('Request meldet Fehler: ' + err, 'error');  
                                    
                                           }
                                    
                                    
                                    
                                       });
                                    
                                    }  
                                    
                                    
                                    
                                    function testJSON(text){
                                    
                                       if (typeof text!=="string"){
                                    
                                           return false;
                                    
                                       }
                                    
                                       try{
                                    
                                           JSON.parse(text);
                                    
                                           return true;
                                    
                                       }
                                    
                                       catch (error){
                                    
                                           return false;
                                    
                                       }
                                    
                                    }
                                    
                                    
                                    
                                    function mk_delta2modbus (path){
                                    
                                       
                                    
                                       var obj = {};
                                    
                                           obj.type = 'state';
                                    
                                           obj.common = {};
                                    
                                           obj.common.name = 'prodDelta2modbus';
                                    
                                           obj.common.type = 'number';
                                    
                                           obj.common.role = 'value';
                                    
                                           obj.common.unit = 'kWh' ;
                                    
                                           obj.common.read = true;
                                    
                                           obj.common.write = false;
                                    
                                       setzeObject(path, obj);
                                    
                                    }  
                                    
                                    
                                    
                                    function mk_prodlifetime (path){
                                    
                                       
                                    
                                       var obj = {};
                                    
                                           obj.type = 'state';
                                    
                                           obj.common = {};
                                    
                                           obj.common.name = 'Lifetime production';
                                    
                                           obj.common.type = 'number';
                                    
                                           obj.common.role = 'value';
                                    
                                           obj.common.unit = 'kWh' ;
                                    
                                           obj.common.read = true;
                                    
                                           obj.common.write = false;
                                    
                                       setzeObject(path, obj);
                                    
                                    }  
                                    
                                    function mk_CurrentPower (path){
                                    
                                       
                                    
                                       var obj = {};
                                    
                                           obj.type = 'state';
                                    
                                           obj.common = {};
                                    
                                           obj.common.name = 'CurrentPower';
                                    
                                           obj.common.type = 'number';
                                    
                                           obj.common.role = 'value';
                                    
                                           obj.common.unit = 'W' ;
                                    
                                           obj.common.read = true;
                                    
                                           obj.common.write = false;
                                    
                                       setzeObject(path, obj);
                                    
                                    }  
                                    
                                    
                                    function mk_apikey (id){
                                    
                                      var obj = {};
                                    
                                      obj.type = 'state';
                                    
                                      obj.common = {};
                                    
                                      obj.common.name = 'API api_key';
                                    
                                      obj.common.role = 'value';
                                    
                                      obj.common.read = true;
                                    
                                      obj.common.write = true;
                                    
                                      setzeObject(id, obj);
                                    
                                    }  
                                    
                                    
                                    
                                    function setzeObject(id, obj) {
                                    
                                      log("ID: "+id);
                                    
                                      //if(getObject(path + idDev + '.status')) return;
                                    
                                      
                                    
                                      
                                    
                                      if (getObject(id)) {
                                    
                                               log("Objekt: "+id+" existiert lege es nicht erneut an");
                                    
                                       } else {
                                    
                                           log("Objekt: "+id+" existiert nicht, lege es an");
                                    
                                           setObject(id, obj, function(err) {
                                    
                                               if(err) log('Cannot write object: ' + err);
                                    
                                               else setState(id, obj.common.def);
                                    
                                           }); 
                                    
                                       }
                                    
                                       
                                    
                                    }
                                    
                                    
                                    
                                    
                                    
                                    
                                    
                                    
                                    
                                    function tolog(logging,val) {
                                    
                                       if (logging===true) {
                                    
                                           log(val);
                                    
                                       }
                                    
                                    }
                                    

                                    D Offline
                                    D Offline
                                    danielos
                                    schrieb am zuletzt editiert von
                                    #316

                                    @glasfaser

                                    Danke euch für die Antwort. Bei mir ist es so, dass der Wechselrichter nicht direkt in meinem LAN drin ist im Moment. Dies, weil neben meinem noch mehrere andere stehen und diese dann gemeinsam einen mobilen Internetzugang haben, um die Infos ins Netz zu kriegen. In diesem Setup dürfte es wohl schwierig werden, an den Modbus zu kommen, oder? Und gibt‘s für die Modbus-Kommunikation bzw. das Abrufen und Speichern der Daten zwischenzeitlich ein „Quasi-Standard-Skript“? Ich sehe hier im Forum nur überall Skript-Fetzen…

                                    Danke euch und allen ein gutes neues Jahr!!

                                    O 1 Antwort Letzte Antwort
                                    0
                                    • D danielos

                                      @glasfaser

                                      Danke euch für die Antwort. Bei mir ist es so, dass der Wechselrichter nicht direkt in meinem LAN drin ist im Moment. Dies, weil neben meinem noch mehrere andere stehen und diese dann gemeinsam einen mobilen Internetzugang haben, um die Infos ins Netz zu kriegen. In diesem Setup dürfte es wohl schwierig werden, an den Modbus zu kommen, oder? Und gibt‘s für die Modbus-Kommunikation bzw. das Abrufen und Speichern der Daten zwischenzeitlich ein „Quasi-Standard-Skript“? Ich sehe hier im Forum nur überall Skript-Fetzen…

                                      Danke euch und allen ein gutes neues Jahr!!

                                      O Offline
                                      O Offline
                                      osu
                                      schrieb am zuletzt editiert von
                                      #317

                                      @danielos said in Solaredge Adapter (Photovoltaikanlage):

                                      Und gibt‘s für die Modbus-Kommunikation bzw. das Abrufen und Speichern der Daten zwischenzeitlich ein „Quasi-Standard-Skript“? Ich sehe hier im Forum nur überall Skript-Fetzen…

                                      Die Datenpunkte am Modbus-Adapter sind hersteller- und konfigurationsspezifisch (teils abweichende Registeradressen selbst bei Solaredge aber natürlich auch unterschiedliche Batteriespeicher sofern vorhanden). Das ist also nicht so einfach mit einem Standard-Skript abzudecken.

                                      Für den Modbus-Adapter musst Du aber ohnehin per TCP im LAN an Deinen Wechselrichter rankommen - wenn das nicht der Fall ist, ist die API (bzw. der Solaredge Adapter) aus meiner Sicht eine gangbare Lösung (je nach Anwendungsfall, für reine Visualisierung reichen vermutlich auch 15 Minuten Intervalle, für eine Überschussladesteuerung eines potentiellen E-Fahrzeugs eher nicht).

                                      Gruß,
                                      Oli

                                      C 1 Antwort Letzte Antwort
                                      0
                                      • O osu

                                        @danielos said in Solaredge Adapter (Photovoltaikanlage):

                                        Und gibt‘s für die Modbus-Kommunikation bzw. das Abrufen und Speichern der Daten zwischenzeitlich ein „Quasi-Standard-Skript“? Ich sehe hier im Forum nur überall Skript-Fetzen…

                                        Die Datenpunkte am Modbus-Adapter sind hersteller- und konfigurationsspezifisch (teils abweichende Registeradressen selbst bei Solaredge aber natürlich auch unterschiedliche Batteriespeicher sofern vorhanden). Das ist also nicht so einfach mit einem Standard-Skript abzudecken.

                                        Für den Modbus-Adapter musst Du aber ohnehin per TCP im LAN an Deinen Wechselrichter rankommen - wenn das nicht der Fall ist, ist die API (bzw. der Solaredge Adapter) aus meiner Sicht eine gangbare Lösung (je nach Anwendungsfall, für reine Visualisierung reichen vermutlich auch 15 Minuten Intervalle, für eine Überschussladesteuerung eines potentiellen E-Fahrzeugs eher nicht).

                                        Gruß,
                                        Oli

                                        C Offline
                                        C Offline
                                        ChrisL
                                        schrieb am zuletzt editiert von
                                        #318

                                        Hallo zusammen,

                                        ich bin zwar hier im Forum ganz neu, heisst aber nicht, dass ich nicht schon Stunden gelesen und gegoogelt habe ;)

                                        Folgende Situation, wir haben einen SolarEdge SE15k Wechselrichter.

                                        Dieser ist per LAN Angebunden - fixe IP via UDM-Pro zugewiesen, Modbus auf Port 502 aktiviert, soweit alles gut, ping reagiert er, Daten in der SolardEdge Smartphone App alle da, inkl. live Verbrauch, Produktion etc.

                                        Nur im ioBroker mit dem Modbus Adapter kriege ich das auf biegen und brechen nicht hin an die Daten zu kommen... :( Und ja, SunSpec PDF etc. durchforstet - jedoch bleibt der Modbus Adapter immer auf Orange, "Verbunden mit Host, Lebenszeichen grün, VErbunden mit Gerät oder Dienst, rot"

                                        Ich habe unten mal 2 Bilder eingestellt - kann mir hier evtl. jemand helfen?
                                        (und ja, die Adressen habe ich auch durchprobiert, da ja diese auch um 1-2 versetzt sein können...).

                                        Schlussendlich brauche ich die Daten im ioBroker, um den Überschussstrom gezielt zu verbrauchen, so kommen z.B. in ein paar Wochen zwei go-e Ladestationen für ein EV sowie ein PHEV.
                                        Auch ein Ansteuern der LWP und Warmwassererzeugung wäre dann noch geplant.

                                        solardedge_01.png
                                        solardedge_02.png

                                        H L GlasfaserG 3 Antworten Letzte Antwort
                                        0
                                        • C ChrisL

                                          Hallo zusammen,

                                          ich bin zwar hier im Forum ganz neu, heisst aber nicht, dass ich nicht schon Stunden gelesen und gegoogelt habe ;)

                                          Folgende Situation, wir haben einen SolarEdge SE15k Wechselrichter.

                                          Dieser ist per LAN Angebunden - fixe IP via UDM-Pro zugewiesen, Modbus auf Port 502 aktiviert, soweit alles gut, ping reagiert er, Daten in der SolardEdge Smartphone App alle da, inkl. live Verbrauch, Produktion etc.

                                          Nur im ioBroker mit dem Modbus Adapter kriege ich das auf biegen und brechen nicht hin an die Daten zu kommen... :( Und ja, SunSpec PDF etc. durchforstet - jedoch bleibt der Modbus Adapter immer auf Orange, "Verbunden mit Host, Lebenszeichen grün, VErbunden mit Gerät oder Dienst, rot"

                                          Ich habe unten mal 2 Bilder eingestellt - kann mir hier evtl. jemand helfen?
                                          (und ja, die Adressen habe ich auch durchprobiert, da ja diese auch um 1-2 versetzt sein können...).

                                          Schlussendlich brauche ich die Daten im ioBroker, um den Überschussstrom gezielt zu verbrauchen, so kommen z.B. in ein paar Wochen zwei go-e Ladestationen für ein EV sowie ein PHEV.
                                          Auch ein Ansteuern der LWP und Warmwassererzeugung wäre dann noch geplant.

                                          solardedge_01.png
                                          solardedge_02.png

                                          H Offline
                                          H Offline
                                          hennerich
                                          schrieb am zuletzt editiert von
                                          #319

                                          @chrisl sagte in Solaredge Adapter (Photovoltaikanlage):

                                          Nur im ioBroker mit dem Modbus Adapter kriege ich das auf biegen und brechen nicht hin an die Daten zu kommen... :( Und ja, SunSpec PDF etc. durchforstet - jedoch bleibt der Modbus Adapter immer auf Orange, "Verbunden mit Host, Lebenszeichen grün, VErbunden mit Gerät oder Dienst, rot"

                                          Hey Chris,

                                          schau doch mal in meinen Thread hier rein. Hoffe das hilft dir weiter.
                                          Viele Grüße
                                          Henri

                                          Tutorial UVR1611 C.M.I. Integration
                                          Tutorial SolarEdge Integration via ModBus

                                          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
                                          FAQ Cloud / IOT
                                          HowTo: Node.js-Update
                                          HowTo: Backup/Restore
                                          Downloads
                                          BLOG

                                          876

                                          Online

                                          32.4k

                                          Benutzer

                                          81.5k

                                          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