mirror of
https://github.com/home-assistant/core.git
synced 2025-07-21 12:17:07 +00:00
Synchronize Sonos service calls (#23791)
This commit is contained in:
parent
e9ea5c2ccb
commit
34f6245e74
@ -1,4 +1,5 @@
|
||||
"""Support to embed Sonos."""
|
||||
import asyncio
|
||||
import voluptuous as vol
|
||||
|
||||
from homeassistant import config_entries
|
||||
@ -80,12 +81,15 @@ SONOS_SET_OPTION_SCHEMA = vol.Schema({
|
||||
vol.Optional(ATTR_SPEECH_ENHANCE): cv.boolean,
|
||||
})
|
||||
|
||||
DATA_SERVICE_EVENT = 'sonos_service_idle'
|
||||
|
||||
|
||||
async def async_setup(hass, config):
|
||||
"""Set up the Sonos component."""
|
||||
conf = config.get(DOMAIN)
|
||||
|
||||
hass.data[DOMAIN] = conf or {}
|
||||
hass.data[DATA_SERVICE_EVENT] = asyncio.Event()
|
||||
|
||||
if conf is not None:
|
||||
hass.async_create_task(hass.config_entries.flow.async_init(
|
||||
@ -93,7 +97,9 @@ async def async_setup(hass, config):
|
||||
|
||||
async def service_handle(service):
|
||||
"""Dispatch a service call."""
|
||||
hass.data[DATA_SERVICE_EVENT].clear()
|
||||
async_dispatcher_send(hass, DOMAIN, service.service, service.data)
|
||||
await hass.data[DATA_SERVICE_EVENT].wait()
|
||||
|
||||
hass.services.async_register(
|
||||
DOMAIN, SERVICE_JOIN, service_handle,
|
||||
|
@ -25,7 +25,7 @@ from homeassistant.util.dt import utcnow
|
||||
|
||||
from . import (
|
||||
CONF_ADVERTISE_ADDR, CONF_HOSTS, CONF_INTERFACE_ADDR,
|
||||
DOMAIN as SONOS_DOMAIN,
|
||||
DATA_SERVICE_EVENT, DOMAIN as SONOS_DOMAIN,
|
||||
ATTR_ALARM_ID, ATTR_ENABLED, ATTR_INCLUDE_LINKED_ZONES, ATTR_MASTER,
|
||||
ATTR_NIGHT_SOUND, ATTR_SLEEP_TIME, ATTR_SPEECH_ENHANCE, ATTR_TIME,
|
||||
ATTR_VOLUME, ATTR_WITH_GROUP,
|
||||
@ -155,6 +155,9 @@ async def async_setup_entry(hass, config_entry, async_add_entities):
|
||||
|
||||
hass.async_add_executor_job(call, data)
|
||||
|
||||
# We are ready for the next service call
|
||||
hass.data[DATA_SERVICE_EVENT].set()
|
||||
|
||||
async_dispatcher_connect(hass, SONOS_DOMAIN, async_service_handle)
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user