1 """Support for ZoneMinder camera streaming."""
3 from __future__
import annotations
7 from zoneminder.monitor
import Monitor
8 from zoneminder.zm
import ZoneMinder
16 from .
import DOMAIN
as ZONEMINDER_DOMAIN
18 _LOGGER = logging.getLogger(__name__)
24 add_entities: AddEntitiesCallback,
25 discovery_info: DiscoveryInfoType |
None =
None,
27 """Set up the ZoneMinder cameras."""
31 for zm_client
in hass.data[ZONEMINDER_DOMAIN].values():
32 if not (monitors := zm_client.get_monitors()):
34 "Camera could not fetch any monitors from ZoneMinder"
37 for monitor
in monitors:
38 _LOGGER.debug(
"Initializing camera %s", monitor.id)
44 """Representation of a ZoneMinder Monitor Stream."""
46 _attr_should_poll =
True
48 def __init__(self, monitor: Monitor, verify_ssl: bool) ->
None:
49 """Initialize as a subclass of MjpegCamera."""
52 mjpeg_url=monitor.mjpeg_image_url,
53 still_image_url=monitor.still_image_url,
54 verify_ssl=verify_ssl,
61 """Update our recording state from the ZM API."""
62 _LOGGER.debug(
"Updating camera state for monitor %i", self.
_monitor_monitor.id)
None __init__(self, Monitor monitor, bool verify_ssl)
None add_entities(HomeAssistant hass, FreeboxRouter router, AddEntitiesCallback async_add_entities, set[str] tracked)
None filter_urllib3_logging()
None setup_platform(HomeAssistant hass, ConfigType config, AddEntitiesCallback add_entities, DiscoveryInfoType|None discovery_info=None)