mirror of
https://github.com/home-assistant/core.git
synced 2026-02-15 07:36:16 +00:00
Move vizio service registration (#162133)
This commit is contained in:
@@ -8,14 +8,24 @@ from homeassistant.components.media_player import MediaPlayerDeviceClass
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import CONF_DEVICE_CLASS, Platform
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.helpers import config_validation as cv
|
||||
from homeassistant.helpers.storage import Store
|
||||
from homeassistant.helpers.typing import ConfigType
|
||||
|
||||
from .const import CONF_APPS, DOMAIN
|
||||
from .coordinator import VizioAppsDataUpdateCoordinator
|
||||
from .services import async_setup_services
|
||||
|
||||
CONFIG_SCHEMA = cv.config_entry_only_config_schema(DOMAIN)
|
||||
PLATFORMS = [Platform.MEDIA_PLAYER]
|
||||
|
||||
|
||||
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: ConfigEntry) -> bool:
|
||||
"""Load the saved entities."""
|
||||
|
||||
|
||||
@@ -4,26 +4,11 @@ from pyvizio.const import (
|
||||
DEVICE_CLASS_SPEAKER as VIZIO_DEVICE_CLASS_SPEAKER,
|
||||
DEVICE_CLASS_TV as VIZIO_DEVICE_CLASS_TV,
|
||||
)
|
||||
import voluptuous as vol
|
||||
|
||||
from homeassistant.components.media_player import (
|
||||
MediaPlayerDeviceClass,
|
||||
MediaPlayerEntityFeature,
|
||||
)
|
||||
from homeassistant.helpers import config_validation as cv
|
||||
from homeassistant.helpers.typing import VolDictType
|
||||
|
||||
SERVICE_UPDATE_SETTING = "update_setting"
|
||||
|
||||
ATTR_SETTING_TYPE = "setting_type"
|
||||
ATTR_SETTING_NAME = "setting_name"
|
||||
ATTR_NEW_VALUE = "new_value"
|
||||
|
||||
UPDATE_SETTING_SCHEMA: VolDictType = {
|
||||
vol.Required(ATTR_SETTING_TYPE): vol.All(cv.string, vol.Lower, cv.slugify),
|
||||
vol.Required(ATTR_SETTING_NAME): vol.All(cv.string, vol.Lower, cv.slugify),
|
||||
vol.Required(ATTR_NEW_VALUE): vol.Any(vol.Coerce(int), cv.string),
|
||||
}
|
||||
|
||||
CONF_ADDITIONAL_CONFIGS = "additional_configs"
|
||||
CONF_APP_ID = "APP_ID"
|
||||
|
||||
@@ -25,7 +25,7 @@ from homeassistant.const import (
|
||||
CONF_NAME,
|
||||
)
|
||||
from homeassistant.core import HomeAssistant, callback
|
||||
from homeassistant.helpers import device_registry as dr, entity_platform
|
||||
from homeassistant.helpers import device_registry as dr
|
||||
from homeassistant.helpers.aiohttp_client import async_get_clientsession
|
||||
from homeassistant.helpers.device_registry import DeviceInfo
|
||||
from homeassistant.helpers.dispatcher import (
|
||||
@@ -42,9 +42,7 @@ from .const import (
|
||||
DEFAULT_VOLUME_STEP,
|
||||
DEVICE_ID,
|
||||
DOMAIN,
|
||||
SERVICE_UPDATE_SETTING,
|
||||
SUPPORTED_COMMANDS,
|
||||
UPDATE_SETTING_SCHEMA,
|
||||
VIZIO_AUDIO_SETTINGS,
|
||||
VIZIO_DEVICE_CLASSES,
|
||||
VIZIO_MUTE,
|
||||
@@ -122,10 +120,6 @@ async def async_setup_entry(
|
||||
entity = VizioDevice(config_entry, device, name, device_class, apps_coordinator)
|
||||
|
||||
async_add_entities([entity], update_before_add=True)
|
||||
platform = entity_platform.async_get_current_platform()
|
||||
platform.async_register_entity_service(
|
||||
SERVICE_UPDATE_SETTING, UPDATE_SETTING_SCHEMA, "async_update_setting"
|
||||
)
|
||||
|
||||
|
||||
class VizioDevice(MediaPlayerEntity):
|
||||
|
||||
38
homeassistant/components/vizio/services.py
Normal file
38
homeassistant/components/vizio/services.py
Normal file
@@ -0,0 +1,38 @@
|
||||
"""Vizio SmartCast services."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import voluptuous as vol
|
||||
|
||||
from homeassistant.components.media_player import DOMAIN as MEDIA_PLAYER_DOMAIN
|
||||
from homeassistant.core import HomeAssistant, callback
|
||||
from homeassistant.helpers import config_validation as cv, service
|
||||
from homeassistant.helpers.typing import VolDictType
|
||||
|
||||
from .const import DOMAIN
|
||||
|
||||
SERVICE_UPDATE_SETTING = "update_setting"
|
||||
|
||||
ATTR_SETTING_TYPE = "setting_type"
|
||||
ATTR_SETTING_NAME = "setting_name"
|
||||
ATTR_NEW_VALUE = "new_value"
|
||||
|
||||
UPDATE_SETTING_SCHEMA: VolDictType = {
|
||||
vol.Required(ATTR_SETTING_TYPE): vol.All(cv.string, vol.Lower, cv.slugify),
|
||||
vol.Required(ATTR_SETTING_NAME): vol.All(cv.string, vol.Lower, cv.slugify),
|
||||
vol.Required(ATTR_NEW_VALUE): vol.Any(vol.Coerce(int), cv.string),
|
||||
}
|
||||
|
||||
|
||||
@callback
|
||||
def async_setup_services(hass: HomeAssistant) -> None:
|
||||
"""Set up services."""
|
||||
|
||||
service.async_register_platform_entity_service(
|
||||
hass,
|
||||
DOMAIN,
|
||||
SERVICE_UPDATE_SETTING,
|
||||
entity_domain=MEDIA_PLAYER_DOMAIN,
|
||||
schema=UPDATE_SETTING_SCHEMA,
|
||||
func="async_update_setting",
|
||||
)
|
||||
@@ -47,8 +47,8 @@ from homeassistant.components.vizio.const import (
|
||||
CONF_VOLUME_STEP,
|
||||
DEFAULT_VOLUME_STEP,
|
||||
DOMAIN,
|
||||
SERVICE_UPDATE_SETTING,
|
||||
)
|
||||
from homeassistant.components.vizio.services import SERVICE_UPDATE_SETTING
|
||||
from homeassistant.const import ATTR_ENTITY_ID, STATE_OFF, STATE_ON, STATE_UNAVAILABLE
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.util import dt as dt_util
|
||||
|
||||
Reference in New Issue
Block a user