This commit is contained in:
Mateusz Gruszczyński
2026-09-21 22:58:30 +02:00
parent 3b969c8754
commit d80005de33
33 changed files with 722 additions and 94 deletions
+23 -3
View File
@@ -1,6 +1,6 @@
# GREE Controller API reference
HTTP and WebSocket API for GREE Controller **0.15.14**.
HTTP and WebSocket API for GREE Controller **0.15.15**.
[← Main documentation](../README.md)
@@ -163,6 +163,7 @@ Common statuses:
| POST | `/api/groups/{id}/control` | Group control enable/mode/preset/custom-temperature control. |
| POST | `/api/house/control` | Set global thermostat mode. |
| POST | `/api/house/power` | Bulk ON/OFF for all thermostats and enabled units; no persistent global gate. |
| POST | `/api/house/emergency-stop` | Persistently pause/resume automation; activation sends one-shot OFF to enabled units. |
| POST | `/api/house/preset` | Set/clear whole-house preset override. |
### Schedules and automations
@@ -225,6 +226,7 @@ Common statuses:
| POST | `/api/integrations/home-assistant/house/control` | Restricted house mode. |
| POST | `/api/integrations/home-assistant/house/preset` | Restricted house preset. |
| POST | `/api/integrations/home-assistant/house/power` | Restricted bulk all-thermostat/all-unit power action. |
| POST | `/api/integrations/home-assistant/house/emergency-stop` | Restricted persistent emergency automation pause/resume. |
| POST | `/api/integrations/home-assistant/zones/{id}/control` | Restricted thermostat-zone control. |
---
@@ -241,7 +243,7 @@ Response:
{
"status": "ok",
"name": "gree-controller",
"version": "0.15.14",
"version": "0.15.15",
"uptime_seconds": 1234,
"control_ready": true,
"time": "2026-08-30T06:54:00Z"
@@ -304,7 +306,7 @@ Returns the initial Web UI snapshot:
"control_plan": {"generated_at": "2026-09-04T08:00:00Z", "zones": [], "rules": []},
"control_plan_revision": 42,
"system": {
"version": "0.15.14",
"version": "0.15.15",
"uptime_seconds": 1234,
"auth_required": false,
"control_ready": true,
@@ -845,6 +847,20 @@ Response includes:
}
```
### `POST /api/house/emergency-stop`
```json
{
"active": true
}
```
`true` persistently pauses thermostat/schedule/automation execution, clears stale compressor-protection tasks, and makes a one-shot best-effort OFF request to every enabled unit. The pause survives controller restarts, but startup does **not** replay OFF commands. Manual/direct device control remains available while automation is paused.
`false` releases only the automation safety gate. It does not force devices ON; the controller immediately evaluates current schedules, temperatures and ownership again.
Response includes `active`, `since`, `changed`, `failed`, and `cleared_queues`.
### `POST /api/house/preset`
```json
@@ -1489,6 +1505,10 @@ Same `{ "preset": "auto|comfort|sleep|away" }` semantics.
Same `{ "power": true|false }` semantics.
### `POST /api/integrations/home-assistant/house/emergency-stop`
Same `{ "active": true|false }` emergency-stop semantics as the administrator endpoint.
### `POST /api/integrations/home-assistant/zones/{id}/control`
Same `ZoneControlPatch` thermostat semantics as the normal zone control endpoint. The internal source is recorded as Home Assistant thermostat control.
+127 -2
View File
@@ -2,7 +2,7 @@
"openapi": "3.1.0",
"info": {
"title": "GREE Controller API",
"version": "0.15.14",
"version": "0.15.15",
"summary": "Local HTTP/WebSocket API for GREE Controller",
"description": "Local API used by the GREE Controller Web UI and Home Assistant integration.",
"license": {
@@ -1814,6 +1814,62 @@
}
}
},
"/api/house/emergency-stop": {
"post": {
"tags": [
"House"
],
"summary": "Emergency automation stop",
"description": "Persistently pauses thermostat and automation execution. Activating the stop first stores the safety gate, clears pending compressor-protection tasks, then makes a one-shot best-effort OFF request to every enabled unit. The pause survives controller restarts, but OFF commands are not replayed on startup. Releasing the stop does not force devices ON; current control conditions are evaluated again.",
"operationId": "setHouseEmergencyStop",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HouseEmergencyStopPatch"
}
}
}
},
"security": [
{
"BearerToken": []
},
{
"ApiTokenHeader": []
}
],
"responses": {
"200": {
"description": "Emergency stop state and one-shot OFF result",
"content": {
"application/json": {
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
},
"400": {
"$ref": "#/components/responses/BadRequest"
},
"401": {
"$ref": "#/components/responses/Unauthorized"
},
"502": {
"$ref": "#/components/responses/BadGateway"
},
"500": {
"$ref": "#/components/responses/InternalError"
},
"424": {
"$ref": "#/components/responses/FailedDependency"
}
}
}
},
"/api/house/preset": {
"post": {
"tags": [
@@ -3937,6 +3993,62 @@
}
}
},
"/api/integrations/home-assistant/house/emergency-stop": {
"post": {
"tags": [
"Home Assistant"
],
"summary": "Emergency automation stop from Home Assistant",
"description": "Restricted Home Assistant surface for the same persistent emergency-stop semantics as the administrator endpoint. Activation pauses automatic control across restarts and sends OFF only once; release resumes evaluation without forcing devices ON.",
"operationId": "haSetHouseEmergencyStop",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HouseEmergencyStopPatch"
}
}
}
},
"security": [
{
"BearerToken": []
},
{
"ApiTokenHeader": []
}
],
"responses": {
"200": {
"description": "Emergency stop state and one-shot OFF result",
"content": {
"application/json": {
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
},
"400": {
"$ref": "#/components/responses/BadRequest"
},
"401": {
"$ref": "#/components/responses/Unauthorized"
},
"502": {
"$ref": "#/components/responses/BadGateway"
},
"500": {
"$ref": "#/components/responses/InternalError"
},
"424": {
"$ref": "#/components/responses/FailedDependency"
}
}
}
},
"/api/integrations/home-assistant/zones/{id}/control": {
"post": {
"tags": [
@@ -5967,7 +6079,7 @@
},
"version": {
"type": "string",
"example": "0.15.14"
"example": "0.15.15"
},
"uptime_seconds": {
"type": "integer",
@@ -7412,6 +7524,19 @@
],
"additionalProperties": false
},
"HouseEmergencyStopPatch": {
"type": "object",
"properties": {
"active": {
"type": "boolean",
"example": true
}
},
"required": [
"active"
],
"additionalProperties": false
},
"HousePresetPatch": {
"type": "object",
"properties": {