Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sungrow SH15 Batterie Ladung wird nicht erkannt. #18270

Open
1 task done
Bluppy opened this issue Jan 18, 2025 · 31 comments · May be fixed by #18284
Open
1 task done

Sungrow SH15 Batterie Ladung wird nicht erkannt. #18270

Bluppy opened this issue Jan 18, 2025 · 31 comments · May be fixed by #18284
Assignees
Labels
devices Specific device support

Comments

@Bluppy
Copy link

Bluppy commented Jan 18, 2025

Describe the bug

Hallo zusammen,

ich habe den Sungrow Wechselrichter wie in der Anleitung in meine Konfig übernommen und er wird auch was Stromverbrauch angeht sauber erkannt.

Image

Es wird aber nicht die Batteriepower abgefragt.
Im Homeassistent via Modbus hat es sauber geklappt und funktioniert dort.

Ich weiß nicht ob es ggf. ein Fehler wegen der "neuen" Modelle 15T und 20T der Fehler kommt. Im Forum ließt man nur das einbinden top sonst klappt. Der 15T und 20T hat das Modbus direkt über den WiNet-S2 als Funktion und durch Homeassistent sehe ich ja das es läuft.

Weiß ehrlich gesagt nicht was ich noch machen soll um den Sungrow einzubinden.
Auch die Batterie über ID2 zu wählen habe ich schon versucht. Weil das im WiNet auch noch möglich wäre die Batterie einmal über den Wechselrichter oder eben über die ID2 abzufragen

Steps to reproduce

geht direkt nicht.

Configuration details

app # evcc dump --cfg
[main  ] INFO 2025/01/18 16:12:51 evcc 0.132.1
[main  ] INFO 2025/01/18 16:12:51 using config file: /etc/evcc.yaml
[db    ] INFO 2025/01/18 16:12:51 using sqlite database: /.evcc/evcc.db
[lp-1  ] DEBUG 2025/01/18 16:12:55 charge total import: 7.870kWh

Konfiguration (/etc/evcc.yaml):

# open evcc at http://evcc.local:7070
network:
  schema: http
  host: evcc******* # .local suffix announces the hostname on MDNS
  port: 7070

log: debug
levels:
  cache: debug 

# unique installation id
plant: *****

interval: 30s # control cycle interval

sponsortoken: *****

# sponsors can set telemetry: true to enable anonymous data aggregation
# see https://github.com/evcc-io/evcc/discussions/4554
telemetry: false

meters:
- type: template
  template: sungrow-hybrid 
  id: 1  
  host: 192.168.***.200  
  port: 502  
  usage: grid  
  modbus: tcpip  
  name: grid1
- type: template
  template: sungrow-hybrid 
  id: 1  
  host: 192.168.***.200  
  port: 502  
  usage: pv  
  modbus: tcpip  
  name: pv2
- type: template
  template: sungrow-hybrid 
  id: 1  
  host: 192.168.***.200  
  port: 502  
  usage: battery  
  modbus: tcpip  
  name: battery3

#chargers:
#  - name: wallbox4
#    type: template
#    template: ocpp

chargers:
  - name: wallbox4
    type: template
    template: easee
    user: *****
    password: *****
    charger: EM*******
    timeout: 20s # optional
    authorize: # Steuert ob evcc die Authentifizierung am Charger vornimmt. Vorteil ist ein kontrollierter Ladestart. Nicht kompatibel mit RFID Identifikation von Fahrzeugen. (optional)



vehicles:
- type: template
  template: audi 
  title: Audi Q4****** 
  icon: car  
  user: *****
  password: *****
  vin: *****
  capacity: 77  
  phases: 3  
  cache: 60m  
  mode: pv  
  minCurrent: 6  
  maxCurrent: 16  
  priority: 1  
  name: audi
- type: template
  template: offline 
  title: KIA Ceed SW  
  icon: car  
  capacity: 8  
  phases: 1  
  mode: minpv  
  minCurrent: 6  
  maxCurrent: 16  
  priority: 2  
  name: kia

