diff --git a/templates/definition/meter/saj-h1.yaml b/templates/definition/meter/saj-h1.yaml new file mode 100644 index 000000000..1dbd027ea --- /dev/null +++ b/templates/definition/meter/saj-h1.yaml @@ -0,0 +1,168 @@ +template: saj-h1 +products: + - brand: SAJ + description: + generic: H1 Series Hybrid Solar Inverter +params: + - name: usage + choice: ["grid", "pv", "battery"] + - name: modbus + choice: ["tcpip"] + - name: timeout + default: 5s + - name: capacity + advanced: true +render: | + type: custom + {{- if eq .usage "grid" }} + power: + source: modbus + {{- include "modbus" . | indent 2 }} + timeout: {{ .timeout }} + register: + address: 0x40A1 # SmartMeterTotalGridPowerWatt (undocumented) + type: holding + decode: int16 + energy: + source: modbus + {{- include "modbus" . | indent 2 }} + timeout: {{ .timeout }} + register: + address: 0x40FD # Total_FeedInEnergy + type: holding + decode: uint32 + scale: 0.01 + {{- end }} + {{- if eq .usage "pv" }} + power: + source: modbus + {{- include "modbus" . | indent 2 }} + timeout: {{ .timeout }} + register: + address: 0x40A5 # TotalPVPower + type: holding + decode: int16 + energy: + source: modbus + {{- include "modbus" . | indent 2 }} + timeout: {{ .timeout }} + register: + address: 0x40C5 # Total PVEnergy + type: holding + decode: uint32 + scale: 0.01 + {{- end }} + {{- if eq .usage "battery" }} + power: + source: modbus + {{- include "modbus" . | indent 2 }} + timeout: {{ .timeout }} + register: + address: 0x40A6 # TotalBatteryPower + type: holding + decode: int16 + energy: + source: modbus + {{- include "modbus" . | indent 2 }} + timeout: {{ .timeout }} + register: + address: 0x40D5 # Total BatDisEnergy + type: holding + decode: uint32 + scale: 0.01 + soc: + source: modbus + {{- include "modbus" . | indent 2 }} + timeout: {{ .timeout }} + register: + address: 0x406F # BatEnergyPercent + type: holding + decode: uint16 + scale: 0.01 + batterymode: + source: switch + switch: + - case: 1 # normal + set: + source: sequence + set: + - source: const + value: 0 # self-use mode + set: + source: modbus + {{- include "modbus" . | indent 10 }} + timeout: {{ .timeout }} + register: + address: 0x3247 # AppMode + type: writeholding + decode: uint16 + - case: 2 # hold + set: + source: sequence + set: + - source: const + value: 3 # passive mode + set: + source: modbus + {{- include "modbus" . | indent 10 }} + timeout: {{ .timeout }} + register: + address: 0x3247 # AppMode + type: writeholding + decode: uint16 + - case: 3 # charge + set: + source: sequence + set: + - source: const + value: 1 # time-of-use mode + set: + source: modbus + {{- include "modbus" . | indent 10 }} + timeout: {{ .timeout }} + register: + address: 0x3247 # AppMode + type: writeholding + decode: uint16 + - source: const + value: 1 # enable + set: + source: modbus + {{- include "modbus" . | indent 10 }} + timeout: {{ .timeout }} + register: + address: 0x3604 # Charge time enable control + type: writeholding + decode: uint16 + - source: const + value: 0 # start time (00:00) + set: + source: modbus + {{- include "modbus" . | indent 10 }} + timeout: {{ .timeout }} + register: + address: 0x3606 # Battery first charging time (start) + type: writeholding + decode: uint16 + - source: const + value: 0x173B # end time (23:59) + set: + source: modbus + {{- include "modbus" . | indent 10 }} + timeout: {{ .timeout }} + register: + address: 0x3607 # Battery first charging time (end) + type: writeholding + decode: uint16 + - source: const + value: 0x7F64 # every day (0x7f) at 100% (0x64) + set: + source: modbus + {{- include "modbus" . | indent 10 }} + timeout: {{ .timeout }} + register: + address: 0x3608 # Battery first charging time (power) + type: writeholding + decode: uint16 + capacity: {{ .capacity }} # kWh + {{- end }}