Growatt SPH 10000 + OpenInverterGateway

Moin zusammen,

ich hab nochmal eine kleine Bastelei die ich gerne teilen möchte.

Ich setze seit kurzem den Growatt SPH 10000 TL3… ein. Dabei ist mir aufgefallen, dass keiner so wirklich eine schöne “ohne Cloud”-Integration dafür gebaut hat.

Deshalb hab ich mir umgeschaut und hab das “OpenInverterGateway” gefunden, leider ohne saubere Integration, aber das kriegen wir ja hin.
Quelle: GitHub - OpenInverterGateway/OpenInverterGateway: Firmware replacement for Growatt ShineWiFi-S

Die Firmware läuft bei mir auf einem Wemos D1 Mini, einfach direkt per USB am Inverter.

Die Firmware pusht dann die Werte bei mir in den MQTT Broker und wird von dort über HassIO ausgewertet.

Die Konfig für HassIO für die Werte folgt hier:


### Wird abgelegt in der mqtt.yaml oder dier configuration.yaml ###
mqtt:
  sensor:
    - state_topic: "energy/solar"
      unique_id: "growatt_total_production"
      name: "Growatt. Energy Total"
      unit_of_measurement: "kWh"
      value_template: "{{ float(value_json.TotalGenerateEnergy) | round(1) }}"
      device_class: energy
      state_class: total_increasing
      json_attributes_topic: "energy/solar"
      payload_available: "5"
      availability_mode: latest
      availability_topic: "energy/solar"
      availability_template: "{{ value_json.InverterStatus }}"

    - name: "Growatt TodayGenerateEnergy"
      unique_id: "growatt_TodayGenerateEnergy"
      unit_of_measurement: "kWh"
      state_class: "total_increasing"
      device_class: "energy"
      state_topic: "energy/solar"
      value_template: "{{ value_json.TodayGenerateEnergy }}"  
      
    - name: "Growatt PV1EnergyToday"
      unique_id: "growatt_PV1EnergyToday"
      unit_of_measurement: "kWh"
      state_class: "total_increasing"
      device_class: "energy"
      state_topic: "energy/solar"
      value_template: "{{ value_json.PV1EnergyToday }}"  
      
    - name: "Growatt PV2EnergyToday"
      unique_id: "growatt_PV2EnergyToday"
      unit_of_measurement: "kWh"
      state_class: "total_increasing"
      device_class: "energy"
      state_topic: "energy/solar"
      value_template: "{{ value_json.PV2EnergyToday }}"  
      
    - name: "Growatt PV1EnergyTotal"
      unique_id: "growatt_PV1EnergyTotal"
      unit_of_measurement: "kWh"
      state_class: "total_increasing"
      device_class: "energy"
      state_topic: "energy/solar"
      value_template: "{{ value_json.PV1EnergyTotal }}"  
      
    - name: "Growatt PV2EnergyTotal"
      unique_id: "growatt_PV2EnergyToday"
      unit_of_measurement: "kWh"
      state_class: "total_increasing"
      device_class: "energy"
      state_topic: "energy/solar"
      value_template: "{{ value_json.PV2EnergyToday }}"  

    - name: "Growatt PVEnergyTotal"
      unique_id: "growatt_PVEnergyToday"
      unit_of_measurement: "kWh"
      state_class: "total_increasing"
      device_class: "energy"
      state_topic: "energy/solar"
      value_template: "{{ value_json.PVEnergyTotal }}"  

    - name: "Growatt Status"
      unique_id: "growatt_status"
      state_topic: "energy/solar"
      value_template: "{{ value_json.InverterStatus }}"

    - name: "Growatt INVPowerToLocalLoadTotal"
      unique_id: "growatt_INVPowerToLocalLoadTotal"
      unit_of_measurement: "W"
      device_class: "power"
      state_topic: "energy/solar"
      value_template: "{{ value_json.INVPowerToLocalLoadTotal }}"

    - name: "Growatt PVInputPower"
      unique_id: "growatt_PVInputPower"
      unit_of_measurement: "W"
      device_class: "power"
      state_topic: "energy/solar"
      value_template: "{{ value_json.InputPower }}"

    - name: "Growatt PV1InputPower"
      unique_id: "growatt_PV1InputPower"
      unit_of_measurement: "W"
      device_class: "power"
      state_topic: "energy/solar"
      value_template: "{{ value_json.PV1InputPower }}"
      
    - name: "Growatt PV2InputPower"
      unique_id: "growatt_PV2InputPower"
      unit_of_measurement: "W"
      device_class: "power"
      state_topic: "energy/solar"
      value_template: "{{ value_json.PV2InputPower }}"

    - name: "Growatt PV1Voltage"
      unique_id: "growatt_PV1Voltage"
      unit_of_measurement: "V"
      state_class: "measurement"
      device_class: "voltage"
      state_topic: "energy/solar"
      value_template: "{{ value_json.PV1Voltage }}"        

    - name: "Growatt PV2Voltage"
      unique_id: "growatt_PV2Voltage"
      unit_of_measurement: "V"
      state_class: "measurement"
      device_class: "voltage"
      state_topic: "energy/solar"
      value_template: "{{ value_json.PV2Voltage }}"    
      
    - name: "Growatt PV1InputCurrent"
      unique_id: "growatt_PV1InputCurrent"
      unit_of_measurement: "A"
      state_class: "measurement"
      device_class: "current"
      state_topic: "energy/solar"
      value_template: "{{ value_json.PV1InputCurrent }}"        

    - name: "Growatt PV2InputCurrent"
      unique_id: "growatt_PV2InputCurrent"
      unit_of_measurement: "A"
      state_class: "measurement"
      device_class: "current"
      state_topic: "energy/solar"
      value_template: "{{ value_json.PV2InputCurrent }}"    
  
    - name: "Growatt OutputPower"
      unique_id: "growatt_OutputPower"
      unit_of_measurement: "W"
      state_class: "measurement"
      device_class: "power"
      state_topic: "energy/solar"
      value_template: "{{ value_json.OutputPower }}"              
     
    - name: "Growatt GridFrequency"
      unique_id: "growatt_GridFrequency"
      unit_of_measurement: "Hz"
      state_class: "measurement"
      state_topic: "energy/solar"
      device_class: "frequency"
      value_template: "{{ value_json.GridFrequency }}"  

    - name: "Growatt InverterTemperature"
      unique_id: "growatt_InverterTemperature"
      unit_of_measurement: "C"
      state_class: "measurement"
      device_class: "temperature"
      state_topic: "energy/solar"
      value_template: "{{ value_json.InverterTemperature }}"      
     
    - name: "Growatt DischargePower"
      unique_id: "growatt_DischargePower"
      unit_of_measurement: "W"
      device_class: "power"
      state_topic: "energy/solar"
      value_template: "{{ value_json.DischargePower }}"

    - name: "Growatt ChargePower"
      unique_id: "growatt_ChargePower"
      unit_of_measurement: "W"
      device_class: "power"
      state_topic: "energy/solar"
      value_template: "{{ value_json.ChargePower }}" 
      
    - name: "Growatt BatteryVoltage"
      unique_id: "growatt_BatteryVoltage"
      unit_of_measurement: "V"
      state_class: "measurement"
      device_class: "voltage"
      state_topic: "energy/solar"
      value_template: "{{ value_json.BatteryVoltage }}"   

    - name: "Growatt SOC"
      unique_id: "growatt_SOC"
      unit_of_measurement: "%"
      state_class: "measurement"
      device_class: "BATTERY"
      state_topic: "energy/solar"
      value_template: "{{ value_json.SOC }}"  
      
    - name: "Growatt INVPowerToLocalLoad"
      unique_id: "growatt_INVPowerToLocalLoad"
      unit_of_measurement: "W"
      device_class: "power"
      state_topic: "energy/solar"
      value_template: "{{ value_json.INVPowerToLocalLoad }}" 

    - name: "Growatt BatteryTemperature"
      unique_id: "growatt_BatteryTemperature"
      unit_of_measurement: "C"
      state_class: "measurement"
      device_class: "temperature"
      state_topic: "energy/solar"
      value_template: "{{ value_json.BatteryTemperature | multiply(0.1) | round(2) }}"  

    - name: "Growatt EnergyToUserToday"
      unique_id: "growatt_EnergyToUserToday"
      unit_of_measurement: "kWh"
      state_class: "total_increasing"
      device_class: "energy"
      state_topic: "energy/solar"
      value_template: "{{ value_json.EnergyToUserToday }}"  

    - name: "Growatt EnergyToUserTotal"
      unique_id: "growatt_EnergyToUserTotal"
      unit_of_measurement: "kWh"
      state_class: "total_increasing"
      device_class: "energy"
      state_topic: "energy/solar"
      value_template: "{{ value_json.EnergyToUserTotal }}"  


    - name: "Growatt EnergyToGridToday"
      unique_id: "growatt_EnergyToGridToday"
      unit_of_measurement: "kWh"
      state_class: "total_increasing"
      device_class: "energy"
      state_topic: "energy/solar"
      value_template: "{{ value_json.EnergyToGridToday }}"  

    - name: "Growatt EnergyToGridTotal"
      unique_id: "growatt_EnergyToGridTotal"
      unit_of_measurement: "kWh"
      state_class: "total_increasing"
      device_class: "energy"
      state_topic: "energy/solar"
      value_template: "{{ value_json.EnergyToGridTotal }}"  

    - name: "Growatt DischargeEnergyToday"
      unique_id: "growatt_DischargeEnergyToday"
      unit_of_measurement: "kWh"
      state_class: "total_increasing"
      device_class: "energy"
      state_topic: "energy/solar"
      value_template: "{{ value_json.DischargeEnergyToday }}"  

    - name: "Growatt DischargeEnergyTotal"
      unique_id: "growatt_DischargeEnergyTotal"
      unit_of_measurement: "kWh"
      state_class: "total_increasing"
      device_class: "energy"
      state_topic: "energy/solar"
      value_template: "{{ value_json.DischargeEnergyTotal }}"  

    - name: "Growatt ChargeEnergyToday"
      unique_id: "growatt_ChargeEnergyToday"
      unit_of_measurement: "kWh"
      state_class: "total_increasing"
      device_class: "energy"
      state_topic: "energy/solar"
      value_template: "{{ value_json.ChargeEnergyToday }}"  

    - name: "Growatt ChargeEnergyTotal"
      unique_id: "growatt_ChargeEnergyTotal"
      unit_of_measurement: "kWh"
      state_class: "total_increasing"
      device_class: "energy"
      state_topic: "energy/solar"
      value_template: "{{ value_json.ChargeEnergyTotal }}"  

    - name: "Growatt LocalLoadEnergyToday"
      unique_id: "growatt_LocalLoadEnergyToday"
      unit_of_measurement: "kWh"
      state_class: "total_increasing"
      device_class: "energy"
      state_topic: "energy/solar"
      value_template: "{{ value_json.LocalLoadEnergyToday }}"  

    - name: "Growatt LocalLoadEnergyTotal"
      unique_id: "growatt_LocalLoadEnergyTotal"
      unit_of_measurement: "kWh"
      state_class: "total_increasing"
      device_class: "energy"
      state_topic: "energy/solar"
      value_template: "{{ value_json.LocalLoadEnergyTotal }}"  

    - name: "Growatt ACChargeEnergyToday"
      unique_id: "growatt_ACChargeEnergyToday"
      unit_of_measurement: "kWh"
      state_class: "total_increasing"
      device_class: "energy"
      state_topic: "energy/solar"
      value_template: "{{ value_json.ACChargeEnergyToday }}"  

    - name: "Growatt ACChargeEnergyTotal"
      unique_id: "growatt_ACChargeEnergyTotal"
      unit_of_measurement: "kWh"
      state_class: "total_increasing"
      device_class: "energy"
      state_topic: "energy/solar"
      value_template: "{{ value_json.ACChargeEnergyTotal }}"  

Viel Spaß beim Testen, ich freue mich auf Rückmeldungen.

Hm so etwas bzw. das gibt es doch bereits seit ca. 2 Jahren für Growatt WR. Entweder auf Basis von ESPHome, oder man flasht sich eine alternative (MQTT) Firmware wie z.B. die von otti auf den Stick. Nur das otti sein Projekt jetzt umgenannt hat in “OpenInverterGateway”. :slightly_smiling_face: Daher auch “This Repo has moved to” bei GitHub - otti/Growatt_ShineWiFi-S: Firmware replacement for Growatt ShineWiFi-S

D.h. alles was Du an alten Infos zu der alternativen Firmware von otti findest kannst Du quasi 1:1 jetzt auch auf OpenInverterGateway beziehen.

Alternativ kannst Du z.B. auch die alternative (MQTT) Firmware des User hugo.crank aus dem Photovoltaikforum GROWATT MODSTICK / Shine-X Custom FIrmware - Wechselrichter - Photovoltaikforum benutzen.

Edit: Hatte ich ganz vergessen. Ich kenne den aktuellen Stand der otti Firmware nicht, aber der Vorteil bei der ESPHome Lösung ist das Du nicht nur Werte des WR auslesen sondern auch setzen kannst (Max Output Power, Power Mode usw.). Wie gesagt: Ob das mit der otti Firmware inzwischen auch geht weiß ich nicht. Früher war das damit nicht möglich.
Beitrag im HA-Forum zu Growatt und ESPHome: ESPHome modbus Growatt ShineWiFi-S - ESPHome - Home Assistant Community

