1 """Support for ZoneMinder switches."""
3 from __future__
import annotations
8 import voluptuous
as vol
9 from zoneminder.monitor
import Monitor, MonitorState
10 from zoneminder.zm
import ZoneMinder
13 PLATFORM_SCHEMA
as SWITCH_PLATFORM_SCHEMA,
23 from .
import DOMAIN
as ZONEMINDER_DOMAIN
25 _LOGGER = logging.getLogger(__name__)
27 PLATFORM_SCHEMA = SWITCH_PLATFORM_SCHEMA.extend(
29 vol.Required(CONF_COMMAND_ON): cv.string,
30 vol.Required(CONF_COMMAND_OFF): cv.string,
38 add_entities: AddEntitiesCallback,
39 discovery_info: DiscoveryInfoType |
None =
None,
41 """Set up the ZoneMinder switch platform."""
43 on_state = MonitorState(config.get(CONF_COMMAND_ON))
44 off_state = MonitorState(config.get(CONF_COMMAND_OFF))
46 switches: list[ZMSwitchMonitors] = []
48 for zm_client
in hass.data[ZONEMINDER_DOMAIN].values():
49 if not (monitors := zm_client.get_monitors()):
51 "Switch could not fetch any monitors from ZoneMinder"
60 """Representation of a ZoneMinder switch."""
62 icon =
"mdi:record-rec"
64 def __init__(self, monitor: Monitor, on_state: str, off_state: str) ->
None:
65 """Initialize the switch."""
69 self.
_state_state: bool |
None =
None
73 """Update the switch value."""
78 """Return True if entity is on."""
82 """Turn the entity on."""
86 """Turn the entity off."""
None __init__(self, Monitor monitor, str on_state, str off_state)
None turn_on(self, **Any kwargs)
None turn_off(self, **Any kwargs)
None add_entities(AsusWrtRouter router, AddEntitiesCallback async_add_entities, set[str] tracked)
None setup_platform(HomeAssistant hass, ConfigType config, AddEntitiesCallback add_entities, DiscoveryInfoType|None discovery_info=None)