diff --git a/homeassistant/components/blink/__init__.py b/homeassistant/components/blink/__init__.py index 3519766e0bf..2d1136b27f5 100644 --- a/homeassistant/components/blink/__init__.py +++ b/homeassistant/components/blink/__init__.py @@ -6,16 +6,9 @@ from typing import Any from blinkpy.auth import Auth from blinkpy.blinkpy import Blink -import voluptuous as vol from homeassistant.components import persistent_notification -from homeassistant.const import ( - CONF_FILE_PATH, - CONF_FILENAME, - CONF_NAME, - CONF_PIN, - CONF_SCAN_INTERVAL, -) +from homeassistant.const import CONF_SCAN_INTERVAL from homeassistant.core import HomeAssistant, callback from homeassistant.helpers import config_validation as cv from homeassistant.helpers.aiohttp_client import async_get_clientsession @@ -27,13 +20,6 @@ from .services import async_setup_services _LOGGER = logging.getLogger(__name__) -SERVICE_SAVE_VIDEO_SCHEMA = vol.Schema( - {vol.Required(CONF_NAME): cv.string, vol.Required(CONF_FILENAME): cv.string} -) -SERVICE_SEND_PIN_SCHEMA = vol.Schema({vol.Optional(CONF_PIN): cv.string}) -SERVICE_SAVE_RECENT_CLIPS_SCHEMA = vol.Schema( - {vol.Required(CONF_NAME): cv.string, vol.Required(CONF_FILE_PATH): cv.string} -) CONFIG_SCHEMA = cv.config_entry_only_config_schema(DOMAIN) diff --git a/homeassistant/components/blink/camera.py b/homeassistant/components/blink/camera.py index 4b788780891..0ebef162795 100644 --- a/homeassistant/components/blink/camera.py +++ b/homeassistant/components/blink/camera.py @@ -9,35 +9,23 @@ from typing import Any from blinkpy.auth import UnauthorizedError from blinkpy.camera import BlinkCamera as BlinkCameraAPI from requests.exceptions import ChunkedEncodingError -import voluptuous as vol from homeassistant.components.camera import Camera -from homeassistant.const import CONF_FILE_PATH, CONF_FILENAME from homeassistant.core import HomeAssistant from homeassistant.exceptions import ( ConfigEntryAuthFailed, HomeAssistantError, ServiceValidationError, ) -from homeassistant.helpers import config_validation as cv, entity_platform from homeassistant.helpers.device_registry import DeviceInfo from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback from homeassistant.helpers.update_coordinator import CoordinatorEntity -from .const import ( - DEFAULT_BRAND, - DOMAIN, - SERVICE_RECORD, - SERVICE_SAVE_RECENT_CLIPS, - SERVICE_SAVE_VIDEO, - SERVICE_TRIGGER, -) +from .const import DEFAULT_BRAND, DOMAIN from .coordinator import BlinkConfigEntry, BlinkUpdateCoordinator _LOGGER = logging.getLogger(__name__) -ATTR_VIDEO_CLIP = "video" -ATTR_IMAGE = "image" PARALLEL_UPDATES = 1 @@ -56,20 +44,6 @@ async def async_setup_entry( async_add_entities(entities) - platform = entity_platform.async_get_current_platform() - platform.async_register_entity_service(SERVICE_RECORD, None, "record") - platform.async_register_entity_service(SERVICE_TRIGGER, None, "trigger_camera") - platform.async_register_entity_service( - SERVICE_SAVE_RECENT_CLIPS, - {vol.Required(CONF_FILE_PATH): cv.string}, - "save_recent_clips", - ) - platform.async_register_entity_service( - SERVICE_SAVE_VIDEO, - {vol.Required(CONF_FILENAME): cv.string}, - "save_video", - ) - class BlinkCamera(CoordinatorEntity[BlinkUpdateCoordinator], Camera): """An implementation of a Blink Camera.""" diff --git a/homeassistant/components/blink/const.py b/homeassistant/components/blink/const.py index e57a05822e4..7190a3efa8a 100644 --- a/homeassistant/components/blink/const.py +++ b/homeassistant/components/blink/const.py @@ -20,11 +20,6 @@ TYPE_TEMPERATURE = "temperature" TYPE_BATTERY = "battery" TYPE_WIFI_STRENGTH = "wifi_strength" -SERVICE_RECORD = "record" -SERVICE_TRIGGER = "trigger_camera" -SERVICE_SAVE_VIDEO = "save_video" -SERVICE_SAVE_RECENT_CLIPS = "save_recent_clips" -SERVICE_SEND_PIN = "send_pin" PLATFORMS = [ Platform.ALARM_CONTROL_PANEL, diff --git a/homeassistant/components/blink/services.py b/homeassistant/components/blink/services.py index 49af9d87e6a..3882aa67312 100644 --- a/homeassistant/components/blink/services.py +++ b/homeassistant/components/blink/services.py @@ -4,13 +4,27 @@ from __future__ import annotations import voluptuous as vol -from homeassistant.const import ATTR_CONFIG_ENTRY_ID, CONF_PIN +from homeassistant.components.camera import DOMAIN as CAMERA_DOMAIN +from homeassistant.const import ( + ATTR_CONFIG_ENTRY_ID, + CONF_FILE_PATH, + CONF_FILENAME, + CONF_PIN, +) from homeassistant.core import HomeAssistant, ServiceCall, callback from homeassistant.exceptions import HomeAssistantError -from homeassistant.helpers import config_validation as cv, issue_registry as ir +from homeassistant.helpers import config_validation as cv, issue_registry as ir, service -from .const import DOMAIN, SERVICE_SEND_PIN +from .const import DOMAIN +SERVICE_RECORD = "record" +SERVICE_TRIGGER = "trigger_camera" +SERVICE_SAVE_VIDEO = "save_video" +SERVICE_SAVE_RECENT_CLIPS = "save_recent_clips" + + +# Deprecated +SERVICE_SEND_PIN = "send_pin" SERVICE_SEND_PIN_SCHEMA = vol.Schema( { vol.Required(ATTR_CONFIG_ENTRY_ID): vol.All(cv.ensure_list, [cv.string]), @@ -52,3 +66,36 @@ def async_setup_services(hass: HomeAssistant) -> None: _send_pin, schema=SERVICE_SEND_PIN_SCHEMA, ) + + service.async_register_platform_entity_service( + hass, + DOMAIN, + SERVICE_RECORD, + entity_domain=CAMERA_DOMAIN, + schema=None, + func="record", + ) + service.async_register_platform_entity_service( + hass, + DOMAIN, + SERVICE_TRIGGER, + entity_domain=CAMERA_DOMAIN, + schema=None, + func="trigger_camera", + ) + service.async_register_platform_entity_service( + hass, + DOMAIN, + SERVICE_SAVE_RECENT_CLIPS, + entity_domain=CAMERA_DOMAIN, + schema={vol.Required(CONF_FILE_PATH): cv.string}, + func="save_recent_clips", + ) + service.async_register_platform_entity_service( + hass, + DOMAIN, + SERVICE_SAVE_VIDEO, + entity_domain=CAMERA_DOMAIN, + schema={vol.Required(CONF_FILENAME): cv.string}, + func="save_video", + ) diff --git a/tests/components/blink/test_init.py b/tests/components/blink/test_init.py index 5c30e575b5e..6bb6f21d166 100644 --- a/tests/components/blink/test_init.py +++ b/tests/components/blink/test_init.py @@ -6,7 +6,8 @@ from aiohttp import ClientError from blinkpy.auth import LoginError import pytest -from homeassistant.components.blink.const import DOMAIN, SERVICE_SAVE_VIDEO +from homeassistant.components.blink.const import DOMAIN +from homeassistant.components.blink.services import SERVICE_SAVE_VIDEO from homeassistant.config_entries import ConfigEntryState from homeassistant.core import HomeAssistant diff --git a/tests/components/blink/test_services.py b/tests/components/blink/test_services.py index 0d04ac5d6a5..17a9fcea284 100644 --- a/tests/components/blink/test_services.py +++ b/tests/components/blink/test_services.py @@ -4,7 +4,8 @@ from unittest.mock import MagicMock import pytest -from homeassistant.components.blink.const import DOMAIN, SERVICE_SEND_PIN +from homeassistant.components.blink.const import DOMAIN +from homeassistant.components.blink.services import SERVICE_SEND_PIN from homeassistant.config_entries import ConfigEntryState from homeassistant.const import ATTR_CONFIG_ENTRY_ID, CONF_PIN from homeassistant.core import HomeAssistant