mirror of
https://github.com/home-assistant/core.git
synced 2025-11-16 22:40:44 +00:00
Enable types from aiohomekit to be used by mypy for homekit_controller (#65433)
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import logging
|
||||
from typing import Any
|
||||
from typing import Any, Final
|
||||
|
||||
from aiohomekit.model.characteristics import (
|
||||
ActivationStateValues,
|
||||
@@ -16,7 +16,11 @@ from aiohomekit.model.characteristics import (
|
||||
from aiohomekit.model.services import Service, ServicesTypes
|
||||
from aiohomekit.utils import clamp_enum_to_char
|
||||
|
||||
from homeassistant.components.climate import ClimateEntity
|
||||
from homeassistant.components.climate import (
|
||||
DEFAULT_MAX_TEMP,
|
||||
DEFAULT_MIN_TEMP,
|
||||
ClimateEntity,
|
||||
)
|
||||
from homeassistant.components.climate.const import (
|
||||
ATTR_HVAC_MODE,
|
||||
ATTR_TARGET_TEMP_HIGH,
|
||||
@@ -86,6 +90,8 @@ TARGET_HEATER_COOLER_STATE_HASS_TO_HOMEKIT = {
|
||||
|
||||
SWING_MODE_HASS_TO_HOMEKIT = {v: k for k, v in SWING_MODE_HOMEKIT_TO_HASS.items()}
|
||||
|
||||
DEFAULT_MIN_STEP: Final = 1.0
|
||||
|
||||
|
||||
async def async_setup_entry(
|
||||
hass: HomeAssistant,
|
||||
@@ -185,22 +191,24 @@ class HomeKitHeaterCoolerEntity(HomeKitEntity, ClimateEntity):
|
||||
return None
|
||||
|
||||
@property
|
||||
def target_temperature_step(self) -> float | None:
|
||||
def target_temperature_step(self) -> float:
|
||||
"""Return the supported step of target temperature."""
|
||||
state = self.service.value(CharacteristicsTypes.TARGET_HEATER_COOLER_STATE)
|
||||
if state == TargetHeaterCoolerStateValues.COOL and self.service.has(
|
||||
CharacteristicsTypes.TEMPERATURE_COOLING_THRESHOLD
|
||||
):
|
||||
return self.service[
|
||||
CharacteristicsTypes.TEMPERATURE_COOLING_THRESHOLD
|
||||
].minStep
|
||||
return (
|
||||
self.service[CharacteristicsTypes.TEMPERATURE_COOLING_THRESHOLD].minStep
|
||||
or DEFAULT_MIN_STEP
|
||||
)
|
||||
if state == TargetHeaterCoolerStateValues.HEAT and self.service.has(
|
||||
CharacteristicsTypes.TEMPERATURE_HEATING_THRESHOLD
|
||||
):
|
||||
return self.service[
|
||||
CharacteristicsTypes.TEMPERATURE_HEATING_THRESHOLD
|
||||
].minStep
|
||||
return None
|
||||
return (
|
||||
self.service[CharacteristicsTypes.TEMPERATURE_HEATING_THRESHOLD].minStep
|
||||
or DEFAULT_MIN_STEP
|
||||
)
|
||||
return DEFAULT_MIN_STEP
|
||||
|
||||
@property
|
||||
def min_temp(self) -> float:
|
||||
@@ -209,15 +217,21 @@ class HomeKitHeaterCoolerEntity(HomeKitEntity, ClimateEntity):
|
||||
if state == TargetHeaterCoolerStateValues.COOL and self.service.has(
|
||||
CharacteristicsTypes.TEMPERATURE_COOLING_THRESHOLD
|
||||
):
|
||||
return self.service[
|
||||
CharacteristicsTypes.TEMPERATURE_COOLING_THRESHOLD
|
||||
].minValue
|
||||
return (
|
||||
self.service[
|
||||
CharacteristicsTypes.TEMPERATURE_COOLING_THRESHOLD
|
||||
].minValue
|
||||
or DEFAULT_MIN_TEMP
|
||||
)
|
||||
if state == TargetHeaterCoolerStateValues.HEAT and self.service.has(
|
||||
CharacteristicsTypes.TEMPERATURE_HEATING_THRESHOLD
|
||||
):
|
||||
return self.service[
|
||||
CharacteristicsTypes.TEMPERATURE_HEATING_THRESHOLD
|
||||
].minValue
|
||||
return (
|
||||
self.service[
|
||||
CharacteristicsTypes.TEMPERATURE_HEATING_THRESHOLD
|
||||
].minValue
|
||||
or DEFAULT_MIN_TEMP
|
||||
)
|
||||
return super().min_temp
|
||||
|
||||
@property
|
||||
@@ -227,15 +241,21 @@ class HomeKitHeaterCoolerEntity(HomeKitEntity, ClimateEntity):
|
||||
if state == TargetHeaterCoolerStateValues.COOL and self.service.has(
|
||||
CharacteristicsTypes.TEMPERATURE_COOLING_THRESHOLD
|
||||
):
|
||||
return self.service[
|
||||
CharacteristicsTypes.TEMPERATURE_COOLING_THRESHOLD
|
||||
].maxValue
|
||||
return (
|
||||
self.service[
|
||||
CharacteristicsTypes.TEMPERATURE_COOLING_THRESHOLD
|
||||
].maxValue
|
||||
or DEFAULT_MAX_TEMP
|
||||
)
|
||||
if state == TargetHeaterCoolerStateValues.HEAT and self.service.has(
|
||||
CharacteristicsTypes.TEMPERATURE_HEATING_THRESHOLD
|
||||
):
|
||||
return self.service[
|
||||
CharacteristicsTypes.TEMPERATURE_HEATING_THRESHOLD
|
||||
].maxValue
|
||||
return (
|
||||
self.service[
|
||||
CharacteristicsTypes.TEMPERATURE_HEATING_THRESHOLD
|
||||
].maxValue
|
||||
or DEFAULT_MAX_TEMP
|
||||
)
|
||||
return super().max_temp
|
||||
|
||||
@property
|
||||
@@ -345,9 +365,9 @@ class HomeKitClimateEntity(HomeKitEntity, ClimateEntity):
|
||||
CharacteristicsTypes.RELATIVE_HUMIDITY_TARGET,
|
||||
]
|
||||
|
||||
async def async_set_temperature(self, **kwargs) -> None:
|
||||
async def async_set_temperature(self, **kwargs: Any) -> None:
|
||||
"""Set new target temperature."""
|
||||
chars = {}
|
||||
chars: dict[str, Any] = {}
|
||||
|
||||
value = self.service.value(CharacteristicsTypes.HEATING_COOLING_TARGET)
|
||||
mode = MODE_HOMEKIT_TO_HASS[value]
|
||||
@@ -499,7 +519,7 @@ class HomeKitClimateEntity(HomeKitEntity, ClimateEntity):
|
||||
CharacteristicsTypes.RELATIVE_HUMIDITY_TARGET
|
||||
].minValue
|
||||
if min_humidity is not None:
|
||||
return min_humidity
|
||||
return int(min_humidity)
|
||||
return super().min_humidity
|
||||
|
||||
@property
|
||||
@@ -509,7 +529,7 @@ class HomeKitClimateEntity(HomeKitEntity, ClimateEntity):
|
||||
CharacteristicsTypes.RELATIVE_HUMIDITY_TARGET
|
||||
].maxValue
|
||||
if max_humidity is not None:
|
||||
return max_humidity
|
||||
return int(max_humidity)
|
||||
return super().max_humidity
|
||||
|
||||
@property
|
||||
|
||||
Reference in New Issue
Block a user