This commit is contained in:
Mateusz Gruszczyński
2026-08-27 16:38:51 +02:00
parent 7102d05cb3
commit ba61cb77b1
19 changed files with 406 additions and 109 deletions
@@ -313,7 +313,7 @@ class GreeControllerZoneClimate(CoordinatorEntity[GreeControllerCoordinator], Cl
@property
def hvac_mode(self) -> HVACMode:
zone = self._zone
if not zone.get("enabled", False):
if not zone.get("enabled", False) or zone.get("local_thermostat_power") is False:
return HVACMode.OFF
if zone.get("inherit_house_mode", True):
return HVACMode.AUTO
@@ -329,6 +329,7 @@ class GreeControllerZoneClimate(CoordinatorEntity[GreeControllerCoordinator], Cl
return {
"controller_zone_id": self._zone_id,
"effective_enabled": bool(zone.get("effective_enabled", zone.get("enabled", False))),
"local_thermostat_power": zone.get("local_thermostat_power"),
"effective_mode": zone.get("mode"),
"follows_house_mode": bool(zone.get("inherit_house_mode", True)),
"auto_mode_meaning": "Follow the GREE Controller whole-house heating/cooling mode",
@@ -342,13 +343,13 @@ class GreeControllerZoneClimate(CoordinatorEntity[GreeControllerCoordinator], Cl
async def async_set_hvac_mode(self, hvac_mode: HVACMode) -> None:
if hvac_mode == HVACMode.OFF:
payload = {"enabled": False}
payload = {"power": False}
elif hvac_mode == HVACMode.AUTO:
payload = {"enabled": True, "mode": "house"}
payload = {"power": True, "mode": "house"}
elif hvac_mode == HVACMode.COOL:
payload = {"enabled": True, "mode": "cool"}
payload = {"power": True, "mode": "cool"}
elif hvac_mode == HVACMode.HEAT:
payload = {"enabled": True, "mode": "heat"}
payload = {"power": True, "mode": "heat"}
else:
return
await self.coordinator.async_zone_control(self._zone_id, payload)
@@ -365,8 +366,8 @@ class GreeControllerZoneClimate(CoordinatorEntity[GreeControllerCoordinator], Cl
await self.coordinator.async_zone_control(self._zone_id, {"preset": preset_mode})
async def async_turn_on(self) -> None:
await self.coordinator.async_zone_control(self._zone_id, {"enabled": True})
await self.coordinator.async_zone_control(self._zone_id, {"power": True})
async def async_turn_off(self) -> None:
await self.coordinator.async_zone_control(self._zone_id, {"enabled": False})
await self.coordinator.async_zone_control(self._zone_id, {"power": False})
@@ -87,6 +87,8 @@ class GreeControllerCoordinator(DataUpdateCoordinator[dict[str, dict]]):
expected: dict[str, Any] = {}
if "enabled" in payload:
expected["enabled"] = bool(payload["enabled"])
if "power" in payload:
expected["local_thermostat_power"] = bool(payload["power"])
if "mode" in payload:
mode = str(payload["mode"])
if mode in {"house", "auto"}:
@@ -1,7 +1,7 @@
{
"domain": "gree_controller",
"name": "GREE Controller",
"version": "0.7.9",
"version": "0.7.10",
"config_flow": true,
"integration_type": "hub",
"iot_class": "local_polling",