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

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    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 Sieht ja genial aus. Du bist ein Genie!

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

        @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.

        A 1 Reply Last reply Reply Quote 0
        • 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
                                            • First post
                                              Last post

                                            Support us

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

                                            1.1k
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

                                            hardware sungrow sgh10rt modbu
                                            130
                                            860
                                            278987
                                            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