From 276f6c7ee732e4a024cf29fb4cc63cc5eaf48a80 Mon Sep 17 00:00:00 2001 From: xLarry Date: Thu, 4 Jul 2024 22:08:50 +0200 Subject: [PATCH] Update laundrify_aio to v1.2.2 (#121068) * refactor: upgrade laundrify_aio to v1.2.1 * refactor: update laundrify_aio to v1.2.2 --- .../components/laundrify/binary_sensor.py | 16 +++++++++------- homeassistant/components/laundrify/const.py | 2 +- .../components/laundrify/coordinator.py | 5 ++--- homeassistant/components/laundrify/manifest.json | 2 +- homeassistant/components/laundrify/model.py | 14 -------------- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- tests/components/laundrify/conftest.py | 6 +++++- .../components/laundrify/fixtures/machines.json | 4 +++- 9 files changed, 23 insertions(+), 30 deletions(-) delete mode 100644 homeassistant/components/laundrify/model.py diff --git a/homeassistant/components/laundrify/binary_sensor.py b/homeassistant/components/laundrify/binary_sensor.py index 80732bdc470..925aea99f39 100644 --- a/homeassistant/components/laundrify/binary_sensor.py +++ b/homeassistant/components/laundrify/binary_sensor.py @@ -4,6 +4,8 @@ from __future__ import annotations import logging +from laundrify_aio import LaundrifyDevice + from homeassistant.components.binary_sensor import ( BinarySensorDeviceClass, BinarySensorEntity, @@ -14,9 +16,8 @@ from homeassistant.helpers.device_registry import DeviceInfo from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.update_coordinator import CoordinatorEntity -from .const import DOMAIN, MANUFACTURER, MODEL +from .const import DOMAIN, MANUFACTURER, MODELS from .coordinator import LaundrifyUpdateCoordinator -from .model import LaundrifyDevice _LOGGER = logging.getLogger(__name__) @@ -52,14 +53,15 @@ class LaundrifyPowerPlug( """Pass coordinator to CoordinatorEntity.""" super().__init__(coordinator) self._device = device - unique_id = device["_id"] + unique_id = device.id self._attr_unique_id = unique_id self._attr_device_info = DeviceInfo( identifiers={(DOMAIN, unique_id)}, - name=device["name"], + name=device.name, manufacturer=MANUFACTURER, - model=MODEL, - sw_version=device["firmwareVersion"], + model=MODELS[device.model], + sw_version=device.firmwareVersion, + configuration_url=f"http://{device.internalIP}", ) @property @@ -73,7 +75,7 @@ class LaundrifyPowerPlug( @property def is_on(self) -> bool: """Return entity state.""" - return self._device["status"] == "ON" + return bool(self._device.status == "ON") @callback def _handle_coordinator_update(self) -> None: diff --git a/homeassistant/components/laundrify/const.py b/homeassistant/components/laundrify/const.py index c312b895234..5e2998aa7c4 100644 --- a/homeassistant/components/laundrify/const.py +++ b/homeassistant/components/laundrify/const.py @@ -3,7 +3,7 @@ DOMAIN = "laundrify" MANUFACTURER = "laundrify" -MODEL = "WLAN-Adapter (SU02)" +MODELS = {"SU02": "WLAN-Adapter classic", "M01": "WLAN-Adapter mini"} DEFAULT_POLL_INTERVAL = 60 diff --git a/homeassistant/components/laundrify/coordinator.py b/homeassistant/components/laundrify/coordinator.py index c3fdc265174..22f68a7c5ae 100644 --- a/homeassistant/components/laundrify/coordinator.py +++ b/homeassistant/components/laundrify/coordinator.py @@ -4,7 +4,7 @@ import asyncio from datetime import timedelta import logging -from laundrify_aio import LaundrifyAPI +from laundrify_aio import LaundrifyAPI, LaundrifyDevice from laundrify_aio.exceptions import ApiConnectionException, UnauthorizedException from homeassistant.core import HomeAssistant @@ -12,7 +12,6 @@ from homeassistant.exceptions import ConfigEntryAuthFailed from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed from .const import DOMAIN, REQUEST_TIMEOUT -from .model import LaundrifyDevice _LOGGER = logging.getLogger(__name__) @@ -38,7 +37,7 @@ class LaundrifyUpdateCoordinator(DataUpdateCoordinator[dict[str, LaundrifyDevice # Note: TimeoutError and aiohttp.ClientError are already # handled by the data update coordinator. async with asyncio.timeout(REQUEST_TIMEOUT): - return {m["_id"]: m for m in await self.laundrify_api.get_machines()} + return {m.id: m for m in await self.laundrify_api.get_machines()} except UnauthorizedException as err: # Raising ConfigEntryAuthFailed will cancel future updates # and start a config flow with SOURCE_REAUTH (async_step_reauth) diff --git a/homeassistant/components/laundrify/manifest.json b/homeassistant/components/laundrify/manifest.json index 8dca67058b7..99f03bcb5bb 100644 --- a/homeassistant/components/laundrify/manifest.json +++ b/homeassistant/components/laundrify/manifest.json @@ -5,5 +5,5 @@ "config_flow": true, "documentation": "https://www.home-assistant.io/integrations/laundrify", "iot_class": "cloud_polling", - "requirements": ["laundrify-aio==1.1.2"] + "requirements": ["laundrify-aio==1.2.2"] } diff --git a/homeassistant/components/laundrify/model.py b/homeassistant/components/laundrify/model.py deleted file mode 100644 index 862824c3154..00000000000 --- a/homeassistant/components/laundrify/model.py +++ /dev/null @@ -1,14 +0,0 @@ -"""Models for laundrify platform.""" - -from __future__ import annotations - -from typing import TypedDict - - -class LaundrifyDevice(TypedDict): - """laundrify Power Plug.""" - - _id: str - name: str - status: str - firmwareVersion: str diff --git a/requirements_all.txt b/requirements_all.txt index feeddae7386..5931c2f7b4a 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -1224,7 +1224,7 @@ lacrosse-view==1.0.1 lakeside==0.13 # homeassistant.components.laundrify -laundrify-aio==1.1.2 +laundrify-aio==1.2.2 # homeassistant.components.ld2410_ble ld2410-ble==0.1.1 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index a48e25b0f65..2fedcdc2b0b 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -999,7 +999,7 @@ krakenex==2.1.0 lacrosse-view==1.0.1 # homeassistant.components.laundrify -laundrify-aio==1.1.2 +laundrify-aio==1.2.2 # homeassistant.components.ld2410_ble ld2410-ble==0.1.1 diff --git a/tests/components/laundrify/conftest.py b/tests/components/laundrify/conftest.py index 91aeebf81ee..2f6496c06a5 100644 --- a/tests/components/laundrify/conftest.py +++ b/tests/components/laundrify/conftest.py @@ -3,6 +3,7 @@ import json from unittest.mock import patch +from laundrify_aio import LaundrifyAPI, LaundrifyDevice import pytest from .const import VALID_ACCESS_TOKEN, VALID_ACCOUNT_ID @@ -49,7 +50,10 @@ def laundrify_api_fixture(laundrify_exchange_code, laundrify_validate_token): ), patch( "laundrify_aio.LaundrifyAPI.get_machines", - return_value=json.loads(load_fixture("laundrify/machines.json")), + return_value=[ + LaundrifyDevice(machine, LaundrifyAPI) + for machine in json.loads(load_fixture("laundrify/machines.json")) + ], ) as get_machines_mock, ): yield get_machines_mock diff --git a/tests/components/laundrify/fixtures/machines.json b/tests/components/laundrify/fixtures/machines.json index ab1a737cb45..3397212659f 100644 --- a/tests/components/laundrify/fixtures/machines.json +++ b/tests/components/laundrify/fixtures/machines.json @@ -1,8 +1,10 @@ [ { - "_id": "14", + "id": "14", "name": "Demo Waschmaschine", "status": "OFF", + "internalIP": "192.168.0.123", + "model": "SU02", "firmwareVersion": "2.1.0" } ]