Skip to content
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Tester
  4. Test Adapter Growatt v3.3.1

NEWS

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

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

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

Test Adapter Growatt v3.3.1

Geplant Angeheftet Gesperrt Verschoben Tester
adaptergrowattpv-anlageshinesolartesttester
808 Beiträge 72 Kommentatoren 355.2k Aufrufe 63 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • W warp735

    @wildbill
    Cool 👍
    Hast das als Docker irgendwo laufen oder wie?

    W Online
    W Online
    Wildbill
    schrieb am zuletzt editiert von
    #206

    @warp735 Läuft bei mir als LXC unter Proxmox. Aktuelles Debian-Template.

    Gruss, Jürgen

    W 2 Antworten Letzte Antwort
    0
    • W Wildbill

      @warp735 Läuft bei mir als LXC unter Proxmox. Aktuelles Debian-Template.

      Gruss, Jürgen

      W Offline
      W Offline
      warp735
      schrieb am zuletzt editiert von
      #207

      @wildbill
      Super, schau ich mir mal an

      1 Antwort Letzte Antwort
      0
      • W Wildbill

        @warp735 Läuft bei mir als LXC unter Proxmox. Aktuelles Debian-Template.

        Gruss, Jürgen

        W Offline
        W Offline
        warp735
        schrieb am zuletzt editiert von
        #208

        @wildbill

        Bei mir muss das Ganze unter unraid laufen. Was muss ich denn alles übergeben? So richtig schlau werd ich aus den Dokus nicht 😞

        IP vom mqtt Server/ioBroker?
        Muss ich am Growatt auch was umstellen?
        Nach welcher Anleitung bist du vorgegangen?

        W 1 Antwort Letzte Antwort
        0
        • W warp735

          @wildbill

          Bei mir muss das Ganze unter unraid laufen. Was muss ich denn alles übergeben? So richtig schlau werd ich aus den Dokus nicht 😞

          IP vom mqtt Server/ioBroker?
          Muss ich am Growatt auch was umstellen?
          Nach welcher Anleitung bist du vorgegangen?

          W Online
          W Online
          Wildbill
          schrieb am zuletzt editiert von
          #209

          @warp735 Wegen unraid kann ich Dir nicht sagen, was Du da beachten musst. Anleitung zum Installieren von grott ist DIESE HIER.

          Eigentlich ganz simpel:

          • VM, LXC, Raspi oder was auch immer mit System nach Wahl aufsetzen (ich hab Debian 11).
          • Schauen, dass Python3 installiert ist (Debian bringt das schon mit).
          • grott mit git clone runterladen und die grott.ini anpassen (z.B. IP und Port des MQTT-Broker oder MQTT-Adapter von iobroker)
          • Evtl. service einrichten, damit grott beim Booten automatisch startet

          Am Growatt musst Du natürlich auch umstellen. Dort musst Du dann die IP von DEINEM Grott-Server eintragen. Das kannst Du auch direkt via server.growatt.com machen. Steht HIER beschrieben. Oder eben direkt auf Deinem Shinestick in dessen WLAN einloggen und da ändern. Einfach bei IP die IP des grott-Server (lokale IP) eintragen.
          Anschließend kommt dann ein JSON-String in iobroker unter mqtt.0 an, den man dann per Script oder Node red in einzelne Datenpunkte zerpflücken kann, die man eben möchte.

          Gruss, Jürgen

          W 1 Antwort Letzte Antwort
          1
          • W Wildbill

            @warp735 Wegen unraid kann ich Dir nicht sagen, was Du da beachten musst. Anleitung zum Installieren von grott ist DIESE HIER.

            Eigentlich ganz simpel:

            • VM, LXC, Raspi oder was auch immer mit System nach Wahl aufsetzen (ich hab Debian 11).
            • Schauen, dass Python3 installiert ist (Debian bringt das schon mit).
            • grott mit git clone runterladen und die grott.ini anpassen (z.B. IP und Port des MQTT-Broker oder MQTT-Adapter von iobroker)
            • Evtl. service einrichten, damit grott beim Booten automatisch startet

            Am Growatt musst Du natürlich auch umstellen. Dort musst Du dann die IP von DEINEM Grott-Server eintragen. Das kannst Du auch direkt via server.growatt.com machen. Steht HIER beschrieben. Oder eben direkt auf Deinem Shinestick in dessen WLAN einloggen und da ändern. Einfach bei IP die IP des grott-Server (lokale IP) eintragen.
            Anschließend kommt dann ein JSON-String in iobroker unter mqtt.0 an, den man dann per Script oder Node red in einzelne Datenpunkte zerpflücken kann, die man eben möchte.

            Gruss, Jürgen

            W Offline
            W Offline
            warp735
            schrieb am zuletzt editiert von
            #210

            @wildbill
            Super, danke dir erstmal. Muss mal schauen wie ich das einrichte. Aktuell hab ich den Growatt nicht im "sicheren" Netz (will ich auch nicht haben)
            Aber liest sich ganz vielversprechend das Ganze 👍

            Schade das sich der Adapterentwickler hier auch nicht mehr meldet. Das Growatt Portal an sich funktioniert ja reibungslos. Nur der Adapter nicht.

            W 1 Antwort Letzte Antwort
            0
            • W warp735

              @wildbill
              Super, danke dir erstmal. Muss mal schauen wie ich das einrichte. Aktuell hab ich den Growatt nicht im "sicheren" Netz (will ich auch nicht haben)
              Aber liest sich ganz vielversprechend das Ganze 👍

              Schade das sich der Adapterentwickler hier auch nicht mehr meldet. Das Growatt Portal an sich funktioniert ja reibungslos. Nur der Adapter nicht.

              W Online
              W Online
              Wildbill
              schrieb am zuletzt editiert von Wildbill
              #211

              @warp735 Ich glaube (oder vermute), dass @PLCHome-0 hier gar nicht so viel ändern kann. Ich habe die letzten Tage öfter parallel die Site server.growatt.com offen gehabt um zu vergleichen und bekam da auch oft genug Fehlermeldungen beim Anklicken der verschiedenen Zeiträume und auch mal so zwischendurch. Fehler 588 wurde auch da im Browser öfter angezeigt. Scheint also doch schon der Server zu zicken.
              Du könntest auch auf den US-Server wechseln. Weiter oben hatte @mane ja geschrieben, dass es bei ihm stabiler läuft. Nur ist halt die Historie bei Growatt direkt weg, da man sich da komplett neu anmelden muss. Auf den Shinestick musst Du da aber auch zugreifen und die IP bzw. den Server ändern.
              Von grott gibt es im Übrigen auch einen fertigen Docker-Container. Ist hier beschrieben. Vielleicht fällt Dir das damit leichter? Aber auch da musst Du im Stick die IP anpassen, darum kommst Du nicht herum. 😊
              Und natürlich muss der Stick dann so ins WLAN, dass er und Dein MQTT-broker (iobroker) sich gegenseitig sehen können. Ohne geht lokal halt nicht.

              Gruss, Jürgen

              EDIT: Für grott gibt es auch eine Version, die komplett auf den Growatt-Server verzichtet und alles lokal handelt. Da braucht der Stick also keine Internetverbindung mehr. HIER steht was dazu.

              EDIT2: Für den, der es braucht, hier noch das Script, um aus dem MQTT-JSON Datenpunkte unter userdata.0 zu befüllen:

              
              
              //MQTT Json to Objekt
              
               
              
              // var setzen
              
               
              
              // Create States
              
              //createState('0_userdata.0.Solaranlage.XGD3A293M6.time', 0,{type: 'number',name: 'time', read: true,write: true,role: 'value.time'})
              //createState('0_userdata.0.Solaranlage.XGD3A293M6.pvstatus', 0,{type: 'number',name: 'pvstatus', read: true,write: true,role: 'value'})
              //createState('0_userdata.0.Solaranlage.XGD3A293M6.pv1watt', 0,{type: 'number',name: 'pv1watt', read: true,write: true,role: 'value'})
              //createState('0_userdata.0.Solaranlage.XGD3A293M6.pv1voltage', 0,{type: 'number',name: 'pv1voltage', read: true,write: true,role: 'value'})
              //createState('0_userdata.0.Solaranlage.XGD3A293M6.pv1current', 0,{type: 'number',name: 'pv1current', read: true,write: true,role: 'value'})
              //createState('0_userdata.0.Solaranlage.XGD3A293M6.pvpowerin', 0,{type: 'number',name: 'pvpowerin', read: true,write: true,role: 'value'})
              //createState('0_userdata.0.Solaranlage.XGD3A293M6.pvpowerout', 0,{type: 'number',name: 'pvpowerout', read: true,write: true,role: 'value'})
              //createState('0_userdata.0.Solaranlage.XGD3A293M6.pvfrequentie', 0,{type: 'number',name: 'pvfrequentie', read: true,write: true,role: 'value'})
              //createState('0_userdata.0.Solaranlage.XGD3A293M6.pvgridvoltage', 0,{type: 'number',name: 'pvgridvoltage', read: true,write: true,role: 'value'})
              //createState('0_userdata.0.Solaranlage.XGD3A293M6.pvgridcurrent', 0,{type: 'number',name: 'pvgridcurrent', read: true,write: true,role: 'value'})
              //createState('0_userdata.0.Solaranlage.XGD3A293M6.pvgridpower', 0,{type: 'number',name: 'pvgridpower', read: true,write: true,role: 'value'})
              //createState('0_userdata.0.Solaranlage.XGD3A293M6.pvenergytoday', 0,{type: 'number',name: 'pvenergytoday', read: true,write: true,role: 'value'})
              //createState('0_userdata.0.Solaranlage.XGD3A293M6.pvenergytotal', 0,{type: 'number',name: 'pvenergytotal', read: true,write: true,role: 'value'})
              //createState('0_userdata.0.Solaranlage.XGD3A293M6.epvtotal', 0,{type: 'number',name: 'epvtotal', read: true,write: true,role: 'value'})
              //createState('0_userdata.0.Solaranlage.XGD3A293M6.pvtemperature', 0,{type: 'number',name: 'pvtemperature', read: true,write: true,role: 'value'})
              //createState('0_userdata.0.Solaranlage.XGD3A293M6.pvipmtemperature', 0,{type: 'number',name: 'pvipmtemperature', read: true,write: true,role: 'value'})
              //createState('0_userdata.0.Solaranlage.XGD3A293M6.totworktime', 0,{type: 'number',name: 'totworktime', read: true,write: true,role: 'value'})
              
              
               
              
              // Script beginning
              
              on({id: "mqtt.0.energy.growatt"/*Growatt*/, change: "any"}, function (obj) {
              
               
              
                 //variabele erstellen 
              
              	
                  //    var time;
              		var pvstatus;
              		var pv1watt;
              		var pv1voltage;
              		var pv1current;
              		var pvpowerin;
              		var pvpowerout;
              		var pvfrequentie;
              		var pvgridvoltage;
              		var pvgridcurrent;
              		var pvgridpower;
              		var pvenergytoday;
              		var pvenergytotal;
              		var epvtotal;
              		var pvtemperature;
              		var pvipmtemperature;
              		var totworktime;
              		
              
                     
              
                 //der try ist wichtig das der adapter nicht abschmiert bei einem fehler, hiermit pasen wird die json in ein object
              
                 try {obj = JSON.parse(getState("mqtt.0.energy.growatt"/*Growatt*/).val);
              
                 } catch (e) {
              
                         console.error('Cannot parse: ' + getState("mqtt.0.energy.growatt"/*Growatt*/).val);
              
                         return;
              
                  }
              
                  //hier schreien wir die daten des json strings in die variabelen, links die variable und rechts der name im json. obj bedeuten halt lese den wert nach :
              
              
                 //time = obj.values.time;
                 pvstatus = obj.values.pvstatus;
                 pv1watt = parseFloat((obj.values.pv1watt)) /10;
                 pv1voltage = parseFloat((obj.values.pv1voltage)) /10;
                 pv1current = parseFloat((obj.values.pv1current)) /10;
                 pvpowerin = parseFloat((obj.values.pvpowerin)) /10;
                 pvpowerout = parseFloat((obj.values.pvpowerout)) /10;
                 pvfrequentie = parseFloat((obj.values.pvfrequentie)) /100;
                 pvgridvoltage = parseFloat((obj.values.pvgridvoltage)) /10;
                 pvgridcurrent = parseFloat((obj.values.pvgridcurrent)) /10;
                 pvgridpower = parseFloat((obj.values.pvgridpower)) /10;
                 pvenergytoday = parseFloat((obj.values.pvenergytoday)) /10;
                 pvenergytotal = parseFloat((obj.values.pvenergytotal)) /10;
                 epvtotal = parseFloat((obj.values.epvtotal)) /10;
                 pvtemperature = parseFloat((obj.values.pvtemperature)) /10;
                 pvipmtemperature = parseFloat((obj.values.pvipmtemperature)) /10;
                 totworktime = obj.values.totworktime;
              
              
              
              //
              
               
              
              //setState('0_userdata.0.Solaranlage.XGD3A293M6.time', (time),true);
              setState('0_userdata.0.Solaranlage.XGD3A293M6.pvstatus', (pvstatus),true);
              setState('0_userdata.0.Solaranlage.XGD3A293M6.pv1watt', (pv1watt),true);
              setState('0_userdata.0.Solaranlage.XGD3A293M6.pv1voltage', (pv1voltage),true);
              setState('0_userdata.0.Solaranlage.XGD3A293M6.pv1current', (pv1current),true);
              setState('0_userdata.0.Solaranlage.XGD3A293M6.pvpowerin', (pvpowerin),true);
              setState('0_userdata.0.Solaranlage.XGD3A293M6.pvpowerout', (pvpowerout),true);
              setState('0_userdata.0.Solaranlage.XGD3A293M6.pvfrequentie', (pvfrequentie),true);
              setState('0_userdata.0.Solaranlage.XGD3A293M6.pvgridvoltage', (pvgridvoltage),true);
              setState('0_userdata.0.Solaranlage.XGD3A293M6.pvgridcurrent', (pvgridcurrent),true);
              setState('0_userdata.0.Solaranlage.XGD3A293M6.pvgridpower', (pvgridpower),true);
              setState('0_userdata.0.Solaranlage.XGD3A293M6.pvenergytoday', (pvenergytoday),true);
              setState('0_userdata.0.Solaranlage.XGD3A293M6.pvenergytotal', (pvenergytotal),true);
              setState('0_userdata.0.Solaranlage.XGD3A293M6.epvtotal', (epvtotal),true);
              setState('0_userdata.0.Solaranlage.XGD3A293M6.pvtemperature', (pvtemperature),true);
              setState('0_userdata.0.Solaranlage.XGD3A293M6.pvipmtemperature', (pvipmtemperature),true);
              setState('0_userdata.0.Solaranlage.XGD3A293M6.totworktime', (totworktime),true);
              
              
              
              
              });
              
              

              0_userdata.0.Solaranlage.XGD3A293M6 kann beliebig angepasst werden. Zum Anlegen der Datenpunkte einmalig ganz oben vor den createState jeweils die // entfernen. Pfade zu mqtt und userdata dann jeweils anpassen.

              EditEDIT: Um den Datenpunkt time zu befüllen fehlt noch ein kleines Script. Kann man auch in das obige unten mit anhängen:

              on({id: [].concat(['mqtt.0.energy.growatt']), change: "ne"}, async function (obj) {
                var value = obj.state.val;
                var oldValue = obj.oldState.val;
                setState("0_userdata.0.Solaranlage.XGD3A293M6.time"/*time*/, (obj.state ? obj.state.ts : ""), true);
              });
              
              B PLCHome 0P 2 Antworten Letzte Antwort
              1
              • W Wildbill

                @warp735 Ich glaube (oder vermute), dass @PLCHome-0 hier gar nicht so viel ändern kann. Ich habe die letzten Tage öfter parallel die Site server.growatt.com offen gehabt um zu vergleichen und bekam da auch oft genug Fehlermeldungen beim Anklicken der verschiedenen Zeiträume und auch mal so zwischendurch. Fehler 588 wurde auch da im Browser öfter angezeigt. Scheint also doch schon der Server zu zicken.
                Du könntest auch auf den US-Server wechseln. Weiter oben hatte @mane ja geschrieben, dass es bei ihm stabiler läuft. Nur ist halt die Historie bei Growatt direkt weg, da man sich da komplett neu anmelden muss. Auf den Shinestick musst Du da aber auch zugreifen und die IP bzw. den Server ändern.
                Von grott gibt es im Übrigen auch einen fertigen Docker-Container. Ist hier beschrieben. Vielleicht fällt Dir das damit leichter? Aber auch da musst Du im Stick die IP anpassen, darum kommst Du nicht herum. 😊
                Und natürlich muss der Stick dann so ins WLAN, dass er und Dein MQTT-broker (iobroker) sich gegenseitig sehen können. Ohne geht lokal halt nicht.

                Gruss, Jürgen

                EDIT: Für grott gibt es auch eine Version, die komplett auf den Growatt-Server verzichtet und alles lokal handelt. Da braucht der Stick also keine Internetverbindung mehr. HIER steht was dazu.

                EDIT2: Für den, der es braucht, hier noch das Script, um aus dem MQTT-JSON Datenpunkte unter userdata.0 zu befüllen:

                
                
                //MQTT Json to Objekt
                
                 
                
                // var setzen
                
                 
                
                // Create States
                
                //createState('0_userdata.0.Solaranlage.XGD3A293M6.time', 0,{type: 'number',name: 'time', read: true,write: true,role: 'value.time'})
                //createState('0_userdata.0.Solaranlage.XGD3A293M6.pvstatus', 0,{type: 'number',name: 'pvstatus', read: true,write: true,role: 'value'})
                //createState('0_userdata.0.Solaranlage.XGD3A293M6.pv1watt', 0,{type: 'number',name: 'pv1watt', read: true,write: true,role: 'value'})
                //createState('0_userdata.0.Solaranlage.XGD3A293M6.pv1voltage', 0,{type: 'number',name: 'pv1voltage', read: true,write: true,role: 'value'})
                //createState('0_userdata.0.Solaranlage.XGD3A293M6.pv1current', 0,{type: 'number',name: 'pv1current', read: true,write: true,role: 'value'})
                //createState('0_userdata.0.Solaranlage.XGD3A293M6.pvpowerin', 0,{type: 'number',name: 'pvpowerin', read: true,write: true,role: 'value'})
                //createState('0_userdata.0.Solaranlage.XGD3A293M6.pvpowerout', 0,{type: 'number',name: 'pvpowerout', read: true,write: true,role: 'value'})
                //createState('0_userdata.0.Solaranlage.XGD3A293M6.pvfrequentie', 0,{type: 'number',name: 'pvfrequentie', read: true,write: true,role: 'value'})
                //createState('0_userdata.0.Solaranlage.XGD3A293M6.pvgridvoltage', 0,{type: 'number',name: 'pvgridvoltage', read: true,write: true,role: 'value'})
                //createState('0_userdata.0.Solaranlage.XGD3A293M6.pvgridcurrent', 0,{type: 'number',name: 'pvgridcurrent', read: true,write: true,role: 'value'})
                //createState('0_userdata.0.Solaranlage.XGD3A293M6.pvgridpower', 0,{type: 'number',name: 'pvgridpower', read: true,write: true,role: 'value'})
                //createState('0_userdata.0.Solaranlage.XGD3A293M6.pvenergytoday', 0,{type: 'number',name: 'pvenergytoday', read: true,write: true,role: 'value'})
                //createState('0_userdata.0.Solaranlage.XGD3A293M6.pvenergytotal', 0,{type: 'number',name: 'pvenergytotal', read: true,write: true,role: 'value'})
                //createState('0_userdata.0.Solaranlage.XGD3A293M6.epvtotal', 0,{type: 'number',name: 'epvtotal', read: true,write: true,role: 'value'})
                //createState('0_userdata.0.Solaranlage.XGD3A293M6.pvtemperature', 0,{type: 'number',name: 'pvtemperature', read: true,write: true,role: 'value'})
                //createState('0_userdata.0.Solaranlage.XGD3A293M6.pvipmtemperature', 0,{type: 'number',name: 'pvipmtemperature', read: true,write: true,role: 'value'})
                //createState('0_userdata.0.Solaranlage.XGD3A293M6.totworktime', 0,{type: 'number',name: 'totworktime', read: true,write: true,role: 'value'})
                
                
                 
                
                // Script beginning
                
                on({id: "mqtt.0.energy.growatt"/*Growatt*/, change: "any"}, function (obj) {
                
                 
                
                   //variabele erstellen 
                
                	
                    //    var time;
                		var pvstatus;
                		var pv1watt;
                		var pv1voltage;
                		var pv1current;
                		var pvpowerin;
                		var pvpowerout;
                		var pvfrequentie;
                		var pvgridvoltage;
                		var pvgridcurrent;
                		var pvgridpower;
                		var pvenergytoday;
                		var pvenergytotal;
                		var epvtotal;
                		var pvtemperature;
                		var pvipmtemperature;
                		var totworktime;
                		
                
                       
                
                   //der try ist wichtig das der adapter nicht abschmiert bei einem fehler, hiermit pasen wird die json in ein object
                
                   try {obj = JSON.parse(getState("mqtt.0.energy.growatt"/*Growatt*/).val);
                
                   } catch (e) {
                
                           console.error('Cannot parse: ' + getState("mqtt.0.energy.growatt"/*Growatt*/).val);
                
                           return;
                
                    }
                
                    //hier schreien wir die daten des json strings in die variabelen, links die variable und rechts der name im json. obj bedeuten halt lese den wert nach :
                
                
                   //time = obj.values.time;
                   pvstatus = obj.values.pvstatus;
                   pv1watt = parseFloat((obj.values.pv1watt)) /10;
                   pv1voltage = parseFloat((obj.values.pv1voltage)) /10;
                   pv1current = parseFloat((obj.values.pv1current)) /10;
                   pvpowerin = parseFloat((obj.values.pvpowerin)) /10;
                   pvpowerout = parseFloat((obj.values.pvpowerout)) /10;
                   pvfrequentie = parseFloat((obj.values.pvfrequentie)) /100;
                   pvgridvoltage = parseFloat((obj.values.pvgridvoltage)) /10;
                   pvgridcurrent = parseFloat((obj.values.pvgridcurrent)) /10;
                   pvgridpower = parseFloat((obj.values.pvgridpower)) /10;
                   pvenergytoday = parseFloat((obj.values.pvenergytoday)) /10;
                   pvenergytotal = parseFloat((obj.values.pvenergytotal)) /10;
                   epvtotal = parseFloat((obj.values.epvtotal)) /10;
                   pvtemperature = parseFloat((obj.values.pvtemperature)) /10;
                   pvipmtemperature = parseFloat((obj.values.pvipmtemperature)) /10;
                   totworktime = obj.values.totworktime;
                
                
                
                //
                
                 
                
                //setState('0_userdata.0.Solaranlage.XGD3A293M6.time', (time),true);
                setState('0_userdata.0.Solaranlage.XGD3A293M6.pvstatus', (pvstatus),true);
                setState('0_userdata.0.Solaranlage.XGD3A293M6.pv1watt', (pv1watt),true);
                setState('0_userdata.0.Solaranlage.XGD3A293M6.pv1voltage', (pv1voltage),true);
                setState('0_userdata.0.Solaranlage.XGD3A293M6.pv1current', (pv1current),true);
                setState('0_userdata.0.Solaranlage.XGD3A293M6.pvpowerin', (pvpowerin),true);
                setState('0_userdata.0.Solaranlage.XGD3A293M6.pvpowerout', (pvpowerout),true);
                setState('0_userdata.0.Solaranlage.XGD3A293M6.pvfrequentie', (pvfrequentie),true);
                setState('0_userdata.0.Solaranlage.XGD3A293M6.pvgridvoltage', (pvgridvoltage),true);
                setState('0_userdata.0.Solaranlage.XGD3A293M6.pvgridcurrent', (pvgridcurrent),true);
                setState('0_userdata.0.Solaranlage.XGD3A293M6.pvgridpower', (pvgridpower),true);
                setState('0_userdata.0.Solaranlage.XGD3A293M6.pvenergytoday', (pvenergytoday),true);
                setState('0_userdata.0.Solaranlage.XGD3A293M6.pvenergytotal', (pvenergytotal),true);
                setState('0_userdata.0.Solaranlage.XGD3A293M6.epvtotal', (epvtotal),true);
                setState('0_userdata.0.Solaranlage.XGD3A293M6.pvtemperature', (pvtemperature),true);
                setState('0_userdata.0.Solaranlage.XGD3A293M6.pvipmtemperature', (pvipmtemperature),true);
                setState('0_userdata.0.Solaranlage.XGD3A293M6.totworktime', (totworktime),true);
                
                
                
                
                });
                
                

                0_userdata.0.Solaranlage.XGD3A293M6 kann beliebig angepasst werden. Zum Anlegen der Datenpunkte einmalig ganz oben vor den createState jeweils die // entfernen. Pfade zu mqtt und userdata dann jeweils anpassen.

                EditEDIT: Um den Datenpunkt time zu befüllen fehlt noch ein kleines Script. Kann man auch in das obige unten mit anhängen:

                on({id: [].concat(['mqtt.0.energy.growatt']), change: "ne"}, async function (obj) {
                  var value = obj.state.val;
                  var oldValue = obj.oldState.val;
                  setState("0_userdata.0.Solaranlage.XGD3A293M6.time"/*time*/, (obj.state ? obj.state.ts : ""), true);
                });
                
                B Offline
                B Offline
                bassface
                schrieb am zuletzt editiert von
                #212

                @wildbill
                Herzlichen Dank für deine Ausführungen und das Skript 😊 🤗

                Hab nun Grott als Docker im Proxy-Modus laufen 👍

                Funktionierte eigentlich direkt und ohne Probleme.
                MQTT-Adapter installiert, Docker eingerichtet, IP der Servers auf dem Stick geändert - Fertig

                ioBroker hat die Daten nun direkt und Grott meldet auch brav an Growatt weiter...

                1 Antwort Letzte Antwort
                0
                • W Online
                  W Online
                  Wildbill
                  schrieb am zuletzt editiert von
                  #213

                  @bassface So soll es sein. Läuft bei mir auch von Start an nun völlig problemlos. 👍

                  Gruss, Jürgen

                  1 Antwort Letzte Antwort
                  0
                  • W Wildbill

                    @warp735 Ich glaube (oder vermute), dass @PLCHome-0 hier gar nicht so viel ändern kann. Ich habe die letzten Tage öfter parallel die Site server.growatt.com offen gehabt um zu vergleichen und bekam da auch oft genug Fehlermeldungen beim Anklicken der verschiedenen Zeiträume und auch mal so zwischendurch. Fehler 588 wurde auch da im Browser öfter angezeigt. Scheint also doch schon der Server zu zicken.
                    Du könntest auch auf den US-Server wechseln. Weiter oben hatte @mane ja geschrieben, dass es bei ihm stabiler läuft. Nur ist halt die Historie bei Growatt direkt weg, da man sich da komplett neu anmelden muss. Auf den Shinestick musst Du da aber auch zugreifen und die IP bzw. den Server ändern.
                    Von grott gibt es im Übrigen auch einen fertigen Docker-Container. Ist hier beschrieben. Vielleicht fällt Dir das damit leichter? Aber auch da musst Du im Stick die IP anpassen, darum kommst Du nicht herum. 😊
                    Und natürlich muss der Stick dann so ins WLAN, dass er und Dein MQTT-broker (iobroker) sich gegenseitig sehen können. Ohne geht lokal halt nicht.

                    Gruss, Jürgen

                    EDIT: Für grott gibt es auch eine Version, die komplett auf den Growatt-Server verzichtet und alles lokal handelt. Da braucht der Stick also keine Internetverbindung mehr. HIER steht was dazu.

                    EDIT2: Für den, der es braucht, hier noch das Script, um aus dem MQTT-JSON Datenpunkte unter userdata.0 zu befüllen:

                    
                    
                    //MQTT Json to Objekt
                    
                     
                    
                    // var setzen
                    
                     
                    
                    // Create States
                    
                    //createState('0_userdata.0.Solaranlage.XGD3A293M6.time', 0,{type: 'number',name: 'time', read: true,write: true,role: 'value.time'})
                    //createState('0_userdata.0.Solaranlage.XGD3A293M6.pvstatus', 0,{type: 'number',name: 'pvstatus', read: true,write: true,role: 'value'})
                    //createState('0_userdata.0.Solaranlage.XGD3A293M6.pv1watt', 0,{type: 'number',name: 'pv1watt', read: true,write: true,role: 'value'})
                    //createState('0_userdata.0.Solaranlage.XGD3A293M6.pv1voltage', 0,{type: 'number',name: 'pv1voltage', read: true,write: true,role: 'value'})
                    //createState('0_userdata.0.Solaranlage.XGD3A293M6.pv1current', 0,{type: 'number',name: 'pv1current', read: true,write: true,role: 'value'})
                    //createState('0_userdata.0.Solaranlage.XGD3A293M6.pvpowerin', 0,{type: 'number',name: 'pvpowerin', read: true,write: true,role: 'value'})
                    //createState('0_userdata.0.Solaranlage.XGD3A293M6.pvpowerout', 0,{type: 'number',name: 'pvpowerout', read: true,write: true,role: 'value'})
                    //createState('0_userdata.0.Solaranlage.XGD3A293M6.pvfrequentie', 0,{type: 'number',name: 'pvfrequentie', read: true,write: true,role: 'value'})
                    //createState('0_userdata.0.Solaranlage.XGD3A293M6.pvgridvoltage', 0,{type: 'number',name: 'pvgridvoltage', read: true,write: true,role: 'value'})
                    //createState('0_userdata.0.Solaranlage.XGD3A293M6.pvgridcurrent', 0,{type: 'number',name: 'pvgridcurrent', read: true,write: true,role: 'value'})
                    //createState('0_userdata.0.Solaranlage.XGD3A293M6.pvgridpower', 0,{type: 'number',name: 'pvgridpower', read: true,write: true,role: 'value'})
                    //createState('0_userdata.0.Solaranlage.XGD3A293M6.pvenergytoday', 0,{type: 'number',name: 'pvenergytoday', read: true,write: true,role: 'value'})
                    //createState('0_userdata.0.Solaranlage.XGD3A293M6.pvenergytotal', 0,{type: 'number',name: 'pvenergytotal', read: true,write: true,role: 'value'})
                    //createState('0_userdata.0.Solaranlage.XGD3A293M6.epvtotal', 0,{type: 'number',name: 'epvtotal', read: true,write: true,role: 'value'})
                    //createState('0_userdata.0.Solaranlage.XGD3A293M6.pvtemperature', 0,{type: 'number',name: 'pvtemperature', read: true,write: true,role: 'value'})
                    //createState('0_userdata.0.Solaranlage.XGD3A293M6.pvipmtemperature', 0,{type: 'number',name: 'pvipmtemperature', read: true,write: true,role: 'value'})
                    //createState('0_userdata.0.Solaranlage.XGD3A293M6.totworktime', 0,{type: 'number',name: 'totworktime', read: true,write: true,role: 'value'})
                    
                    
                     
                    
                    // Script beginning
                    
                    on({id: "mqtt.0.energy.growatt"/*Growatt*/, change: "any"}, function (obj) {
                    
                     
                    
                       //variabele erstellen 
                    
                    	
                        //    var time;
                    		var pvstatus;
                    		var pv1watt;
                    		var pv1voltage;
                    		var pv1current;
                    		var pvpowerin;
                    		var pvpowerout;
                    		var pvfrequentie;
                    		var pvgridvoltage;
                    		var pvgridcurrent;
                    		var pvgridpower;
                    		var pvenergytoday;
                    		var pvenergytotal;
                    		var epvtotal;
                    		var pvtemperature;
                    		var pvipmtemperature;
                    		var totworktime;
                    		
                    
                           
                    
                       //der try ist wichtig das der adapter nicht abschmiert bei einem fehler, hiermit pasen wird die json in ein object
                    
                       try {obj = JSON.parse(getState("mqtt.0.energy.growatt"/*Growatt*/).val);
                    
                       } catch (e) {
                    
                               console.error('Cannot parse: ' + getState("mqtt.0.energy.growatt"/*Growatt*/).val);
                    
                               return;
                    
                        }
                    
                        //hier schreien wir die daten des json strings in die variabelen, links die variable und rechts der name im json. obj bedeuten halt lese den wert nach :
                    
                    
                       //time = obj.values.time;
                       pvstatus = obj.values.pvstatus;
                       pv1watt = parseFloat((obj.values.pv1watt)) /10;
                       pv1voltage = parseFloat((obj.values.pv1voltage)) /10;
                       pv1current = parseFloat((obj.values.pv1current)) /10;
                       pvpowerin = parseFloat((obj.values.pvpowerin)) /10;
                       pvpowerout = parseFloat((obj.values.pvpowerout)) /10;
                       pvfrequentie = parseFloat((obj.values.pvfrequentie)) /100;
                       pvgridvoltage = parseFloat((obj.values.pvgridvoltage)) /10;
                       pvgridcurrent = parseFloat((obj.values.pvgridcurrent)) /10;
                       pvgridpower = parseFloat((obj.values.pvgridpower)) /10;
                       pvenergytoday = parseFloat((obj.values.pvenergytoday)) /10;
                       pvenergytotal = parseFloat((obj.values.pvenergytotal)) /10;
                       epvtotal = parseFloat((obj.values.epvtotal)) /10;
                       pvtemperature = parseFloat((obj.values.pvtemperature)) /10;
                       pvipmtemperature = parseFloat((obj.values.pvipmtemperature)) /10;
                       totworktime = obj.values.totworktime;
                    
                    
                    
                    //
                    
                     
                    
                    //setState('0_userdata.0.Solaranlage.XGD3A293M6.time', (time),true);
                    setState('0_userdata.0.Solaranlage.XGD3A293M6.pvstatus', (pvstatus),true);
                    setState('0_userdata.0.Solaranlage.XGD3A293M6.pv1watt', (pv1watt),true);
                    setState('0_userdata.0.Solaranlage.XGD3A293M6.pv1voltage', (pv1voltage),true);
                    setState('0_userdata.0.Solaranlage.XGD3A293M6.pv1current', (pv1current),true);
                    setState('0_userdata.0.Solaranlage.XGD3A293M6.pvpowerin', (pvpowerin),true);
                    setState('0_userdata.0.Solaranlage.XGD3A293M6.pvpowerout', (pvpowerout),true);
                    setState('0_userdata.0.Solaranlage.XGD3A293M6.pvfrequentie', (pvfrequentie),true);
                    setState('0_userdata.0.Solaranlage.XGD3A293M6.pvgridvoltage', (pvgridvoltage),true);
                    setState('0_userdata.0.Solaranlage.XGD3A293M6.pvgridcurrent', (pvgridcurrent),true);
                    setState('0_userdata.0.Solaranlage.XGD3A293M6.pvgridpower', (pvgridpower),true);
                    setState('0_userdata.0.Solaranlage.XGD3A293M6.pvenergytoday', (pvenergytoday),true);
                    setState('0_userdata.0.Solaranlage.XGD3A293M6.pvenergytotal', (pvenergytotal),true);
                    setState('0_userdata.0.Solaranlage.XGD3A293M6.epvtotal', (epvtotal),true);
                    setState('0_userdata.0.Solaranlage.XGD3A293M6.pvtemperature', (pvtemperature),true);
                    setState('0_userdata.0.Solaranlage.XGD3A293M6.pvipmtemperature', (pvipmtemperature),true);
                    setState('0_userdata.0.Solaranlage.XGD3A293M6.totworktime', (totworktime),true);
                    
                    
                    
                    
                    });
                    
                    

                    0_userdata.0.Solaranlage.XGD3A293M6 kann beliebig angepasst werden. Zum Anlegen der Datenpunkte einmalig ganz oben vor den createState jeweils die // entfernen. Pfade zu mqtt und userdata dann jeweils anpassen.

                    EditEDIT: Um den Datenpunkt time zu befüllen fehlt noch ein kleines Script. Kann man auch in das obige unten mit anhängen:

                    on({id: [].concat(['mqtt.0.energy.growatt']), change: "ne"}, async function (obj) {
                      var value = obj.state.val;
                      var oldValue = obj.oldState.val;
                      setState("0_userdata.0.Solaranlage.XGD3A293M6.time"/*time*/, (obj.state ? obj.state.ts : ""), true);
                    });
                    
                    PLCHome 0P Offline
                    PLCHome 0P Offline
                    PLCHome 0
                    Developer
                    schrieb am zuletzt editiert von
                    #214

                    @wildbill Danke, dass du das mit der Webseite analysiert hast.
                    Ich hatte die 588 Antworten noch nicht gesehen. Ich dachte, es liegt am Header...
                    Der Fehler ist echt schwer zu fassen, da er scheinbar nicht ständig auftaucht.
                    Ich denke, ich muss bei 588 einfach erneut anfragen.

                    Zu dem Umleiten der Modbus-Ip-Nachricht an die Cloud.
                    Ich werde mal probieren, ob ich die Nachrichten auch mit dem ioBroker umleiten kann.
                    Dann könnte der Adapter das zusätzlich machen und sie evtl. auch an die US-Cloud schicken ....
                    Ich hab mir die Python Programmierung noch nicht angeschaut, sind da alle Daten entschlüsselt?

                    Allerdings sollte es über die Konfiguration des Docker auch möglich sein, sie an beide Clouds zu senden ...

                    W 1 Antwort Letzte Antwort
                    2
                    • PLCHome 0P PLCHome 0

                      @wildbill Danke, dass du das mit der Webseite analysiert hast.
                      Ich hatte die 588 Antworten noch nicht gesehen. Ich dachte, es liegt am Header...
                      Der Fehler ist echt schwer zu fassen, da er scheinbar nicht ständig auftaucht.
                      Ich denke, ich muss bei 588 einfach erneut anfragen.

                      Zu dem Umleiten der Modbus-Ip-Nachricht an die Cloud.
                      Ich werde mal probieren, ob ich die Nachrichten auch mit dem ioBroker umleiten kann.
                      Dann könnte der Adapter das zusätzlich machen und sie evtl. auch an die US-Cloud schicken ....
                      Ich hab mir die Python Programmierung noch nicht angeschaut, sind da alle Daten entschlüsselt?

                      Allerdings sollte es über die Konfiguration des Docker auch möglich sein, sie an beide Clouds zu senden ...

                      W Online
                      W Online
                      Wildbill
                      schrieb am zuletzt editiert von
                      #215

                      @plchome-0 sagte in Test Adapter Growatt v1.0.0:

                      @wildbill
                      Zu dem Umleiten der Modbus-Ip-Nachricht an die Cloud.
                      Ich werde mal probieren, ob ich die Nachrichten auch mit dem ioBroker umleiten kann.
                      Dann könnte der Adapter das zusätzlich machen und sie evtl. auch an die US-Cloud schicken ....
                      Ich hab mir die Python Programmierung noch nicht angeschaut, sind da alle Daten entschlüsselt?

                      Allerdings sollte es über die Konfiguration des Docker auch möglich sein, sie an beide Clouds zu senden ...

                      Das kann ich Dir gar nicht sagen, wie das intern genau läuft bei Grott. Da würde ich Dich einfach nochmal an die Github-Site verweisen. Da steht auch einiges an technischem Hintergrund und auch in den Issues ist der Entwickler sehr aktiv mit dabei. Eventeull kann er Dich ja direkt unterstützen, um den iobroker-Adapter in ähnlicher Manier anzupassen und auch quasi als MITM zwischen Shinestick und Server zu packen und die Daten direkt vom Stick abzugreifen bzw. sie sich halt vom Stick direkt schiocken lassen und danach an den Server zu senden. Anscheinend sendet der Stick auch nur, wenn er Kontakt zum Server aufbauen kann, wobei es da mit grottserver wohl auch was gibt, wo das nicht mehr nötig ist.
                      Wie gesagt, ich nutze es nur, und fand es völlig unkompliziert und problemlos, habe mich aber nicht groß um die Technik dahinter gekümmert. Aber wenn Dein Adapter die Funktion vielleicht irgendwann selbst kann, umso besser.

                      Gruss, Jürgen

                      PLCHome 0P W 2 Antworten Letzte Antwort
                      0
                      • W Wildbill

                        @plchome-0 sagte in Test Adapter Growatt v1.0.0:

                        @wildbill
                        Zu dem Umleiten der Modbus-Ip-Nachricht an die Cloud.
                        Ich werde mal probieren, ob ich die Nachrichten auch mit dem ioBroker umleiten kann.
                        Dann könnte der Adapter das zusätzlich machen und sie evtl. auch an die US-Cloud schicken ....
                        Ich hab mir die Python Programmierung noch nicht angeschaut, sind da alle Daten entschlüsselt?

                        Allerdings sollte es über die Konfiguration des Docker auch möglich sein, sie an beide Clouds zu senden ...

                        Das kann ich Dir gar nicht sagen, wie das intern genau läuft bei Grott. Da würde ich Dich einfach nochmal an die Github-Site verweisen. Da steht auch einiges an technischem Hintergrund und auch in den Issues ist der Entwickler sehr aktiv mit dabei. Eventeull kann er Dich ja direkt unterstützen, um den iobroker-Adapter in ähnlicher Manier anzupassen und auch quasi als MITM zwischen Shinestick und Server zu packen und die Daten direkt vom Stick abzugreifen bzw. sie sich halt vom Stick direkt schiocken lassen und danach an den Server zu senden. Anscheinend sendet der Stick auch nur, wenn er Kontakt zum Server aufbauen kann, wobei es da mit grottserver wohl auch was gibt, wo das nicht mehr nötig ist.
                        Wie gesagt, ich nutze es nur, und fand es völlig unkompliziert und problemlos, habe mich aber nicht groß um die Technik dahinter gekümmert. Aber wenn Dein Adapter die Funktion vielleicht irgendwann selbst kann, umso besser.

                        Gruss, Jürgen

                        PLCHome 0P Offline
                        PLCHome 0P Offline
                        PLCHome 0
                        Developer
                        schrieb am zuletzt editiert von
                        #216

                        @wildbill Ich habe jetzt etwas an den Header geändert. Die Anfrage sehen der Webseite ähnlicher. Bei mir kommt jetzt keine 588 mehr. Oder hat auch growatt etwas unternommen?

                        W 1 Antwort Letzte Antwort
                        0
                        • PLCHome 0P PLCHome 0

                          @wildbill Ich habe jetzt etwas an den Header geändert. Die Anfrage sehen der Webseite ähnlicher. Bei mir kommt jetzt keine 588 mehr. Oder hat auch growatt etwas unternommen?

                          W Online
                          W Online
                          Wildbill
                          schrieb am zuletzt editiert von
                          #217

                          @plchome-0 Ich habe eben die 1.1.17 nochmal gestartet und sofort den 588. bekommen. Dann die 1.1.19 von Github geholt und die lief sofort ohne Fehler an. Ich lasse mal bis morgen parallel mitlaufen, ob noch Fehler auftauchen.
                          Da ich den Fehler aber auch schon auf der Site selbst hatte vermute ich nach wie vor, der Server ist einfach etwas schwach auf der Brust. Ich werde zukünftig die Lösung per MQTT direkt vom Stick bevorzugen.

                          Ob Growatt da was auf dem Server oder der Site geändert hat, kann ich Dir nicht sagen. Da müsstest Du schon direkt dort nachfragen. Aber ob da eine Antwort kommt…..

                          Gruss, Jürgen

                          1 Antwort Letzte Antwort
                          0
                          • W Online
                            W Online
                            Wildbill
                            schrieb am zuletzt editiert von Wildbill
                            #218

                            @PLCHome-0 Leider tauchen nach wie vor Fehler im Log auf, auch wenn sich der Adapter seither zumindest immer wieder gefangen und weiterhin Daten gesammelt hat:

                            	2022-08-31 18:14:54.634	error	Growatt exception: TypeError: Converting circular structure to JSON --> starting at object with constructor 'TLSSocket' | property '_httpMessage' -> object with constructor 'ClientRequest' --- property 'socket' closes the circle
                            
                            growatt.0
                            2022-08-31 18:11:54.547	error	Growatt exception: TypeError: Converting circular structure to JSON --> starting at object with constructor 'TLSSocket' | property '_httpMessage' -> object with constructor 'ClientRequest' --- property 'socket' closes the circle
                            
                            growatt.0
                            2022-08-31 18:09:53.058	error	Growatt exception: TypeError: Converting circular structure to JSON --> starting at object with constructor 'TLSSocket' | property '_httpMessage' -> object with constructor 'ClientRequest' --- property 'socket' closes the circle
                            
                            growatt.0
                            2022-08-31 18:06:52.917	error	Growatt exception: AxiosError: Request failed with status code 500
                            
                            growatt.0
                            2022-08-31 16:16:23.273	error	Growatt exception: AxiosError: Request failed with status code 588
                            

                            Lokal kamen die Daten minütlich per MQTT ohne Aussetzer an, wie es um die Growatt-Site server.growatt.com während der Zeiten im Log stand kann ich nicht sagen, hab nicht geschaut. Aber zumindest eben ging alles und die Werte entsprechen denen, die per MQTT kamen und die Dein Adapter auch geholt hat.
                            Ich werde ihn mal bis morgen weiterlaufen lassen und schauen, wie der "Start" morgen früh klappt, wenn die ersten Watt erzeugt werden.

                            Gruss, Jürgen

                            EDIT: Den 588 muss ich wieder "abziehen". Der war noch, als ich die 1.1.17 heute Mittag vor dem Update gestartet hatte. Den also nicht beachten. Aber die ab 18:00 mit dem Code 500 waren mit der 1.1.19.

                            1 Antwort Letzte Antwort
                            0
                            • J Offline
                              J Offline
                              jaridian
                              schrieb am zuletzt editiert von jaridian
                              #219

                              Gottseidank hat uns @PLCHome-0 nicht verlassen. Alter wir brauchen Dich! 😇 Und großen Dank das Du dran bleibst. 👏
                              Seit der 1.1.19. ist der Adapter durchgehend grün und keine Fehlermeldungen bisher. Schaun mer mal ob es so bleibt?
                              Grott ist vielleicht zwar eine Alternative, aber da muss man sich erst einmal reinarbeiten. Das geht, jedenfalls bei mir, nicht so auf die schnelle.

                              1 Antwort Letzte Antwort
                              1
                              • PLCHome 0P PLCHome 0
                                Aktuelle Test Version 3.3.1
                                Veröffentlichungsdatum 13.08.2024
                                Github Link https://github.com/PLCHome/ioBroker.growatt

                                Hallo,

                                ich habe einen Growatt SPH4000 Solar Wechselrichter mit ACCU.
                                Growatt bietet zum Überwachen seiner Solarsysteme eine Webseite und eine App an.
                                Ich habe die API benutzt, um einen Adapter für ioBroker zu erstellen.

                                Zu Installation: Der Adapter kann über den ioBroker mit der Einstellung Beta (latest) installiert werden.

                                Der Adapter fragt alle 30sec. die Werte des Wechselrichters ab und legt diese als einzelne Objekte ab.
                                Die Werte ändern sich wie in der Shine App und im Webportal nur alle 5min.

                                Leider sind alle Gerätetypen bei Gowatt mit einer anderen API ausgestattet. Ich habe versucht, so viele wie möglich zu Implementieren.

                                Wäre nett wenn ihr den Adapter testen könntet damit ich mit der 0.0.14 in die Stable (default) komme.

                                Hello,

                                I have a Growatt SPH4000 solar inverter with ACCU.
                                Growatt offers a website and an app for monitoring its solar systems.
                                I used the API to create an adapter for ioBroker.

                                To installation: The adapter can be installed via the ioBroker with the setting Beta (latest).

                                The adapter asks every 30sec. saves the values ​​of the inverter and saves them as individual objects.
                                As in the Shine app and in the web portal, the values ​​change only every 5 minutes.

                                Unfortunately, all device types at Gowatt have a different API. I tried to implement as many as possible.

                                Would be nice if you could test the adapter so that I can get into the stable (default) with 0.0.14.

                                chucky666C Online
                                chucky666C Online
                                chucky666
                                schrieb am zuletzt editiert von
                                #220

                                @plchome-0 danke für das Update , du bist der beste

                                1 Antwort Letzte Antwort
                                0
                                • W Offline
                                  W Offline
                                  warp735
                                  schrieb am zuletzt editiert von
                                  #221

                                  @plchome-0

                                  Vielen Dank, bei mir auch wieder grün 👍

                                  1 Antwort Letzte Antwort
                                  0
                                  • W Online
                                    W Online
                                    Wildbill
                                    schrieb am zuletzt editiert von
                                    #222

                                    @PLCHome-0 Der Adapter scheint nun stabiler zu laufen. Bis auf den obligatorischen Fehler pünktlich um 03:57 Uhr gab es keine Logeinträge:

                                    	2022-09-01 03:57:15.166	error	Growatt exception: AxiosError: Request failed with status code 500
                                    

                                    Dafür hat mich die Growatt-Site eben beim testweisen Besuch mal wieder mit einer Fehlermeldung begrüßt, dieses Mal Code 500:

                                    945474f3-1c4e-4a3d-b99f-013bd74479a3-image.png

                                    Da die lokale Variante via grott so schön problemlos läuft und ich doppeltes Gemoppel eigentlich nicht brauche und auch die Web-Site bzw. App außer zu Testzwecken nie öffne (wobei Grott die Dten ja dennoch dahin spiegelt), werde ich den Versuch mit dem Adapter dennoch erst einmal wieder beenden. Ich bleibe aber dennoch hier mit am Ball und bin gespannt, was noch kommt. Wenn Du mal einen gezielten Test oder so benötigst, dann kann ich da auch gerne mitmachen, der Adapter bleibt erst einmal installiert und nur beendet.

                                    Gruss, Jürgen

                                    W 1 Antwort Letzte Antwort
                                    0
                                    • W Wildbill

                                      @PLCHome-0 Der Adapter scheint nun stabiler zu laufen. Bis auf den obligatorischen Fehler pünktlich um 03:57 Uhr gab es keine Logeinträge:

                                      	2022-09-01 03:57:15.166	error	Growatt exception: AxiosError: Request failed with status code 500
                                      

                                      Dafür hat mich die Growatt-Site eben beim testweisen Besuch mal wieder mit einer Fehlermeldung begrüßt, dieses Mal Code 500:

                                      945474f3-1c4e-4a3d-b99f-013bd74479a3-image.png

                                      Da die lokale Variante via grott so schön problemlos läuft und ich doppeltes Gemoppel eigentlich nicht brauche und auch die Web-Site bzw. App außer zu Testzwecken nie öffne (wobei Grott die Dten ja dennoch dahin spiegelt), werde ich den Versuch mit dem Adapter dennoch erst einmal wieder beenden. Ich bleibe aber dennoch hier mit am Ball und bin gespannt, was noch kommt. Wenn Du mal einen gezielten Test oder so benötigst, dann kann ich da auch gerne mitmachen, der Adapter bleibt erst einmal installiert und nur beendet.

                                      Gruss, Jürgen

                                      W Offline
                                      W Offline
                                      warp735
                                      schrieb am zuletzt editiert von warp735
                                      #223

                                      @wildbill
                                      Hab mir den Docker auch mal installiert. Vielen Dank für die Info. Ist eigentlich super, dass man so lokal und gleichzeitig die Cloud noch hat.

                                      41fc7541-ce5b-432e-9495-d820fea6dbfe-grafik.png

                                      1 Antwort Letzte Antwort
                                      0
                                      • W Wildbill

                                        @plchome-0 sagte in Test Adapter Growatt v1.0.0:

                                        @wildbill
                                        Zu dem Umleiten der Modbus-Ip-Nachricht an die Cloud.
                                        Ich werde mal probieren, ob ich die Nachrichten auch mit dem ioBroker umleiten kann.
                                        Dann könnte der Adapter das zusätzlich machen und sie evtl. auch an die US-Cloud schicken ....
                                        Ich hab mir die Python Programmierung noch nicht angeschaut, sind da alle Daten entschlüsselt?

                                        Allerdings sollte es über die Konfiguration des Docker auch möglich sein, sie an beide Clouds zu senden ...

                                        Das kann ich Dir gar nicht sagen, wie das intern genau läuft bei Grott. Da würde ich Dich einfach nochmal an die Github-Site verweisen. Da steht auch einiges an technischem Hintergrund und auch in den Issues ist der Entwickler sehr aktiv mit dabei. Eventeull kann er Dich ja direkt unterstützen, um den iobroker-Adapter in ähnlicher Manier anzupassen und auch quasi als MITM zwischen Shinestick und Server zu packen und die Daten direkt vom Stick abzugreifen bzw. sie sich halt vom Stick direkt schiocken lassen und danach an den Server zu senden. Anscheinend sendet der Stick auch nur, wenn er Kontakt zum Server aufbauen kann, wobei es da mit grottserver wohl auch was gibt, wo das nicht mehr nötig ist.
                                        Wie gesagt, ich nutze es nur, und fand es völlig unkompliziert und problemlos, habe mich aber nicht groß um die Technik dahinter gekümmert. Aber wenn Dein Adapter die Funktion vielleicht irgendwann selbst kann, umso besser.

                                        Gruss, Jürgen

                                        W Offline
                                        W Offline
                                        warp735
                                        schrieb am zuletzt editiert von
                                        #224

                                        @wildbill sagte in Test Adapter Growatt v1.0.0:

                                        Anscheinend sendet der Stick auch nur, wenn er Kontakt zum Server aufbauen kann

                                        Das würde ja bedeuten, wenn der Growatt Server down ist, steht man wieder ohne Daten da?

                                        W 1 Antwort Letzte Antwort
                                        0
                                        • W warp735

                                          @wildbill sagte in Test Adapter Growatt v1.0.0:

                                          Anscheinend sendet der Stick auch nur, wenn er Kontakt zum Server aufbauen kann

                                          Das würde ja bedeuten, wenn der Growatt Server down ist, steht man wieder ohne Daten da?

                                          W Online
                                          W Online
                                          Wildbill
                                          schrieb am zuletzt editiert von
                                          #225

                                          @warp735 Ja, deshalb gibt es (momentan nur beim Docker) ja auch die Variante grottserver.py. Damit "simuliert" grott wohl den Growatt-Server und der Stick sendet klaglos lokal seine Daten obwohl man ihm sogar das Internet abdrehen kann.
                                          Wobei ich aber sagen muss, dass es seit April 2021, seit mein Growatt läuft, das Problem noch nie hatte, dass der Stick seine Daten nicht los wurde. Wenn, gab es immer nur Probleme mit der Website oder eben dem Adapter beim Zugriff auf den Server.
                                          Der Stick soll wohl auch die Daten von bis zu 30 Tagen intern speichern können und dann eben später mit passenden Timestamps abliefern, wenn er zwischendurch mal den Server nicht erreicht. OK, bringt lokal nicht viel, da ja dann erst wieder ein MQTT-Paket kommt, wenn der Server wieder da wäre und die Daten dazwischen lokal nicht verwurstet werden.
                                          Aber wie gesagt, grottserver.py soll das umgehen, oben hatte ich es ja bereits mal verlinkt.

                                          Gruss, Jürgen

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


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          514

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          Themen

                                          1.3m

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

                                          • Du hast noch kein Konto? Registrieren

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