loadpoints:
- title: Garage
  charger: wallbox4
  mode: off

site:
  title: BergZone
  meters:
    grid: grid1
    pv:
    - pv2
    battery:
    - battery3


Version: `0.132.1`

/app #

Log details

[site  ] DEBUG 2025/01/18 16:03:09 ----
[lp-1  ] DEBUG 2025/01/18 16:03:09 charge power: 0W
[lp-1  ] DEBUG 2025/01/18 16:03:09 charge currents: [0 0 0]A
[site  ] DEBUG 2025/01/18 16:03:09 grid power: 2059W
[site  ] DEBUG 2025/01/18 16:03:09 pv 1 power: 270W
[site  ] DEBUG 2025/01/18 16:03:09 battery 1 power: 0W
[site  ] DEBUG 2025/01/18 16:03:09 grid currents: [1.18 5.55 2.52]A
[site  ] DEBUG 2025/01/18 16:03:09 battery 1 soc: 1%
[site  ] DEBUG 2025/01/18 16:03:09 site power: 2159W
[lp-1  ] DEBUG 2025/01/18 16:03:09 charge total import: 7.870kWh
[lp-1  ] DEBUG 2025/01/18 16:03:09 charger status: A

What type of operating system or environment does evcc run on?

Docker container

Nightly build

  • I have verified that the issue is reproducible with the latest nightly build

Version

0.132.1

@nekronomekron
Copy link

nekronomekron commented Jan 18, 2025

Kann ich mit meiner SH96 Batterie nachvollziehen. Das Register für den Betriebsstatus wird nicht mehr aktualisiert. Eine Lösung ist, die Werte für Battery Voltage und Batterie Current zu verwenden. Entgegen der Doku ist der Strom bei mir mit Vorzeichen, also int16be, nicht uint16be. Damit kann man das gewohnte Verhalten wieder herstellen.

@andig andig added the devices Specific device support label Jan 18, 2025
@andig
Copy link
Member

andig commented Jan 19, 2025

Das Register für den Betriebsstatus wird nicht mehr aktualisiert

Was heisst „nicht mehr“? Ging das mal? Was hast du geändert? Was sagt

evcc meter

und welcher der Werte ist falsch?

@nekronomekron
Copy link

EVCC liest den Betriebsstatus im Register 13000 aus. Hier wird mit einer Bitmaske der Status ermittelt, ob geladen oder entladen wird. Ich lese in einem privaten Projekt auch den Batteriestatus aus und hab mich an EVCC orientiert, das hat bisher funktioniert. Vor kurzem gab es anscheinend ein automatisches Update, seit dem wird das Betriebsstatus Register nicht mehr aktualisiert und bleibt auf 0.

power:
    source: calc
    mul:
    - source: calc
      abs:
        source: modbus
        {{- include "modbus" . | indent 6 }}
        timeout: {{ .timeout }}
        register:
          type: input
          address: 13021 # Battery power
          decode: int16
    - source: calc
      add:
      - source: modbus
        {{- include "modbus" . | indent 6 }}
        register:
          type: input
          address: 13000 # Battery running state
          decode: bool16
          bitmask: 2 # Charging
        scale: -1
      - source: modbus
        {{- include "modbus" . | indent 6 }}
        register:
          type: input
          address: 13000 # Battery running state
          decode: bool16
          bitmask: 4 # Discharging

Das heisst, das Ergebnis für die bool16 Werte ist IMMER 0 und multipliziert damit die aktuelle Leistung, EVCC liest also für die Leistung einfach 0.

Die Lösung ist, die aktuelle Spannung und den aktuellen Strom auszulesen und diese zu multiplizieren. Entgegen der Doku ist der Strom-Parameter Vorzeichenbehaftet, man muss also nicht auf den Betriebsstatus gehen.

{
    "modifier": "mul",
    "values": [
        {
            "address": 13019,
            "size": 1,
            "datatype": "uint16be",
            "scale": 0.1
        },

        {
            "address": 13020,
            "size": 1,
            "datatype": "int16be",
            "scale": -0.1
        }
    ]
}

@andig
Copy link
Member

andig commented Jan 19, 2025

Ok, also von Sungrow kaputt gemacht. Wissen wir, ob das alle Modelle betrifft? Magst Du einen PR machen?

/cc @naltatis kannst Du das bestätigen?

@nekronomekron
Copy link

Ok, also von Sungrow kaputt gemacht. Wissen wir, ob das alle Modelle betrifft? Magst Du einen PR machen?

Ob das alle betrifft kann ich leider nicht zu 100% sagen, ich denke aber ja, da die Hybrid WR bei Sungrow von der Schnittstelle her bisher auch gleich waren. Die HV-Batterien von Sungrow sind im Kern auch nur das gleiche Modul, nur mal oder weniger oft gestapelt.

Klar, ich erstell einen PR (wird mein erster, ich hoffe ich mach nichts falsch)

@andig
Copy link
Member

andig commented Jan 19, 2025

Tip: Du kannst die Tempaltedatei einfach hier in GH bearbeiten und daraus den PR erzeugen- dafür brauchts keine lokale Installation. Vielen Dank!

@nekronomekron nekronomekron linked a pull request Jan 19, 2025 that will close this issue
@Bluppy
Copy link
Author

Bluppy commented Jan 19, 2025

Das hört sich ja gut als lösung an. Doofe frage wo finde ich die EVCC Program Files im Dockercontainer? Würde gerne mal den Code Change der YAML datei bei mir ausprobieren und finde die sungrow-hybrid.yaml nicht.

@Funkymaddox
Copy link

Funkymaddox commented Jan 19, 2025

Habe einen SH20T mit SBH150.
Das Thema Register 13000 (adressiert 13001) ist bei Sungrow leider groß. Im PV Forum gibts dazu in zwei Topics lange Posts von mir incl Fehlerbilder, Erklärung und co.

Bei mir lief bis vor 3 Tagen meistens das Reg 13000 noch, und der Fehler mit dem Wert "0" trat nur 3-4 mal am Tag für einige Minuten auf. Dass er komplett bei "0" blieb war nicht der fall!

Ende vom Lied: WiNet-S2 Dongle war bei mir der Flaschenhals. Ob die Hardware der Flaschenhals ist oder ein FW Update helfen kann bleibt offen. Wie du bei der Lösung unten nachlesen kannst: RS485toETH Adapter am Loggerport is the way to go!

Problem:
https://www.photovoltaikforum.com/thread/206458-sungrow-sammelthread-shxxt-15-25kva-mit-sbh100-400-batterie/?postID=4096709#post4096709

Doktorarbeit Vorbereitung:
https://www.photovoltaikforum.com/thread/166134-daten-lesen-vom-sungrow-wechselrichtern-modbus/?postID=4096908#post4096908
https://www.photovoltaikforum.com/thread/166134-daten-lesen-vom-sungrow-wechselrichtern-modbus/?postID=4097065#post4097065
https://www.photovoltaikforum.com/thread/166134-daten-lesen-vom-sungrow-wechselrichtern-modbus/?postID=4099248#post4099248

Fehlerbeweis:
https://www.photovoltaikforum.com/thread/166134-daten-lesen-vom-sungrow-wechselrichtern-modbus/?postID=4101906#post4101906

Lösung:
https://www.photovoltaikforum.com/thread/206458-sungrow-sammelthread-shxxt-15-25kva-mit-sbh100-400-batterie/?postID=4124036#post4124036

Erklärung Waveshare:
https://www.photovoltaikforum.com/thread/206458-sungrow-sammelthread-shxxt-15-25kva-mit-sbh100-400-batterie/?postID=4124625#post4124625

@andig
Copy link
Member

andig commented Jan 19, 2025

Auf rs485 gelten also die alten Register?

@zachelnet
Copy link
Contributor

zachelnet commented Jan 19, 2025

@nekronomekron
bezüglich deine Änderung ist diese für die neue Hybrid Wechslrichter SHxT Serie oder funktioniert diese auf der alte SHxRT Serie. Zu not müssten wir zwei verschiede Templates bauen.

