Implement Airzone Cloud Zone climate support (#100792)
* Implement Airzone Cloud Zone climate support Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> * airzone_cloud: add entity naming Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> * airzone_cloud: implement requested changes Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> --------- Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
This commit is contained in:
parent
c59404b5bc
commit
3178eac9cc
6 changed files with 669 additions and 27 deletions
|
@ -3,6 +3,7 @@
|
|||
from typing import Any
|
||||
from unittest.mock import patch
|
||||
|
||||
from aioairzone_cloud.common import OperationMode
|
||||
from aioairzone_cloud.const import (
|
||||
API_ACTIVE,
|
||||
API_AZ_AIDOO,
|
||||
|
@ -24,8 +25,33 @@ from aioairzone_cloud.const import (
|
|||
API_IS_CONNECTED,
|
||||
API_LOCAL_TEMP,
|
||||
API_META,
|
||||
API_MODE,
|
||||
API_MODE_AVAIL,
|
||||
API_NAME,
|
||||
API_OLD_ID,
|
||||
API_POWER,
|
||||
API_RANGE_MAX_AIR,
|
||||
API_RANGE_MIN_AIR,
|
||||
API_RANGE_SP_MAX_AUTO_AIR,
|
||||
API_RANGE_SP_MAX_COOL_AIR,
|
||||
API_RANGE_SP_MAX_DRY_AIR,
|
||||
API_RANGE_SP_MAX_EMERHEAT_AIR,
|
||||
API_RANGE_SP_MAX_HOT_AIR,
|
||||
API_RANGE_SP_MAX_STOP_AIR,
|
||||
API_RANGE_SP_MAX_VENT_AIR,
|
||||
API_RANGE_SP_MIN_AUTO_AIR,
|
||||
API_RANGE_SP_MIN_COOL_AIR,
|
||||
API_RANGE_SP_MIN_DRY_AIR,
|
||||
API_RANGE_SP_MIN_EMERHEAT_AIR,
|
||||
API_RANGE_SP_MIN_HOT_AIR,
|
||||
API_RANGE_SP_MIN_STOP_AIR,
|
||||
API_RANGE_SP_MIN_VENT_AIR,
|
||||
API_SP_AIR_AUTO,
|
||||
API_SP_AIR_COOL,
|
||||
API_SP_AIR_DRY,
|
||||
API_SP_AIR_HEAT,
|
||||
API_SP_AIR_STOP,
|
||||
API_SP_AIR_VENT,
|
||||
API_STAT_AP_MAC,
|
||||
API_STAT_CHANNEL,
|
||||
API_STAT_QUALITY,
|
||||
|
@ -166,12 +192,29 @@ def mock_get_device_status(device: Device) -> dict[str, Any]:
|
|||
return {
|
||||
API_ACTIVE: False,
|
||||
API_ERRORS: [],
|
||||
API_MODE: OperationMode.HEATING.value,
|
||||
API_MODE_AVAIL: [
|
||||
OperationMode.AUTO.value,
|
||||
OperationMode.COOLING.value,
|
||||
OperationMode.HEATING.value,
|
||||
OperationMode.VENTILATION.value,
|
||||
OperationMode.DRY.value,
|
||||
],
|
||||
API_SP_AIR_AUTO: {API_CELSIUS: 22, API_FAH: 72},
|
||||
API_SP_AIR_COOL: {API_CELSIUS: 22, API_FAH: 72},
|
||||
API_SP_AIR_HEAT: {API_CELSIUS: 22, API_FAH: 72},
|
||||
API_RANGE_MAX_AIR: {API_CELSIUS: 30, API_FAH: 86},
|
||||
API_RANGE_SP_MAX_AUTO_AIR: {API_CELSIUS: 30, API_FAH: 86},
|
||||
API_RANGE_SP_MAX_COOL_AIR: {API_CELSIUS: 30, API_FAH: 86},
|
||||
API_RANGE_SP_MAX_HOT_AIR: {API_CELSIUS: 30, API_FAH: 86},
|
||||
API_RANGE_MIN_AIR: {API_CELSIUS: 15, API_FAH: 59},
|
||||
API_RANGE_SP_MIN_AUTO_AIR: {API_CELSIUS: 18, API_FAH: 64},
|
||||
API_RANGE_SP_MIN_COOL_AIR: {API_CELSIUS: 18, API_FAH: 64},
|
||||
API_RANGE_SP_MIN_HOT_AIR: {API_CELSIUS: 16, API_FAH: 61},
|
||||
API_POWER: False,
|
||||
API_IS_CONNECTED: True,
|
||||
API_WS_CONNECTED: True,
|
||||
API_LOCAL_TEMP: {
|
||||
API_CELSIUS: 21,
|
||||
API_FAH: 70,
|
||||
},
|
||||
API_LOCAL_TEMP: {API_CELSIUS: 21, API_FAH: 70},
|
||||
API_WARNINGS: [],
|
||||
}
|
||||
if device.get_id() == "system1":
|
||||
|
@ -181,6 +224,13 @@ def mock_get_device_status(device: Device) -> dict[str, Any]:
|
|||
API_OLD_ID: "error-id",
|
||||
},
|
||||
],
|
||||
API_MODE: OperationMode.COOLING.value,
|
||||
API_MODE_AVAIL: [
|
||||
OperationMode.COOLING.value,
|
||||
OperationMode.HEATING.value,
|
||||
OperationMode.VENTILATION.value,
|
||||
OperationMode.DRY.value,
|
||||
],
|
||||
API_IS_CONNECTED: True,
|
||||
API_WS_CONNECTED: True,
|
||||
API_WARNINGS: [],
|
||||
|
@ -189,24 +239,67 @@ def mock_get_device_status(device: Device) -> dict[str, Any]:
|
|||
return {
|
||||
API_ACTIVE: True,
|
||||
API_HUMIDITY: 30,
|
||||
API_MODE: OperationMode.COOLING.value,
|
||||
API_MODE_AVAIL: [
|
||||
OperationMode.COOLING.value,
|
||||
OperationMode.HEATING.value,
|
||||
OperationMode.VENTILATION.value,
|
||||
OperationMode.DRY.value,
|
||||
],
|
||||
API_RANGE_MAX_AIR: {API_CELSIUS: 30, API_FAH: 86},
|
||||
API_RANGE_SP_MAX_COOL_AIR: {API_FAH: 86, API_CELSIUS: 30},
|
||||
API_RANGE_SP_MAX_DRY_AIR: {API_FAH: 86, API_CELSIUS: 30},
|
||||
API_RANGE_SP_MAX_EMERHEAT_AIR: {API_CELSIUS: 30, API_FAH: 86},
|
||||
API_RANGE_SP_MAX_HOT_AIR: {API_CELSIUS: 30, API_FAH: 86},
|
||||
API_RANGE_SP_MAX_STOP_AIR: {API_FAH: 86, API_CELSIUS: 30},
|
||||
API_RANGE_SP_MAX_VENT_AIR: {API_FAH: 86, API_CELSIUS: 30},
|
||||
API_RANGE_MIN_AIR: {API_CELSIUS: 15, API_FAH: 59},
|
||||
API_RANGE_SP_MIN_COOL_AIR: {API_CELSIUS: 18, API_FAH: 64},
|
||||
API_RANGE_SP_MIN_DRY_AIR: {API_CELSIUS: 18, API_FAH: 64},
|
||||
API_RANGE_SP_MIN_EMERHEAT_AIR: {API_FAH: 59, API_CELSIUS: 15},
|
||||
API_RANGE_SP_MIN_HOT_AIR: {API_FAH: 59, API_CELSIUS: 15},
|
||||
API_RANGE_SP_MIN_STOP_AIR: {API_FAH: 59, API_CELSIUS: 15},
|
||||
API_RANGE_SP_MIN_VENT_AIR: {API_FAH: 59, API_CELSIUS: 15},
|
||||
API_SP_AIR_COOL: {API_CELSIUS: 24, API_FAH: 75},
|
||||
API_SP_AIR_DRY: {API_CELSIUS: 24, API_FAH: 75},
|
||||
API_SP_AIR_HEAT: {API_CELSIUS: 20, API_FAH: 68},
|
||||
API_SP_AIR_VENT: {API_CELSIUS: 24, API_FAH: 75},
|
||||
API_SP_AIR_STOP: {API_CELSIUS: 24, API_FAH: 75},
|
||||
API_POWER: True,
|
||||
API_IS_CONNECTED: True,
|
||||
API_WS_CONNECTED: True,
|
||||
API_LOCAL_TEMP: {
|
||||
API_FAH: 68,
|
||||
API_CELSIUS: 20,
|
||||
},
|
||||
API_LOCAL_TEMP: {API_FAH: 68, API_CELSIUS: 20},
|
||||
API_WARNINGS: [],
|
||||
}
|
||||
if device.get_id() == "zone2":
|
||||
return {
|
||||
API_ACTIVE: False,
|
||||
API_HUMIDITY: 24,
|
||||
API_MODE: OperationMode.COOLING.value,
|
||||
API_MODE_AVAIL: [],
|
||||
API_RANGE_MAX_AIR: {API_CELSIUS: 30, API_FAH: 86},
|
||||
API_RANGE_SP_MAX_COOL_AIR: {API_FAH: 86, API_CELSIUS: 30},
|
||||
API_RANGE_SP_MAX_DRY_AIR: {API_FAH: 86, API_CELSIUS: 30},
|
||||
API_RANGE_SP_MAX_EMERHEAT_AIR: {API_CELSIUS: 30, API_FAH: 86},
|
||||
API_RANGE_SP_MAX_HOT_AIR: {API_CELSIUS: 30, API_FAH: 86},
|
||||
API_RANGE_SP_MAX_STOP_AIR: {API_FAH: 86, API_CELSIUS: 30},
|
||||
API_RANGE_SP_MAX_VENT_AIR: {API_FAH: 86, API_CELSIUS: 30},
|
||||
API_RANGE_MIN_AIR: {API_CELSIUS: 15, API_FAH: 59},
|
||||
API_RANGE_SP_MIN_COOL_AIR: {API_CELSIUS: 18, API_FAH: 64},
|
||||
API_RANGE_SP_MIN_DRY_AIR: {API_CELSIUS: 18, API_FAH: 64},
|
||||
API_RANGE_SP_MIN_EMERHEAT_AIR: {API_FAH: 59, API_CELSIUS: 15},
|
||||
API_RANGE_SP_MIN_HOT_AIR: {API_FAH: 59, API_CELSIUS: 15},
|
||||
API_RANGE_SP_MIN_STOP_AIR: {API_FAH: 59, API_CELSIUS: 15},
|
||||
API_RANGE_SP_MIN_VENT_AIR: {API_FAH: 59, API_CELSIUS: 15},
|
||||
API_SP_AIR_COOL: {API_CELSIUS: 24, API_FAH: 75},
|
||||
API_SP_AIR_DRY: {API_CELSIUS: 24, API_FAH: 75},
|
||||
API_SP_AIR_HEAT: {API_CELSIUS: 20, API_FAH: 68},
|
||||
API_SP_AIR_VENT: {API_CELSIUS: 24, API_FAH: 75},
|
||||
API_SP_AIR_STOP: {API_CELSIUS: 24, API_FAH: 75},
|
||||
API_POWER: False,
|
||||
API_IS_CONNECTED: True,
|
||||
API_WS_CONNECTED: True,
|
||||
API_LOCAL_TEMP: {
|
||||
API_FAH: 77,
|
||||
API_CELSIUS: 25,
|
||||
},
|
||||
API_LOCAL_TEMP: {API_FAH: 77, API_CELSIUS: 25},
|
||||
API_WARNINGS: [],
|
||||
}
|
||||
return None
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue