This commit is contained in:
Mateusz Gruszczyński committed 2026-10-21 11:27:44 +02:00
1 parent bb5caa769f
commit a679eb5747
25 files changed
+484 -78

No files matched your search

+8
View File
@@ -606,6 +606,14 @@ Important rules:
The returned `Zone` also contains runtime state including sensor readings, resolved/effective setpoints, demand, current preset, manual overrides, local Quick Thermostat ownership, temporary session state, device-manual takeover, control owner/source/reason, lockout timestamps and `created_at`/`updated_at`.
Temperature diagnostics in `GET /api/zones` and zone WebSocket updates:
- `control_temperature_source`: `device`, `external`, `combined`, `device_fallback`, `device_discrepancy_fallback`, `unavailable`.
- `room_sensor_status`: `not_used`, `ok`, `stale`, `error`, `discrepancy` (empty until the first cycle on older persisted zones).
- `heating_sensor_guard_active`: `true` when the thermostat would otherwise fall back to GREE while an automatic heating zone is configured for a Home Assistant room sensor. Automatic heating is paused, pending starts are cancelled, and existing automatic heat is switched OFF when compressor protection permits. The guard clears automatically with a valid room reading. Explicit manual control and GREE-only heating are unchanged.
For a `combined` sensor strategy, the displayed control temperature is GREE × (1 − `external_sensor_weight`) + room × `external_sensor_weight`, rounded to 0.1°C, unless the difference exceeds `max_sensor_difference`. The Web UI provides this explanation in the zone and thermostat temperature help. Home Assistant sample freshness prefers `last_reported` when supplied and otherwise uses `last_updated`.
### `GET /api/zones`
Returns `Zone[]`.
+15 -2
View File
@@ -2,7 +2,7 @@
"openapi": "3.1.0",
"info": {
"title": "GREE Controller API",
"version": "0.16.4",
"version": "0.16.5",
"summary": "Local HTTP/WebSocket API for GREE Controller",
"description": "Local API used by the GREE Controller Web UI and Home Assistant integration.",
"license": {
@@ -6079,7 +6079,7 @@
},
"version": {
"type": "string",
"example": "0.16.4"
"example": "0.16.5"
},
"uptime_seconds": {
"type": "integer",
@@ -7267,6 +7267,19 @@
"null"
]
},
"control_temperature_source": {
"type": "string",
"description": "Temperature source selected this cycle: device, external, combined, device_fallback, device_discrepancy_fallback or unavailable."
},
"room_sensor_status": {
"type": "string",
"enum": ["not_used", "ok", "stale", "error", "discrepancy"],
"description": "Room sensor diagnostic for the latest zone cycle; empty for legacy zones not yet cycled."
},
"heating_sensor_guard_active": {
"type": "boolean",
"description": "True when automatic heating is paused due to an untrusted room sensor; the unit is turned OFF as compressor protection allows."
},
"effective_mode": {
"type": "string"
},