Add SAJ H1 hybrid inverters (#18843)

This commit is contained in:
h3llrais3r 2025-02-16 16:09:55 +01:00 • committed by GitHub
parent a1094208e5
commit 692b2d0fc1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -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 }}