mirror of
https://github.com/home-assistant/core
synced 2024-09-25 00:41:32 +02:00
Bump anova version (#92206)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
This commit is contained in:
parent
ede1f08c51
commit
7b5d26d3fa
@ -3,13 +3,7 @@ from __future__ import annotations
|
||||
|
||||
import logging
|
||||
|
||||
from anova_wifi import (
|
||||
AnovaApi,
|
||||
AnovaPrecisionCooker,
|
||||
AnovaPrecisionCookerSensor,
|
||||
InvalidLogin,
|
||||
NoDevicesFound,
|
||||
)
|
||||
from anova_wifi import AnovaApi, AnovaPrecisionCooker, InvalidLogin, NoDevicesFound
|
||||
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import CONF_PASSWORD, CONF_USERNAME, Platform
|
||||
@ -67,9 +61,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
||||
coordinators = [AnovaCoordinator(hass, device) for device in devices]
|
||||
for coordinator in coordinators:
|
||||
await coordinator.async_config_entry_first_refresh()
|
||||
firmware_version = coordinator.data["sensors"][
|
||||
AnovaPrecisionCookerSensor.FIRMWARE_VERSION
|
||||
]
|
||||
firmware_version = coordinator.data.sensor.firmware_version
|
||||
coordinator.async_setup(str(firmware_version))
|
||||
hass.data.setdefault(DOMAIN, {})[entry.entry_id] = AnovaData(
|
||||
api_jwt=api.jwt, precision_cookers=devices, coordinators=coordinators
|
||||
|
@ -2,7 +2,7 @@
|
||||
from datetime import timedelta
|
||||
import logging
|
||||
|
||||
from anova_wifi import AnovaOffline, AnovaPrecisionCooker
|
||||
from anova_wifi import AnovaOffline, AnovaPrecisionCooker, APCUpdate
|
||||
import async_timeout
|
||||
|
||||
from homeassistant.core import HomeAssistant, callback
|
||||
@ -14,11 +14,9 @@ from .const import DOMAIN
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class AnovaCoordinator(DataUpdateCoordinator):
|
||||
class AnovaCoordinator(DataUpdateCoordinator[APCUpdate]):
|
||||
"""Anova custom coordinator."""
|
||||
|
||||
data: dict[str, dict[str, str | int | float]]
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
hass: HomeAssistant,
|
||||
@ -47,7 +45,7 @@ class AnovaCoordinator(DataUpdateCoordinator):
|
||||
sw_version=firmware_version,
|
||||
)
|
||||
|
||||
async def _async_update_data(self) -> dict[str, dict[str, str | int | float]]:
|
||||
async def _async_update_data(self) -> APCUpdate:
|
||||
try:
|
||||
async with async_timeout.timeout(5):
|
||||
return await self.anova_device.update()
|
||||
|
@ -6,5 +6,5 @@
|
||||
"documentation": "https://www.home-assistant.io/integrations/anova",
|
||||
"iot_class": "cloud_polling",
|
||||
"loggers": ["anova_wifi"],
|
||||
"requirements": ["anova-wifi==0.8.0"]
|
||||
"requirements": ["anova-wifi==0.9.0"]
|
||||
}
|
||||
|
@ -1,7 +1,10 @@
|
||||
"""Support for Anova Sensors."""
|
||||
from __future__ import annotations
|
||||
|
||||
from anova_wifi import AnovaPrecisionCookerSensor
|
||||
from collections.abc import Callable
|
||||
from dataclasses import dataclass
|
||||
|
||||
from anova_wifi import APCUpdateSensor
|
||||
|
||||
from homeassistant import config_entries
|
||||
from homeassistant.components.sensor import (
|
||||
@ -19,57 +22,80 @@ from .const import DOMAIN
|
||||
from .entity import AnovaDescriptionEntity
|
||||
from .models import AnovaData
|
||||
|
||||
|
||||
@dataclass
|
||||
class AnovaSensorEntityDescriptionMixin:
|
||||
"""Describes the mixin variables for anova sensors."""
|
||||
|
||||
value_fn: Callable[[APCUpdateSensor], float | int | str]
|
||||
|
||||
|
||||
@dataclass
|
||||
class AnovaSensorEntityDescription(
|
||||
SensorEntityDescription, AnovaSensorEntityDescriptionMixin
|
||||
):
|
||||
"""Describes a Anova sensor."""
|
||||
|
||||
|
||||
SENSOR_DESCRIPTIONS: list[SensorEntityDescription] = [
|
||||
SensorEntityDescription(
|
||||
key=AnovaPrecisionCookerSensor.COOK_TIME,
|
||||
AnovaSensorEntityDescription(
|
||||
key="cook_time",
|
||||
state_class=SensorStateClass.TOTAL_INCREASING,
|
||||
native_unit_of_measurement=UnitOfTime.SECONDS,
|
||||
icon="mdi:clock-outline",
|
||||
translation_key="cook_time",
|
||||
device_class=SensorDeviceClass.DURATION,
|
||||
value_fn=lambda data: data.cook_time,
|
||||
),
|
||||
SensorEntityDescription(
|
||||
key=AnovaPrecisionCookerSensor.STATE, translation_key="state"
|
||||
AnovaSensorEntityDescription(
|
||||
key="state", translation_key="state", value_fn=lambda data: data.state
|
||||
),
|
||||
SensorEntityDescription(
|
||||
key=AnovaPrecisionCookerSensor.MODE, translation_key="mode"
|
||||
AnovaSensorEntityDescription(
|
||||
key="mode", translation_key="mode", value_fn=lambda data: data.mode
|
||||
),
|
||||
SensorEntityDescription(
|
||||
key=AnovaPrecisionCookerSensor.TARGET_TEMPERATURE,
|
||||
AnovaSensorEntityDescription(
|
||||
key="target_temperature",
|
||||
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
||||
device_class=SensorDeviceClass.TEMPERATURE,
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
icon="mdi:thermometer",
|
||||
translation_key="target_temperature",
|
||||
value_fn=lambda data: data.target_temperature,
|
||||
),
|
||||
SensorEntityDescription(
|
||||
key=AnovaPrecisionCookerSensor.COOK_TIME_REMAINING,
|
||||
AnovaSensorEntityDescription(
|
||||
key="cook_time_remaining",
|
||||
native_unit_of_measurement=UnitOfTime.SECONDS,
|
||||
icon="mdi:clock-outline",
|
||||
translation_key="cook_time_remaining",
|
||||
device_class=SensorDeviceClass.DURATION,
|
||||
value_fn=lambda data: data.cook_time_remaining,
|
||||
),
|
||||
SensorEntityDescription(
|
||||
key=AnovaPrecisionCookerSensor.HEATER_TEMPERATURE,
|
||||
AnovaSensorEntityDescription(
|
||||
key="heater_temperature",
|
||||
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
||||
device_class=SensorDeviceClass.TEMPERATURE,
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
icon="mdi:thermometer",
|
||||
translation_key="heater_temperature",
|
||||
value_fn=lambda data: data.heater_temperature,
|
||||
),
|
||||
SensorEntityDescription(
|
||||
key=AnovaPrecisionCookerSensor.TRIAC_TEMPERATURE,
|
||||
AnovaSensorEntityDescription(
|
||||
key="triac_temperature",
|
||||
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
||||
device_class=SensorDeviceClass.TEMPERATURE,
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
icon="mdi:thermometer",
|
||||
translation_key="triac_temperature",
|
||||
value_fn=lambda data: data.triac_temperature,
|
||||
),
|
||||
SensorEntityDescription(
|
||||
key=AnovaPrecisionCookerSensor.WATER_TEMPERATURE,
|
||||
AnovaSensorEntityDescription(
|
||||
key="water_temperature",
|
||||
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
||||
device_class=SensorDeviceClass.TEMPERATURE,
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
icon="mdi:thermometer",
|
||||
translation_key="water_temperature",
|
||||
value_fn=lambda data: data.water_temperature,
|
||||
),
|
||||
]
|
||||
|
||||
@ -91,7 +117,9 @@ async def async_setup_entry(
|
||||
class AnovaSensor(AnovaDescriptionEntity, SensorEntity):
|
||||
"""A sensor using Anova coordinator."""
|
||||
|
||||
entity_description: AnovaSensorEntityDescription
|
||||
|
||||
@property
|
||||
def native_value(self) -> StateType:
|
||||
"""Return the state."""
|
||||
return self.coordinator.data["sensors"][self.entity_description.key]
|
||||
return self.entity_description.value_fn(self.coordinator.data.sensor)
|
||||
|
@ -339,7 +339,7 @@ androidtvremote2==0.0.7
|
||||
anel_pwrctrl-homeassistant==0.0.1.dev2
|
||||
|
||||
# homeassistant.components.anova
|
||||
anova-wifi==0.8.0
|
||||
anova-wifi==0.9.0
|
||||
|
||||
# homeassistant.components.anthemav
|
||||
anthemav==1.4.1
|
||||
|
@ -311,7 +311,7 @@ androidtv[async]==0.0.70
|
||||
androidtvremote2==0.0.7
|
||||
|
||||
# homeassistant.components.anova
|
||||
anova-wifi==0.8.0
|
||||
anova-wifi==0.9.0
|
||||
|
||||
# homeassistant.components.anthemav
|
||||
anthemav==1.4.1
|
||||
|
@ -3,11 +3,7 @@ from __future__ import annotations
|
||||
|
||||
from unittest.mock import patch
|
||||
|
||||
from anova_wifi import (
|
||||
AnovaPrecisionCooker,
|
||||
AnovaPrecisionCookerBinarySensor,
|
||||
AnovaPrecisionCookerSensor,
|
||||
)
|
||||
from anova_wifi import AnovaPrecisionCooker, APCUpdate, APCUpdateBinary, APCUpdateSensor
|
||||
|
||||
from homeassistant.components.anova.const import DOMAIN
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
@ -20,26 +16,12 @@ DEVICE_UNIQUE_ID = "abc123def"
|
||||
|
||||
CONF_INPUT = {CONF_USERNAME: "sample@gmail.com", CONF_PASSWORD: "sample"}
|
||||
|
||||
ONLINE_UPDATE = {
|
||||
"sensors": {
|
||||
AnovaPrecisionCookerSensor.COOK_TIME: 0,
|
||||
AnovaPrecisionCookerSensor.MODE: "Low water",
|
||||
AnovaPrecisionCookerSensor.STATE: "No state",
|
||||
AnovaPrecisionCookerSensor.TARGET_TEMPERATURE: 23.33,
|
||||
AnovaPrecisionCookerSensor.COOK_TIME_REMAINING: 0,
|
||||
AnovaPrecisionCookerSensor.FIRMWARE_VERSION: "2.2.0",
|
||||
AnovaPrecisionCookerSensor.HEATER_TEMPERATURE: 20.87,
|
||||
AnovaPrecisionCookerSensor.TRIAC_TEMPERATURE: 21.79,
|
||||
AnovaPrecisionCookerSensor.WATER_TEMPERATURE: 21.33,
|
||||
},
|
||||
"binary_sensors": {
|
||||
AnovaPrecisionCookerBinarySensor.COOKING: False,
|
||||
AnovaPrecisionCookerBinarySensor.DEVICE_SAFE: True,
|
||||
AnovaPrecisionCookerBinarySensor.WATER_LEAK: False,
|
||||
AnovaPrecisionCookerBinarySensor.WATER_LEVEL_CRITICAL: True,
|
||||
AnovaPrecisionCookerBinarySensor.WATER_TEMP_TOO_HIGH: False,
|
||||
},
|
||||
}
|
||||
ONLINE_UPDATE = APCUpdate(
|
||||
sensor=APCUpdateSensor(
|
||||
0, "Low water", "No state", 23.33, 0, "2.2.0", 20.87, 21.79, 21.33
|
||||
),
|
||||
binary_sensor=APCUpdateBinary(False, False, False, True, False, True, False),
|
||||
)
|
||||
|
||||
|
||||
def create_entry(hass: HomeAssistant, device_id: str = DEVICE_UNIQUE_ID) -> ConfigEntry:
|
||||
|
Loading…
Reference in New Issue
Block a user