evcc-io/templates/definition/meter/saj-h1.yaml

156 lines
4 KiB
YAML

template: saj-h1
products:
- brand: SAJ
description:
generic: H1 Series Hybrid Solar Inverter
params:
- name: usage
choice: ["grid", "pv", "battery"]
- name: modbus
choice: ["tcpip"]
- preset: battery-params
- name: timeout
deprecated: true
render: |
type: custom
{{- if eq .usage "grid" }}
power:
source: modbus
{{- include "modbus" . | indent 2 }}
register:
address: 0x40A1 # SmartMeterTotalGridPowerWatt (undocumented)
type: holding
decode: int16
energy:
source: modbus
{{- include "modbus" . | indent 2 }}
register:
address: 0x40FD # Total_FeedInEnergy
type: holding
decode: uint32
scale: 0.01
{{- end }}
{{- if eq .usage "pv" }}
power:
source: modbus
{{- include "modbus" . | indent 2 }}
register:
address: 0x40A5 # TotalPVPower
type: holding
decode: int16
energy:
source: modbus
{{- include "modbus" . | indent 2 }}
register:
address: 0x40C5 # Total PVEnergy
type: holding
decode: uint32
scale: 0.01
{{- end }}
{{- if eq .usage "battery" }}
power:
source: modbus
{{- include "modbus" . | indent 2 }}
register:
address: 0x40A6 # TotalBatteryPower
type: holding
decode: int16
energy:
source: modbus
{{- include "modbus" . | indent 2 }}
register:
address: 0x40D5 # Total BatDisEnergy
type: holding
decode: uint32
scale: 0.01
soc:
source: modbus
{{- include "modbus" . | indent 2 }}
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 }}
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 }}
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 }}
register:
address: 0x3247 # AppMode
type: writeholding
decode: uint16
- source: const
value: 1 # enable
set:
source: modbus
{{- include "modbus" . | indent 10 }}
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 }}
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 }}
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 }}
register:
address: 0x3608 # Battery first charging time (power)
type: writeholding
decode: uint16
default:
source: error
error: ErrNotAvailable
{{- include "battery-params" . }}
{{- end }}