Move homematicip_cloud base entity to separate module (#126094)

* Move homematicip_cloud base entity to separate module

* One more
This commit is contained in:
epenet 2024-09-17 15:46:04 +02:00 committed by GitHub
parent a9c479a78b
commit f3facac016
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
18 changed files with 68 additions and 61 deletions

View file

@ -21,8 +21,7 @@ from .const import (
HMIPC_HAPID,
HMIPC_NAME,
)
from .generic_entity import HomematicipGenericEntity # noqa: F401
from .hap import HomematicipAuth, HomematicipHAP # noqa: F401
from .hap import HomematicipHAP
from .services import async_setup_services, async_unload_services
CONFIG_SCHEMA = vol.Schema(

View file

@ -21,7 +21,7 @@ from homeassistant.core import HomeAssistant, callback
from homeassistant.helpers.device_registry import DeviceInfo
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import DOMAIN as HMIPC_DOMAIN
from .const import DOMAIN
from .hap import AsyncHome, HomematicipHAP
_LOGGER = logging.getLogger(__name__)
@ -35,7 +35,7 @@ async def async_setup_entry(
async_add_entities: AddEntitiesCallback,
) -> None:
"""Set up the HomematicIP alrm control panel from a config entry."""
hap = hass.data[HMIPC_DOMAIN][config_entry.unique_id]
hap = hass.data[DOMAIN][config_entry.unique_id]
async_add_entities([HomematicipAlarmControlPanelEntity(hap)])
@ -57,11 +57,11 @@ class HomematicipAlarmControlPanelEntity(AlarmControlPanelEntity):
def device_info(self) -> DeviceInfo:
"""Return device specific attributes."""
return DeviceInfo(
identifiers={(HMIPC_DOMAIN, f"ACP {self._home.id}")},
identifiers={(DOMAIN, f"ACP {self._home.id}")},
manufacturer="eQ-3",
model=CONST_ALARM_CONTROL_PANEL_NAME,
name=self.name,
via_device=(HMIPC_DOMAIN, self._home.id),
via_device=(DOMAIN, self._home.id),
)
@property

View file

@ -39,7 +39,8 @@ from homeassistant.core import HomeAssistant
from homeassistant.helpers.device_registry import DeviceInfo
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import DOMAIN as HMIPC_DOMAIN, HomematicipGenericEntity
from .const import DOMAIN
from .entity import HomematicipGenericEntity
from .hap import HomematicipHAP
ATTR_ACCELERATION_SENSOR_MODE = "acceleration_sensor_mode"
@ -78,7 +79,7 @@ async def async_setup_entry(
async_add_entities: AddEntitiesCallback,
) -> None:
"""Set up the HomematicIP Cloud binary sensor from a config entry."""
hap = hass.data[HMIPC_DOMAIN][config_entry.unique_id]
hap = hass.data[DOMAIN][config_entry.unique_id]
entities: list[HomematicipGenericEntity] = [HomematicipCloudConnectionSensor(hap)]
for device in hap.home.devices:
if isinstance(device, AsyncAccelerationSensor):
@ -168,7 +169,7 @@ class HomematicipCloudConnectionSensor(HomematicipGenericEntity, BinarySensorEnt
return DeviceInfo(
identifiers={
# Serial numbers of Homematic IP device
(HMIPC_DOMAIN, self._home.id)
(DOMAIN, self._home.id)
}
)

View file

@ -9,7 +9,8 @@ from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import DOMAIN as HMIPC_DOMAIN, HomematicipGenericEntity
from .const import DOMAIN
from .entity import HomematicipGenericEntity
from .hap import HomematicipHAP
@ -19,7 +20,7 @@ async def async_setup_entry(
async_add_entities: AddEntitiesCallback,
) -> None:
"""Set up the HomematicIP button from a config entry."""
hap = hass.data[HMIPC_DOMAIN][config_entry.unique_id]
hap = hass.data[DOMAIN][config_entry.unique_id]
async_add_entities(
HomematicipGarageDoorControllerButton(hap, device)

View file

@ -31,7 +31,8 @@ from homeassistant.core import HomeAssistant
from homeassistant.helpers.device_registry import DeviceInfo
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import DOMAIN as HMIPC_DOMAIN, HomematicipGenericEntity
from .const import DOMAIN
from .entity import HomematicipGenericEntity
from .hap import HomematicipHAP
HEATING_PROFILES = {"PROFILE_1": 0, "PROFILE_2": 1, "PROFILE_3": 2}
@ -59,7 +60,7 @@ async def async_setup_entry(
async_add_entities: AddEntitiesCallback,
) -> None:
"""Set up the HomematicIP climate from a config entry."""
hap = hass.data[HMIPC_DOMAIN][config_entry.unique_id]
hap = hass.data[DOMAIN][config_entry.unique_id]
async_add_entities(
HomematicipHeatingGroup(hap, device)
@ -94,11 +95,11 @@ class HomematicipHeatingGroup(HomematicipGenericEntity, ClimateEntity):
def device_info(self) -> DeviceInfo:
"""Return device specific attributes."""
return DeviceInfo(
identifiers={(HMIPC_DOMAIN, self._device.id)},
identifiers={(DOMAIN, self._device.id)},
manufacturer="eQ-3",
model=self._device.modelType,
name=self._device.label,
via_device=(HMIPC_DOMAIN, self._device.homeId),
via_device=(DOMAIN, self._device.homeId),
)
@property

View file

@ -25,7 +25,8 @@ from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import DOMAIN as HMIPC_DOMAIN, HomematicipGenericEntity
from .const import DOMAIN
from .entity import HomematicipGenericEntity
from .hap import HomematicipHAP
HMIP_COVER_OPEN = 0
@ -40,7 +41,7 @@ async def async_setup_entry(
async_add_entities: AddEntitiesCallback,
) -> None:
"""Set up the HomematicIP cover from a config entry."""
hap = hass.data[HMIPC_DOMAIN][config_entry.unique_id]
hap = hass.data[DOMAIN][config_entry.unique_id]
entities: list[HomematicipGenericEntity] = [
HomematicipCoverShutterGroup(hap, group)
for group in hap.home.groups

View file

@ -15,7 +15,7 @@ from homeassistant.helpers import device_registry as dr, entity_registry as er
from homeassistant.helpers.device_registry import DeviceInfo
from homeassistant.helpers.entity import Entity
from .const import DOMAIN as HMIPC_DOMAIN
from .const import DOMAIN
from .hap import AsyncHome, HomematicipHAP
_LOGGER = logging.getLogger(__name__)
@ -104,14 +104,14 @@ class HomematicipGenericEntity(Entity):
return DeviceInfo(
identifiers={
# Serial numbers of Homematic IP device
(HMIPC_DOMAIN, self._device.id)
(DOMAIN, self._device.id)
},
manufacturer=self._device.oem,
model=self._device.modelType,
name=self._device.label,
sw_version=self._device.firmwareVersion,
# Link to the homematic ip access point.
via_device=(HMIPC_DOMAIN, self._device.homeId),
via_device=(DOMAIN, self._device.homeId),
)
return None

View file

@ -13,7 +13,7 @@ from homematicip.device import Device
from homeassistant.exceptions import HomeAssistantError
from . import HomematicipGenericEntity
from .entity import HomematicipGenericEntity
_LOGGER = logging.getLogger(__name__)

View file

@ -30,7 +30,8 @@ from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import DOMAIN as HMIPC_DOMAIN, HomematicipGenericEntity
from .const import DOMAIN
from .entity import HomematicipGenericEntity
from .hap import HomematicipHAP
@ -40,7 +41,7 @@ async def async_setup_entry(
async_add_entities: AddEntitiesCallback,
) -> None:
"""Set up the HomematicIP Cloud lights from a config entry."""
hap = hass.data[HMIPC_DOMAIN][config_entry.unique_id]
hap = hass.data[DOMAIN][config_entry.unique_id]
entities: list[HomematicipGenericEntity] = []
for device in hap.home.devices:
if isinstance(device, AsyncBrandSwitchMeasuring):

View file

@ -13,7 +13,8 @@ from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import DOMAIN as HMIPC_DOMAIN, HomematicipGenericEntity
from .const import DOMAIN
from .entity import HomematicipGenericEntity
from .helpers import handle_errors
_LOGGER = logging.getLogger(__name__)
@ -39,7 +40,7 @@ async def async_setup_entry(
async_add_entities: AddEntitiesCallback,
) -> None:
"""Set up the HomematicIP locks from a config entry."""
hap = hass.data[HMIPC_DOMAIN][config_entry.unique_id]
hap = hass.data[DOMAIN][config_entry.unique_id]
async_add_entities(
HomematicipDoorLockDrive(hap, device)

View file

@ -53,7 +53,8 @@ from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.helpers.typing import StateType
from . import DOMAIN as HMIPC_DOMAIN, HomematicipGenericEntity
from .const import DOMAIN
from .entity import HomematicipGenericEntity
from .hap import HomematicipHAP
from .helpers import get_channels_from_device
@ -91,7 +92,7 @@ async def async_setup_entry(
async_add_entities: AddEntitiesCallback,
) -> None:
"""Set up the HomematicIP Cloud sensors from a config entry."""
hap = hass.data[HMIPC_DOMAIN][config_entry.unique_id]
hap = hass.data[DOMAIN][config_entry.unique_id]
entities: list[HomematicipGenericEntity] = []
for device in hap.home.devices:
if isinstance(device, AsyncHomeControlAccessPoint):

View file

@ -21,7 +21,7 @@ from homeassistant.helpers.service import (
verify_domain_control,
)
from .const import DOMAIN as HMIPC_DOMAIN
from .const import DOMAIN
_LOGGER = logging.getLogger(__name__)
@ -122,10 +122,10 @@ SCHEMA_SET_HOME_COOLING_MODE = vol.Schema(
async def async_setup_services(hass: HomeAssistant) -> None:
"""Set up the HomematicIP Cloud services."""
if hass.services.async_services_for_domain(HMIPC_DOMAIN):
if hass.services.async_services_for_domain(DOMAIN):
return
@verify_domain_control(hass, HMIPC_DOMAIN)
@verify_domain_control(hass, DOMAIN)
async def async_call_hmipc_service(service: ServiceCall) -> None:
"""Call correct HomematicIP Cloud service."""
service_name = service.service
@ -150,42 +150,42 @@ async def async_setup_services(hass: HomeAssistant) -> None:
await _async_set_home_cooling_mode(hass, service)
hass.services.async_register(
domain=HMIPC_DOMAIN,
domain=DOMAIN,
service=SERVICE_ACTIVATE_ECO_MODE_WITH_DURATION,
service_func=async_call_hmipc_service,
schema=SCHEMA_ACTIVATE_ECO_MODE_WITH_DURATION,
)
hass.services.async_register(
domain=HMIPC_DOMAIN,
domain=DOMAIN,
service=SERVICE_ACTIVATE_ECO_MODE_WITH_PERIOD,
service_func=async_call_hmipc_service,
schema=SCHEMA_ACTIVATE_ECO_MODE_WITH_PERIOD,
)
hass.services.async_register(
domain=HMIPC_DOMAIN,
domain=DOMAIN,
service=SERVICE_ACTIVATE_VACATION,
service_func=async_call_hmipc_service,
schema=SCHEMA_ACTIVATE_VACATION,
)
hass.services.async_register(
domain=HMIPC_DOMAIN,
domain=DOMAIN,
service=SERVICE_DEACTIVATE_ECO_MODE,
service_func=async_call_hmipc_service,
schema=SCHEMA_DEACTIVATE_ECO_MODE,
)
hass.services.async_register(
domain=HMIPC_DOMAIN,
domain=DOMAIN,
service=SERVICE_DEACTIVATE_VACATION,
service_func=async_call_hmipc_service,
schema=SCHEMA_DEACTIVATE_VACATION,
)
hass.services.async_register(
domain=HMIPC_DOMAIN,
domain=DOMAIN,
service=SERVICE_SET_ACTIVE_CLIMATE_PROFILE,
service_func=async_call_hmipc_service,
schema=SCHEMA_SET_ACTIVE_CLIMATE_PROFILE,
@ -193,7 +193,7 @@ async def async_setup_services(hass: HomeAssistant) -> None:
async_register_admin_service(
hass=hass,
domain=HMIPC_DOMAIN,
domain=DOMAIN,
service=SERVICE_DUMP_HAP_CONFIG,
service_func=async_call_hmipc_service,
schema=SCHEMA_DUMP_HAP_CONFIG,
@ -201,7 +201,7 @@ async def async_setup_services(hass: HomeAssistant) -> None:
async_register_admin_service(
hass=hass,
domain=HMIPC_DOMAIN,
domain=DOMAIN,
service=SERVICE_RESET_ENERGY_COUNTER,
service_func=async_call_hmipc_service,
schema=SCHEMA_RESET_ENERGY_COUNTER,
@ -209,7 +209,7 @@ async def async_setup_services(hass: HomeAssistant) -> None:
async_register_admin_service(
hass=hass,
domain=HMIPC_DOMAIN,
domain=DOMAIN,
service=SERVICE_SET_HOME_COOLING_MODE,
service_func=async_call_hmipc_service,
schema=SCHEMA_SET_HOME_COOLING_MODE,
@ -218,11 +218,11 @@ async def async_setup_services(hass: HomeAssistant) -> None:
async def async_unload_services(hass: HomeAssistant):
"""Unload HomematicIP Cloud services."""
if hass.data[HMIPC_DOMAIN]:
if hass.data[DOMAIN]:
return
for hmipc_service in HMIPC_SERVICES:
hass.services.async_remove(domain=HMIPC_DOMAIN, service=hmipc_service)
hass.services.async_remove(domain=DOMAIN, service=hmipc_service)
async def _async_activate_eco_mode_with_duration(
@ -235,7 +235,7 @@ async def _async_activate_eco_mode_with_duration(
if home := _get_home(hass, hapid):
await home.activate_absence_with_duration(duration)
else:
for hap in hass.data[HMIPC_DOMAIN].values():
for hap in hass.data[DOMAIN].values():
await hap.home.activate_absence_with_duration(duration)
@ -249,7 +249,7 @@ async def _async_activate_eco_mode_with_period(
if home := _get_home(hass, hapid):
await home.activate_absence_with_period(endtime)
else:
for hap in hass.data[HMIPC_DOMAIN].values():
for hap in hass.data[DOMAIN].values():
await hap.home.activate_absence_with_period(endtime)
@ -262,7 +262,7 @@ async def _async_activate_vacation(hass: HomeAssistant, service: ServiceCall) ->
if home := _get_home(hass, hapid):
await home.activate_vacation(endtime, temperature)
else:
for hap in hass.data[HMIPC_DOMAIN].values():
for hap in hass.data[DOMAIN].values():
await hap.home.activate_vacation(endtime, temperature)
@ -272,7 +272,7 @@ async def _async_deactivate_eco_mode(hass: HomeAssistant, service: ServiceCall)
if home := _get_home(hass, hapid):
await home.deactivate_absence()
else:
for hap in hass.data[HMIPC_DOMAIN].values():
for hap in hass.data[DOMAIN].values():
await hap.home.deactivate_absence()
@ -282,7 +282,7 @@ async def _async_deactivate_vacation(hass: HomeAssistant, service: ServiceCall)
if home := _get_home(hass, hapid):
await home.deactivate_vacation()
else:
for hap in hass.data[HMIPC_DOMAIN].values():
for hap in hass.data[DOMAIN].values():
await hap.home.deactivate_vacation()
@ -293,7 +293,7 @@ async def _set_active_climate_profile(
entity_id_list = service.data[ATTR_ENTITY_ID]
climate_profile_index = service.data[ATTR_CLIMATE_PROFILE_INDEX] - 1
for hap in hass.data[HMIPC_DOMAIN].values():
for hap in hass.data[DOMAIN].values():
if entity_id_list != "all":
for entity_id in entity_id_list:
group = hap.hmip_device_by_entity_id.get(entity_id)
@ -313,7 +313,7 @@ async def _async_dump_hap_config(hass: HomeAssistant, service: ServiceCall) -> N
config_file_prefix = service.data[ATTR_CONFIG_OUTPUT_FILE_PREFIX]
anonymize = service.data[ATTR_ANONYMIZE]
for hap in hass.data[HMIPC_DOMAIN].values():
for hap in hass.data[DOMAIN].values():
hap_sgtin = hap.config_entry.unique_id
if anonymize:
@ -333,7 +333,7 @@ async def _async_reset_energy_counter(hass: HomeAssistant, service: ServiceCall)
"""Service to reset the energy counter."""
entity_id_list = service.data[ATTR_ENTITY_ID]
for hap in hass.data[HMIPC_DOMAIN].values():
for hap in hass.data[DOMAIN].values():
if entity_id_list != "all":
for entity_id in entity_id_list:
device = hap.hmip_device_by_entity_id.get(entity_id)
@ -353,17 +353,17 @@ async def _async_set_home_cooling_mode(hass: HomeAssistant, service: ServiceCall
if home := _get_home(hass, hapid):
await home.set_cooling(cooling)
else:
for hap in hass.data[HMIPC_DOMAIN].values():
for hap in hass.data[DOMAIN].values():
await hap.home.set_cooling(cooling)
def _get_home(hass: HomeAssistant, hapid: str) -> AsyncHome | None:
"""Return a HmIP home."""
if hap := hass.data[HMIPC_DOMAIN].get(hapid):
if hap := hass.data[DOMAIN].get(hapid):
return hap.home
raise ServiceValidationError(
translation_domain=HMIPC_DOMAIN,
translation_domain=DOMAIN,
translation_key="access_point_not_found",
translation_placeholders={"id": hapid},
)

View file

@ -27,8 +27,8 @@ from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import DOMAIN as HMIPC_DOMAIN, HomematicipGenericEntity
from .generic_entity import ATTR_GROUP_MEMBER_UNREACHABLE
from .const import DOMAIN
from .entity import ATTR_GROUP_MEMBER_UNREACHABLE, HomematicipGenericEntity
from .hap import HomematicipHAP
@ -38,7 +38,7 @@ async def async_setup_entry(
async_add_entities: AddEntitiesCallback,
) -> None:
"""Set up the HomematicIP switch from a config entry."""
hap = hass.data[HMIPC_DOMAIN][config_entry.unique_id]
hap = hass.data[DOMAIN][config_entry.unique_id]
entities: list[HomematicipGenericEntity] = [
HomematicipGroupSwitch(hap, group)
for group in hap.home.groups

View file

@ -27,7 +27,8 @@ from homeassistant.const import UnitOfSpeed, UnitOfTemperature
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import DOMAIN as HMIPC_DOMAIN, HomematicipGenericEntity
from .const import DOMAIN
from .entity import HomematicipGenericEntity
from .hap import HomematicipHAP
HOME_WEATHER_CONDITION = {
@ -55,7 +56,7 @@ async def async_setup_entry(
async_add_entities: AddEntitiesCallback,
) -> None:
"""Set up the HomematicIP weather sensor from a config entry."""
hap = hass.data[HMIPC_DOMAIN][config_entry.unique_id]
hap = hass.data[DOMAIN][config_entry.unique_id]
entities: list[HomematicipGenericEntity] = []
for device in hap.home.devices:
if isinstance(device, AsyncWeatherSensorPro):

View file

@ -16,7 +16,7 @@ from homematicip.base.homematicip_object import HomeMaticIPObject
from homematicip.home import Home
from homeassistant.components.homematicip_cloud import DOMAIN as HMIPC_DOMAIN
from homeassistant.components.homematicip_cloud.generic_entity import (
from homeassistant.components.homematicip_cloud.entity import (
ATTR_IS_GROUP,
ATTR_MODEL_TYPE,
)

View file

@ -16,7 +16,7 @@ from homeassistant.components.homematicip_cloud.binary_sensor import (
ATTR_WATER_LEVEL_DETECTED,
ATTR_WINDOW_STATE,
)
from homeassistant.components.homematicip_cloud.generic_entity import (
from homeassistant.components.homematicip_cloud.entity import (
ATTR_EVENT_DELAY,
ATTR_GROUP_MEMBER_UNREACHABLE,
ATTR_LOW_BATTERY,

View file

@ -3,7 +3,7 @@
from homematicip.base.enums import ValveState
from homeassistant.components.homematicip_cloud import DOMAIN as HMIPC_DOMAIN
from homeassistant.components.homematicip_cloud.generic_entity import (
from homeassistant.components.homematicip_cloud.entity import (
ATTR_CONFIG_PENDING,
ATTR_DEVICE_OVERHEATED,
ATTR_DEVICE_OVERLOADED,

View file

@ -1,7 +1,7 @@
"""Tests for HomematicIP Cloud switch."""
from homeassistant.components.homematicip_cloud import DOMAIN as HMIPC_DOMAIN
from homeassistant.components.homematicip_cloud.generic_entity import (
from homeassistant.components.homematicip_cloud.entity import (
ATTR_GROUP_MEMBER_UNREACHABLE,
)
from homeassistant.components.switch import DOMAIN as SWITCH_DOMAIN