Guerilla alternativ Projekt.

Micro Wechselrichter, die direkt an die 230V Steckdose angeschlossen werden können.

Moderator: Ulrich

Benutzeravatar
brunnema
Beiträge: 52
Registriert: Di 16. Aug 2022, 10:19
Wohnort: Süd-Hessen
Hat sich bedankt: 7 Mal
Danksagung erhalten: 2 Mal

Re: Guerilla alternativ Projekt.

Beitrag von brunnema »

Hallo zusammen,
dass mit dem direkten Regeln des Growatts haben wir auf Basis der Null-Einspeisung auch schon probiert.
Leider weis man dann überhaupt nicht mehr, was der Smartmeter liefert bzw. das Haus verbraucht und kann auch nicht wirklich eingreifen, bzw. mögliche Fehler abfangen.

Ich verstehe deine Problembeschreinung nicht ganz.
Macht er far nichts mehr ausser strik 23W einzuspeisen?
Wie misst du das?
Ich vermute ausserdem, dass die gleichzeitige Regelung, Messung und das Reporting dann im Growatt nicht so sauber funktioniert.

Wie kommst du denn an diese Messwerte, sie haben auch keine Grössenangabe und es ist ws auch kein Wert vom Smartmeter, da dieser ja direkt am Growatt hängt. (Master/Slave Kopplung)

Kurzum, ich habe es nach deinem Aufbau, in den Tests auch nicht sauber hinbekommen und wir sind beim Ansatz geblieben, alles über die Solaranzeige zu leiten.
Somit kann man hier dann sauber lesen, loggen, die Werte für die Growatt Produktion errechnen und an diesen übertragen.

Seit Monaten funktioniert das so ziemlich stabil mit doppelter Taktzahl der Solaranzeige, also 2 Durchläufe für 4 Regler pro Minute.
Ein Freund hat ein sehr ähnliches Setup mit HomeAssistant aufgesetzt, was den riessen Vorteil der instant Steuerung bietet, weil man dort keine fixen 6 Regler Slots in der Steuerung folgen muss, kann sein System auch binnen Sekunden jeden Lastwechsel ausgleichen.

Ich werde in Naher Zeit nochmal einen Anlauf unternehmen, den Alten Code mit der Solaranzeige auf die aktuelle Version zu heben, dann muss es alles zur Sichtung und Implementierung in den Standard Code. Somit wäre dann die Steuerung relativ einfach nachzubauen.

Ein weiteres ToDo sund blch Auswertungsübersichten in Grafana und ein Tuning, dass der Growatt schneller und ggf auch höhere Leistungen ausgleichen kann.
VG Martin

artant264
Beiträge: 5
Registriert: Mo 9. Okt 2023, 11:22

Re: Guerilla alternativ Projekt.

Beitrag von artant264 »

Hi brunnema,

Durch die Nutzung vom SDM630 von Growatt, weiß man sehr wohl was das Haus auf allen Phasen verbraucht und der WR regelt das hervorraged, wenn man Solarzellern am WR hängen hat.
Wenn man die Batterie mit konstanter Spannung dran hat, packt er das nicht mehr. Er versucht zu regeln macht aber die ganze Zeit folgendes: https://youtube.com/shorts/CHhpFI5qSS8?feature=share.
Die Null einspeiung funktioniert aber dei NUtzeung der Solar/Baterei ist nicht optimal.

Wenn ich das regisetr 124 mit 1 beschreibe, regelt er nicht mehr so wild. Hat aber dann auch nur 23W ausgabe. (laut dem display des WR aber auch der "shine cloud")

Benutzeravatar
brunnema
Beiträge: 52
Registriert: Di 16. Aug 2022, 10:19
Wohnort: Süd-Hessen
Hat sich bedankt: 7 Mal
Danksagung erhalten: 2 Mal

Re: Guerilla alternativ Projekt.

Beitrag von brunnema »

