Optimizer: add static grid export limit (#32541)

This commit is contained in:
andig 2026-08-07 12:58:14 +02:00 • committed by GitHub
parent f2c45b0d84
commit 3093539af5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
25 changed files with 373 additions and 44 deletions

View file

@ -151,6 +151,7 @@ func (s *HTTPd) RegisterSiteHandlers(site site.API) {
"batterymodedelete": {"DELETE", "/batterymode", updateBatteryMode(site)},
"prioritysoc": {"POST", "/prioritysoc/{value:[0-9.]+}", floatHandler(site.SetPrioritySoc, site.GetPrioritySoc)},
"residualpower": {"POST", "/residualpower/{value:-?[0-9.]+}", floatHandler(site.SetResidualPower, site.GetResidualPower)},
"gridexportlimit": {"POST", "/gridexportlimit/{value:[0-9.]+}", floatHandler(site.SetGridExportLimit, site.GetGridExportLimit)},
"solaradjusted": {"POST", "/solaradjusted/{value:[01truefalse]+}", boolHandler(pass(site.SetSolarAdjusted), site.GetSolarAdjusted)},
"smartcost": {"POST", "/smartcostlimit/{value:-?[0-9.]+}", updateSmartCostLimit(site, smartCostLimit)},
"smartcostdelete": {"DELETE", "/smartcostlimit", updateSmartCostLimit(site, smartCostLimit)},

View file

@ -1258,6 +1258,26 @@
}
}
},
"/gridexportlimit/{power}": {
"post": {
"operationId": "setGridExportLimit",
"summary": "Set grid export limit",
"description": "Set the static grid export power limit in W used as optimizer constraint. 0 disables the limit. An active HEMS curtailment takes precedence.",
"tags": [
"general"
],
"parameters": [
{
"$ref": "#/components/parameters/power"
}
],
"responses": {
"200": {
"$ref": "#/components/responses/NumberResult"
}
}
}
},
"/solaradjusted/{enable}": {
"post": {
"operationId": "setSolarAdjusted",
@ -4842,6 +4862,10 @@
"description": "Configured grid operating point in W. Positive values maintain grid import.",
"type": "number"
},
"gridExportLimit": {
"description": "Static grid export power limit in W used as optimizer constraint, 0 = disabled. An active HEMS curtailment takes precedence.",
"type": "number"
},
"greenShareHome": {
"description": "Share of green energy in home consumption, between 0 and 1.",
"type": "number"

20
server/mcp/openapi.md generated
View file

@ -436,6 +436,26 @@ call setGlobalSmartFeedInPriorityLimit {
}
```
## setGridExportLimit
Set the static grid export power limit in W used as optimizer constraint. 0 disables the limit. An active HEMS curtailment takes precedence.
**Tags:** general
**Arguments:**
| Name | Type | Description |
|------|------|-------------|
| power | number | Power in W |
**Example call:**
```json
call setGridExportLimit {
"power": 2500
}
```
## assignLoadpointVehicle
Assigns vehicle to loadpoint.

View file

@ -218,6 +218,7 @@ func (m *MQTT) listenSiteSetters(topic string, site site.API) error {
{"batteryGridDischarge", boolSetter(site.SetBatteryGridDischarge)},
{"prioritySoc", floatSetter(site.SetPrioritySoc)},
{"residualPower", floatSetter(site.SetResidualPower)},
{"gridExportLimit", floatSetter(site.SetGridExportLimit)},
{"solarAdjusted", boolSetter(pass(site.SetSolarAdjusted))},
{"smartCostLimit", floatPtrSetter(pass(func(limit *float64) {
for _, lp := range site.Loadpoints() {

View file

@ -100,6 +100,9 @@ components:
residualPower:
description: Configured grid operating point in W. Positive values maintain grid import.
type: number
gridExportLimit:
description: Static grid export power limit in W used as optimizer constraint, 0 = disabled. An active HEMS curtailment takes precedence.
type: number
greenShareHome:
description: Share of green energy in home consumption, between 0 and 1.
type: number

View file

@ -752,6 +752,18 @@ paths:
responses:
"200":
$ref: "#/components/responses/NumberResult"
/gridexportlimit/{power}:
post:
operationId: setGridExportLimit
summary: Set grid export limit
description: "Set the static grid export power limit in W used as optimizer constraint. 0 disables the limit. An active HEMS curtailment takes precedence."
tags:
- general
parameters:
- $ref: "#/components/parameters/power"
responses:
"200":
$ref: "#/components/responses/NumberResult"
/solaradjusted/{enable}:
post:
operationId: setSolarAdjusted