Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Sungrow WR SGH10RT erfolgreich mit MODBUS eingebunden

    NEWS

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    • Save The Date: ioBroker@Smart Living Forum Solingen, 14.06.

    Sungrow WR SGH10RT erfolgreich mit MODBUS eingebunden

    This topic has been deleted. Only users with topic management privileges can see it.
    • A
      Atlantis @quorle last edited by

      @quorle sagte in Sungrow WR SGH10RT erfolgreich mit MODBUS eingebunden:

      @atlantis sagte in Sungrow WR SGH10RT erfolgreich mit MODBUS eingebunden:

      @quorle Sieht ja genial aus. Du bist ein Genie!

      Bin aber noch am Feinjustieren.

      Eventuell kann mir jemand dabei helfen Fehler zu finden.
      Nur die Justgauge funktionieren noch nicht, da bin ich noch am Tüfteln, wie ich am besten mit den Minus-Werten umgehe.

      @quorle
      2 genau übereinander legen
      Ein/AUs des jeweiligen Gauches über die SIchtbarkeit steuern mit >0 und <= 0
      Werte beim einen *(mal) -1 beim anderen *1

      Reicht diese Info?

      au

      M B 2 Replies Last reply Reply Quote 0
      • M
        miki @Atlantis last edited by

        Sorry, war lange nicht online.
        Anbei ein alter Widget export aus den Anfängen aus meiner Vis auf der Basis der Daten von Atlantis.
        Meine aktuelle Version macht auch keinen Sinn hier zu posten, da auch bei mir inzwischen mehrere Datenquellen abgefragt und geschrieben werden...
        lgm

        Vis.txt

        O 1 Reply Last reply Reply Quote 0
        • O
          ostseeskipper @miki last edited by ostseeskipper

          Kurze Frage: Woran macht ihr es fest das der WR die Battarie lädt oder nicht?
          In #13021 wird ja leider kein Vorzeichen mitgeliefert woran man erkennt ob geladen oder entladen wird.
          Lt Kommunikationsprotokoll versteckt sich der Status "Laden" oder "Entladen" in #130000 Running State. Das ist zwar U16 aber die Interpretation muss auf Bit Ebene im Bit 1 und 2 stattfinden.
          Gibts dafür schon ne Lösung nur das Bit 1 und 2 als Status auszulesen ?

          M 1 Reply Last reply Reply Quote 0
          • O
            ostseeskipper last edited by

            Fast fertig
            c4b20c60-f5c3-44d4-aab9-60bf100c69c5-grafik.png

            1 Reply Last reply Reply Quote 0
            • Q
              quorle last edited by

              So, habe mal eine HTML-Liste mit Hilfe von @liv-in-sky erstellt.
              Der original Thread ist hier:
              Original Thread

              Die Modifikationen durch uns findet ihr in dem Thread ab hier:
              Modifikation

              Das Script ist ein JS-Script und wird alle 12 Stunden ausgeführt und aktualisiert den Datenpunkt.

              Wie ihr das Script am besten anpasst und den Datenpunkt wählt, sehr ihr im Original-Thread. Bei Fragen, einfach hier Melden.

              Es werden folgende Datenpunkte vom ModBus benutzt:
              6226 - 6237
              6416 - 6427
              6595 - 6606

              Unbenannt.PNG

              Hier das Script:

               //@liv-in-sky 2020  4.2.-18:42
              
              
              //HIER WIRD PFAD UND FILENAME DEFINIERT
              const path = "/htmlexample.html";                   //FIlenamen definieren
              const home ='vis.0'                                 //wo soll das file im iobroker-file-system liegen ? (oder z.b auch iqontrol.meta)
              let   braucheEinFile=false;                          // bei true wird ein file geschrieben
              let   braucheEinVISWidget=true;                     // bei true wird ein html-tabelle in einen dp geschrieben - siehe nächste zeile
              let dpVIS="javascript.0.test.Test_gemischt"//"javascript.0.test.Test_gemischt"         //WICHTIG wenn "braucheEinVISWidget" auf true gesetzt !!  dp zusätzlich für VIS-HTML-Basic-Widget
              let mySchedule=" '0 */12 * * *'";                       //jede minute  
              
              //---------------------------------------
              
              //HIER DIE SPALTEN ANZAHL DEFINIEREN - jede Spalte einen Wert - in diesem Beispiel sind es 4
              var htmlFeld1='Monat';       var Feld1lAlign="left";                     // überschrift Tabellen Spalte1 und  Ausrichtung left,right or center
              var htmlFeld2='Erzeugung';        var Feld2lAlign="right";                      // überschrift Tabellen Spalte2 und  Ausrichtung left,right or center
              var htmlFeld3='Verbrauch von PV';         var Feld3lAlign="right";                    // überschrift Tabellen Spalte3 und  Ausrichtung left,right or center
              var htmlFeld4='PV-Export';        var Feld4lAlign="left";                    // überschrift Tabellen Spalte4 und  Ausrichtung left,right or center
              //-----------------------------------
              
              
              
              //ÜBERSCHRIFT ÜBER TABELLE
              let   htmlUberschrift=true;                           // mit Überschrift über der tabelle
              let   htmlSignature=true;                              // anstatt der Überscghrift eine signature: - kleiner - anliegend
              const htmlFeldUeber='Monatsübersicht PV-Anlage';              // Überschrift und Signature
              const htmlFarbUber="white";                         // Farbe der Überschrift
              const htmlSchriftWeite="normal";                       // bold, normal - Fettschrift für Überschrift
              const htmlÜberFontGroesse="24px";                       // schriftgröße überschrift
              //MEHRERE TABELLEN NEBENEINANDER
              let   mehrfachTabelle=1;                              // bis zu 4 Tabellen werden nebeneinander geschrieben-  verkürzt das Ganze, dafür etwas breiter - MÖGLICH 1,2,3,oder 4 !!!
              const trennungsLinie="2";                             //extra trennungslinie bei mehrfachtabellen - evtl auf 0 stellen, wnn htmlRahmenLinien auf none sind
              const farbetrennungsLinie="black";
              const htmlFarbZweiteTabelle="black";                // Farbe der Überschrift bei jeder 2.ten Tabelle
              const htmlFarbTableColorUber="black";               // Überschrift in der tabelle - der einzelnen Spalten
              //ÜBERSCHRIFT SPALTEN
              const UeberSchriftHöhe="2";                          //Überschrift bekommt mehr Raum - darunter und darüber - Zellenhöhe
              const LinieUnterUeberschrift="3";                   // Linie nur unter Spaltenüberschrift - 
              const farbeLinieUnterUeberschrift="white";
              const groesseUeberschrift=18;
              const UeberschriftStyle="normal"                     // möglich "bold"
              //GANZE TABELLE
              let abstandZelle="4";
              let farbeUngeradeZeilen="#000000";                     //Farbe für ungerade Zeilenanzahl - Hintergrund der Spaltenüberschrift bleibt bei htmlFarbTableColorGradient1/2
              let farbeGeradeZeilen="#151515";                        //Farbe für gerade Zeilenanzahl - Hintergrund der Spaltenüberschrift bleibt bei htmlFarbTableColorGradient1/2
              let weite="auto";                                     //Weite der Tabelle
              let zentriert=true;                                   //ganze tabelle zentriert
              const backgroundAll="#000000";                        //Hintergrund für die ganze Seite - für direkten aufruf oder iqontrol sichtber - keine auswirkung auf vis-widget
              const htmlSchriftart="Helvetica";
              const htmlSchriftgroesse="16px";
              //FELDER UND RAHMEN
              let   UeberschriftSpalten=true;                // ein- oder ausblenden der spatlen-überschriften
              const htmlFarbFelderschrift="#BDBDBD";                  // SchriftFarbe der Felder
              const htmlFarbFelderschrift2="#D8D8D8";                 // SchriftFarbe der Felder für jede 2te Tabelle
              const htmlFarbTableColorGradient1="orange";          //  Gradient - Hintergrund der Tabelle - Verlauffarbe
              const htmlFarbTableColorGradient2="red";          //  Gradient - Hintergrund der Tabelle - ist dieser Wert gleich Gradient1 gibt es keinen verlauf
              const htmlFarbTableBorderColor="grey";             // Farbe des Rahmen - is tdieser gleich den gradienten, sind die rahmen unsichtbar
              let htmlRahmenLinien="cols";                            // Format für Rahmen: MÖGLICH: "none" oder "all" oder "cols" oder "rows"
              const htmlSpalte1Weite="auto";                   //  Weite der ersten beiden  Spalten oder z.b. 115px
              
              // HIER NICHTS  ÄNDERN
              
              let borderHelpBottum;
              let borderHelpRight;
              let htmlcenterHelp;
              let htmlcenterHelp2;
              
              if(htmlRahmenLinien=="rows") {borderHelpBottum=1;borderHelpRight=0;}
              if(htmlRahmenLinien=="cols") {borderHelpBottum=0;borderHelpRight=1;}
              if(htmlRahmenLinien=="none") {borderHelpBottum=0;borderHelpRight=0;}
              if(htmlRahmenLinien=="all")  {borderHelpBottum=1;borderHelpRight=1;}
              zentriert ? htmlcenterHelp="auto" : htmlcenterHelp="left";
              zentriert ? htmlcenterHelp2="center" : htmlcenterHelp2="left";
              
              
              const htmlZentriert='<center>'
              const htmlStart=    "<!DOCTYPE html><html lang=\"de\"><head><title>Vorlage</title><meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">"+
                            "<style> * {  margin: 0;} body {background-color: "+backgroundAll+"; margin: 0 auto;  }"+
                            " p {padding-top: 10px; padding-bottom: 10px; text-align: "+htmlcenterHelp2+"}"+
                           // " div { margin: 0 auto;  margin-left: auto; margin-right: auto;}"+
                            " td { padding:"+abstandZelle+"px; border:0px solid "+htmlFarbTableBorderColor+";  border-right:"+borderHelpRight+"px solid "+htmlFarbTableBorderColor+";border-bottom:"+borderHelpBottum+"px solid "+htmlFarbTableBorderColor+";}"+ 
                            " table { width: "+weite+";  margin: 0 "+htmlcenterHelp+"; border:1px solid "+htmlFarbTableBorderColor+"; border-spacing=\""+abstandZelle+"0px\" ; }"+   // margin macht center
                            "td:nth-child(1) {width: "+htmlSpalte1Weite+"}"+"td:nth-child(2) {width:"+htmlSpalte1Weite+"}"+
                            " </style></head><body> <div>";
              //const htmlUeber=    "<p style=\"color:"+htmlFarbUber+"; font-family:"+htmlSchriftart+"; font-weight: bold\">"+htmlFeldUeber+"</p>";                    
              const htmlTabStyle= "<table bordercolor=\""+htmlFarbTableBorderColor+"\" border=\"2px\" cellspacing=\""+abstandZelle+"\" cellpadding=\""+abstandZelle+"\" width=\""+weite+"\" rules=\""+htmlRahmenLinien+"\" style=\"color:"+htmlFarbFelderschrift+";  font-size:"+htmlSchriftgroesse+
                               "; font-family:"+htmlSchriftart+";background-image: linear-gradient(42deg,"+htmlFarbTableColorGradient2+","+htmlFarbTableColorGradient1+");\">";
              const htmlTabUeber1="<tr height=\""+UeberSchriftHöhe+"\" style=\"color:"+htmlFarbTableColorUber+"; font-size: "+groesseUeberschrift+"px; font-weight: "+UeberschriftStyle+" ;  border-bottom: "+LinieUnterUeberschrift+"px solid "+farbeLinieUnterUeberschrift+" \">";
              const htmlTabUeber3="</tr>";
              
              
              
              
              //NICHTS ÄNDERN - abhängig von den oben definierten _Spalten - in diesem Beispiel sind es 4
              
              var htmlTabUeber2="<td width="+htmlSpalte1Weite+" align="+Feld1lAlign+">&ensp;"+htmlFeld1+"&ensp;</td><td width="+htmlSpalte1Weite+" align="+Feld2lAlign+">&ensp;"+htmlFeld2+"&ensp;</td><td  align="+Feld3lAlign+">&ensp;"+htmlFeld3+"&ensp;</td><td align="+Feld4lAlign+">&ensp;"+htmlFeld4+"&ensp;</td>";
              var htmlTabUeber2_1="<td width="+htmlSpalte1Weite+" align=="+Feld1lAlign+" style=\"color:"+htmlFarbZweiteTabelle+"\">&ensp;"+htmlFeld1+"&ensp;</td><td width="+htmlSpalte1Weite+"  align="+Feld2lAlign+" style=\"color:"+htmlFarbZweiteTabelle+"\">&ensp;"+htmlFeld2+
                              "&ensp;</td><td  align=="+Feld3lAlign+" style=\"color:"+htmlFarbZweiteTabelle+"\">&ensp;"+htmlFeld3+"&ensp;</td><td  align="+Feld4lAlign+" style=\"color:"+htmlFarbZweiteTabelle+"\">&ensp;"+htmlFeld4+
                              "&ensp;</td>";
              //------------------------------------------------------
              
              
              var htmlOut="";
              var mix;
              var counter;
              var val1; var val2; var val0; var val3;
              var htmlTabUeber="";
              
              function writeHTML(){
              
              
              htmlOut="";
              
              
              
              counter=-1;
              htmlTabUeber="";
              switch (mehrfachTabelle) { 
              case 1: htmlTabUeber=htmlTabUeber1+htmlTabUeber2+htmlTabUeber3;  break;
              case 2: htmlTabUeber=htmlTabUeber1+htmlTabUeber2+htmlTabUeber2_1+htmlTabUeber3; break;
              case 3: htmlTabUeber=htmlTabUeber1+htmlTabUeber2+htmlTabUeber2+htmlTabUeber2+htmlTabUeber3; break;
              case 4: htmlTabUeber=htmlTabUeber1+htmlTabUeber2+htmlTabUeber2_1+htmlTabUeber2+htmlTabUeber2_1+htmlTabUeber3; break;
              }; 
              if (!UeberschriftSpalten) {htmlTabUeber=""} 
              
              //--------------------------------------------------------------------------------------------------------------------------------------------------
              //---------hier kommt eure schleife rein counter++, tabelleBind() und tabelleFinish() müssen so integriert bleiben !!!------------------------------
              //---------alle valx werte müssen von euch bestimmt werden - val0,val1,val2,val3 !!!---------------------------------------------------------------------
              //--------------------------------------------------------------------------------------------------------------------------------------------------
              // Schleife 1 (Monatatliche PV-Erzeugung)
              
              let myArr=[]
              $('modbus.0.inputRegisters.*Monthly_PV*yields*').each(function(id, i) {           // hier eigene schleife definieren
              var ida = id.split('.');
                let helpi=myArr.push(
                    { monat: id.replace(/.*yields (.*)/,"$1"),
                      yields:getState(id).val+ " KW/h",
                      consumption:"",
                      report:""
                    }
                )
               
              }); 
              $('modbus.0.inputRegisters.*Monthly_direct*consumption*').each(function(id, i) { 
                myArr[i].consumption=getState(id).val+ " KW/h"
              });
              
              $('modbus.0.inputRegisters.*Monthly_export energy from *').each(function(id, i) { 
                    myArr[i].report=getState(id).val+ " KW/h"
                });
              
              for(let ii=0;ii<myArr.length;ii++){
              
              
                   
                   
                     counter++;                                       // SEHR WICHTIG - MUSS IN JEDER SCHLEIFE INTEGRIERT SEIN
                     val0=myArr[ii].monat
                     //var val1help=getState(id.replace("alive","uptime")).val;
                     val1=myArr[ii].yields      
                  
                    val2=myArr[ii].consumption      
                    val3=myArr[ii].report      
              
                tabelleBind(); //HIER NICHTS ÄNDERN : HIER WERDEN DIE DATEN DER SCHLEIFE ZUSAMMENGESETZT  - diese function muss als letztes in der eigenen schleife aufgerufen werden
              }
              
              
              //-------------------------------------------------------------------------------------------------------------------------------------------------
              //--------------------------------------------------Ende der schleife------------------------------------------------------------------------------
              //-------------------------------------------------------------------------------------------------------------------------------------------------
              
                 tabelleFinish(); // AB HIER NICHTS ÄNDERN - tabelle fertigstellen
                
              } // function ende
              
              //MAIN:
              
              
              schedule(mySchedule,  function () {
              writeHTML();
              if (braucheEinFile) {writeFile(home, path ,htmlOut, function (error) { /* log('file written');*/  });}
              }); 
              writeHTML();
              
              
              function tabelleBind(){
                //HIER WERDEN DIE DATEN DER SCHLEIFE ZUSAMMENGESETZT - hat man oben 4 Felder definiert, braucht man hier 4 Werte 
              
                  switch (mehrfachTabelle) {  
                   case 1:  if(counter%2==0){  htmlOut=htmlOut+"<tr bgcolor=\""+farbeGeradeZeilen+"\"><td align="+Feld1lAlign+">&ensp;"+val0+"&ensp;</td><td align="+Feld2lAlign+">&ensp;"+val1+"&ensp;</td><td align="+Feld3lAlign+">&ensp;"+val2+"&ensp;</td><td align="+Feld4lAlign+">&ensp;"+val3+"&ensp;</td></tr>"; break;} else
                                            {  htmlOut=htmlOut+"<tr bgcolor=\""+farbeUngeradeZeilen+"\"><td align="+Feld1lAlign+">&ensp;"+val0+"&ensp;</td><td align="+Feld2lAlign+">&ensp;"+val1+"&ensp;</td><td align="+Feld3lAlign+">&ensp;"+val2+"&ensp;</td><td align="+Feld4lAlign+">&ensp;"+val3+"&ensp;</td></tr>"; break;}
                   case 2: if(counter%4==0){ 
                            if(counter%2==0)  {htmlOut = htmlOut+"<tr bgcolor=\""+farbeGeradeZeilen+"\"><td align="+Feld1lAlign+">&ensp;"+val0+"&ensp;</td><td align="+Feld2lAlign+">&ensp;"+val1+"&ensp;</td><td align="+Feld3lAlign+">&ensp;"+val2+"&ensp;</td><td style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+
                                               ";\"align="+Feld4lAlign+">&ensp;"+val3+"&ensp;</td>"; } 
                                         else {htmlOut = htmlOut+"<td align="+Feld1lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val0+"&ensp;</td><td  align="+Feld2lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val1+"&ensp;</td><td  align="+Feld3lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val2+"&ensp;</td><td  align="+Feld4lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val3+"&ensp;</td></tr>";} break;
                               }else{
                            if(counter%2==0)  {htmlOut = htmlOut+"<tr bgcolor=\""+farbeUngeradeZeilen+"\"><td align="+Feld1lAlign+">&ensp;"+val0+"&ensp;</td><td align="+Feld2lAlign+">&ensp;"+val1+"&ensp;</td><td align="+Feld3lAlign+">&ensp;"+val2+"&ensp;</td><td style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+
                                               ";\" align="+Feld4lAlign+">&ensp;"+val3+"&ensp;</td>"; } 
                                         else {htmlOut = htmlOut+"<td align="+Feld1lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val0+"&ensp;</td><td  align="+Feld2lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val1+"&ensp;</td><td  align="+Feld3lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val2+"&ensp;</td><td  align="+Feld4lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val3+"&ensp;</td></tr>";} break;}                  
                   case 3:  if(counter%2==0)   {
                             if(counter%3==0 )  {htmlOut = htmlOut+"<tr bgcolor=\""+farbeGeradeZeilen+"\"><td align="+Feld1lAlign+">&ensp;"+val0+"&ensp;</td><td align="+Feld2lAlign+">&ensp;"+val1+"&ensp;</td><td align="+Feld3lAlign+">&ensp;"+val2+"&ensp;</td><td style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+
                                                                   ";\" align=left>&ensp;"+val3+"&ensp;</td>"; } 
                                         else { if(counter%3==1 )  { htmlOut = htmlOut+"<td align="+Feld1lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val0+"&ensp;</td><td  align="+Feld2lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val1+"&ensp;</td><td  align="+Feld3lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val2+"&ensp;</td><td  align="+Feld4lAlign+" style=\"border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+
                                                                   ";color:"+htmlFarbFelderschrift2+"\">&ensp;"+val3+"&ensp;</td>";} 
                                                          else    {htmlOut = htmlOut+"<td align="+Feld1lAlign+">&ensp;"+val0+"&ensp;</td><td align="+Feld2lAlign+">&ensp;&ensp;"+val1+"&ensp;</td><td align="+Feld3lAlign+">&ensp;"+val2+"&ensp;</td><td align="+Feld4lAlign+">&ensp;"+val3+"&ensp;</td></tr>";}
                                                    } break;}else{
                             if(counter%3==0 )  {htmlOut = htmlOut+"<tr bgcolor=\""+farbeUngeradeZeilen+"\"><td align="+Feld1lAlign+">&ensp;"+val0+"&ensp;</td><td align="+Feld2lAlign+">&ensp;"+val1+"&ensp;</td><td align="+Feld3lAlign+">&ensp;"+val2+"&ensp;</td><td style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+
                                                                   ";\" align=left>&ensp;"+val3+"&ensp;</td>"; } 
                                         else { if(counter%3==1 )  { htmlOut = htmlOut+"<td align="+Feld1lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val0+"&ensp;</td><td  align="+Feld2lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val1+"&ensp;</td><td  align="+Feld3lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val2+"&ensp;</td><td  align="+Feld4lAlign+" style=\"border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+
                                                                   ";color:"+htmlFarbFelderschrift2+"\">&ensp;"+val3+"&ensp;</td>";} 
                                                          else    {htmlOut = htmlOut+"<td align="+Feld1lAlign+">&ensp;"+val0+"&ensp;</td><td align="+Feld2lAlign+">&ensp;&ensp;"+val1+"&ensp;</td><td align="+Feld3lAlign+">&ensp;"+val2+"&ensp;</td><td align="+Feld4lAlign+">&ensp;"+val3+"&ensp;</td></tr>";}
                                                    } break;}
              
                   case 4:  if(counter%8==0)   {
                            if(counter%4==0)  {htmlOut = htmlOut+"<tr bgcolor=\""+farbeGeradeZeilen+"\"><td align="+Feld1lAlign+">&ensp;"+val0+"&ensp;</td><td align="+Feld2lAlign+">&ensp;"+val1+"&ensp;</td><td align="+Feld3lAlign+">&ensp;"+val2+"&ensp;</td><td style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+ ";\" align="+Feld4lAlign+">&ensp;"+val3+"&ensp;</td>"; } 
                                             else {if(counter%4==1 )  { htmlOut = htmlOut+"<td align="+Feld1lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val0+"&ensp;</td><td  align="+Feld2lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val1+"&ensp;</td><td  align="+Feld3lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val2+"&ensp;</td><td  align="+Feld4lAlign+" style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+"; color:"+htmlFarbFelderschrift2+"\">&ensp;"+val3+"&ensp;</td>";} 
                                                          else    {if(counter%4==3)  { htmlOut= htmlOut+"<td align="+Feld1lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\"&ensp;>"+val0+"&ensp;</td><td  align="+Feld2lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val1+"&ensp;</td><td align="+Feld3lAlign+" style=\"border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+";color:"+htmlFarbFelderschrift2+"\">&ensp;"+val2+"&ensp;</td><td  align="+Feld4lAlign+" style=\"border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+ "color:"+htmlFarbFelderschrift2+"\">&ensp;"+val3+"&ensp;</td></tr>";} 
                                                                            else    {htmlOut  = htmlOut+"<td align="+Feld1lAlign+">&ensp;"+val0+"&ensp;</td><td align="+Feld2lAlign+">&ensp;"+val1+"&ensp;</td><td align="+Feld3lAlign+">&ensp;"+val2+"&ensp;</td><td  style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+";\"align="+Feld4lAlign+">&ensp;"+val3+"&ensp;</td>";}}
                                                    } break;}else{
                            if(counter%4==0)   {htmlOut = htmlOut+"<tr bgcolor=\""+farbeUngeradeZeilen+"\"><td align="+Feld1lAlign+">&ensp;"+val0+"&ensp;</td><td align="+Feld2lAlign+">&ensp;"+val1+"&ensp;</td><td align="+Feld3lAlign+">&ensp;"+val2+"&ensp;</td><td style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+ ";\" align="+Feld4lAlign+">&ensp;"+val3+"&ensp;</td>"; } 
                                             else {if(counter%4==1 )  { htmlOut = htmlOut+"<td align="+Feld1lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val0+"&ensp;</td><td  align="+Feld2lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val1+"&ensp;</td><td  align="+Feld3lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val2+"&ensp;</td><td  align="+Feld4lAlign+" style=\"border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+ ";color:"+htmlFarbFelderschrift2+"\">&ensp;"+val3+"&ensp;</td>";} 
                                                          else    {if(counter%4==3)  { htmlOut= htmlOut+"<td align="+Feld1lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\"&ensp;>"+val0+"&ensp;</td><td  align="+Feld2lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val1+"&ensp;</td><td align="+Feld3lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val2+"&ensp;</td><td  align="+Feld4lAlign+"  color:"+htmlFarbFelderschrift2+"\">&ensp;"+val3+"&ensp;</td></tr>";} 
                                                                            else    {htmlOut = htmlOut+"<td align="+Feld1lAlign+">&ensp;"+val0+"&ensp;</td><td align="+Feld2lAlign+">&ensp;"+val1+"&ensp;</td><td align="+Feld3lAlign+">&ensp;"+val2+"&ensp;</td><td  style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+";\"align="+Feld4lAlign+">&ensp;"+val3+"&ensp;</td>";}}
                                                    } break;     }                   
              
                } //switch ende
              
              }
              
              
              function tabelleFinish() {
              
                // tabelle fertigstellen
              
              
                  switch (mehrfachTabelle) {  
                  case 1:    break;
              
                  case 2:    
                             if(counter%2==0)  htmlOut = htmlOut.replace(/<\/td>$/, '</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td></tr>');   
                           
                             break;
              
                  case 3:   if(counter%3==1)  htmlOut = htmlOut.replace(/<\/td>$/, "</td></tr>");
                            if(counter%3==2)  htmlOut = htmlOut.replace(/<\/td>$/, '</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td></tr>');      
                            if(counter%3==0)  htmlOut = htmlOut.replace(/<\/td>$/, "</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+"\">&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td></tr>");
                          
                             break;
                  case 4:   if(counter%4==3) { log(htmlOut); htmlOut = htmlOut.replace(/<\/td>$/, "</td></tr>"); log(htmlOut)}
                            if(counter%4==2)  htmlOut = htmlOut.replace(/<\/td>$/, "</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td></tr>");
                            if(counter%4==1)  htmlOut = htmlOut.replace(/<\/td>$/, "</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+"\">&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td></tr>");    
                            if(counter%4==0)  htmlOut = htmlOut.replace(/<\/td>$/, "</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+"\">&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+"\">&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td></tr>");      
                            break; } 
              
              
                   var htmlUeber=    "<p style=\"color:"+htmlFarbUber+"; font-family:"+htmlSchriftart+"; font-size: "+htmlÜberFontGroesse+"; font-weight:"+htmlSchriftWeite+ "\">"+htmlFeldUeber+"</p>"; 
                    var htmlUnter= "<div  style=\"color:"+htmlFarbUber+"; font-family:"+htmlSchriftart+"; font-size: 70%; text-align: center;\" >Last Update: "+formatDate(getDateObject((parseFloat((new Date().getTime())))), "SS:mm:ss");+"</div>"
                     
                   if (!htmlSignature) htmlUnter="";
                     //Ausgabe über VIS html widget - tabelle in datenpunkt schreiben - html tabelle ohne html header und body
                      var htmlOutVIS="";
                    //  htmlUberschrift ? htmlOutVIS=htmlUeber+htmlTabStyle+htmlTabUeber+htmlOut+"</table>" : htmlOutVIS=htmlTabStyle+htmlTabUeber+htmlOut+"</table>";
                       if (htmlUberschrift) 
                           { zentriert ? htmlOutVIS=htmlZentriert+htmlUeber+htmlTabStyle+htmlTabUeber+htmlOut+"</table>"+htmlUnter : htmlOutVIS=htmlUeber+htmlTabStyle+htmlTabUeber+htmlOut+"</table>"+htmlUnter ;
              
                         } else {
                          zentriert ?  htmlOutVIS=htmlZentriert+htmlTabStyle+htmlTabUeber+htmlOut+"</table>"+htmlUnter :  htmlOutVIS=htmlTabStyle+htmlTabUeber+htmlOut+"</table>"+htmlUnter;
              
                            }
              
              // log("bin raus aus tabelleBind");
                      if (braucheEinVISWidget) setState(dpVIS, htmlOutVIS );
              
              var htmlUnter= "<div  style=\"color:"+htmlFarbUber+"; font-family:"+htmlSchriftart+"; font-size: 80%;  text-align: center; \" >"+htmlFeldUeber+"&ensp;&ensp;Last Update: "+formatDate(getDateObject((parseFloat((new Date().getTime())))), "SS:mm:ss");+"</div>"
              var htmlEnd="</table>"+htmlUnter+"</div></body>";
              if (!htmlSignature) htmlUnter="";
              
              //mit oder ohne überschrift - zentriert oder links
              htmlUberschrift ? htmlOut=htmlStart+htmlUeber+htmlTabStyle+htmlTabUeber+htmlOut+htmlEnd : htmlOut=htmlStart+htmlTabStyle+htmlTabUeber+htmlOut+htmlEnd;
              //log(htmlOut);
              
              
              }
              

              1 Reply Last reply Reply Quote 0
              • B
                BergischerJung @Atlantis last edited by

                @atlantis
                Hallo Atlantis,
                bin neu hier, habe meinen Account gerade erst generiert wegen Deiner Anlage die Du in Deinem Schaubild beschreibst.
                Ich bin auch gerade an der Planung einer Anlage mit 2 Sungrow SH10RT's. - einer für den Betrieb einer Wärmepumpe und einer für den Haushaltsstrom. Notversorgung ist mir wichtig.
                Ich wollte eigentlich 1 Batterie (BYD HVS 10.2) an die 2 Sungrows hängen, auf die beide zugreifen, wobei der Wärmepumpen-WR nachrangig laufen kann, d.h. würden beide zuviel aus der Batterie ziehen kann die Wärmepumpenversorgung abgeschaltet werden. Laut meinem Solateur würde das momentan noch nicht von Sungrow unterstützt, obwohl in deren Homepage von einer Master/Slave-Schaltung 2er WR gesprochen wird.
                Hast Du in Deiner Anlage die Batterien gekoppelt oder handelt es sich um eigentlich 2 komplett getrennte Anlagen?
                Hast Du - oder jemand anderes im Forum - Tipps für meinen Anwendungsfall?
                Sorry nochmal wenn ich so in Euren eher programmiertechnischen Thread reinfunke...

                A 1 Reply Last reply Reply Quote 0
                • A
                  Atlantis @BergischerJung last edited by Atlantis

                  @bergischerjung Du hast Glück, bin seit 2 Wochen das erste mal wieder im Forum...

                  Ich habe 2 WR mit jeweils einer eigenen 12.8er Batterie.

                  Worin soll der Vorteil liegen, wenn Du die Batterie an beide WR andockst?
                  Die Batterie kann max 10KW laden/entladen und das schaft ja einer der WR alleine.

                  Du möchtest die die Verluste im einen WR vom PV Strang zu internen GRID und im 2. WR vom internen GRID zum DC Kontakt der Batterie sparen, oder?

                  Nachdem die Batterien mit CAN Bus angebunden sind, gehe ich davon aus, das so etwas nur klappen kann, wenn SG das so testet und freigibt und die haben momentan alle Hände voll zu tun, die original SW und die zugehörigen APPS sauber zum spielen zu bekommen.

                  Es gibt noch im Photovoltaik Forum einen Threat von mir, der zum Austausch solcher Fragen, die mehr die WR und die Hardware betreffen dienen soll. Da kannst DU Deine Frage mal posten und hast eine höhere Chance auf positive Rückmeldung...

                  Hier gehts eher um die Anbidung der WR an den IOBroker..,.

                  Gruss

                  Atlantis

                  gnulinux 1 Reply Last reply Reply Quote 0
                  • gnulinux
                    gnulinux @Atlantis last edited by

                    @atlantis sagte in Sungrow WR SGH10RT erfolgreich mit MODBUS eingebunden:

                    @bergischerjung Du hast Glück, bin seit 2 Wochen das erste mal wieder im Forum...

                    Ich habe 2 WR mit jeweils einer eigenen 12.8er Batterie.

                    Worin soll der Vorteil liegen, wenn Du die Batterie an beide WR andockst?
                    Die Batterie kann max 10KW laden/entladen und das schaft ja einer der WR alleine.

                    Du möchtest die die Verluste im einen WR vom PV Strang zu internen GRID und im 2. WR vom internen GRID zum DC Kontakt der Batterie sparen, oder?

                    Nachdem die Batterien mit CAN Bus angebunden sind, gehe ich davon aus, das so etwas nur klappen kann, wenn SG das so testet und freigibt und die haben momentan alle Hände voll zu tun, die original SW und die zugehörigen APPS sauber zum spielen zu bekommen.

                    Es gibt noch im Photovoltaik Forum einen Threat von mir, der zum Austausch solcher Fragen, die mehr die WR und die Hardware betreffen dienen soll. Da kannst DU Deine Frage mal posten und hast eine höhere Chance auf positive Rückmeldung...

                    Hier gehts eher um die Anbidung der WR an den IOBroker..,.

                    Gruss

                    Atlantis

                    Der Vorteil liegt doch eindeutig auf der Hand. Die zentrale Verwaltung deiner Überschußenergie, die du in deinen Akku eingespeist bekommst. Das ist gängige und auch funktionierende Praxis im Wohnmobilbereich. Viele Solarmodule auf dem Womo Dach, die auf mehrere Solarladeregler aufgeschaltet, die dann auf einen Akku gelegt werden. Solange im Akku Strom vorhanden ist, kann die Energie auch von allen Energieverbrauchern im Womo genutzt werden ! Ein zweiter Akku, mit weiteren Modulen würde nur aus Redundanzgründen installiert werden. Ist wohl eher die Ausnahme.

                    In deinem Fall schaut es imho, falls ich es richtig verstanden habe, so aus, wenn in dem einen Stromkreis, wo der eine Akku drin hängt keine Energie mehr im Akku enthalten ist, aber im dem anderen Stromkreis, mit dem anderen Akku wäre noch Energie vorhanden, könntest du diese Energie nicht für den Bereich nutzen, wo der leere Akku vorhanden ist. D. h. du mußt den Strom kaufen, obwohl du ihn hättest. Macht so imho weniger Sinn und die geringere Effizienz hast du ja schon angesprochen.

                    Falls ich irre oder es falsch verstanden habe, bitte ich um entsprechende Info.

                    Ich halte es für einen großen Nachteil der heutigen Haus-Akku-Generation, dass nicht mehrere WR an einen Akku angeschlossen werden können. Gerade hinsichtlich solarer Aufrüstung oder wenn Altanlagen integriert werden sollen. Dass es trotzdem geht ist mir schon bewußt aber es bleibt ein großer Nachteil.

                    Wenn man im häuslichen Bereich beim Akku bei 48V DC max. bleibt könnte man es über Produkte von z. B. Victron Energy auf jeden Fall realisieren, dass ein zentraler Akku die Energie für alle Bereiche liefert.

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

                      Hallo Zusammen,

                      ich bin seit kurzem Besitzer eines Sungrow SG6KTL-M Wechselrichters. Ich habe die MODBUS-Variablen ebenfalls von Sungrow erhalten, bekomme aber keine Verbindung hin (ständiges Connect - Disconnect). Die Werte müssten so sein wie im angehängten Screenshot. Der WR ist mittels WLAN-Modul an das Netz angebunden. Hat jemand eine Idee was das Problem ist?376E4F07-6139-4C77-A8ED-B0E55740BC91.jpeg

                      O 1 Reply Last reply Reply Quote -1
                      • O
                        ostseeskipper @Shrimptaco last edited by

                        @shrimptaco
                        habe neben dem SH10 noch einen SG3K6-D und die gleichen Probleme.
                        Nach langem suchen bin ich über ein Forum in Australien gestolpert.
                        Hab mir dann das Ethernetmodul besorgt und seit dem geht es, wenn auch mit Neustarts exakt alle 5 Minuten. Woran das liegt hab ich noch nicht herausgefunden.

                        S 1 Reply Last reply Reply Quote 0
                        • S
                          Shrimptaco @ostseeskipper last edited by

                          @ostseeskipper
                          Danke für die Antwort! Ärgerlich, vor allem stellt sich die Frage, ob sich die 70€ für den LAN-Adapter lohnen, wenn es im Nachhinein doch nicht klappt...😕

                          O H 2 Replies Last reply Reply Quote 0
                          • O
                            ostseeskipper @Shrimptaco last edited by

                            @shrimptaco
                            Kaufen, Testen und wenns nicht geht innerhalb von 14 Zagen zurückschicken.😇

                            1 Reply Last reply Reply Quote 0
                            • H
                              hansen @Shrimptaco last edited by

                              Moin @shrimptaco,
                              hast du das LAN-Modul mittlerweile testen können?
                              Ich habe auch einen SG Wechselrichter (SG10KTL-M) und bekomme ebenfalls keine Verbindung aufgebaut.

                              Läuft immer auf einen timeout, auch wenn ich read timeout hochsetze:

                              2021-05-30 09:41:00.469 - info: host.iobroker-pi "system.adapter.modbus.0" enabled
                              2021-05-30 09:41:00.616 - info: host.iobroker-pi instance system.adapter.modbus.0 started with pid 13086
                              2021-05-30 09:41:03.299 - info: modbus.0 (13086) starting. Version 3.2.6 in /opt/iobroker/node_modules/iobroker.modbus, node: v12.22.1, js-controller: 3.2.16
                              2021-05-30 09:41:04.068 - info: modbus.0 (13086) Connected to slave 192.168.199.32
                              2021-05-30 09:41:09.085 - warn: modbus.0 (13086) Error: undefined
                              2021-05-30 09:41:09.087 - error: modbus.0 (13086) Request timed out.
                              2021-05-30 09:41:09.088 - error: modbus.0 (13086) Client in error state.
                              2021-05-30 09:41:09.091 - warn: modbus.0 (13086) Poll error count: 1 code: {"err":"timeout","timeout":5000}
                              2021-05-30 09:41:10.092 - info: modbus.0 (13086) Disconnected from slave 192.168.199.32
                              2021-05-30 09:41:12.125 - info: modbus.0 (13086) Connected to slave 192.168.199.32
                              2021-05-30 09:41:17.129 - warn: modbus.0 (13086) Error: undefined
                              2021-05-30 09:41:17.132 - error: modbus.0 (13086) Request timed out.
                              2021-05-30 09:41:17.134 - error: modbus.0 (13086) Client in error state.
                              2021-05-30 09:41:17.137 - warn: modbus.0 (13086) Poll error count: 2 code: {"err":"timeout","timeout":5000}
                              2021-05-30 09:41:18.133 - info: modbus.0 (13086) Disconnected from slave 192.168.199.32
                              2021-05-30 09:41:20.153 - info: modbus.0 (13086) Connected to slave 192.168.199.32
                              2021-05-30 09:41:25.158 - warn: modbus.0 (13086) Error: undefined
                              2021-05-30 09:41:25.160 - error: modbus.0 (13086) Request timed out.
                              2021-05-30 09:41:25.161 - error: modbus.0 (13086) Client in error state.
                              2021-05-30 09:41:25.164 - warn: modbus.0 (13086) Poll error count: 3 code: {"err":"timeout","timeout":5000}
                              2021-05-30 09:41:26.162 - info: modbus.0 (13086) Disconnected from slave 192.168.199.32
                              2021-05-30 09:41:28.171 - info: modbus.0 (13086) Connected to slave 192.168.199.32
                              2021-05-30 09:41:33.179 - warn: modbus.0 (13086) Error: undefined
                              2021-05-30 09:41:33.181 - error: modbus.0 (13086) Request timed out.
                              2021-05-30 09:41:33.183 - error: modbus.0 (13086) Client in error state.
                              2021-05-30 09:41:33.185 - warn: modbus.0 (13086) Poll error count: 4 code: {"err":"timeout","timeout":5000}
                              2021-05-30 09:41:34.184 - info: modbus.0 (13086) Disconnected from slave 192.168.199.32
                              2021-05-30 09:41:36.189 - info: modbus.0 (13086) Connected to slave 192.168.199.32
                              2021-05-30 09:41:41.195 - warn: modbus.0 (13086) Error: undefined
                              2021-05-30 09:41:41.197 - error: modbus.0 (13086) Request timed out.
                              2021-05-30 09:41:41.198 - error: modbus.0 (13086) Client in error state.
                              2021-05-30 09:41:41.200 - warn: modbus.0 (13086) Poll error count: 5 code: {"err":"timeout","timeout":5000}
                              2021-05-30 09:41:42.199 - info: modbus.0 (13086) Disconnected from slave 192.168.199.32
                              2021-05-30 09:41:44.206 - info: modbus.0 (13086) Connected to slave 192.168.199.32
                              2021-05-30 09:41:49.212 - warn: modbus.0 (13086) Error: undefined
                              2021-05-30 09:41:49.214 - error: modbus.0 (13086) Request timed out.
                              2021-05-30 09:41:49.215 - error: modbus.0 (13086) Client in error state.
                              2021-05-30 09:41:49.218 - warn: modbus.0 (13086) Poll error count: 6 code: {"err":"timeout","timeout":5000}
                              2021-05-30 09:41:50.216 - info: modbus.0 (13086) Disconnected from slave 192.168.199.32
                              2021-05-30 09:41:52.226 - info: modbus.0 (13086) Connected to slave 192.168.199.32
                              2021-05-30 09:41:57.232 - warn: modbus.0 (13086) Error: undefined
                              2021-05-30 09:41:57.234 - error: modbus.0 (13086) Request timed out.
                              2021-05-30 09:41:57.235 - error: modbus.0 (13086) Client in error state.
                              2021-05-30 09:41:57.238 - warn: modbus.0 (13086) Poll error count: 7 code: {"err":"timeout","timeout":5000}
                              2021-05-30 09:41:58.236 - info: modbus.0 (13086) Disconnected from slave 192.168.199.32
                              2021-05-30 09:42:00.246 - info: modbus.0 (13086) Connected to slave 192.168.199.32
                              2021-05-30 09:42:05.252 - warn: modbus.0 (13086) Error: undefined
                              2021-05-30 09:42:05.254 - error: modbus.0 (13086) Request timed out.
                              2021-05-30 09:42:05.254 - error: modbus.0 (13086) Client in error state.
                              2021-05-30 09:42:05.256 - warn: modbus.0 (13086) Poll error count: 8 code: {"err":"timeout","timeout":5000}
                              2021-05-30 09:42:06.256 - info: modbus.0 (13086) Disconnected from slave 192.168.199.32
                              2021-05-30 09:42:08.262 - info: modbus.0 (13086) Connected to slave 192.168.199.32
                              2021-05-30 09:42:13.268 - warn: modbus.0 (13086) Error: undefined
                              2021-05-30 09:42:13.269 - error: modbus.0 (13086) Request timed out.
                              2021-05-30 09:42:13.270 - error: modbus.0 (13086) Client in error state.
                              2021-05-30 09:42:13.272 - warn: modbus.0 (13086) Poll error count: 9 code: {"err":"timeout","timeout":5000}
                              2021-05-30 09:42:14.270 - info: modbus.0 (13086) Disconnected from slave 192.168.199.32
                              2021-05-30 09:42:16.283 - info: modbus.0 (13086) Connected to slave 192.168.199.32
                              2021-05-30 09:42:21.287 - warn: modbus.0 (13086) Error: undefined
                              2021-05-30 09:42:21.289 - error: modbus.0 (13086) Request timed out.
                              2021-05-30 09:42:21.290 - error: modbus.0 (13086) Client in error state.
                              2021-05-30 09:42:21.292 - warn: modbus.0 (13086) Poll error count: 10 code: {"err":"timeout","timeout":5000}
                              2021-05-30 09:42:22.291 - info: modbus.0 (13086) Disconnected from slave 192.168.199.32
                              2021-05-30 09:42:24.296 - info: modbus.0 (13086) Connected to slave 192.168.199.32
                              2021-05-30 09:42:24.363 - info: host.iobroker-pi "system.adapter.modbus.0" disabled
                              2021-05-30 09:42:24.375 - info: host.iobroker-pi stopInstance system.adapter.modbus.0 (force=false, process=true)
                              2021-05-30 09:42:24.389 - info: modbus.0 (13086) Got terminate signal TERMINATE_YOURSELF
                              2021-05-30 09:42:24.390 - info: host.iobroker-pi stopInstance system.adapter.modbus.0 send kill signal
                              2021-05-30 09:42:24.393 - info: modbus.0 (13086) terminating
                              2021-05-30 09:42:24.396 - info: modbus.0 (13086) Terminated (ADAPTER_REQUESTED_TERMINATION): Without reason
                              2021-05-30 09:42:25.057 - info: host.iobroker-pi instance system.adapter.modbus.0 terminated with code 11 (ADAPTER_REQUESTED_TERMINATION)
                              2021-05-30 09:42:36.755 - info: host.iobroker-pi "system.adapter.modbus.0" enabled
                              2021-05-30 09:42:36.848 - info: host.iobroker-pi instance system.adapter.modbus.0 started with pid 13116
                              2021-05-30 09:42:39.541 - info: modbus.0 (13116) starting. Version 3.2.6 in /opt/iobroker/node_modules/iobroker.modbus, node: v12.22.1, js-controller: 3.2.16
                              2021-05-30 09:42:40.562 - info: modbus.0 (13116) Connected to slave 192.168.199.32
                              2021-05-30 09:42:50.584 - warn: modbus.0 (13116) Error: undefined
                              2021-05-30 09:42:50.587 - error: modbus.0 (13116) Request timed out.
                              2021-05-30 09:42:50.589 - error: modbus.0 (13116) Client in error state.
                              2021-05-30 09:42:50.595 - warn: modbus.0 (13116) Poll error count: 1 code: {"err":"timeout","timeout":10000}
                              2021-05-30 09:42:51.590 - info: modbus.0 (13116) Disconnected from slave 192.168.199.32
                              2021-05-30 09:42:53.600 - info: modbus.0 (13116) Connected to slave 192.168.199.32
                              

                              Laut Modbus RS485 RTU Protocol.pdf für den WR sollten die Kommunikationseinstellungen und Register zum SGH identisch sein.

                              Jetzt hoffe ich auf eine positive Rückmeldung von dir.
                              Viele Grüße
                              hansen

                              1 Reply Last reply Reply Quote 0
                              • F
                                freestyler last edited by

                                Hallo zusammen, ich habe ebenfalls einen Sungrow SH10RT per Modbus TCP mit dem iobroker verbunden. Prinzipiell läuft das auch gut. Allerdings kommt es ca. alle 5 - 6 Tage dazu, dass die Mobus-Schnittstelle am Sungrow nicht mehr reagiert. Der Adapter im iobroker meldet dann einen Socket Error. Ich habe auch mit anderen Tools versucht die Modbus Schnittstelle des Sungrows anzusprechen, leider das gleiche Ergebnis. Ich vermute deshalb das die Ursache auf der Seite des Sungrow liegt. Ein anderer Wechselrichter der Firma SMA wird ebenfalls über den Modbus Adapter per TCP-Verbindung ausgelesen und läuft seit dem Einschalten des Adapters stabil. Der Sungrow läuft auf der aktuellsten Firmware und bisher hilft nur ein Neustart des Geräts um die Modbus Verbindung wieder für die nächsten 5 - 6 Tage ans Laufen zu bekommen. Hat hier jemand schon ähnliche Beobachtungen mit dem Sungrow gemacht?

                                S 1 Reply Last reply Reply Quote 0
                                • S
                                  smart-iot @freestyler last edited by smart-iot

                                  @freestyler ich habe das gleiche Verbindungsproblem, dass der iobroker nach etlichen Tagen erfolgreicher Verbindung nun gar nicht mehr kommunizieren will. Allerdings war in den letzten Tagen auch die Verbindung zur iSolarCloud offline. Nach einem Neustart des Wechselrichters (SH10RT) ist die Verbindung zur iSolarCloud nun wieder da, aber dafür kann sich der ioBroker nicht mehr mit dem Wechselrichter verbinden (Socket Error).
                                  Gibt es einen Zusammenhang oder Konflikt zwischen der lokalen Modbus Netzwerk-Kommunikation und der iSolarCloud Kommunikation? Die sungrow Dokumentation schweigt sich zu diesem Thema völlig aus. und ich wüsste auch nicht, wie ich die iSolarCloud Kommunikation stoppen könnte. Beides läuft ja über die gleiche Netzwerk-Schnittstelle.

                                  1 Reply Last reply Reply Quote 0
                                  • M
                                    mka15 last edited by

                                    Hi,

                                    danke für die vielen Mühen und die gute Beschreibung, besonders an @Atlantis. Ich bin iobroker und Modbus Neuling und habe mich daran versucht die Verbindung zu meinem neuen Sungrow H10.RT aufzubauen, kriege es aber nicht ganz hin, dass ich die Werte auch angezeigt bekomme.

                                    Mit dem QModMaster kann ich eine Verbindung aufbauen und bekomme auch sinnvolle Werte:

                                    QModMaster.png

                                    In der aktuellen Version vom iobroker (v5.1.25) und dem ModBus adapter (v.4.11) will es aber nicht recht klappen. Die ModBus Oberfläche ist jetzt etwas anders als in deinen Screenshots. Ich bin aber recht sicher, dass ich das richtig übertragen habe:

                                    ModBusA.png

                                    ModBusB.png

                                    inputReg.png
                                    InputRegAsTable.png

                                    Im Modbus Protokoll steht:

                                    modbus.0
                                    2021-09-19 20:56:50.383	info	Connected to slave 192.168.178.20
                                    
                                    modbus.0
                                    2021-09-19 20:56:50.133	info	starting. Version 3.4.11 in C:/Program Files/iobroker/SmartHome/node_modules/iobroker.modbus, node: v10.17.0, js-controller: 3.3.15
                                    

                                    Verbindung ist also scheinbar okay. Wo aber finde ich jetzt die Werte? Ich würde die unter "Objekte" --> "modbus" erwarten, aber dort steht nichts.

                                    Über einen Tipp wäre ich sehr dankbar!
                                    Viele Grüße

                                    Martin

                                    Achja noch was: Ich habe gelesen, dass neuere Firmwareupdates wohl die modbus Verbindung verschlüsseln (github).

                                    Meine Version ist "ARM_SAPPHIRE_H_V11_V01_B" (lokaler Zugriff --> Einstellungen --> Systemparameter) . Welche habt ihr / Updaten oder besser nicht?

                                    1 Reply Last reply Reply Quote 0
                                    • M
                                      mka15 last edited by

                                      ich nochmal:

                                      Das größte Problem war meine Unerfahrenheit mit iobroker:
                                      Aus der Oberfläche heraus hab ich nicht erwartet, dass man die Ordner "modbus" mit Doppelklick erweitern kann...

                                      --> Einige Werte werden schonmal erfolgreich übertragen.

                                      Aber:
                                      Das klappt mit maximal 9 Adressen.
                                      Wenn ich einen 10. Wert lesen möchte kommt im Protokoll:

                                      modbus.0 2021-09-20 23:03:32.406	warn	Poll error count: 8 code: {"err":"timeout","timeout":5000}
                                      
                                      modbus.0 2021-09-20 23:03:32.405	error	Client in error state.
                                      
                                      modbus.0 2021-09-20 23:03:32.405	error	Request timed out.
                                      
                                      modbus.0 2021-09-20 23:03:32.405	warn	Error: undefined
                                      
                                      modbus.0 2021-09-20 23:03:27.401	info	Connected to slave 192.168.178.20
                                      

                                      mit den modbus "Allgemein" Parametern habe ich erfolglos etwas herumgespielt 😕

                                      Hat jemand Ideen, oder könnte es an meiner veralteten "Firmware ab Werk" liegen?

                                      K 1 Reply Last reply Reply Quote 0
                                      • K
                                        krk-solar @mka15 last edited by krk-solar

                                        @mka15
                                        Ich hatte das auch schon mal bei einem Kunden, ich meine es lag an einem fehlerhaften Register.
                                        Lösch das Register 12999 mal raus (am bester davor sichern).
                                        VG Benjamin

                                        1 Reply Last reply Reply Quote 0
                                        • M
                                          mka15 last edited by mka15

                                          @krk-solar
                                          Das Register 12999 war bei meinen Tests gar nicht drin.

                                          Habe auch viel mit den Parametern (Data polling interval, Read interval, max read request lengths) herumprobiert. Egal welche Register ich lese: 10 Register auslesen klappt. Wenn ich 11 Register eintrage, geht es nicht mehr. Alle Werte sind auch aufsteigend geordnet (da gibts auf github einen aktuellen Issue zu).

                                          Aktuell habe ich aus Bequemlichkeiten den iobroker unter Windows an. Macht ein Test von einem RPi aus wohl Sinn?

                                          Hier meine vollständige Registerliste. Die vom TE hab ich etwas angepasst, damit die neue Version des Plugins die frisst und auch noch umsortiert (gibt einen aktuellen github issue dazu..):

                                          _address	name	description	unit	type	len	factor	offset	formula	role	room	cw	isScale
                                          4999	Device type  code	Geräte Typ-Code		int8be	1		0				false	false
                                          5000	Nominal Output Power	Installierte Leistung	kW	uint16be	1	0.1	0				false	false
                                          5002	Daily  Output Energy	Eigene Energienutzung heute (PV & Akku)	kWh	uint16be	1	0.1	0				false	false
                                          5003	Total Output Energy	Eigene Energienutzung gesamt (PV & Akku)	kWh	uint32sw	2	0.1	0				false	false
                                          5007	Inside  Temperature	Temperatur im Wechselrichter	°C	int16be	1	0.1	0				false	false
                                          5010	MPPT 1 Voltage	MPPT1 Spannung	V	uint16be	1	0.1	0				false	false
                                          5011	MPPT 1 Current	MPPT1 Strom	A	uint16be	1	0.1	0				false	false
                                          5012	MPPT 2 Voltage	MPPT2 Spannung	V	uint16be	1	0.1	0				false	false
                                          5013	MPPT 2 Current	MPPT2 Strom	A	uint16be	1	0.1	0				false	false
                                          5016	Total DC Power	PV-Leistung aktuell	W	uint32sw	2		0				false	false
                                          5018	Spannung Ph A	Spannung Phase A	V	uint16be	1	0.1	0				false	false
                                          5019	Spannung Ph B	Spannung Phase C	V	uint16be	1	0.1	0				false	false
                                          5020	Spannung Ph C	Spannung Phase C	V	uint16be	1	0.1	0				false	false
                                          5032	Reactive Power	Blindleistung	VA	int32sw	2		0				false	false
                                          5034	Power Factor	Leistungsfaktor		int16be	1	0.001	0				false	false
                                          5035	Grid Frequency	Netzfrequenz	Hz	uint16be	1	0.1	0				false	false
                                          6226	Monthly PV energy yields January	 Monatlicher PV Energieertrag  Januar	kWh	uint16be	1	0.1	0				false	false
                                          6227	Monthly PV energy yields February	 Monatlicher PV Energieertrag Februar	kWh	uint16be	1	0.1	0				false	false
                                          6228	Monthly PV energy yields March	 Monatlicher PV Energieertrag März	kWh	uint16be	1	0.1	0				false	false
                                          6229	Monthly PV energy yields April	 Monatlicher PV Energieertrag April	kWh	uint16be	1	0.1	0				false	false
                                          6230	Monthly PV energy yields May	 Monatlicher PV Energieertrag Mai	kWh	uint16be	1	0.1	0				false	false
                                          6231	Monthly PV energy yields June	 Monatlicher PV Energieertrag Juni	kWh	uint16be	1	0.1	0				false	false
                                          6232	Monthly PV energy yields July	 Monatlicher PV Energieertrag Juli	kWh	uint16be	1	0.1	0				false	false
                                          6233	Monthly PV energy yields August	 Monatlicher PV Energieertrag August	kWh	uint16be	1	0.1	0				false	false
                                          6234	Monthly PV energy yields September	 Monatlicher PV Energieertrag September	kWh	uint16be	1	0.1	0				false	false
                                          6235	Monthly PV energy yields October	 Monatlicher PV Energieertrag Oktober	kWh	uint16be	1	0.1	0				false	false
                                          6236	Monthly PV energy yields November	 Monatlicher PV Energieertrag November	kWh	uint16be	1	0.1	0				false	false
                                          6237	Monthly PV energy yields December	 Monatlicher PV Energieertrag Dezember	kWh	uint16be	1	0.1	0				false	false
                                          6416	Monthly direct energy consumption from PVJanuary	Monatlicher Energieverbrauch von PV-Anlage im Januar	kWh	uint16be	1	0.1	0				false	false
                                          6417	Monthly direct energy consumption from PV February	Monatlicher Energieverbrauch von PV-Anlage im Februar	kWh	uint16be	1	0.1	0				false	false
                                          6418	Monthly direct energy consumption from PV March	Monatlicher Energieverbrauch von PV-Anlage im März	kWh	uint16be	1	0.1	0				false	false
                                          6419	Monthly direct energy consumption from PV April	Monatlicher Energieverbrauch von PV-Anlage im April	kWh	uint16be	1	0.1	0				false	false
                                          6420	Monthly direct energy consumption from PV May	Monatlicher Energieverbrauch von PV-Anlage im Mai	kWh	uint16be	1	0.1	0				false	false
                                          6421	Monthly direct energy consumption from PV June	Monatlicher Energieverbrauch von PV-Anlage im Juni	kWh	uint16be	1	0.1	0				false	false
                                          6422	Monthly direct energy consumption from PV July	Monatlicher Energieverbrauch von PV-Anlage im Juli	kWh	uint16be	1	0.1	0				false	false
                                          6423	Monthly direct energy consumption from PV August	Monatlicher Energieverbrauch von PV-Anlage im August	kWh	uint16be	1	0.1	0				false	false
                                          6424	Monthly direct energy consumption from PV September	Monatlicher Energieverbrauch von PV-Anlage im September	kWh	uint16be	1	0.1	0				false	false
                                          6425	Monthly direct energy consumption from PV October	Monatlicher Energieverbrauch von PV-Anlage im Oktober	kWh	uint16be	1	0.1	0				false	false
                                          6426	Monthly direct energy consumption from PV November	Monatlicher Energieverbrauch von PV-Anlage im November	kWh	uint16be	1	0.1	0				false	false
                                          6427	Monthly direct energy consumption from PV december	Monatlicher Energieverbrauch von PV-Anlage im Dezember	kWh	uint16be	1	0.1	0				false	false
                                          6596	Monthly export energy from PV February	 Monatlicher Energieexport aus PV-Anlage Februar	kWh	uint16be	1	0.1	0				false	false
                                          6597	Monthly export energy from PV March	 Monatlicher Energieexport aus PV-Anlage März	kWh	uint16be	1	0.1	0				false	false
                                          6598	Monthly export energy from PV April	 Monatlicher Energieexport aus PV-Anlage April	kWh	uint16be	1	0.1	0				false	false
                                          6599	Monthly export energy from PV May	 Monatlicher Energieexport aus PV-Anlage Mai	kWh	uint16be	1	0.1	0				false	false
                                          6600	Monthly export energy from PV June	 Monatlicher Energieexport aus PV-Anlage Juni	kWh	uint16be	1	0.1	0				false	false
                                          6601	Monthly export energy from PV July	 Monatlicher Energieexport aus PV-Anlage Juli	kWh	uint16be	1	0.1	0				false	false
                                          6602	Monthly export energy from PV August	 Monatlicher Energieexport aus PV-Anlage August	kWh	uint16be	1	0.1	0				false	false
                                          6603	Monthly export energy from PV September	 Monatlicher Energieexport aus PV-Anlage September	kWh	uint16be	1	0.1	0				false	false
                                          6604	Monthly export energy from PV October	 Monatlicher Energieexport aus PV-Anlage Oktober	kWh	uint16be	1	0.1	0				false	false
                                          6605	Monthly export energy from PV November	 Monatlicher Energieexport aus PV-Anlage November	kWh	uint16be	1	0.1	0				false	false
                                          6606	Monthly export energy from PV Dezember	 Monatlicher Energieexport aus PV-Anlage Dezember	kWh	uint16be	1	0.1	0				false	false
                                          6595	Monthly export energy from PV January	 Monatlicher Energieexport aus PV-Anlage Januar	kWh	uint16be	1	0.1	0				false	false
                                          12999	System State	Systemstatus		uint16be	1		0				false	false
                                          13000	Running State	Betriebsstatus		uint16be	1		0				false	false
                                          13001	Daily PV Generation	PV-Stromerzeugung heute	kWh	uint16be	1	0.1	0				false	false
                                          13002	Total PV  Generation	PV-Stromerzeugung gesamt	kWh	uint32sw	2		0				false	false
                                          13004	Daily export  energy from PV	PV-Einspeise Energie heute	kWh	uint16be	1	0.1	0				false	false
                                          13005	Total export  energy from PV	PV-Einspeise Energie gesamt	kWh	uint32sw	2	0.1	0				false	false
                                          13007	Load power 	Wirkleistung gesamt	W	uint32sw	2		0				false	false
                                          13009	Export power	Aktuelle Leistung am Übergabepunkt des Versorgungsnetzes	W	int32sw	2		0				false	false
                                          13011	Daily battery charge energy from PV	Energie in Speicher heute	kWh	uint16be	1		0				false	false
                                          13012	Total battery charge energy from PV	Energie in Speicher gesamt	kWh	uint32sw	2	0.1	0				false	false
                                          13014	CO2-reduction	CO2- Reduzierung	Kg	uint32sw	2	0.1	0				false	false
                                          13016	Daily direct  Energy Consumption	Direkter Eigenverbrauch aus PV heute	kWh	uint16be	1	0.1	0				false	false
                                          13017	Total direct  Energy Consumption	Direkter Eigenverbrauch aus PV gesamt	kWh	uint32sw	2	0.1	0				false	false
                                          13019	Battery voltage	Batteriespannung	V	uint16be	1	0.1	0				false	false
                                          13020	Battery current 	Batteriestrom	A	uint16be	1	0.1	0				false	false
                                          13021	Battery power 	Batterieladeleistung	W	uint16be	1		0				false	false
                                          13022	Battery level 	Batteriekapazität	%	uint16be	1	0.1	0				false	false
                                          13023	Battery state of health	Gesundheit der Batterie	%	uint16be	1	0.1	0				false	false
                                          13024	Battery Temperature	Batterietemperatur	°C	int16be	1	0.1	0				false	false
                                          13025	Daily battery discharge Energy	Tägliche Entladungsenergie der Batterie	kWh	uint16be	1	0.1	0				false	false
                                          13026	Total battery discharge Energy	Gesamte Entladungsenergie der Batterie	kWh	uint32sw	2	0.1	1				false	false
                                          13028	Self-consumption of today	Heutiger Anteil des Eigenverbrauches	%	uint16be	1	0.1	0				false	false
                                          13029	Grid state	Netzstatus		int16be	1	0.1	0				false	false
                                          13030	Phase A current	Strom Phase A aktuell	A	uint16be	1	0.1	0				false	false
                                          13031	Phase B current	Strom Phase B aktuell	A	uint16be	1	0.1	0				false	false
                                          13032	Phase C current	Strom Phase C aktuell	A	uint16be	1	0.1	0				false	false
                                          13033	Total active power	Eigenverbrauch aktuell	W	int32sw	2	1	0				false	false
                                          13035	Daily Import Energy	Gekaufte Energie heute	kWh	uint16be	1	0.1	0				false	false
                                          13036	Total Import Energy	Gekaufte Energie gesamt	kWh	uint16be	1	0.1	0				false	false
                                          13038	Battery Capacity	Batterie-Kapazität	kWh	uint16be	1	0.1	0				false	false
                                          13039	Daily Charge Energy	Batterie-Ladeenergie heute	kWh	uint16be	1	0.1	0				false	false
                                          13040	Total Charge Energy	Batterie-Ladeenergie gesamt	kWh	uint32sw	2	0.1	0				false	false
                                          13044	Daily export energy	Energie Netzeinspeisung heute	kWh	uint16be	1	0.1	0				false	false
                                          13045	Total export energy	Energie Netzeinspeisung gesamt	kWh	uint32sw	2	0.1	0				false	false
                                          13049	Inverter alarm	Inverter alarm		uint32sw	2	1	0				false	false
                                          13051	Grid-side fault	Netzfehler		uint32sw	2	1	0				false	false
                                          13053	System fault 1	System Fehler 1		uint32sw	2	1	0				false	false
                                          13055	System fault 2	System Fehler 2		uint32sw	2	1	0				false	false
                                          13057	DC-side fault	Fehler DC-Seitig		uint32sw	2	1	0				false	false
                                          13059	Permanent fault	Permanenter Fehler		uint32sw	2	1	0				false	false
                                          13061	BDC-side fault	BDC-side fault		uint32sw	2	1	0				false	false
                                          13063	BDC-side permanent fault	BDC-side permanent fault		uint32sw	2	1	0				false	false
                                          13065	Battery fault	Batterie Fehler		uint32sw	2	1	0				false	false
                                          13067	Battery alarm	Battery Alarm		uint32sw	2	1	0				false	false
                                          13069	BMS alarm	BMS Alarm		uint32sw	2	1	0				false	false
                                          13071	BMS protection	BMS protection		uint32sw	2	1	0				false	false
                                          13073	BMS fault 1	BMS fault 1		uint32sw	2	1	0				false	false
                                          13075	BMS fault 2	BMS fault 2		uint32sw	2	1	0				false	false
                                          13077	BMS alarm 2	BMS alarm 2		uint32sw	2	1	0				false	false
                                          
                                          

                                          M 1 Reply Last reply Reply Quote 0
                                          • M
                                            mka15 @mka15 last edited by

                                            der QModBusMaster liest mehr als 10 Werte.... also muss es etwas mit der ModBus Adapter Konfiguration sein...
                                            0989f182-0b5d-41a9-ac8c-85a28d74d8d6-image.png

                                            @Atlantis @miki @quorle @ostseeskipper @freestyler @smart-iot und alle anderen die es geschafft haben:
                                            Könnte mir wer von euch die Konfigurationseinstellungen vom Adapter verraten und vielleicht noch eure Sungrow Firmwareversion? 🙂

                                            Viele Grüße

                                            Martin

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            510
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

                                            hardware sungrow sgh10rt modbu
                                            130
                                            857
                                            246792
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo