evcc-io/templates/definition/meter/fronius-solarapi-v1.yaml

117 lines
4.2 KiB
YAML

template: fronius-solarapi-v1
products:
- brand: Fronius
description:
generic: Solar API V1
capabilities: ["battery-control"]
requirements:
description:
de: |
Solar API sollte nur als Fallback genutzt werden. Die Integration über Modbus ist bevorzugt.
Benutzername und Passwort werden nur für die aktive Batteriesteuerung benötigt.
**Achtung**: Die aktive Batteriesteuerung sollte nur verwendet werden, wenn keine weiteren Einstellungen für die zeitabhängige Batteriesteuerung in der Wechselrichter-Konfiguration unter "Energiemanagement" - "Batteriemanagement" getätigt wurden, denn bestehende Einstellungen werden überschrieben. Es ist der geeignete Konfigurationspfad auszuwählen!
en: |
Solar API should only be used as fallback. Integration via Modbus is preferred.
Username and password are only required for active battery control.
**Attention**: Active battery control should only be used if no other settings for time-dependent battery control were made in the inverter configuration under "Energy Management" - "Battery Management", as existing settings will be overwritten. Choose corresponding configuration URI!
params:
- name: usage
choice: ["grid", "pv", "battery"]
allinone: true
- name: host
- name: capacity
advanced: true
- name: user
default: customer
description:
de: Benutzername (für aktive Batteriesteuerung)
en: Username (for active battery control)
- name: password
description:
de: Passwort (für aktive Batteriesteuerung)
en: Password (for active battery control)
- name: batteryconfiguri
advanced: true
choice: ["/config", "/api/config"]
default: /config
description:
en: Battery configuration URI
de: Batteriekonfigurations-URI
help:
de: Firmware Versionen ab 1.36.5-1 erfordern /api/config.
en: Firmware starting with 1.36.5-1 requires /api/config.
render: |
type: custom
power:
source: http
uri: http://{{ .host }}/solar_api/v1/GetPowerFlowRealtimeData.fcgi
{{- if eq .usage "grid" }}
jq: if .Body.Data.Site.P_Grid == null then 0 else .Body.Data.Site.P_Grid end
{{- end }}
{{- if eq .usage "pv" }}
jq: if .Body.Data.Site.P_PV == null then 0 else .Body.Data.Site.P_PV end
{{- end }}
{{- if eq .usage "pv" }}
energy:
source: http
uri: http://{{ .host }}/solar_api/v1/GetPowerFlowRealtimeData.fcgi
jq: if .Body.Data.Site.E_Total == null then 0 else .Body.Data.Site.E_Total end
scale: 0.001
{{- end }}
{{- if eq .usage "battery" }}
jq: if .Body.Data.Site.P_Akku == null then 0 else .Body.Data.Site.P_Akku end
soc:
source: http
uri: http://{{ .host }}/solar_api/v1/GetPowerFlowRealtimeData.fcgi
jq: .Body.Data.Inverters."1".SOC
{{- if .password }}
batterymode:
source: switch
switch:
- case: 1 # normal
set:
source: http
uri: http://{{ .host }}{{ .batteryconfiguri }}/timeofuse
method: POST
headers:
- content-type: application/json
auth:
type: digest
user: {{ .user }}
password: {{ .password }}
body: '{"timeofuse":[]}'
- case: 2 # hold
set:
source: http
uri: http://{{ .host }}{{ .batteryconfiguri }}/timeofuse
method: POST
headers:
- content-type: application/json
auth:
type: digest
user: {{ .user }}
password: {{ .password }}
body: '{"timeofuse":[{"Active":true,"Power":0,"ScheduleType":"DISCHARGE_MAX","TimeTable":{"Start":"00:00","End":"23:59"},"Weekdays":{"Mon":true,"Tue":true,"Wed":true,"Thu":true,"Fri":true,"Sat":true,"Sun":true}}]}'
- case: 3 # charge (not implemented -> normal)
set:
source: sequence
set:
- source: http
uri: http://{{ .host }}{{ .batteryconfiguri }}/timeofuse
method: POST
headers:
- content-type: application/json
auth:
type: digest
user: {{ .user }}
password: {{ .password }}
body: '{"timeofuse":[]}'
- source: error
error: ErrNotAvailable
{{- end }}
capacity: {{ .capacity }} # kWh
{{- end }}