diff --git a/templates/definition/meter/solplanet-ai-dongle.yaml b/templates/definition/meter/solplanet-ai-dongle.yaml index 979dbb046a..b16ccb7b3d 100644 --- a/templates/definition/meter/solplanet-ai-dongle.yaml +++ b/templates/definition/meter/solplanet-ai-dongle.yaml @@ -8,9 +8,20 @@ requirements: de: | Nutzt die lokale HTTP-Schnittstelle des AI-Dongle (z.B. BA121T-30) statt Modbus TCP. Die Seriennummer (isn) des Wechselrichters kann über `http://:8484/getdev.cgi?device=2` ausgelesen werden. + + Die Batteriesteuerung (normal/hold/charge) nutzt fest vorberechnete Modbus-RTU-Befehle, + die über die ebenfalls undokumentierte `fdbg.cgi`-Schnittstelle gesendet werden + ([Hintergrund und weitere Tester in Diskussion #17680](https://github.com/evcc-io/evcc/discussions/17680)). + Da die Befehle fest kodiert sind, ist die Ladeleistung auf 5000 W fixiert. en: | Uses the AI-Dongle local HTTP API (e.g. BA121T-30) instead of Modbus TCP. The inverter serial number (isn) can be read via `http://:8484/getdev.cgi?device=2`. + + Battery control (normal/hold/charge) uses fixed, pre-computed Modbus-RTU commands sent + through the equally undocumented `fdbg.cgi` endpoint + ([background and more testers in discussion #17680](https://github.com/evcc-io/evcc/discussions/17680)). + Because the commands are fixed, charge power is pinned to 5000 W. +capabilities: ["battery-control"] params: - name: usage choice: ["grid", "pv", "battery"] @@ -44,5 +55,53 @@ render: | source: http uri: http://{{ .host }}:8484/getdevdata.cgi?device=4&sn={{ .serial }} jq: .soc + batterymode: + source: switch + switch: + - case: 1 # normal + set: + source: http + uri: http://{{ .host }}:8484/fdbg.cgi + method: POST + timeout: 20s + headers: + Content-Type: application/json + body: '{"data":"0306044f0002390e"}' # write reg 1103 (mode) = 2 (normal) + - case: 2 # hold: custom mode + 0 W + set: + source: sequence + set: + - source: http + uri: http://{{ .host }}:8484/fdbg.cgi + method: POST + timeout: 20s + headers: + Content-Type: application/json + body: '{"data":"0306044f0004b90c"}' # write reg 1103 (mode) = 4 (custom) + - source: http + uri: http://{{ .host }}:8484/fdbg.cgi + method: POST + timeout: 20s + headers: + Content-Type: application/json + body: '{"data":"03060480000088f0"}' # write reg 1152 (setpoint) = 0 W + - case: 3 # charge: custom mode + fixed 5000 W (see requirements) + set: + source: sequence + set: + - source: http + uri: http://{{ .host }}:8484/fdbg.cgi + method: POST + timeout: 20s + headers: + Content-Type: application/json + body: '{"data":"0306044f0004b90c"}' # write reg 1103 (mode) = 4 (custom) + - source: http + uri: http://{{ .host }}:8484/fdbg.cgi + method: POST + timeout: 20s + headers: + Content-Type: application/json + body: '{"data":"03060480ec78c412"}' # write reg 1152 (setpoint) = -5000 W {{- include "battery-params" . }} - {{- end }} + {{- end }} \ No newline at end of file