evcc-io/templates/definition/meter/enphase-modbus.yaml

100 lines
2.6 KiB
YAML

template: enphase-modbus
products:
- brand: Enphase
description:
generic: IQ Gateway (Modbus)
requirements:
description:
en: |
Requires Enphase support to enable modbus functionality on IQ Gateway.
de: |
Erfordert Enphase-Unterstützung, um die Modbus-Funktionalität auf dem IQ Gateway zu aktivieren.
capabilities: ["curtail"]
params:
- name: usage
choice: ["pv"]
- name: modbus
choice: ["tcpip"]
id: 1
- name: maxacpower
service: modbus/read?address=40227&type=holding&encoding=uint16&scale=1&{modbus}
usages: ["pv"]
render: |
type: custom
# sunspec model 701 (DER AC Measurement)
{{- if eq .usage "pv" }}
power:
source: sunspec
{{- include "modbus" . | indent 2 }}
value: 701:W
energy:
source: sunspec
{{- include "modbus" . | indent 2 }}
value: 701:TotWhInj
scale: 0.001
currents:
- source: sunspec
{{- include "modbus" . | indent 4 }}
value: 701:AL1
- source: sunspec
{{- include "modbus" . | indent 4 }}
value: 701:AL2
- source: sunspec
{{- include "modbus" . | indent 4 }}
value: 701:AL3
voltages:
- source: sunspec
{{- include "modbus" . | indent 4 }}
value: 701:VL1
- source: sunspec
{{- include "modbus" . | indent 4 }}
value: 701:VL2
- source: sunspec
{{- include "modbus" . | indent 4 }}
value: 701:VL3
curtail:
source: sequence
set:
- source: sunspec
{{- include "modbus" . | indent 6 }}
value: 704:WMaxLimPct
- source: switch
switch:
- case: 100 # Uncurtailed
set:
source: const
value: 0 # Limit disabled
set:
source: sunspec
{{- include "modbus" . | indent 14 }}
value: 704:WMaxLimPctEna
default:
source: const
value: 1 # Limit enabled
set:
source: sunspec
{{- include "modbus" . | indent 10 }}
value: 704:WMaxLimPctEna
curtailed: # the limit percentage only applies while the limit is enabled
source: go
in:
- name: ena
type: bool
config:
source: sunspec
{{- include "modbus" . | indent 8 }}
value: 704:WMaxLimPctEna
- name: limit
type: float
config:
source: sunspec
{{- include "modbus" . | indent 8 }}
value: 704:WMaxLimPct
script: |
percent := 100
if ena {
percent = int(limit)
}
percent
maxacpower: {{ .maxacpower }}
{{- end }}