From 13ba2d2e4720c2c1ecaf70f94c62908b3c04bec5 Mon Sep 17 00:00:00 2001 From: epenet <6771947+epenet@users.noreply.github.com> Date: Mon, 2 Feb 2026 17:08:07 +0100 Subject: [PATCH] Move litterrobot service registration (#162088) --- .../components/litterrobot/__init__.py | 10 +++++++ .../components/litterrobot/services.py | 30 +++++++++++++++++++ .../components/litterrobot/vacuum.py | 14 --------- tests/components/litterrobot/test_vacuum.py | 2 +- 4 files changed, 41 insertions(+), 15 deletions(-) create mode 100644 homeassistant/components/litterrobot/services.py diff --git a/homeassistant/components/litterrobot/__init__.py b/homeassistant/components/litterrobot/__init__.py index 2823450d9ad..14902a57aa5 100644 --- a/homeassistant/components/litterrobot/__init__.py +++ b/homeassistant/components/litterrobot/__init__.py @@ -6,11 +6,15 @@ import itertools from homeassistant.const import Platform from homeassistant.core import HomeAssistant +from homeassistant.helpers import config_validation as cv from homeassistant.helpers.device_registry import DeviceEntry +from homeassistant.helpers.typing import ConfigType from .const import DOMAIN from .coordinator import LitterRobotConfigEntry, LitterRobotDataUpdateCoordinator +from .services import async_setup_services +CONFIG_SCHEMA = cv.config_entry_only_config_schema(DOMAIN) PLATFORMS = [ Platform.BINARY_SENSOR, Platform.BUTTON, @@ -23,6 +27,12 @@ PLATFORMS = [ ] +async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: + """Set up the component.""" + async_setup_services(hass) + return True + + async def async_setup_entry(hass: HomeAssistant, entry: LitterRobotConfigEntry) -> bool: """Set up Litter-Robot from a config entry.""" coordinator = LitterRobotDataUpdateCoordinator(hass, entry) diff --git a/homeassistant/components/litterrobot/services.py b/homeassistant/components/litterrobot/services.py new file mode 100644 index 00000000000..2e6b2c8665c --- /dev/null +++ b/homeassistant/components/litterrobot/services.py @@ -0,0 +1,30 @@ +"""Litter-Robot services.""" + +from __future__ import annotations + +import voluptuous as vol + +from homeassistant.components.vacuum import DOMAIN as VACUUM_DOMAIN +from homeassistant.core import HomeAssistant, callback +from homeassistant.helpers import config_validation as cv, service + +from .const import DOMAIN + +SERVICE_SET_SLEEP_MODE = "set_sleep_mode" + + +@callback +def async_setup_services(hass: HomeAssistant) -> None: + """Set up services.""" + + service.async_register_platform_entity_service( + hass, + DOMAIN, + SERVICE_SET_SLEEP_MODE, + entity_domain=VACUUM_DOMAIN, + schema={ + vol.Required("enabled"): cv.boolean, + vol.Optional("start_time"): cv.time, + }, + func="async_set_sleep_mode", + ) diff --git a/homeassistant/components/litterrobot/vacuum.py b/homeassistant/components/litterrobot/vacuum.py index 9989c306b51..5cda02f7114 100644 --- a/homeassistant/components/litterrobot/vacuum.py +++ b/homeassistant/components/litterrobot/vacuum.py @@ -7,7 +7,6 @@ from typing import Any from pylitterbot import LitterRobot from pylitterbot.enums import LitterBoxStatus -import voluptuous as vol from homeassistant.components.vacuum import ( StateVacuumEntity, @@ -16,15 +15,12 @@ from homeassistant.components.vacuum import ( VacuumEntityFeature, ) from homeassistant.core import HomeAssistant -from homeassistant.helpers import config_validation as cv, entity_platform from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback from homeassistant.util import dt as dt_util from .coordinator import LitterRobotConfigEntry from .entity import LitterRobotEntity -SERVICE_SET_SLEEP_MODE = "set_sleep_mode" - LITTER_BOX_STATUS_STATE_MAP = { LitterBoxStatus.CLEAN_CYCLE: VacuumActivity.CLEANING, LitterBoxStatus.EMPTY_CYCLE: VacuumActivity.CLEANING, @@ -57,16 +53,6 @@ async def async_setup_entry( for robot in coordinator.litter_robots() ) - platform = entity_platform.async_get_current_platform() - platform.async_register_entity_service( - SERVICE_SET_SLEEP_MODE, - { - vol.Required("enabled"): cv.boolean, - vol.Optional("start_time"): cv.time, - }, - "async_set_sleep_mode", - ) - class LitterRobotCleaner(LitterRobotEntity[LitterRobot], StateVacuumEntity): """Litter-Robot "Vacuum" Cleaner.""" diff --git a/tests/components/litterrobot/test_vacuum.py b/tests/components/litterrobot/test_vacuum.py index 911dfb3b880..6a3a974b874 100644 --- a/tests/components/litterrobot/test_vacuum.py +++ b/tests/components/litterrobot/test_vacuum.py @@ -8,7 +8,7 @@ from unittest.mock import MagicMock from pylitterbot import Robot import pytest -from homeassistant.components.litterrobot.vacuum import SERVICE_SET_SLEEP_MODE +from homeassistant.components.litterrobot.services import SERVICE_SET_SLEEP_MODE from homeassistant.components.vacuum import ( DOMAIN as VACUUM_DOMAIN, SERVICE_START,