From e8ec74b9441d3a77861d8038a7781f3b8d6aaa26 Mon Sep 17 00:00:00 2001 From: Rohan Kapoor Date: Thu, 13 Dec 2018 23:10:54 -0800 Subject: [PATCH] Expose ZoneMinder availability to Home Assistant (#18946) * Expose ZoneMinder availability to Home Assistant * Bump zm-py to 0.2.0 with the availability changes published --- homeassistant/components/camera/zoneminder.py | 7 +++++++ homeassistant/components/sensor/zoneminder.py | 16 +++++++++++++++- homeassistant/components/zoneminder/__init__.py | 2 +- requirements_all.txt | 2 +- 4 files changed, 24 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/camera/zoneminder.py b/homeassistant/components/camera/zoneminder.py index 55d8d91d3ee..e2be7912387 100644 --- a/homeassistant/components/camera/zoneminder.py +++ b/homeassistant/components/camera/zoneminder.py @@ -44,6 +44,7 @@ class ZoneMinderCamera(MjpegCamera): } super().__init__(device_info) self._is_recording = None + self._is_available = None self._monitor = monitor @property @@ -55,8 +56,14 @@ class ZoneMinderCamera(MjpegCamera): """Update our recording state from the ZM API.""" _LOGGER.debug("Updating camera state for monitor %i", self._monitor.id) self._is_recording = self._monitor.is_recording + self._is_available = self._monitor.is_available @property def is_recording(self): """Return whether the monitor is in alarm mode.""" return self._is_recording + + @property + def available(self): + """Return True if entity is available.""" + return self._is_available diff --git a/homeassistant/components/sensor/zoneminder.py b/homeassistant/components/sensor/zoneminder.py index 8e4b57f1f38..16513dc58de 100644 --- a/homeassistant/components/sensor/zoneminder.py +++ b/homeassistant/components/sensor/zoneminder.py @@ -64,7 +64,8 @@ class ZMSensorMonitors(Entity): def __init__(self, monitor): """Initialize monitor sensor.""" self._monitor = monitor - self._state = monitor.function.value + self._state = None + self._is_available = None @property def name(self): @@ -76,6 +77,11 @@ class ZMSensorMonitors(Entity): """Return the state of the sensor.""" return self._state + @property + def available(self): + """Return True if Monitor is available.""" + return self._is_available + def update(self): """Update the sensor.""" state = self._monitor.function @@ -83,6 +89,7 @@ class ZMSensorMonitors(Entity): self._state = None else: self._state = state.value + self._is_available = self._monitor.is_available class ZMSensorEvents(Entity): @@ -123,6 +130,7 @@ class ZMSensorRunState(Entity): def __init__(self, client): """Initialize run state sensor.""" self._state = None + self._is_available = None self._client = client @property @@ -135,6 +143,12 @@ class ZMSensorRunState(Entity): """Return the state of the sensor.""" return self._state + @property + def available(self): + """Return True if ZoneMinder is available.""" + return self._is_available + def update(self): """Update the sensor.""" self._state = self._client.get_active_state() + self._is_available = self._client.is_available diff --git a/homeassistant/components/zoneminder/__init__.py b/homeassistant/components/zoneminder/__init__.py index e5d0c7a5a92..262ce35d3cb 100644 --- a/homeassistant/components/zoneminder/__init__.py +++ b/homeassistant/components/zoneminder/__init__.py @@ -15,7 +15,7 @@ import homeassistant.helpers.config_validation as cv _LOGGER = logging.getLogger(__name__) -REQUIREMENTS = ['zm-py==0.1.0'] +REQUIREMENTS = ['zm-py==0.2.0'] CONF_PATH_ZMS = 'path_zms' diff --git a/requirements_all.txt b/requirements_all.txt index ef62831167e..1baa47c33d6 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -1689,4 +1689,4 @@ zigpy-xbee==0.1.1 zigpy==0.2.0 # homeassistant.components.zoneminder -zm-py==0.1.0 +zm-py==0.2.0