From 1cb28fced6fe00e1e9cd22410df22534fa70e660 Mon Sep 17 00:00:00 2001 From: andig Date: Sun, 25 Feb 2024 16:41:57 +0100 Subject: [PATCH] Huawei: add battery control (#12449) --- .../huawei-sun2000-dongle-powersensor.yaml | 137 ++++++++++++++++-- 1 file changed, 121 insertions(+), 16 deletions(-) diff --git a/templates/definition/meter/huawei-sun2000-dongle-powersensor.yaml b/templates/definition/meter/huawei-sun2000-dongle-powersensor.yaml index 47c24ae33..edcbeaf7e 100644 --- a/templates/definition/meter/huawei-sun2000-dongle-powersensor.yaml +++ b/templates/definition/meter/huawei-sun2000-dongle-powersensor.yaml @@ -101,20 +101,6 @@ render: | type: holding decode: int32nan scale: -1 - soc: - source: modbus - {{- include "modbus" . | indent 2 }} - timeout: {{ .timeout }} - register: - {{- if eq .storageunit "1" }} - address: 37004 - {{- end }} - {{- if eq .storageunit "2" }} - address: 37738 - {{- end }} - type: holding - decode: uint16nan - scale: 0.1 energy: source: modbus {{- include "modbus" . | indent 2 }} @@ -129,7 +115,126 @@ render: | type: holding decode: uint32nan scale: 0.01 - {{- if .capacity }} + soc: + source: modbus + {{- include "modbus" . | indent 2 }} + timeout: {{ .timeout }} + register: + {{- if eq .storageunit "1" }} + address: 37004 + {{- end }} + {{- if eq .storageunit "2" }} + address: 37738 + {{- end }} + type: holding + decode: uint16nan + scale: 0.1 + batterymode: + source: watchdog + timeout: 30s + reset: 1 # reset watchdog on normal + set: + source: switch + switch: + - case: 1 # normal + set: + source: const + value: 0 # stop + set: + source: modbus + {{- include "modbus" . | indent 10 }} + register: + address: 47100 # Forcible charge/discharge + type: write + encode: uint16 + - case: 2 # hold + set: + source: sequence + set: + - source: const + value: 2 # discharge + set: + source: modbus + {{- include "modbus" . | indent 12 }} + register: + address: 47100 # Forcible charge/discharge + type: write + encode: uint16 + - source: const + value: 0 # duration + set: + source: modbus + {{- include "modbus" . | indent 12 }} + register: + address: 47246 # Forcible charge/discharge setting mode + type: write + encode: uint16 + - source: const + value: 1 # Minute + set: + source: modbus + {{- include "modbus" . | indent 12 }} + register: + address: 47083 # Forced charging and discharging period + type: write + encode: uint16 + - source: const + value: 0 # W + set: + source: modbus + {{- include "modbus" . | indent 12 }} + register: + address: 47249 # Forcible discharge power + type: writemultiple + encode: uint32 + - case: 3 # charge + set: + source: sequence + set: + - source: const + value: 1 # charge + set: + source: modbus + {{- include "modbus" . | indent 12 }} + register: + address: 47100 # Forcible charge/discharge + type: write + encode: uint16 + - source: const + value: 0 # duration + set: + source: modbus + {{- include "modbus" . | indent 12 }} + register: + address: 47246 # Forcible charge/discharge setting mode + type: write + encode: uint16 + - source: const + value: 1 # Minute + set: + source: modbus + {{- include "modbus" . | indent 12 }} + register: + address: 47083 # Forced charging and discharging period + type: write + encode: uint16 + - source: const + value: 2500 # W + set: + source: modbus + {{- include "modbus" . | indent 12 }} + register: + address: 47247 # Forcible charge power + type: writemultiple + encode: uint32 + - source: const + value: 1 # Enable + set: + source: modbus + {{- include "modbus" . | indent 12 }} + register: + address: 47087 # Charge from grid + type: writemultiple + encode: uint32 capacity: {{ .capacity }} # kWh {{- end }} - {{- end }}