@Funkymaddox
Copy link

Funkymaddox commented Jan 19, 2025

Bild von heute, 19.01.25 21:21
Entladung der Batterie wird normal angezeigt. Schätze also Ja, RS485 Output unverändert.
Oben steht leider nur "vor Kurzen geändert". Bis zum 16.01.25 hatte ich beides für ca. eine Woche parallel laufen.
EVCC via WiNet-S2 Dongle und ein Tablet mit ioBroker über RS485 Adapter zum Auslesen der Register.
Bei beiden war bis zum 16.01. nie permanent der Wert "0". Bei EVCC über den Dongle trat der Fehler mehrmals täglich für 10-25 Minuten auf, über RS485 nie die "0"! Heute, sprich seit 17.01. EVCC über RS485, keinerlei Probleme in den Anzeigen, auch bei Batterie Ladung!

EVCC 0.132.1
SH20T .28
WiNet-S2 .16

Image

@zachelnet
Copy link
Contributor

zachelnet commented Jan 19, 2025

Das hört sich ja gut als lösung an. Doofe frage wo finde ich die EVCC Program Files im Dockercontainer? Würde gerne mal den Code Change der YAML datei bei mir ausprobieren und finde die sungrow-hybrid.yaml nicht.

um Änderung zu übernehmen muss du ein neuen Container bauen:

git clone https://github.com/evcc-io/evcc.git
cd evcc
make docker
#alternative
podman build . # -t evcc:build # mit t kannst du einen eigen Tag vergeben

fürs binary

make

Die yaml für sungrow-hybrid findes du unter templates/definition/meter/sungrow-hybrid.yaml

@nekronomekron
Copy link

@zachelnet Ich hab einen SH8.0RT mit Firmware Version SAPPHIRE-H_01011.95.03.

Ich hoffe dass die neuen Parameter auch mit dem neuen Wechselrichter funktionieren, dann müssen nicht zwei Templates her.
Den Weg über das native Interface hab ich auch schon gelesen, der ist bei meinem WR aber ne richtige Zicke (da bin ich auch nicht alleine..). Bei zuvielen Anfragen stürzt er ab, kappt einfach die Verbindung, ist im Netz nicht zu finden.. Winet-S hat da bis jetzt am stabilsten funktioniert. Die Register sollten aber direkt am WR und über Winet-S identisch sein. Wenn die Berechnung über V*A über Winet-S funktioniert, dann sollte es am WR klappen. Das wäre ideal.

@zachelnet
Copy link
Contributor

zachelnet commented Jan 19, 2025

@nekronomekron hab auch ein SH8.0RT,
ich test mal dein Change an beide Ports und gibt dann bescheid. Die Frage ist wie es mit ältern Firmware-Versionen aussieht.

hab selbst die aktuellste Firmware:
WINET: WINET-SV200.001.00.P030
MDSP: SAPPHIRE-H_03011.95.03

@zachelnet
Copy link
Contributor

@nekronomekron also bei mir Klapps auch an beiden Ports, die frage ist wie es bei den WINETS2 und SH_T aussieht

@zachelnet
Copy link
Contributor

zachelnet commented Jan 20, 2025

@zachelnet Ich hab einen SH8.0RT mit Firmware Version SAPPHIRE-H_01011.95.03.

Ich hoffe dass die neuen Parameter auch mit dem neuen Wechselrichter funktionieren, dann müssen nicht zwei Templates her. Den Weg über das native Interface hab ich auch schon gelesen, der ist bei meinem WR aber ne richtige Zicke (da bin ich auch nicht alleine..). Bei zuvielen Anfragen stürzt er ab, kappt einfach die Verbindung, ist im Netz nicht zu finden.. Winet-S hat da bis jetzt am stabilsten funktioniert. Die Register sollten aber direkt am WR und über Winet-S identisch sein. Wenn die Berechnung über V*A über Winet-S funktioniert, dann sollte es am WR klappen. Das wäre ideal.