Wie kommt man an die Werte des SDM und bringt diese in ein Sauberes Monitoring?
Ich denke du nutzt für alles die Shine App und werden dort dann die SDM Werte mitgelockt?
Dann stellt sich mir aber gleich die nächste Frage, wie du da den Bogen zur Solaranzeige spannst, um das alles konsistent in ein System zu brkommen.
Oder nutzt du Solaranzeige überhaupt nicht.
Irgendwie steh ich da auf dem Schlauch, um.dir weiterhelfen zu können.
Was da Growatt intern wie Regelt und weshlab dann der MPPT off nicht greift bzw. da auf einmal nur noch 23W rauskommen, wird dir vermutlich nur Growatt beantworten könmen. Spätestens, wenn du denen erzählst, dass kein PV Modul dran hängt, winken sie wahrscheinlich ab.
Es scheint, als werden dann auch die Smartmeter Werte nicht mehr richtig angenommen, du müsstet ja dann einen Netzbezug des Hauses am Smartmeter feststellen können.
VG Martin.

artant264
Beiträge: 5
Registriert: Mo 9. Okt 2023, 11:22

Re: Guerilla alternativ Projekt.

Beitrag von artant264 »

Es war der Versuch alles über Shine.Server /app zu lösen.
Der SDM von growatt hat ein Strichcode, über diesen lässt er sich in Shine App integrieren. Und er liefert dann die Verbrauchswerte direkt an den WR. Wie gesagt die Nulleinspeisung ohne Speicher kann man damit super realisieren.

Ich habe keine solaranzeige laufen, ich hoffte es ohne externe Steuerung hinzubekommen.

Bin erst bei tieferen Recherche auf solaranzeige.de gestoßen.

Mein Problem ist, dass es die Anlage von meinem 70j Vater ist und 2h von hier liegt, ich will nicht für troubleshooting hin und her pendeln.

Aber ihr hier seid echt überzeugend. Ist es wirklich so easy zu konfigurieren und läuft es so stabil das man es ohne Wartung laufen lassen kann?

Benutzeravatar
brunnema
Beiträge: 52
Registriert: Di 16. Aug 2022, 10:19
Wohnort: Süd-Hessen
Hat sich bedankt: 7 Mal
Danksagung erhalten: 2 Mal

Re: Guerilla alternativ Projekt.

Beitrag von brunnema »

Hallo,
ja ist möglich, Grundsetups vernünftig aufgebaut und angesteuert laufen schon ziemlich stabil.
Es gibt auch eine Datenbankwartungsfunktion in Solaranzeige, die den Langzeitbetrieb vor "DatenmüllI" bewahrt.
Solarheli hat mit mir Zusatzmodule als MiniPV-Steuerung entwickelt, wir schreiben da schon jede Menge Daten, sollte man sich dann aus der Datenbank für ein halbes Jahr alle Daten auf einmal im Dashboard anzeigen lassen, kann das den RPi3 schon kippen.
Hierfür muss ich mich mal noch um eine passende Datenagregierung mit komprimierten Tageswerten für die Historie kümmern.

Im 6 monatigen Pilotenbetrieb hatte ich nun einen unbekannten Hänger, wo auf einmal die influx nicht mehr beschrieben werden konnte, dann war das Logging stehen geblieben.
Vor kurzem habe ich ein Problem festgestellt, als der Akku leer war und nach 5h das BMS (Dali, dass JL BMS finde ich besser) aus ging, fragt die Solaranzeige ständig die nicht aktiven Regler ab und hatte sich auch da mal verstubelt, wegen zu vieler aktiver Scripte... As
Als Lösung, muss man noch Wiederholungen auf max 2-3 Leseversuche pro Durchlauf begrenzen.

Das Interesante für dich, ich meine, es gibt eine implementierte Fernwartung in Solaranzeige, die ich jedoch nicht genau kenne.

Ich habe die Solaranzeige als MiniPV Steuerung jedoch auch wo anders laufen und greife darauf sehr einfach mit einem VPN zu, indem ich auf dem RPi einfach einen Wiregard VPN client installiert habe, der automatisch Nachhause zu meiner Fritzbox einen VPN aufbaut.
In den neuen Fritz Images ist das ja direkt drin und läuft super stabil. Somit kann man mit Solaranzeige alles machen, als wäre sie Zuhause im LAN.
Von Unterwegs (Smartphone/PC etc) kann ich dann auch einfach über einen weiteren VPN Nachhause darauf schauen bzw. zugreifen. Somit sind auch all die Internetthemen des RPI von Tisch.

