Add Aidoo sensors to Airzone Cloud (#93541)

This commit is contained in:
Álvaro Fernández Rojas 2023-05-29 21:58:53 +02:00 committed by GitHub
parent 8b662dc94f
commit 6aa01e1441
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 159 additions and 14 deletions

View file

@ -4,6 +4,7 @@ from typing import Any
from unittest.mock import patch
from aioairzone_cloud.const import (
API_AZ_AIDOO,
API_AZ_SYSTEM,
API_AZ_ZONE,
API_CELSIUS,
@ -38,6 +39,7 @@ from aioairzone_cloud.const import (
API_ZONE_NUMBER,
)
from aioairzone_cloud.device import Device
from aioairzone_cloud.webserver import WebServer
from homeassistant.components.airzone_cloud import DOMAIN
from homeassistant.const import CONF_ID, CONF_PASSWORD, CONF_USERNAME
@ -46,6 +48,7 @@ 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"
CONFIG = {
CONF_ID: "inst1",
@ -88,6 +91,17 @@ GET_INSTALLATION_MOCK = {
},
],
},
{
API_NAME: "Aidoo Group",
API_DEVICES: [
{
API_DEVICE_ID: "aidoo1",
API_NAME: "Bron",
API_TYPE: API_AZ_AIDOO,
API_WS_ID: WS_ID_AIDOO,
},
],
},
],
}
@ -98,6 +112,7 @@ GET_INSTALLATIONS_MOCK = {
API_NAME: "House",
API_WS_IDS: [
WS_ID,
WS_ID_AIDOO,
],
},
],
@ -120,10 +135,37 @@ GET_WEBSERVER_MOCK = {
},
}
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",
},
}
def mock_get_device_status(device: Device) -> dict[str, Any]:
"""Mock API device status."""
if device.get_id() == "aidoo1":
return {
API_ERRORS: [],
API_IS_CONNECTED: True,
API_LOCAL_TEMP: {
API_CELSIUS: 21,
API_FAH: 70,
},
API_WARNINGS: [],
}
if device.get_id() == "system1":
return {
API_ERRORS: [],
@ -151,6 +193,15 @@ def mock_get_device_status(device: Device) -> dict[str, Any]:
}
def mock_get_webserver(webserver: WebServer, devices: bool) -> dict[str, Any]:
"""Mock API get webserver."""
if webserver.get_id() == WS_ID_AIDOO:
return GET_WEBSERVER_MOCK_AIDOO
return GET_WEBSERVER_MOCK
async def async_init_integration(
hass: HomeAssistant,
) -> None:
@ -174,7 +225,7 @@ async def async_init_integration(
return_value=GET_INSTALLATIONS_MOCK,
), patch(
"homeassistant.components.airzone_cloud.AirzoneCloudApi.api_get_webserver",
return_value=GET_WEBSERVER_MOCK,
side_effect=mock_get_webserver,
), patch(
"homeassistant.components.airzone_cloud.AirzoneCloudApi.login",
return_value=None,