VG Jim

1 „Gefällt mir“

Sorry, ich hab’s gelesen, grob verstanden, aber würde gern wissen, ob Du mir konkreter sagen kannst, was idealer wäre.

  1. Ich habe 6 Growatt Wechselrichter der SPH, MIN und MIC Serie
  2. Das sind 1x SPH 4600 mit LowVolt DIY Batterie und JK BMS sowie 2x MIN 4600 und MiCs 600 bis 3000
  3. Demnächst ersetzt ein weiterer SPH 4600 einen Min 4600
  4. alle WR haben diesen fabrikmäßigen WiFi S Stick etc.
  5. Mein Kernpunkt aktuell: Steuerung des / der Growatt Hybriden aus HA heraus, also das Setzen von Werten wie z.B. AC Ladezeiten und Betriebsmodi wie auch ggf. “Entladepause”
  6. Entladepause meint, dass der Akku nicht zur Verfügung steht, weil der Netzstrom zu günstig ist. Einzige Krücke, mit der ich das schaffte, war entweder im Growatt das Entladen mit 5% = 230 W zu begrenzen oder im BMS via BT das Entladen zu deaktivieren
  7. Wir haben nur einphasige Wechselrichter, weil wir DIY Akku wollten und neben dem Überschusseinspeiser SPH & Min auch noch einen Volleinspeiser haben, so dass wir so keine Schieflast erzeugen.
  8. Home Assistant läuft auf Pi 4 unter HA OS und die Growatt WR Einbindung erfolgt mit GROTT, also via Wifi Stick, der dann ans HA Addon Grott die Daten schickt, die dort dann per mqtt in HA landen und parallel noch an die Growatt Cloud gehen, die uns nicht stört, sondern eher hilft, von unterwegs einzugreifen.
  9. Es gibt aktuell eine Modbus Verbindung vom Growatt SPH zum Pi, die aber die Daten nicht an HA abliefert, sondern beim HA Addon evcc eingehen. Über eine Integration bzw. mqtt kommen die dann zwar auch in HA an, aber sozusagen nicht nativ.

