Marstek: add discharge and optimise batterymode (#32571)
This commit is contained in:
parent
35ed5e5b91
commit
8cf5a44a32
3 changed files with 194 additions and 302 deletions
188
templates/definition/meter/marstek-batterymode.tpl
Normal file
188
templates/definition/meter/marstek-batterymode.tpl
Normal file
|
|
@ -0,0 +1,188 @@
|
|||
{{- define "marstek-batterymode" }}
|
||||
batterymode:
|
||||
source: switch
|
||||
switch:
|
||||
- case: 1 # normal
|
||||
set:
|
||||
source: sequence
|
||||
set:
|
||||
# Restore Max Charge Power
|
||||
- source: const
|
||||
value: {{ .maxchargepower }}
|
||||
set:
|
||||
source: modbus
|
||||
{{- include "modbus" . | indent 10 }}
|
||||
register:
|
||||
address: 44002 # Max Charge Power
|
||||
type: writesingle
|
||||
decode: uint16
|
||||
# Enable RS485 Control Mode
|
||||
- source: const
|
||||
value: 21930
|
||||
set:
|
||||
source: modbus
|
||||
{{- include "modbus" . | indent 10 }}
|
||||
register:
|
||||
address: 42000 # RS485 Control Mode = Enabled
|
||||
type: writesingle
|
||||
decode: uint16
|
||||
# Set User Work Mode
|
||||
- source: const
|
||||
value: {{ .work_mode_normal }}
|
||||
set:
|
||||
source: modbus
|
||||
{{- include "modbus" . | indent 10 }}
|
||||
register:
|
||||
address: 43000 # User Work Mode
|
||||
type: writesingle
|
||||
decode: uint16
|
||||
# Disable RS485 Control Mode
|
||||
- source: const
|
||||
value: 21947
|
||||
set:
|
||||
source: modbus
|
||||
{{- include "modbus" . | indent 10 }}
|
||||
register:
|
||||
address: 42000 # RS485 Control Mode = Disabled
|
||||
type: writesingle
|
||||
decode: uint16
|
||||
- case: 2 # hold
|
||||
set:
|
||||
source: sequence
|
||||
set:
|
||||
# Enable RS485 Control Mode
|
||||
- source: const
|
||||
value: 21930
|
||||
set:
|
||||
source: modbus
|
||||
{{- include "modbus" . | indent 10 }}
|
||||
register:
|
||||
address: 42000 # RS485 Control Mode = Enabled
|
||||
type: writesingle
|
||||
decode: uint16
|
||||
# Set Force Charge/Discharge to Stop
|
||||
- source: const
|
||||
value: 0
|
||||
set:
|
||||
source: modbus
|
||||
{{- include "modbus" . | indent 10 }}
|
||||
register:
|
||||
address: 42010 # Force Charge/Discharge = Stop
|
||||
type: writesingle
|
||||
decode: uint16
|
||||
# Do not disable RS485 Control Mode because it will reset the device and let it charge/discharge again
|
||||
- case: 3 # charge
|
||||
set:
|
||||
source: sequence
|
||||
set:
|
||||
# Enable RS485 Control Mode
|
||||
- source: const
|
||||
value: 21930
|
||||
set:
|
||||
source: modbus
|
||||
{{- include "modbus" . | indent 10 }}
|
||||
register:
|
||||
address: 42000 # RS485 Control Mode = Enabled
|
||||
type: writesingle
|
||||
decode: uint16
|
||||
# Set Force Charge/Discharge to Charge
|
||||
- source: const
|
||||
value: 1
|
||||
set:
|
||||
source: modbus
|
||||
{{- include "modbus" . | indent 10 }}
|
||||
register:
|
||||
address: 42010 # Force Charge/Discharge = Charge
|
||||
type: writesingle
|
||||
decode: uint16
|
||||
# Set Forcible Charge Power
|
||||
- source: const
|
||||
value: {{ .maxchargepower }}
|
||||
set:
|
||||
source: modbus
|
||||
{{- include "modbus" . | indent 10 }}
|
||||
register:
|
||||
address: 42020 # Forcible Charge Power
|
||||
type: writesingle
|
||||
decode: uint16
|
||||
# Do not disable RS485 Control Mode because it will reset the device and let it charge/discharge again
|
||||
- case: 4 # holdcharge -> no charging, discharging allowed
|
||||
set:
|
||||
source: sequence
|
||||
set:
|
||||
# Set Max Charge Power to 0 to prevent charging
|
||||
- source: const
|
||||
value: 0
|
||||
set:
|
||||
source: modbus
|
||||
{{- include "modbus" . | indent 10 }}
|
||||
register:
|
||||
address: 44002 # Max Charge Power
|
||||
type: writesingle
|
||||
decode: uint16
|
||||
# Enable RS485 Control Mode
|
||||
- source: const
|
||||
value: 21930
|
||||
set:
|
||||
source: modbus
|
||||
{{- include "modbus" . | indent 10 }}
|
||||
register:
|
||||
address: 42000 # RS485 Control Mode = Enabled
|
||||
type: writesingle
|
||||
decode: uint16
|
||||
# Set User Work Mode
|
||||
- source: const
|
||||
value: {{ .work_mode_normal }}
|
||||
set:
|
||||
source: modbus
|
||||
{{- include "modbus" . | indent 10 }}
|
||||
register:
|
||||
address: 43000 # User Work Mode
|
||||
type: writesingle
|
||||
decode: uint16
|
||||
# Disable RS485 Control Mode
|
||||
- source: const
|
||||
value: 21947
|
||||
set:
|
||||
source: modbus
|
||||
{{- include "modbus" . | indent 10 }}
|
||||
register:
|
||||
address: 42000 # RS485 Control Mode = Disabled
|
||||
type: writesingle
|
||||
decode: uint16
|
||||
# Do not disable RS485 Control Mode because it will reset the device and let it charge/discharge again
|
||||
- case: 5 # discharge -> forced discharge to grid (feed-in arbitrage)
|
||||
set:
|
||||
source: sequence
|
||||
set:
|
||||
# Enable RS485 Control Mode
|
||||
- source: const
|
||||
value: 21930
|
||||
set:
|
||||
source: modbus
|
||||
{{- include "modbus" . | indent 10 }}
|
||||
register:
|
||||
address: 42000 # RS485 Control Mode = Enabled
|
||||
type: writesingle
|
||||
decode: uint16
|
||||
# Set Force Charge/Discharge to Discharge
|
||||
- source: const
|
||||
value: 2
|
||||
set:
|
||||
source: modbus
|
||||
{{- include "modbus" . | indent 10 }}
|
||||
register:
|
||||
address: 42010 # Force Charge/Discharge = Discharge
|
||||
type: writesingle
|
||||
decode: uint16
|
||||
# Set Forcible Discharge Power
|
||||
- source: const
|
||||
value: {{ .maxdischargepower }}
|
||||
set:
|
||||
source: modbus
|
||||
{{- include "modbus" . | indent 10 }}
|
||||
register:
|
||||
address: 42021 # Forcible Discharge Power
|
||||
type: writesingle
|
||||
decode: uint16
|
||||
{{- end }}
|
||||
|
|
@ -30,6 +30,8 @@ params:
|
|||
help:
|
||||
de: Für erzwungenes Laden des Speichers. Venus A 1200 W, Venus D 2200 W
|
||||
en: For forced charging of the battery. Venus A 1200 W, Venus D 2200 W
|
||||
- name: maxdischargepower
|
||||
required: true
|
||||
- name: work_mode_normal
|
||||
default: 1
|
||||
advanced: true
|
||||
|
|
@ -98,156 +100,6 @@ render: |
|
|||
address: 32104 # Battery SOC (%)
|
||||
type: holding
|
||||
decode: uint16
|
||||
batterymode:
|
||||
source: switch
|
||||
switch:
|
||||
- case: 1 # normal
|
||||
set:
|
||||
source: sequence
|
||||
set:
|
||||
# Restore Max Charge Power
|
||||
- source: const
|
||||
value: {{ .maxchargepower }}
|
||||
set:
|
||||
source: modbus
|
||||
{{- include "modbus" . | indent 10 }}
|
||||
register:
|
||||
address: 44002 # Max Charge Power
|
||||
type: writesingle
|
||||
decode: uint16
|
||||
# Enable RS485 Control Mode
|
||||
- source: const
|
||||
value: 21930
|
||||
set:
|
||||
source: modbus
|
||||
{{- include "modbus" . | indent 10 }}
|
||||
register:
|
||||
address: 42000 # RS485 Control Mode = Enabled
|
||||
type: writesingle
|
||||
decode: uint16
|
||||
# Set User Work Mode
|
||||
- source: const
|
||||
value: {{ .work_mode_normal }}
|
||||
set:
|
||||
source: modbus
|
||||
{{- include "modbus" . | indent 10 }}
|
||||
register:
|
||||
address: 43000 # User Work Mode
|
||||
type: writesingle
|
||||
decode: uint16
|
||||
# Disable RS485 Control Mode
|
||||
- source: const
|
||||
value: 21947
|
||||
set:
|
||||
source: modbus
|
||||
{{- include "modbus" . | indent 10 }}
|
||||
register:
|
||||
address: 42000 # RS485 Control Mode = Disabled
|
||||
type: writesingle
|
||||
decode: uint16
|
||||
- case: 2 # hold
|
||||
set:
|
||||
source: sequence
|
||||
set:
|
||||
# Enable RS485 Control Mode
|
||||
- source: const
|
||||
value: 21930
|
||||
set:
|
||||
source: modbus
|
||||
{{- include "modbus" . | indent 10 }}
|
||||
register:
|
||||
address: 42000 # RS485 Control Mode = Enabled
|
||||
type: writesingle
|
||||
decode: uint16
|
||||
# Set Force Charge/Discharge to Stop
|
||||
- source: const
|
||||
value: 0
|
||||
set:
|
||||
source: modbus
|
||||
{{- include "modbus" . | indent 10 }}
|
||||
register:
|
||||
address: 42010 # Force Charge/Discharge = Stop
|
||||
type: writesingle
|
||||
decode: uint16
|
||||
# Do not disable RS485 Control Mode because it will reset the device and let it charge/discharge again
|
||||
- case: 3 # charge
|
||||
set:
|
||||
source: sequence
|
||||
set:
|
||||
# Enable RS485 Control Mode
|
||||
- source: const
|
||||
value: 21930
|
||||
set:
|
||||
source: modbus
|
||||
{{- include "modbus" . | indent 10 }}
|
||||
register:
|
||||
address: 42000 # RS485 Control Mode = Enabled
|
||||
type: writesingle
|
||||
decode: uint16
|
||||
# Set Force Charge/Discharge to Charge
|
||||
- source: const
|
||||
value: 1
|
||||
set:
|
||||
source: modbus
|
||||
{{- include "modbus" . | indent 10 }}
|
||||
register:
|
||||
address: 42010 # Force Charge/Discharge = Charge
|
||||
type: writesingle
|
||||
decode: uint16
|
||||
# Set Forcible Charge Power
|
||||
- source: const
|
||||
value: {{ .maxchargepower }}
|
||||
set:
|
||||
source: modbus
|
||||
{{- include "modbus" . | indent 10 }}
|
||||
register:
|
||||
address: 42020 # Forcible Charge Power
|
||||
type: writesingle
|
||||
decode: uint16
|
||||
# Do not disable RS485 Control Mode because it will reset the device and let it charge/discharge again
|
||||
- case: 4 # holdcharge -> no charging, discharging allowed
|
||||
set:
|
||||
source: sequence
|
||||
set:
|
||||
# Set Max Charge Power to 0 to prevent charging
|
||||
- source: const
|
||||
value: 0
|
||||
set:
|
||||
source: modbus
|
||||
{{- include "modbus" . | indent 10 }}
|
||||
register:
|
||||
address: 44002 # Max Charge Power
|
||||
type: writesingle
|
||||
decode: uint16
|
||||
# Enable RS485 Control Mode
|
||||
- source: const
|
||||
value: 21930
|
||||
set:
|
||||
source: modbus
|
||||
{{- include "modbus" . | indent 10 }}
|
||||
register:
|
||||
address: 42000 # RS485 Control Mode = Enabled
|
||||
type: writesingle
|
||||
decode: uint16
|
||||
# Set User Work Mode
|
||||
- source: const
|
||||
value: {{ .work_mode_normal }}
|
||||
set:
|
||||
source: modbus
|
||||
{{- include "modbus" . | indent 10 }}
|
||||
register:
|
||||
address: 43000 # User Work Mode
|
||||
type: writesingle
|
||||
decode: uint16
|
||||
# Disable RS485 Control Mode
|
||||
- source: const
|
||||
value: 21947
|
||||
set:
|
||||
source: modbus
|
||||
{{- include "modbus" . | indent 10 }}
|
||||
register:
|
||||
address: 42000 # RS485 Control Mode = Disabled
|
||||
type: writesingle
|
||||
decode: uint16
|
||||
{{- include "marstek-batterymode" . }}
|
||||
{{- include "battery-params" . }}
|
||||
{{- end }}
|
||||
|
|
|
|||
|
|
@ -40,6 +40,8 @@ params:
|
|||
default: 100
|
||||
- name: maxchargepower
|
||||
default: 2500
|
||||
- name: maxdischargepower
|
||||
default: 800
|
||||
- name: work_mode_normal
|
||||
default: 1
|
||||
advanced: true
|
||||
|
|
@ -90,155 +92,5 @@ render: |
|
|||
decode: uint16
|
||||
scale: 1
|
||||
{{- end }}
|
||||
batterymode:
|
||||
source: switch
|
||||
switch:
|
||||
- case: 1 # normal
|
||||
set:
|
||||
source: sequence
|
||||
set:
|
||||
# Restore Max Charge Power
|
||||
- source: const
|
||||
value: {{ .maxchargepower }}
|
||||
set:
|
||||
source: modbus
|
||||
{{- include "modbus" . | indent 10 }}
|
||||
register:
|
||||
address: 44002 # Max Charge Power
|
||||
type: writesingle
|
||||
decode: uint16
|
||||
# Enable RS485 Control Mode
|
||||
- source: const
|
||||
value: 21930
|
||||
set:
|
||||
source: modbus
|
||||
{{- include "modbus" . | indent 10 }}
|
||||
register:
|
||||
address: 42000 # RS485 Control Mode = Enabled
|
||||
type: writesingle
|
||||
decode: uint16
|
||||
# Set User Work Mode
|
||||
- source: const
|
||||
value: {{ .work_mode_normal }}
|
||||
set:
|
||||
source: modbus
|
||||
{{- include "modbus" . | indent 10 }}
|
||||
register:
|
||||
address: 43000 # User Work Mode
|
||||
type: writesingle
|
||||
decode: uint16
|
||||
# Disable RS485 Control Mode
|
||||
- source: const
|
||||
value: 21947
|
||||
set:
|
||||
source: modbus
|
||||
{{- include "modbus" . | indent 10 }}
|
||||
register:
|
||||
address: 42000 # RS485 Control Mode = Disabled
|
||||
type: writesingle
|
||||
decode: uint16
|
||||
- case: 2 # hold
|
||||
set:
|
||||
source: sequence
|
||||
set:
|
||||
# Enable RS485 Control Mode
|
||||
- source: const
|
||||
value: 21930
|
||||
set:
|
||||
source: modbus
|
||||
{{- include "modbus" . | indent 10 }}
|
||||
register:
|
||||
address: 42000 # RS485 Control Mode = Enabled
|
||||
type: writesingle
|
||||
decode: uint16
|
||||
# Set Force Charge/Discharge to Stop
|
||||
- source: const
|
||||
value: 0
|
||||
set:
|
||||
source: modbus
|
||||
{{- include "modbus" . | indent 10 }}
|
||||
register:
|
||||
address: 42010 # Force Charge/Discharge = Stop
|
||||
type: writesingle
|
||||
decode: uint16
|
||||
# Do not disable RS485 Control Mode because it will reset the device and let it charge/discharge again
|
||||
- case: 3 # charge
|
||||
set:
|
||||
source: sequence
|
||||
set:
|
||||
# Enable RS485 Control Mode
|
||||
- source: const
|
||||
value: 21930
|
||||
set:
|
||||
source: modbus
|
||||
{{- include "modbus" . | indent 10 }}
|
||||
register:
|
||||
address: 42000 # RS485 Control Mode = Enabled
|
||||
type: writesingle
|
||||
decode: uint16
|
||||
# Set Force Charge/Discharge to Charge
|
||||
- source: const
|
||||
value: 1
|
||||
set:
|
||||
source: modbus
|
||||
{{- include "modbus" . | indent 10 }}
|
||||
register:
|
||||
address: 42010 # Force Charge/Discharge = Charge
|
||||
type: writesingle
|
||||
decode: uint16
|
||||
# Set Forcible Charge Power
|
||||
- source: const
|
||||
value: {{ .maxchargepower }}
|
||||
set:
|
||||
source: modbus
|
||||
{{- include "modbus" . | indent 10 }}
|
||||
register:
|
||||
address: 42020 # Forcible Charge Power
|
||||
type: writesingle
|
||||
decode: uint16
|
||||
# Do not disable RS485 Control Mode because it will reset the device and let it charge/discharge again
|
||||
- case: 4 # holdcharge -> no charging, discharging allowed
|
||||
set:
|
||||
source: sequence
|
||||
set:
|
||||
# Set Max Charge Power to 0 to prevent charging
|
||||
- source: const
|
||||
value: 0
|
||||
set:
|
||||
source: modbus
|
||||
{{- include "modbus" . | indent 10 }}
|
||||
register:
|
||||
address: 44002 # Max Charge Power
|
||||
type: writesingle
|
||||
decode: uint16
|
||||
# Enable RS485 Control Mode
|
||||
- source: const
|
||||
value: 21930
|
||||
set:
|
||||
source: modbus
|
||||
{{- include "modbus" . | indent 10 }}
|
||||
register:
|
||||
address: 42000 # RS485 Control Mode = Enabled
|
||||
type: writesingle
|
||||
decode: uint16
|
||||
# Set User Work Mode
|
||||
- source: const
|
||||
value: {{ .work_mode_normal }}
|
||||
set:
|
||||
source: modbus
|
||||
{{- include "modbus" . | indent 10 }}
|
||||
register:
|
||||
address: 43000 # User Work Mode
|
||||
type: writesingle
|
||||
decode: uint16
|
||||
# Disable RS485 Control Mode
|
||||
- source: const
|
||||
value: 21947
|
||||
set:
|
||||
source: modbus
|
||||
{{- include "modbus" . | indent 10 }}
|
||||
register:
|
||||
address: 42000 # RS485 Control Mode = Disabled
|
||||
type: writesingle
|
||||
decode: uint16
|
||||
{{- include "marstek-batterymode" . }}
|
||||
{{- include "battery-params" . }}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue