mirror of
https://github.com/home-assistant/core.git
synced 2025-07-19 19:27:45 +00:00
Move ps4 services to separate module (#144870)
This commit is contained in:
parent
1748dbd60f
commit
91f01d660f
@ -9,7 +9,6 @@ from typing import TYPE_CHECKING
|
|||||||
|
|
||||||
from pyps4_2ndscreen.ddp import DDPProtocol, async_create_ddp_endpoint
|
from pyps4_2ndscreen.ddp import DDPProtocol, async_create_ddp_endpoint
|
||||||
from pyps4_2ndscreen.media_art import COUNTRIES
|
from pyps4_2ndscreen.media_art import COUNTRIES
|
||||||
import voluptuous as vol
|
|
||||||
|
|
||||||
from homeassistant.components import persistent_notification
|
from homeassistant.components import persistent_notification
|
||||||
from homeassistant.components.media_player import (
|
from homeassistant.components.media_player import (
|
||||||
@ -18,15 +17,8 @@ from homeassistant.components.media_player import (
|
|||||||
MediaType,
|
MediaType,
|
||||||
)
|
)
|
||||||
from homeassistant.config_entries import ConfigEntry
|
from homeassistant.config_entries import ConfigEntry
|
||||||
from homeassistant.const import (
|
from homeassistant.const import ATTR_LOCKED, CONF_REGION, CONF_TOKEN, Platform
|
||||||
ATTR_COMMAND,
|
from homeassistant.core import HomeAssistant, split_entity_id
|
||||||
ATTR_ENTITY_ID,
|
|
||||||
ATTR_LOCKED,
|
|
||||||
CONF_REGION,
|
|
||||||
CONF_TOKEN,
|
|
||||||
Platform,
|
|
||||||
)
|
|
||||||
from homeassistant.core import HomeAssistant, ServiceCall, split_entity_id
|
|
||||||
from homeassistant.exceptions import HomeAssistantError
|
from homeassistant.exceptions import HomeAssistantError
|
||||||
from homeassistant.helpers import config_validation as cv, entity_registry as er
|
from homeassistant.helpers import config_validation as cv, entity_registry as er
|
||||||
from homeassistant.helpers.aiohttp_client import async_get_clientsession
|
from homeassistant.helpers.aiohttp_client import async_get_clientsession
|
||||||
@ -36,28 +28,14 @@ from homeassistant.util import location as location_util
|
|||||||
from homeassistant.util.json import JsonObjectType, load_json_object
|
from homeassistant.util.json import JsonObjectType, load_json_object
|
||||||
|
|
||||||
from .config_flow import PlayStation4FlowHandler # noqa: F401
|
from .config_flow import PlayStation4FlowHandler # noqa: F401
|
||||||
from .const import (
|
from .const import ATTR_MEDIA_IMAGE_URL, COUNTRYCODE_NAMES, DOMAIN, GAMES_FILE, PS4_DATA
|
||||||
ATTR_MEDIA_IMAGE_URL,
|
from .services import register_services
|
||||||
COMMANDS,
|
|
||||||
COUNTRYCODE_NAMES,
|
|
||||||
DOMAIN,
|
|
||||||
GAMES_FILE,
|
|
||||||
PS4_DATA,
|
|
||||||
)
|
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from .media_player import PS4Device
|
from .media_player import PS4Device
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
SERVICE_COMMAND = "send_command"
|
|
||||||
|
|
||||||
PS4_COMMAND_SCHEMA = vol.Schema(
|
|
||||||
{
|
|
||||||
vol.Required(ATTR_ENTITY_ID): cv.entity_ids,
|
|
||||||
vol.Required(ATTR_COMMAND): vol.In(list(COMMANDS)),
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
PLATFORMS = [Platform.MEDIA_PLAYER]
|
PLATFORMS = [Platform.MEDIA_PLAYER]
|
||||||
|
|
||||||
@ -80,7 +58,7 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
|
|||||||
protocol=protocol,
|
protocol=protocol,
|
||||||
)
|
)
|
||||||
_LOGGER.debug("PS4 DDP endpoint created: %s, %s", transport, protocol)
|
_LOGGER.debug("PS4 DDP endpoint created: %s, %s", transport, protocol)
|
||||||
service_handle(hass)
|
register_services(hass)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
@ -223,19 +201,3 @@ def _reformat_data(hass: HomeAssistant, games: dict, unique_id: str) -> dict:
|
|||||||
if data_reformatted:
|
if data_reformatted:
|
||||||
save_games(hass, games, unique_id)
|
save_games(hass, games, unique_id)
|
||||||
return games
|
return games
|
||||||
|
|
||||||
|
|
||||||
def service_handle(hass: HomeAssistant):
|
|
||||||
"""Handle for services."""
|
|
||||||
|
|
||||||
async def async_service_command(call: ServiceCall) -> None:
|
|
||||||
"""Service for sending commands."""
|
|
||||||
entity_ids = call.data[ATTR_ENTITY_ID]
|
|
||||||
command = call.data[ATTR_COMMAND]
|
|
||||||
for device in hass.data[PS4_DATA].devices:
|
|
||||||
if device.entity_id in entity_ids:
|
|
||||||
await device.async_send_command(command)
|
|
||||||
|
|
||||||
hass.services.async_register(
|
|
||||||
DOMAIN, SERVICE_COMMAND, async_service_command, schema=PS4_COMMAND_SCHEMA
|
|
||||||
)
|
|
||||||
|
37
homeassistant/components/ps4/services.py
Normal file
37
homeassistant/components/ps4/services.py
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
"""Support for PlayStation 4 consoles."""
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import voluptuous as vol
|
||||||
|
|
||||||
|
from homeassistant.const import ATTR_COMMAND, ATTR_ENTITY_ID
|
||||||
|
from homeassistant.core import HomeAssistant, ServiceCall
|
||||||
|
from homeassistant.helpers import config_validation as cv
|
||||||
|
|
||||||
|
from .const import COMMANDS, DOMAIN, PS4_DATA
|
||||||
|
|
||||||
|
SERVICE_COMMAND = "send_command"
|
||||||
|
|
||||||
|
PS4_COMMAND_SCHEMA = vol.Schema(
|
||||||
|
{
|
||||||
|
vol.Required(ATTR_ENTITY_ID): cv.entity_ids,
|
||||||
|
vol.Required(ATTR_COMMAND): vol.In(list(COMMANDS)),
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
async def async_service_command(call: ServiceCall) -> None:
|
||||||
|
"""Service for sending commands."""
|
||||||
|
entity_ids = call.data[ATTR_ENTITY_ID]
|
||||||
|
command = call.data[ATTR_COMMAND]
|
||||||
|
for device in call.hass.data[PS4_DATA].devices:
|
||||||
|
if device.entity_id in entity_ids:
|
||||||
|
await device.async_send_command(command)
|
||||||
|
|
||||||
|
|
||||||
|
def register_services(hass: HomeAssistant) -> None:
|
||||||
|
"""Handle for services."""
|
||||||
|
|
||||||
|
hass.services.async_register(
|
||||||
|
DOMAIN, SERVICE_COMMAND, async_service_command, schema=PS4_COMMAND_SCHEMA
|
||||||
|
)
|
Loading…
x
Reference in New Issue
Block a user