Die frage ist nur wie mit den alten Wechselricht umgehen, (einfach übergehen ist auch keine Lösung bevor noch weiter issues eröffnet werden). Dazu gabs auch eine discousion #17461 (comment), deswegen hatte ich es damals es mit abs gelöst, aber wenn bei der neuer Serie mit Registrie 13000 problem gibt, sollte wir uns überlegen wie wir diese lösen.

  • per seperates template,
  • per if else entsprech das template gestallten. Die Frage wäre wie die unterschiedliche Firmware-Versionen zu unterscheiden wäre.
  • warte bis sungrow dies gepatch hat (kann ein bischen dauern) und eine neue Firmware für WiNetS2 rausgebracht hat

@nekronomekron
Copy link

Das kann leider sehr gut sein, dass die Änderung mit dem letzten Update kam und vor dem Update das Register für den Batteriestrom noch uint16 ist und damit für die Kalkulation unbrauchbar.

Leider kann ich das nicht testen, hier bräuchten wir kurz jemanden mit einer älteren Firmware (das Update kam erst vor ca. 1 Woche auf meinen WR).

Ich denke die Firmware Version wird man nicht automatisch ermitteln können. Sollten sich die Register unterscheiden, wird man 2 Templates benötigen die der User manuell wählen muss.

@wapman1979
Copy link

ich könnte ggf. testen.
meine fw sollte noch nicht aktualisiert sein:
MDSP-Softwareversion: PEARL-H_03011.01.21
und M_WiNet-S2_V01_V01_A

@naltatis
Copy link
Member

@wapman1979 hier ist der PR mit der Änderung: #18284

@wapman1979
Copy link

@naltatis @andig @nekronomekron @zachelnet @Funkymaddox @Bluppy
tatütata es funktioniert (endlich) wunderbar auf meinem SH15T :-)

Image

den "Scale" Wert in Zeile 130 hatte ich nicht geändert, also "0.1"
Image

das ist ein issue, das seit einiger zeit immer wieder aufkommt:
bsp: #10690 oder hier von mir: #15915
Ich denke, da würden sich einige sungrow SHXXT user freuen, wenn man das stable bekommen könnte.

@premultiply
Copy link
Member

Ich denke, da würden sich einige sungrow SHXXT user freuen, wenn man das stable bekommen könnte.

Da müsstest du dich wohl eher an Sungrow halten.

Es fällt hier schwer den Überblick zu behalten angesichts der sich stetig ändernden Firmwarefunktion hinsichtlich der Batterieleistung.

@Funkymaddox
Copy link

Ich bin ganz ehrlich: Habe den Überblick verloren. Keine Ahnung, wo das Problem lag, wie der Stand ist und warum überhaupt dieses Topic existiert.
Bei mir (SH20T, sollte identisch zu SH15T sein) lief die Batterie(ent)ladungserkennung seitens EVCC mit WiNetS2 Dongle und auch mit RS485 Adapter schon seit Inbetriebnahme Nov24. Bei WiNetS2 gab es nur temporäre, kurze selbst lösende, "Aufhänger" und der Adapter liefert einfach hochfrequenter, stabilere und fehlerfreie Werte.

Bei Issue #10690 gehts um den SHxxRT...
Eigentlich warte ich nun nur darauf, dass irgendwas an EVCC verändert wird und es dadurch bei mir am Sh20T nicht mehr geht... :D
Aber schön, dass es nun auch bei dir geht.

@wapman1979
Copy link

Mir scheint es so, als ob sungrow schon langezeit mit der modbus ausgabe, der doku dazu, etc murkst.
mit der shxxt serie haben sie winet-s2 ist ganz neu entwickelt, inkl. 3x modbus am lan.
wobei das mit dem Reg 13000 nicht mehr so wie bei den SHxxRTs geklappt hat. außer man ist über einen rs485 adpater gegangen. eigentlich stand das sogar in der doku, dass Reg 13000 am WiNet.S2 beim SHxxT anders konfiguriert sind.