Ich hoffe bis zum Winter gibts dann auch das fertig implementierte MiniPV Modul in der Solaranzeige.
Es sei aber auch hier vorweg gesagt, dass sas fanze sehr stark von verwendeten Komponenten abhängig ist, also einfach mal irgendetwas zusammenstecken, was dann direkt läuft, wird nicht sauber funktionieren. Wenn man andere Komponenten als im Projekt nutzen möchte, muss man schon die Funktionsweose der Solaranzeige, PHP und Linux ein wenig kennen.

Hoffe die Infos helfen dir/euch weiter.
VG Martin

solarsohn
Beiträge: 4
Registriert: Mi 26. Jul 2023, 09:01

Re: Guerilla alternativ Projekt.

Beitrag von solarsohn »

SolarHeli hat geschrieben:
Mo 15. Aug 2022, 13:23

befehle.ini.php:

Code: Alles auswählen

[Regler48]
  1 = active
  2 = standby
  3 = leistung_###
  4 = gridPower_######


Hier die Ergänzungen in meinem Growatt.php (ohne Gewähr)

Code: Alles auswählen

/***************************************************************************
//  Einen Befehl an den Wechselrichter senden.
//
//
//  Ist noch nicht implementiert! 01/2022
//
***************************************************************************/

if (file_exists($Pfad."/../pipe/".$GeraeteNummer.".befehl.steuerung")) {

    $funktionen->log_schreiben("Steuerdatei '".$GeraeteNummer.".befehl.steuerung' vorhanden----","|- ",7);
    $Inhalt = file_get_contents($Pfad."/../pipe/".$GeraeteNummer.".befehl.steuerung");
    $Befehle = explode("\n",trim($Inhalt));
    $funktionen->log_schreiben("Befehle: ".print_r($Befehle,1),"|- ",7);

    for ($i = 0; $i < count($Befehle); $i++) {

      if ($i >= 6) {
        //  Es werden nur maximal 5 Befehle pro Datei verarbeitet!
        break;
      }
      /*********************************************************************************
      //  In der Datei "befehle.ini.php" müssen alle gültigen Befehle aufgelistet
      //  werden, die man benutzen möchte.
      //  Achtung! Genau darauf achten, dass der Befehl richtig geschrieben wird,
      //  damit das Gerät keinen Schaden nimmt.
      //  curr_6000 ist nur zum Testen ...
      //  Siehe Dokument:  Befehle_senden.pdf
      *********************************************************************************/
      if (file_exists($Pfad."/befehle.ini.php")) {

        $funktionen->log_schreiben("Die Befehlsliste 'befehle.ini.php' ist vorhanden----","|- ",9);
        $INI_File =  parse_ini_file($Pfad.'/befehle.ini.php', true);
        $Regler48 = $INI_File["Regler48"];
        $funktionen->log_schreiben("Befehlsliste: ".print_r($Regler48,1),"|- ",9);

        foreach ($Regler48 as $Template) {
          $Subst = $Befehle[$i];
          $l = strlen($Template);
          for ($p = 1; $p < $l; ++$p) {
            $funktionen->log_schreiben("Template: ".$Template." Subst: ".$Subst." l: ".$l,"|- ",10);
            if ($Template[$p] == "#") {
              $Subst[$p] = "#";
            }
          }
          if ($Template == $Subst) {
            break;
          }
        }
        if ($Template != $Subst) {
          $funktionen->log_schreiben("Dieser Befehl ist nicht zugelassen. ".$Befehle[$i],"|o ",3);
          $funktionen->log_schreiben("Die Verarbeitung der Befehle wird abgebrochen.","|o ",3);
          break;
        }
      }
      else {
        $funktionen->log_schreiben("Die Befehlsliste 'befehle.ini.php' ist nicht vorhanden----","|- ",3);
        break;
      }

      //Befehl zerlegen in Befehl und Wert
      $Teile = explode("_",$Befehle[$i]);
      //  $Teile[0] = Befehl
      //  $Teile[1] = Wert
      $Antwort = "";

      // *** Command activ ***
      if (strtolower($Teile[0]) == "active") {
        $funktionen->log_schreiben("Cmd in: ".$Teile[0],"|- ",6);
      // Inverter aktivieren
        $Befehl["DeviceID"] = $WR_ID;
        $Befehl["BefehlFunctionCode"] = "06";
        $Befehl["RegisterAddress"] = "0000";
        $Befehl["RegisterCount"] = "0001";
        $rc = $funktionen->phocos_pv18_auslesen( $USB1, $Befehl );
      }

      // *** Command standby ***
      if (strtolower($Teile[0]) == "standby") {
        $funktionen->log_schreiben("Cmd in: ".$Teile[0],"|- ",6);
        // Inverter in Standby setzen
        $Befehl["DeviceID"] = $WR_ID;
        $Befehl["BefehlFunctionCode"] = "06";
        $Befehl["RegisterAddress"] = "0000";
        $Befehl["RegisterCount"] = "0000";
        $rc = $funktionen->phocos_pv18_auslesen( $USB1, $Befehl );
      }

      // *** Command leistung [%] ***
      if (strtolower($Teile[0]) == "leistung") {
        // Leistung aus Command auslesen
        $Leistung = $Teile[1];
        $LeistungHex = str_pad(dechex($Leistung),4,"0",STR_PAD_LEFT);
        $funktionen->log_schreiben("Cmd in: ".$Teile[0]." ".$Leistung." (".$LeistungHex." [hex]) ","|- ",6);

        // Leistung an Growatt senden
        $Befehl["DeviceID"] = $WR_ID;
        $Befehl["BefehlFunctionCode"] = "06";
        $Befehl["RegisterAddress"] = "0003"; // Dezimal 3
        $Befehl["RegisterCount"] = $LeistungHex;
        $rc = $funktionen->phocos_pv18_auslesen( $USB1, $Befehl );
      }

      // *** Command GridPower [W] ***
      if (strtolower($Teile[0]) == "gridpower") {

        // Aktuelle Leistung aus Befehl holen
        $gridPower = $Teile[1];

        // Growatt aktuelle PV (Batterie) Spannung auslesen [V]
        $Befehl["DeviceID"] = $WR_ID;
        $Befehl["BefehlFunctionCode"] = "04";
        $Befehl["RegisterAddress"] = "0003"; // Dezimal 3
        $Befehl["RegisterCount"] = "0001";
        $rc = $funktionen->phocos_pv18_auslesen( $USB1, $Befehl );
        $Vbat = hexdec( $rc["data"] ) / 10 -2.5; // Korrektur 2.5V da Wert von Growatt zu hoch

        // Aktuelles Powerlimit von Inverter auslesen [%]
        $Befehl["DeviceID"] = $WR_ID;
        $Befehl["BefehlFunctionCode"] = "03";
        $Befehl["RegisterAddress"] = "0003"; // Dezimal 3
        $Befehl["RegisterCount"] = "0001";
        $rc = $funktionen->phocos_pv18_auslesen( $USB1, $Befehl );
        $GroPower = hexdec( $rc["data"]);

        // Neues Powerlimit berechnen
        $NewGroPower = intval($GroPower + ($gridPower / 6) /2 - 0.5);  // /6 => Watt -> % (600W = 100%) | -0.5 = positive offset

        $Pmax = 100; // Max. Inverterleistung in %

        // Grenzen überprügen und ggf. setzen
        If ($Vbat < 51) { // Reduzierung max. Inverterleistung ab xx Volt
          $Pmax = $Pmax - ($Pmax * ((51 - $Vbat) / 2));    // Reduzierung um 5% je 0.1V
        }   
        if ($NewGroPower > $Pmax) { 
            $NewGroPower = $Pmax;
        }
        if ($NewGroPower < 5) { // Min Inverterleistung 5%
            $NewGroPower = 5;
        }

        $funktionen->log_schreiben("Cmd in: ".$Teile[0]." (".$gridPower."W) (Pwr: ".$GroPower."% -> ".$NewGroPower."% Vbat: ".$Vbat."V  Pmax: ".$Pmax."%)","|- ",6);

      // Neues Powerlimit an Growatt senden [%]
        $Befehl["DeviceID"] = $WR_ID;
        $Befehl["BefehlFunctionCode"] = "06";
        $Befehl["RegisterAddress"] = "0003"; // Dezimal 3
        $Befehl["RegisterCount"] = str_pad(dechex($NewGroPower),4,"0",STR_PAD_LEFT);
        $rc = $funktionen->phocos_pv18_auslesen( $USB1, $Befehl );
      }

      sleep(2);
    }
    $rc = unlink($Pfad."/../pipe/".$GeraeteNummer.".befehl.steuerung");
    if ($rc) {
      $funktionen->log_schreiben("Datei  /../pipe/".$GeraeteNummer.".befehl.steuerung  gelöscht.","    ",9);
    }
}
else {
  $funktionen->log_schreiben("Steuerdatei '".$GeraeteNummer.".befehl.steuerung' nicht vorhanden----","|- ",9);
}
Viele Grüße,
Helmut
Hallo Helmut,
nach einigen erfolglosen Versuchen, Deine Änderungen an der befehle.ini.php und Growatt.php nachzuvollziehen und den für mich relevanten Befehl leistung_XXX bei mir zu implementieren, muss ich mal fragen, ob Du die gesamte Growatt.php veröffentlichen kannst. Ich blicke tatsächlich nicht durch die verschachtelte if-Funktion durch, um nur diesen Befehl für mich zu ergänzen….
Oder plant ihr, bei der MiniPV-Veröffentlichung, alle Funktionen zu implementieren?

