290 lines
8.2 KiB
YAML
290 lines
8.2 KiB
YAML
template: sungrow-hybrid
|
|
covers: ["sungrow"]
|
|
products:
|
|
- brand: Sungrow
|
|
description:
|
|
generic: SH Series Hybrid Inverter
|
|
capabilities: ["battery-control"]
|
|
requirements:
|
|
description:
|
|
de: Verbindungen über das WiNet-S-Dongle (WiFi oder LAN) funktionieren nur mit aktueller Firmware. Ältere Versionen liefern nicht alle benötigten Daten (Leistung, Ladestand).
|
|
en: Connections via the WiNet-S dongle (WiFi or LAN) only work with the latest firmware. Older versions do not provide all required data (power, state of charge).
|
|
caveats:
|
|
- description:
|
|
de: Für korrekte Funktion dürfen maximale Lade- und Entladeleistung nicht zu hoch angesetzt werden.
|
|
en: For correct operation, maximum charge and discharge power must not be set too high.
|
|
link: https://github.com/evcc-io/evcc/discussions/23557
|
|
params:
|
|
- name: usage
|
|
choice: ["grid", "pv", "battery"]
|
|
- name: modbus
|
|
choice: ["rs485", "tcpip"]
|
|
baudrate: 9600
|
|
- name: maxacpower
|
|
service: modbus/read?address=5000&type=input&encoding=uint16&scale=100&{modbus}
|
|
- preset: battery-params
|
|
- name: maxchargepower
|
|
service: modbus/read?address=13051&type=holding&encoding=uint16&scale=1&{modbus}
|
|
required: true
|
|
- name: maxdischargepower
|
|
service: modbus/read?address=33047&type=holding&encoding=uint16&scale=10&{modbus}
|
|
required: true
|
|
- name: capacity
|
|
service: modbus/read?address=5638&type=input&encoding=uint16&scale=0.01&resulttype=float&{modbus}
|
|
- name: timeout
|
|
deprecated: true
|
|
render: |
|
|
type: custom
|
|
{{- if eq .usage "grid" }}
|
|
power:
|
|
source: modbus
|
|
{{- include "modbus" . | indent 2 }}
|
|
register:
|
|
type: input
|
|
address: 13009 # Export power
|
|
decode: int32s
|
|
scale: -1
|
|
energy:
|
|
source: modbus
|
|
{{- include "modbus" . | indent 2 }}
|
|
register:
|
|
address: 13036 # Total Import Energy, 0.1kWh
|
|
type: input
|
|
decode: uint32s
|
|
scale: 0.1
|
|
returnenergy:
|
|
source: modbus
|
|
{{- include "modbus" . | indent 2 }}
|
|
register:
|
|
address: 13045 # Total export energy, 0.1kWh
|
|
type: input
|
|
decode: uint32s
|
|
scale: 0.1
|
|
currents:
|
|
- source: calc
|
|
div:
|
|
- source: modbus
|
|
{{- include "modbus" . | indent 4 }}
|
|
register:
|
|
type: input
|
|
address: 5602 # Meter Phase A Active Power, 1W
|
|
decode: int32s
|
|
- source: modbus
|
|
{{- include "modbus" . | indent 4 }}
|
|
register:
|
|
type: input
|
|
address: 5018 # Phase A voltage, 0.1V
|
|
decode: uint16
|
|
scale: 0.1
|
|
- source: calc
|
|
div:
|
|
- source: modbus
|
|
{{- include "modbus" . | indent 4 }}
|
|
register:
|
|
type: input
|
|
address: 5604 # Meter Phase B Active Power, 1W
|
|
decode: int32s
|
|
- source: modbus
|
|
{{- include "modbus" . | indent 4 }}
|
|
register:
|
|
type: input
|
|
address: 5019 # Phase b voltage, 0.1V
|
|
decode: uint16
|
|
scale: 0.1
|
|
- source: calc
|
|
div:
|
|
- source: modbus
|
|
{{- include "modbus" . | indent 4 }}
|
|
register:
|
|
type: input
|
|
address: 5606 # Meter Phase C Active Power, 1W
|
|
decode: int32s
|
|
- source: modbus
|
|
{{- include "modbus" . | indent 4 }}
|
|
register:
|
|
type: input
|
|
address: 5020 # Phase C voltage, 0.1V
|
|
decode: uint16
|
|
scale: 0.1
|
|
{{- end }}
|
|
{{- if eq .usage "pv" }}
|
|
power:
|
|
source: modbus
|
|
{{- include "modbus" . | indent 2 }}
|
|
register:
|
|
address: 5016 # Total DC power
|
|
type: input
|
|
decode: uint32s
|
|
energy:
|
|
source: modbus
|
|
{{- include "modbus" . | indent 2 }}
|
|
register:
|
|
address: 13002 # Total PV Generation, 0.1kWh
|
|
type: input
|
|
decode: uint32s
|
|
scale: 0.1
|
|
maxacpower: {{ .maxacpower }} # W
|
|
{{- end }}
|
|
{{- if eq .usage "battery" }}
|
|
power:
|
|
source: go # handling old and new firmware
|
|
script: |
|
|
res := float64(bp)
|
|
if (brs&0x2 > 0 || bc < 0) && bp >= 0 {
|
|
res = float64(-bp)
|
|
}
|
|
res
|
|
in:
|
|
- name: brs
|
|
type: int
|
|
config:
|
|
source: modbus
|
|
{{- include "modbus" . | indent 6 }}
|
|
register:
|
|
type: input
|
|
address: 13000 # Battery running state
|
|
decode: uint16
|
|
- name: bc
|
|
type: int
|
|
config:
|
|
source: modbus
|
|
{{- include "modbus" . | indent 6 }}
|
|
register:
|
|
type: input
|
|
address: 13020 # Battery current
|
|
decode: int16
|
|
- name: bp
|
|
type: int
|
|
config:
|
|
source: modbus
|
|
{{- include "modbus" . | indent 6 }}
|
|
register:
|
|
type: input
|
|
address: 13021 # Battery power
|
|
decode: int16
|
|
energy:
|
|
source: modbus
|
|
{{- include "modbus" . | indent 2 }}
|
|
register:
|
|
address: 13026 # Total battery discharge energy, 0.1kWh
|
|
type: input
|
|
decode: uint32s
|
|
scale: 0.1
|
|
returnenergy:
|
|
source: modbus
|
|
{{- include "modbus" . | indent 2 }}
|
|
register:
|
|
address: 13040 # Total Charge Energy (Accumulated charge of batteries), 0.1kWh
|
|
type: input
|
|
decode: uint32s
|
|
scale: 0.1
|
|
soc:
|
|
source: modbus
|
|
{{- include "modbus" . | indent 2 }}
|
|
register:
|
|
address: 13022 # Battery level
|
|
type: input
|
|
decode: int16
|
|
scale: 0.1
|
|
batterymode:
|
|
source: switch
|
|
switch:
|
|
- case: 1 # normal
|
|
set:
|
|
source: sequence
|
|
set:
|
|
- source: const
|
|
value: 0xCC # Stop (Default)
|
|
set:
|
|
source: modbus
|
|
{{- include "modbus" . | indent 10 }}
|
|
register:
|
|
address: 13050 # Charge/discharge command
|
|
type: writesingle
|
|
decode: uint16
|
|
- source: const
|
|
value: 0 # Self-consumption mode (Default)
|
|
set:
|
|
source: modbus
|
|
{{- include "modbus" . | indent 10 }}
|
|
register:
|
|
address: 13049 # EMS mode selection
|
|
type: writesingle
|
|
decode: uint16
|
|
- source: const
|
|
value: {{ div .maxdischargepower 10 }}
|
|
set:
|
|
source: modbus
|
|
{{- include "modbus" . | indent 10 }}
|
|
register:
|
|
address: 33047 # Battery max discharge power
|
|
type: writesingle
|
|
decode: uint16
|
|
- case: 2 # hold
|
|
set:
|
|
source: sequence
|
|
set:
|
|
- source: const
|
|
value: 0 # Self-consumption mode (Default)
|
|
set:
|
|
source: modbus
|
|
{{- include "modbus" . | indent 10 }}
|
|
register:
|
|
address: 13049 # EMS mode selection
|
|
type: writesingle
|
|
decode: uint16
|
|
- source: const
|
|
value: 0xCC # Stop (Default)
|
|
set:
|
|
source: modbus
|
|
{{- include "modbus" . | indent 10 }}
|
|
register:
|
|
address: 13050 # Charge/discharge command
|
|
type: writesingle
|
|
decode: uint16
|
|
# Set max battery discharge power, effectively stops discharging
|
|
- source: const
|
|
value: 1 # 0.01kW, min allowed value for register
|
|
set:
|
|
source: modbus
|
|
{{- include "modbus" . | indent 10 }}
|
|
register:
|
|
address: 33047 # Battery max discharge power
|
|
type: writesingle
|
|
decode: uint16
|
|
- case: 3 # charge
|
|
set:
|
|
source: sequence
|
|
set:
|
|
- source: const
|
|
value: 2 # Forced mode (charge/discharge/stop)
|
|
set:
|
|
source: modbus
|
|
{{- include "modbus" . | indent 10 }}
|
|
register:
|
|
address: 13049 # EMS mode
|
|
type: writesingle
|
|
decode: uint16
|
|
- source: const
|
|
value: 0xAA # Charge
|
|
set:
|
|
source: modbus
|
|
{{- include "modbus" . | indent 10 }}
|
|
register:
|
|
address: 13050 # Charge/discharge command
|
|
type: writesingle
|
|
decode: uint16
|
|
- source: const
|
|
value: {{ .maxchargepower }}
|
|
set:
|
|
source: modbus
|
|
{{- include "modbus" . | indent 10 }}
|
|
register:
|
|
address: 13051 # Battery max forced (dis)charge power
|
|
type: writesingle
|
|
decode: uint16
|
|
default:
|
|
source: error
|
|
error: ErrNotAvailable
|
|
{{- include "battery-params" . }}
|
|
{{- end }}
|