evcc hat das nicht geändert, weil das sungrow-hybrid.yaml auch für die alte SHxxRT genutzt wird und auf den (sicherlich vielen installierten) SHxxRT Modellen hat es mit den Charge/discharge (über den LAN am WL) funktioniert.
Jetzt mit der latest Firmware, hat sungrow das Verhalten des WL LAN an den SHxxRT an den des WiNet-S2 für die SHxxT Serie angepasst.

Es wird sicherlich SHxxRT Nutzer geben, die bewusst die firmeware nicht upgraden, weil es aktuell stabil läuft.
@andig & @nekronomekron daher denke ich, sollte man in Erwägung ziehen, eine zweite Config Datei zu nutzen

  • Die sungrow-hybrid.yaml mit der bisherigen Reg 13000, für die SHxxRT Geräte bis zur FW vor der aktuellsten.
  • Eine sungrow-hybrid-new.yaml: mit den änderungen des PR Sungrow: fix battery charge/discharge power #18284 die gilt dann für alle SHxxT und die SHxxRTs mit der neuen FW.

Man muss selber aktiv werden, wenn man die neue Config nutzen muss/will.
Etwa wenn man das SHxxRTs Upgrade bekommen hat.
Ansonsten bleibt alles beim Alten.

@zachelnet
Copy link
Contributor

@wapman1979 sehe ich genauso dass es auf ein zweites Template hinausläuft,

@nekronomekron
Copy link

"Das ist der Weg" würde ein berühmter Kopfgeldjäger jetzt sagen. Denke auch dass es nicht ohne 2 Templates gehen wird. Über Modbus hab ich keinen Weg gefunden, die FW Version auslesen zu können.

@naltatis
Copy link
Member

Für den Fall, dass wir wirklich ein zweites Template machen (aus Nutzersicht immer echt doof) müssten wir ja erklären wie man rausfindet ob man das "alte" oder das "neue" Template nehmen muss. Mir ist das gerade noch nicht klar genug. Gerade weil hier ja der Anschluss und(!) die Firmware-Version eine Rolle spielt. Könnt ihr das einmal so konkret wie möglich zusammenfassen.

Altes Template nutzen, wenn ...

@zachelnet
Copy link
Contributor

zachelnet commented Jan 27, 2025

@naltatis denk folgendes würde es gut erklären:

  • altes Template nur noch für SHxxRT WR bei ältere Firmware also (älter als WINET-SV200.001.00.P030)
  • Neues Template für beide WR-Serien
    • SHxxT (neue Serie) WiNet-S2 Dongle
    • SHxxRT (alte Serie) mit der Firmware ab WINET-SV200.001.00.P030 (ca. Jan. 2025) aufwärts

@nekronomekron, @wapman1979, @Funkymaddox: Was haltet ihr von der Erklärung, habt ihr noch etwas hinzu zu fügen?

@andig
Copy link
Member

andig commented Jan 27, 2025

fwiw: beim letzten Template-Gen-War kam am Ende -gen2 als neuer Name raus ohne Erläuterung wann es einzusetzen sei weil es schlicht niemand wusste...

@nekronomekron
Copy link

@nekronomekron, @wapman1979, @Funkymaddox: Was haltet ihr von der Erklärung, habt ihr noch etwas hinzu zu fügen?

Find ich gut. Man könnte in die Doku mit aufnehmen zuerst die neue Version zu verwenden und sollte die Batterie nicht ausgelesen werden können auf ein Firmwareupdate hinweise oder eben das "alte" Template zu verwenden. In diesem Fall kann man den Unterschied klar benennen: Wird die Batterie nicht ausgelesen, dann das andere Template verwenden und nochmal versuchen.

@zachelnet
Copy link
Contributor

@andig ein Template-Gen-War will ich hier nicht anzetteln. Mit "-gen2" kann ich gut leben.

@wapman1979
Copy link

wapman1979 commented Jan 27, 2025

Das hört sich doch nach einen guten Plan an 👍 Lag mir quasi identisch auf der Zunge.
„- gen2“ hört sich auch gut an und bietet Spielraum nach oben.

Go for it!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
devices Specific device support
Projects
None yet
Development

Successfully merging a pull request may close this issue.

8 participants