From 36c135c785f7daa9f739103befbff68d38f86a1a Mon Sep 17 00:00:00 2001 From: Matt Snyder Date: Mon, 8 Apr 2019 08:22:31 -0500 Subject: [PATCH] Stream support for Doorbird component (#22876) * Support stream source for doorbird live camera * Support stream source for doorbird live camera * Support stream component on Doorbird camera entities * Bump library version * Update manifest * Lint * Correct parameter order --- homeassistant/components/doorbird/__init__.py | 2 +- homeassistant/components/doorbird/camera.py | 19 ++++++++++++++++--- .../components/doorbird/manifest.json | 2 +- requirements_all.txt | 2 +- 4 files changed, 19 insertions(+), 6 deletions(-) diff --git a/homeassistant/components/doorbird/__init__.py b/homeassistant/components/doorbird/__init__.py index d477836425d..25a2c5caff9 100644 --- a/homeassistant/components/doorbird/__init__.py +++ b/homeassistant/components/doorbird/__init__.py @@ -11,7 +11,7 @@ from homeassistant.const import ( import homeassistant.helpers.config_validation as cv from homeassistant.util import dt as dt_util, slugify -REQUIREMENTS = ['doorbirdpy==2.0.6'] +REQUIREMENTS = ['doorbirdpy==2.0.8'] _LOGGER = logging.getLogger(__name__) diff --git a/homeassistant/components/doorbird/camera.py b/homeassistant/components/doorbird/camera.py index 272a3cb932a..a93b0fbf194 100644 --- a/homeassistant/components/doorbird/camera.py +++ b/homeassistant/components/doorbird/camera.py @@ -6,7 +6,7 @@ import logging import aiohttp import async_timeout -from homeassistant.components.camera import Camera +from homeassistant.components.camera import Camera, SUPPORT_STREAM from homeassistant.helpers.aiohttp_client import async_get_clientsession from . import DOMAIN as DOORBIRD_DOMAIN @@ -32,7 +32,8 @@ async def async_setup_platform(hass, config, async_add_entities, DoorBirdCamera( device.live_image_url, _CAMERA_LIVE.format(doorstation.name), - _LIVE_INTERVAL), + _LIVE_INTERVAL, + device.rtsp_live_video_url), DoorBirdCamera( device.history_image_url(1, 'doorbell'), _CAMERA_LAST_VISITOR.format(doorstation.name), @@ -47,15 +48,27 @@ async def async_setup_platform(hass, config, async_add_entities, class DoorBirdCamera(Camera): """The camera on a DoorBird device.""" - def __init__(self, url, name, interval=None): + def __init__(self, url, name, interval=None, stream_url=None): """Initialize the camera on a DoorBird device.""" self._url = url + self._stream_url = stream_url self._name = name self._last_image = None + self._supported_features = SUPPORT_STREAM if self._stream_url else 0 self._interval = interval or datetime.timedelta self._last_update = datetime.datetime.min super().__init__() + @property + def stream_source(self): + """Return the stream source.""" + return self._stream_url + + @property + def supported_features(self): + """Return supported features.""" + return self._supported_features + @property def name(self): """Get the name of the camera.""" diff --git a/homeassistant/components/doorbird/manifest.json b/homeassistant/components/doorbird/manifest.json index f65af20f93c..3fb9fdc753b 100644 --- a/homeassistant/components/doorbird/manifest.json +++ b/homeassistant/components/doorbird/manifest.json @@ -3,7 +3,7 @@ "name": "Doorbird", "documentation": "https://www.home-assistant.io/components/doorbird", "requirements": [ - "doorbirdpy==2.0.6" + "doorbirdpy==2.0.8" ], "dependencies": [], "codeowners": [ diff --git a/requirements_all.txt b/requirements_all.txt index ddab662c1d5..de505dec18f 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -344,7 +344,7 @@ distro==1.4.0 dlipower==0.7.165 # homeassistant.components.doorbird -doorbirdpy==2.0.6 +doorbirdpy==2.0.8 # homeassistant.components.dovado dovado==0.4.1