Schöne Grüße
Ingo

SolarHeli
Beiträge: 28
Registriert: Mi 5. Jan 2022, 22:31
Wohnort: Bayern
Danksagung erhalten: 9 Mal

Re: Guerilla alternativ Projekt.

Beitrag von SolarHeli »

Hallo Ingo,
ja klar, nachdem die Anlage jetzt einige Zeit stabil läuft, werden wir den Code natürlich veröffentlichen.
Dazu müssen wir allerdings erst unsere Version mit der aktuellen Version der Solaranzeige glattziehen.
Ich werde versuchen mir den Code nachher noch anzuschauen und mich wieder melden.
Viele Grüße,
Helmut

solarsohn
Beiträge: 4
Registriert: Mi 26. Jul 2023, 09:01

Re: Guerilla alternativ Projekt.

Beitrag von solarsohn »

Hallo Helmut,
Vielen Dank für die Unterstützung!
Viel Erfolg bei der weiteren Entwicklung. Ich werde das Projekt intensiv weiter verfolgen! ;-)
Ingo

SolarHeli
Beiträge: 28
Registriert: Mi 5. Jan 2022, 22:31
Wohnort: Bayern
Danksagung erhalten: 9 Mal

Re: Guerilla alternativ Projekt.

Beitrag von SolarHeli »

Hallo Ingo,
auf den ersten Blick habe ich kein Fehler finden.
Leider ist in dem Bereich der Befehle einiges umgestellt, was ich schon vermutet habe und warum ein Filecompare nicht wirklich hilft.
Kannst Du mal Dein Logfile schicken, evtl. ist da etwas zu erkennen.
Viele Grüße,
Helmut

artant264
Beiträge: 5
Registriert: Mo 9. Okt 2023, 11:22

Re: Guerilla alternativ Projekt.

Beitrag von artant264 »

Hallo zusammen,

Nur zu meinem Verständnis:
- Ihr versetzt den Growatt in den DC Modus (Register 124=1)
- gesteuert wir er dann über das setzen von Register 3 zwischen 0 und 100(%)

Dass müsste man doch über die shine.cloud doch simulieren können.
Aber wenn ich das Register 124=1, beschreibe und danach Versuch zu regeln, bleibe ich auf werten 17 bis 27W.

Wo ist mein Denkfehler?

Zurück zu „Balkonkraftwerke ( PV-Kleinanlage DIN VDE 0100-551 / -1 )“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste