mirror of https://github.com/home-assistant/core
563 lines
18 KiB
Python
563 lines
18 KiB
Python
"""Tests for the Airzone integration."""
|
|
|
|
from typing import Any
|
|
from unittest.mock import patch
|
|
|
|
from aioairzone_cloud.common import OperationMode, UserAccessType
|
|
from aioairzone_cloud.const import (
|
|
API_ACCESS_TYPE,
|
|
API_ACTIVE,
|
|
API_AIR_ACTIVE,
|
|
API_AQ_ACTIVE,
|
|
API_AQ_MODE_CONF,
|
|
API_AQ_MODE_VALUES,
|
|
API_AQ_PM_1,
|
|
API_AQ_PM_2P5,
|
|
API_AQ_PM_10,
|
|
API_AQ_PRESENT,
|
|
API_AQ_QUALITY,
|
|
API_AZ_ACS,
|
|
API_AZ_AIDOO,
|
|
API_AZ_AIDOO_PRO,
|
|
API_AZ_SYSTEM,
|
|
API_AZ_ZONE,
|
|
API_CELSIUS,
|
|
API_CONFIG,
|
|
API_CONNECTION_DATE,
|
|
API_CONSUMPTION_UE,
|
|
API_CPU_WS,
|
|
API_DEVICE_ID,
|
|
API_DEVICES,
|
|
API_DISCH_COMP_TEMP_UE,
|
|
API_DISCONNECTION_DATE,
|
|
API_DOUBLE_SET_POINT,
|
|
API_ERRORS,
|
|
API_EXCH_HEAT_TEMP_IU,
|
|
API_EXCH_HEAT_TEMP_UE,
|
|
API_EXT_TEMP,
|
|
API_FAH,
|
|
API_FREE,
|
|
API_FREE_MEM,
|
|
API_GENERAL,
|
|
API_GROUP_ID,
|
|
API_GROUPS,
|
|
API_HUMIDITY,
|
|
API_INSTALLATION_ID,
|
|
API_INSTALLATIONS,
|
|
API_IS_CONNECTED,
|
|
API_LOCAL_TEMP,
|
|
API_META,
|
|
API_MODE,
|
|
API_MODE_AVAIL,
|
|
API_NAME,
|
|
API_OLD_ID,
|
|
API_PC_UE,
|
|
API_PE_UE,
|
|
API_POWER,
|
|
API_POWERFUL_MODE,
|
|
API_RAD_ACTIVE,
|
|
API_RADIO_BATTERY_PERCENT,
|
|
API_RADIO_COVERAGE_PERCENT,
|
|
API_RANGE_MAX_AIR,
|
|
API_RANGE_MIN_AIR,
|
|
API_RANGE_SP_MAX_ACS,
|
|
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_ACS,
|
|
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_RETURN_TEMP,
|
|
API_SETPOINT,
|
|
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_SPEED_CONF,
|
|
API_SPEED_TYPE,
|
|
API_SPEED_VALUES,
|
|
API_STAT_AP_MAC,
|
|
API_STAT_CHANNEL,
|
|
API_STAT_QUALITY,
|
|
API_STAT_RSSI,
|
|
API_STAT_SSID,
|
|
API_STATUS,
|
|
API_STEP,
|
|
API_SYSTEM_FW,
|
|
API_SYSTEM_NUMBER,
|
|
API_SYSTEM_TYPE,
|
|
API_TANK_TEMP,
|
|
API_THERMOSTAT_FW,
|
|
API_THERMOSTAT_TYPE,
|
|
API_TYPE,
|
|
API_WARNINGS,
|
|
API_WORK_TEMP,
|
|
API_WS_CONNECTED,
|
|
API_WS_FW,
|
|
API_WS_ID,
|
|
API_WS_IDS,
|
|
API_WS_TYPE,
|
|
API_ZONE_NUMBER,
|
|
)
|
|
from aioairzone_cloud.device import Device
|
|
from aioairzone_cloud.webserver import WebServer
|
|
|
|
from homeassistant.components.airzone_cloud.const import DOMAIN
|
|
from homeassistant.const import CONF_ID, CONF_PASSWORD, CONF_USERNAME
|
|
from homeassistant.core import HomeAssistant
|
|
|
|
from tests.common import MockConfigEntry
|
|
|
|
WS_ID = "11:22:33:44:55:66"
|
|
WS_ID_AIDOO = "11:22:33:44:55:67"
|
|
WS_ID_AIDOO_PRO = "11:22:33:44:55:68"
|
|
|
|
CONFIG = {
|
|
CONF_ID: "inst1",
|
|
CONF_USERNAME: "user",
|
|
CONF_PASSWORD: "pass",
|
|
}
|
|
|
|
GET_INSTALLATION_MOCK = {
|
|
API_GROUPS: [
|
|
{
|
|
API_GROUP_ID: "grp1",
|
|
API_NAME: "Group",
|
|
API_DEVICES: [
|
|
{
|
|
API_DEVICE_ID: "dhw1",
|
|
API_TYPE: API_AZ_ACS,
|
|
API_WS_ID: WS_ID,
|
|
},
|
|
{
|
|
API_DEVICE_ID: "system1",
|
|
API_TYPE: API_AZ_SYSTEM,
|
|
API_META: {
|
|
API_SYSTEM_NUMBER: 1,
|
|
},
|
|
API_WS_ID: WS_ID,
|
|
},
|
|
{
|
|
API_CONFIG: {},
|
|
API_DEVICE_ID: "zone1",
|
|
API_NAME: "Salon",
|
|
API_TYPE: API_AZ_ZONE,
|
|
API_META: {
|
|
API_SYSTEM_NUMBER: 1,
|
|
API_ZONE_NUMBER: 1,
|
|
},
|
|
API_WS_ID: WS_ID,
|
|
},
|
|
{
|
|
API_CONFIG: {},
|
|
API_DEVICE_ID: "zone2",
|
|
API_NAME: "Dormitorio",
|
|
API_TYPE: API_AZ_ZONE,
|
|
API_META: {
|
|
API_SYSTEM_NUMBER: 1,
|
|
API_ZONE_NUMBER: 2,
|
|
},
|
|
API_WS_ID: WS_ID,
|
|
},
|
|
],
|
|
},
|
|
{
|
|
API_GROUP_ID: "grp2",
|
|
API_NAME: "Aidoo Group",
|
|
API_DEVICES: [
|
|
{
|
|
API_DEVICE_ID: "aidoo1",
|
|
API_NAME: "Bron",
|
|
API_TYPE: API_AZ_AIDOO,
|
|
API_WS_ID: WS_ID_AIDOO,
|
|
},
|
|
],
|
|
},
|
|
{
|
|
API_GROUP_ID: "grp3",
|
|
API_NAME: "Aidoo Pro Group",
|
|
API_DEVICES: [
|
|
{
|
|
API_DEVICE_ID: "aidoo_pro",
|
|
API_NAME: "Bron Pro",
|
|
API_TYPE: API_AZ_AIDOO_PRO,
|
|
API_WS_ID: WS_ID_AIDOO_PRO,
|
|
},
|
|
],
|
|
},
|
|
],
|
|
}
|
|
|
|
GET_INSTALLATIONS_MOCK = {
|
|
API_INSTALLATIONS: [
|
|
{
|
|
API_INSTALLATION_ID: CONFIG[CONF_ID],
|
|
API_NAME: "House",
|
|
API_ACCESS_TYPE: UserAccessType.ADMIN,
|
|
API_WS_IDS: [
|
|
WS_ID,
|
|
WS_ID_AIDOO,
|
|
WS_ID_AIDOO_PRO,
|
|
],
|
|
},
|
|
],
|
|
}
|
|
|
|
GET_WEBSERVER_MOCK = {
|
|
API_WS_TYPE: "ws_az",
|
|
API_CONFIG: {
|
|
API_WS_FW: "3.44",
|
|
API_STAT_SSID: "Wifi",
|
|
API_STAT_CHANNEL: 36,
|
|
API_STAT_AP_MAC: "00:00:00:00:00:00",
|
|
},
|
|
API_STATUS: {
|
|
API_CPU_WS: {
|
|
API_GENERAL: 32,
|
|
},
|
|
API_FREE_MEM: {
|
|
API_FREE: 42616,
|
|
},
|
|
API_IS_CONNECTED: True,
|
|
API_STAT_QUALITY: 4,
|
|
API_STAT_RSSI: -56,
|
|
API_CONNECTION_DATE: "2023-05-07T12:55:51.000Z",
|
|
API_DISCONNECTION_DATE: "2023-01-01T22:26:55.376Z",
|
|
},
|
|
}
|
|
|
|
GET_WEBSERVER_MOCK_AIDOO = {
|
|
API_WS_TYPE: "ws_aidoo",
|
|
API_CONFIG: {
|
|
API_WS_FW: "3.13",
|
|
API_STAT_SSID: "Wifi",
|
|
API_STAT_CHANNEL: 1,
|
|
API_STAT_AP_MAC: "00:00:00:00:00:01",
|
|
},
|
|
API_STATUS: {
|
|
API_IS_CONNECTED: True,
|
|
API_STAT_QUALITY: 4,
|
|
API_STAT_RSSI: -77,
|
|
API_CONNECTION_DATE: "2023-05-24 17:00:52 +0200",
|
|
API_DISCONNECTION_DATE: "2023-05-24 17:00:25 +0200",
|
|
},
|
|
}
|
|
|
|
GET_WEBSERVER_MOCK_AIDOO_PRO = {
|
|
API_WS_TYPE: "ws_aidoo",
|
|
API_CONFIG: {
|
|
API_WS_FW: "4.01",
|
|
API_STAT_SSID: "Wifi",
|
|
API_STAT_CHANNEL: 6,
|
|
API_STAT_AP_MAC: "00:00:00:00:00:02",
|
|
},
|
|
API_STATUS: {
|
|
API_IS_CONNECTED: True,
|
|
API_STAT_QUALITY: 4,
|
|
API_STAT_RSSI: -67,
|
|
API_CONNECTION_DATE: "2023-11-05 17:00:52 +0200",
|
|
API_DISCONNECTION_DATE: "2023-11-05 17:00:25 +0200",
|
|
},
|
|
}
|
|
|
|
|
|
def mock_get_device_config(device: Device) -> dict[str, Any]:
|
|
"""Mock API device config."""
|
|
|
|
if device.get_id() == "aidoo_pro":
|
|
return {
|
|
API_CONSUMPTION_UE: 3,
|
|
API_DISCH_COMP_TEMP_UE: {API_CELSIUS: 121, API_FAH: -250},
|
|
API_EXCH_HEAT_TEMP_IU: {API_CELSIUS: 26, API_FAH: 79},
|
|
API_EXCH_HEAT_TEMP_UE: {API_CELSIUS: -25, API_FAH: -13},
|
|
API_EXT_TEMP: {API_CELSIUS: 29, API_FAH: 84},
|
|
API_PC_UE: 0.15,
|
|
API_PE_UE: 0.02,
|
|
API_RETURN_TEMP: {API_CELSIUS: 26, API_FAH: 79},
|
|
API_WORK_TEMP: {API_CELSIUS: 25, API_FAH: 77},
|
|
}
|
|
if device.get_id() == "system1":
|
|
return {
|
|
API_SYSTEM_FW: "3.35",
|
|
API_SYSTEM_TYPE: "c6",
|
|
}
|
|
if device.get_id() == "zone1":
|
|
return {
|
|
API_THERMOSTAT_FW: "3.52",
|
|
API_THERMOSTAT_TYPE: "blueface",
|
|
}
|
|
if device.get_id() == "zone2":
|
|
return {
|
|
API_THERMOSTAT_FW: "3.33",
|
|
API_THERMOSTAT_TYPE: "thinkradio",
|
|
API_RADIO_BATTERY_PERCENT: 54,
|
|
API_RADIO_COVERAGE_PERCENT: 76,
|
|
}
|
|
|
|
return {}
|
|
|
|
|
|
def mock_get_device_status(device: Device) -> dict[str, Any]:
|
|
"""Mock API device status."""
|
|
|
|
if device.get_id() == "aidoo1":
|
|
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_SPEED_CONF: 6,
|
|
API_SPEED_VALUES: [2, 4, 6],
|
|
API_SPEED_TYPE: 0,
|
|
API_IS_CONNECTED: True,
|
|
API_WS_CONNECTED: True,
|
|
API_LOCAL_TEMP: {API_CELSIUS: 21, API_FAH: 70},
|
|
API_WARNINGS: [],
|
|
}
|
|
if device.get_id() == "aidoo_pro":
|
|
return {
|
|
API_ACTIVE: True,
|
|
API_DOUBLE_SET_POINT: True,
|
|
API_ERRORS: [],
|
|
API_MODE: OperationMode.COOLING.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: 18, API_FAH: 64},
|
|
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: True,
|
|
API_SPEED_CONF: 3,
|
|
API_SPEED_VALUES: [0, 1, 2, 3, 4, 5],
|
|
API_SPEED_TYPE: 0,
|
|
API_IS_CONNECTED: True,
|
|
API_WS_CONNECTED: True,
|
|
API_LOCAL_TEMP: {API_CELSIUS: 20, API_FAH: 68},
|
|
API_WARNINGS: [],
|
|
}
|
|
if device.get_id() == "dhw1":
|
|
return {
|
|
API_ACTIVE: False,
|
|
API_ERRORS: [],
|
|
API_POWER: False,
|
|
API_POWERFUL_MODE: False,
|
|
API_SETPOINT: {API_CELSIUS: 48, API_FAH: 118},
|
|
API_RANGE_SP_MAX_ACS: {API_CELSIUS: 60, API_FAH: 140},
|
|
API_RANGE_SP_MIN_ACS: {API_CELSIUS: 40, API_FAH: 104},
|
|
API_STEP: {API_CELSIUS: 1, API_FAH: 1},
|
|
API_TANK_TEMP: {API_CELSIUS: 45.5, API_FAH: 114},
|
|
API_IS_CONNECTED: True,
|
|
API_WS_CONNECTED: True,
|
|
API_WARNINGS: [],
|
|
}
|
|
if device.get_id() == "system1":
|
|
return {
|
|
API_AQ_MODE_VALUES: ["off", "on", "auto"],
|
|
API_AQ_PM_1: 3,
|
|
API_AQ_PM_2P5: 4,
|
|
API_AQ_PM_10: 3,
|
|
API_AQ_PRESENT: True,
|
|
API_AQ_QUALITY: "good",
|
|
API_ERRORS: [
|
|
{
|
|
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: [],
|
|
}
|
|
if device.get_id() == "zone1":
|
|
return {
|
|
API_ACTIVE: True,
|
|
API_AIR_ACTIVE: True,
|
|
API_AQ_ACTIVE: False,
|
|
API_AQ_MODE_CONF: "auto",
|
|
API_AQ_MODE_VALUES: ["off", "on", "auto"],
|
|
API_AQ_PM_1: 3,
|
|
API_AQ_PM_2P5: 4,
|
|
API_AQ_PM_10: 3,
|
|
API_AQ_PRESENT: True,
|
|
API_AQ_QUALITY: "good",
|
|
API_DOUBLE_SET_POINT: False,
|
|
API_HUMIDITY: 30,
|
|
API_MODE: OperationMode.COOLING.value,
|
|
API_MODE_AVAIL: [
|
|
OperationMode.COOLING.value,
|
|
OperationMode.HEATING.value,
|
|
OperationMode.VENTILATION.value,
|
|
OperationMode.DRY.value,
|
|
],
|
|
API_RAD_ACTIVE: False,
|
|
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_WARNINGS: [],
|
|
}
|
|
if device.get_id() == "zone2":
|
|
return {
|
|
API_ACTIVE: False,
|
|
API_AIR_ACTIVE: False,
|
|
API_AQ_ACTIVE: False,
|
|
API_AQ_MODE_CONF: "auto",
|
|
API_AQ_MODE_VALUES: ["off", "on", "auto"],
|
|
API_AQ_PM_1: 3,
|
|
API_AQ_PM_2P5: 4,
|
|
API_AQ_PM_10: 3,
|
|
API_AQ_PRESENT: True,
|
|
API_AQ_QUALITY: "good",
|
|
API_DOUBLE_SET_POINT: False,
|
|
API_HUMIDITY: 24,
|
|
API_MODE: OperationMode.COOLING.value,
|
|
API_MODE_AVAIL: [],
|
|
API_RAD_ACTIVE: False,
|
|
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_WARNINGS: [],
|
|
}
|
|
return {}
|
|
|
|
|
|
def mock_get_webserver(webserver: WebServer, devices: bool) -> dict[str, Any]:
|
|
"""Mock API get webserver."""
|
|
|
|
if webserver.get_id() == WS_ID:
|
|
return GET_WEBSERVER_MOCK
|
|
if webserver.get_id() == WS_ID_AIDOO:
|
|
return GET_WEBSERVER_MOCK_AIDOO
|
|
if webserver.get_id() == WS_ID_AIDOO_PRO:
|
|
return GET_WEBSERVER_MOCK_AIDOO_PRO
|
|
return {}
|
|
|
|
|
|
async def async_init_integration(
|
|
hass: HomeAssistant,
|
|
) -> None:
|
|
"""Set up the Airzone integration in Home Assistant."""
|
|
|
|
config_entry = MockConfigEntry(
|
|
data=CONFIG,
|
|
entry_id="d186e31edb46d64d14b9b2f11f1ebd9f",
|
|
domain=DOMAIN,
|
|
unique_id=CONFIG[CONF_ID],
|
|
)
|
|
config_entry.add_to_hass(hass)
|
|
|
|
with (
|
|
patch(
|
|
"homeassistant.components.airzone_cloud.AirzoneCloudApi.api_get_device_config",
|
|
side_effect=mock_get_device_config,
|
|
),
|
|
patch(
|
|
"homeassistant.components.airzone_cloud.AirzoneCloudApi.api_get_device_status",
|
|
side_effect=mock_get_device_status,
|
|
),
|
|
patch(
|
|
"homeassistant.components.airzone_cloud.AirzoneCloudApi.api_get_installation",
|
|
return_value=GET_INSTALLATION_MOCK,
|
|
),
|
|
patch(
|
|
"homeassistant.components.airzone_cloud.AirzoneCloudApi.api_get_installations",
|
|
return_value=GET_INSTALLATIONS_MOCK,
|
|
),
|
|
patch(
|
|
"homeassistant.components.airzone_cloud.AirzoneCloudApi.api_get_webserver",
|
|
side_effect=mock_get_webserver,
|
|
),
|
|
patch(
|
|
"homeassistant.components.airzone_cloud.AirzoneCloudApi.login",
|
|
return_value=None,
|
|
),
|
|
):
|
|
await hass.config_entries.async_setup(config_entry.entry_id)
|
|
await hass.async_block_till_done()
|