Ich weiß, eine Menge Details, aber so kannst Du Dir das ganze Bild machen.

Am Ende bin auch dran interessiert, diese anderen Netzwechselrichter der Min und Mic Serie ggf. per modbus direkt anzubinden, da ich mit einer Dimmung der PV Anlage aufgrund der Nutzung von §14a rechnen darf.

Was ist für das Thema SPH die beste Lösung ?
Und kann ich die dann 1:1 auch bei den anderen MiN und MiC anwenden ?

Ich vermute Deine letzte Zeile ist die Antwort, aber bin mir unsicher.

DANKE für Deine Hilfe

sehr hilfreich, danke euch.

ich habe aber aktuell das problem, obwohl unser speicher etc. angeschlossen ist wird es nicht angezeigt weder der status sonst der ladezustand wieso ? was mache ich falsch ?

@networkluk @Jim_OS
woran liegt das, das bei uns der Batteriezustand nicht angezeigt wird ?

Batterie Datenkabel kaputt,
das Ding läuft dann nur über die + / - Leitung. also Spannung und Strom werden gemessen.

DatenKabel durchmessen und dann schauen, ob äußerlich beschädigt, Knick, gequetscht.
Häufig ist auch der Stecker lose, schlecht gecrimpt. Kannst Du selber machen.

Alles kein Problem, außer BMS ist tot.

Was hast Du für Fehlermeldungen?

Hat es je funktioniert`?

Fehlermeldung musste und sollte sein, Kabel kaputt :wink:

Wie,
war es nun das Kabel oder hast Du eine Fehlermeldung “Kabel kaputt” bekommen ?

Ich kenn nur 301 BMS error.

(Beitrag vom Verfasser gelöscht)

Klar,
hab nur das Problem vor 4 Jahren beim 1. SPH gehabt, der nicht wollte.
Ist aber ein einphasiger WR mit Low Volt Batterie.

Ist gelaufen, hatte aber keine Daten im System.

Kannst ja den Support in Frankfurt anrufen.

Meine 3 DIY Akkus mit 46 kWh und 6 Growatt Wechselrichter laufen jedenfalls sauber und da hab ich jedes Problem selber lösen können.

Also such mal schön weiter.

du verstehst mein problem nicht. Ich habe kein hardware problem oder sonstiges.

ich habe den growatt stick geflasht… und der Status Battery State: wird nicht übergeben und SOC: steht immer auf 0% obwohl die batterie bei 50% ist.

Moin

Ich hatte Dir ja bereits in dem anderen Beitrag geschrieben das ich vermute das Du eine MQTT Firmware auf den Stick geflashed hast und vermutlich die von otti.

Wenn das der Fall sein sollte: Das bei Dir keine Batteriewerte angezeigt werden dürfte vermutlich den gleichen Grund haben wie ich bereits @SchliDDa geschrieben habe, sprich die von Dir geflashte Firmware liest die entsprechenden Modbus-Register Deines WR-Modells nicht (richtig) aus. Wie auch schon in dem anderen Beitrag geschrieben ist es bei mir schon lange her das ich mal die otti Firmware genutzt habe und somit bin ich da nicht wirklich auf dem Laufenden, aber ein kurzer Blick in die Github Issues von otti zeigt das es dort div. Diskussionen zu dem Thema fehlende Batteriewerte gibt, incl. Lösungsansätze.

Growatt_Batteriewerte

Ob es jetzt für Dein WR-Modell, das Du hier ja nicht genannt hast, auch einen passenden Lösungsansatz gibt musst Du halt selber mal eruieren.

VG Jim

ok super , jetzt verstehe ich das. DANKE DANKE ich kümmere mich mal.

herzlichen DANK an —> networkluk dein code hat mir bei meiner problemlösung geholfen , ich hatte den missing link zwischen mqtt daten und der entität für das dashboard gesucht :slight_smile:
herzlichen dank und gruss in die runde

rtax