3 from __future__
import annotations
5 from typing
import TYPE_CHECKING
7 import voluptuous
as vol
15 from .const
import DOMAIN
18 from .media_player
import OnkyoMediaPlayer
20 DATA_MP_ENTITIES: HassKey[dict[str, dict[str, OnkyoMediaPlayer]]] =
HassKey(DOMAIN)
22 ATTR_HDMI_OUTPUT =
"hdmi_output"
34 ONKYO_SELECT_OUTPUT_SCHEMA = vol.Schema(
36 vol.Required(ATTR_ENTITY_ID): cv.entity_ids,
37 vol.Required(ATTR_HDMI_OUTPUT): vol.In(ACCEPTED_VALUES),
40 SERVICE_SELECT_HDMI_OUTPUT =
"onkyo_select_hdmi_output"
44 """Register Onkyo services."""
46 hass.data.setdefault(DATA_MP_ENTITIES, {})
48 async
def async_service_handle(service: ServiceCall) ->
None:
49 """Handle for services."""
50 entity_ids = service.data[ATTR_ENTITY_ID]
52 targets: list[OnkyoMediaPlayer] = []
53 for receiver_entities
in hass.data[DATA_MP_ENTITIES].values():
56 for entity
in receiver_entities.values()
57 if entity.entity_id
in entity_ids
60 for target
in targets:
61 if service.service == SERVICE_SELECT_HDMI_OUTPUT:
62 await target.async_select_output(service.data[ATTR_HDMI_OUTPUT])
64 hass.services.async_register(
66 SERVICE_SELECT_HDMI_OUTPUT,
68 schema=ONKYO_SELECT_OUTPUT_SCHEMA,
None async_register_services(HomeAssistant hass)