Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 8 additions & 22 deletions homeassistant/components/deconz/siren.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

from typing import Any

from pydeconz.models.event import EventType
from pydeconz.models.light.siren import Siren

from homeassistant.components.siren import (
Expand All @@ -13,7 +14,6 @@
)
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant, callback
from homeassistant.helpers.dispatcher import async_dispatcher_connect
from homeassistant.helpers.entity_platform import AddEntitiesCallback

from .deconz_device import DeconzDevice
Expand All @@ -30,33 +30,19 @@ async def async_setup_entry(
gateway.entities[DOMAIN] = set()

@callback
def async_add_siren(lights: list[Siren] | None = None) -> None:
def async_add_siren(_: EventType, siren_id: str) -> None:
"""Add siren from deCONZ."""
entities = []

if lights is None:
lights = list(gateway.api.lights.sirens.values())

for light in lights:

if (
isinstance(light, Siren)
and light.unique_id not in gateway.entities[DOMAIN]
):
entities.append(DeconzSiren(light, gateway))

if entities:
async_add_entities(entities)
siren = gateway.api.lights.sirens[siren_id]
async_add_entities([DeconzSiren(siren, gateway)])

config_entry.async_on_unload(
async_dispatcher_connect(
hass,
gateway.signal_new_light,
gateway.api.lights.sirens.subscribe(
async_add_siren,
EventType.ADDED,
)
)

async_add_siren()
for siren_id in gateway.api.lights.sirens:
async_add_siren(EventType.ADDED, siren_id)


class DeconzSiren(DeconzDevice, SirenEntity):
Expand Down