288 lines
7.8 KiB
YAML
288 lines
7.8 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).
|
|
params:
|
|
- name: usage
|
|
choice: ["grid", "pv", "battery"]
|
|
allinone: true
|
|
- name: modbus
|
|
choice: ["rs485", "tcpip"]
|
|
baudrate: 9600
|
|
- name: timeout
|
|
- name: capacity
|
|
- name: maxacpower
|
|
- name: minsoc
|
|
advanced: true
|
|
- name: maxsoc
|
|
advanced: true
|
|
- name: maxchargepower
|
|
default: 5000
|
|
advanced: true
|
|
required: true
|
|
- name: maxdischargepower
|
|
default: 5000
|
|
advanced: true
|
|
render: |
|
|
type: custom
|
|
{{- if eq .usage "grid" }}
|
|
power:
|
|
source: modbus
|
|
{{- include "modbus" . | indent 2 }}
|
|
timeout: {{ .timeout }}
|
|
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
|
|
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 }}
|
|
timeout: {{ .timeout }}
|
|
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
|
|
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
|
|
# Reset max battery discharge power, set equal to max battery charge power
|
|
- source: go
|
|
script: power
|
|
in:
|
|
- name: power
|
|
type: int
|
|
config:
|
|
source: modbus
|
|
{{- include "modbus" . | indent 12 }}
|
|
register:
|
|
address: 33046 # Battery max charge power
|
|
type: holding
|
|
decode: uint16
|
|
out:
|
|
- name: power
|
|
type: int
|
|
config:
|
|
source: modbus
|
|
{{- include "modbus" . | indent 12 }}
|
|
register:
|
|
address: 33047 # Battery max discharge power
|
|
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
|
|
- 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
|
|
capacity: {{ .capacity }} # kWh
|
|
maxchargepower: {{ .maxchargepower }} # W
|
|
maxdischargepower: {{ .maxdischargepower }} # W
|
|
minsoc: {{ .minsoc }} # %
|
|
maxsoc: {{ .maxsoc }} # %
|
|
{{- end }}
|