From cb850d4994222fd2c8dbea28b94d7208600850ca Mon Sep 17 00:00:00 2001 From: Kevin McCormack Date: Sat, 19 Oct 2019 17:33:31 -0400 Subject: [PATCH 1/3] Update Vivotek component Fix building stream URL --- homeassistant/components/vivotek/camera.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/vivotek/camera.py b/homeassistant/components/vivotek/camera.py index 012c1e1df3475..c0feb94b26581 100644 --- a/homeassistant/components/vivotek/camera.py +++ b/homeassistant/components/vivotek/camera.py @@ -49,10 +49,8 @@ def setup_platform(hass, config, add_entities, discovery_info=None): pwd=config[CONF_PASSWORD], ), stream_source=( - "rtsp://%s:%s@%s:554/live.sdp", - config[CONF_USERNAME], - config[CONF_PASSWORD], - config[CONF_IP_ADDRESS], + "rtsp://%s:%s@%s:554/live.sdp" + % (config[CONF_USERNAME], config[CONF_PASSWORD], config[CONF_IP_ADDRESS]) ), ) add_entities([VivotekCam(**args)], True) From 1f056743105430601855b0961626d9f7f7178532 Mon Sep 17 00:00:00 2001 From: Kevin McCormack Date: Sat, 19 Oct 2019 18:01:41 -0400 Subject: [PATCH 2/3] Update Vivotek component Make stream path optionally configurable. --- homeassistant/components/vivotek/camera.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/vivotek/camera.py b/homeassistant/components/vivotek/camera.py index c0feb94b26581..90106e6b06fec 100644 --- a/homeassistant/components/vivotek/camera.py +++ b/homeassistant/components/vivotek/camera.py @@ -20,9 +20,12 @@ CONF_FRAMERATE = "framerate" +CONF_STREAM_PATH = "stream_path" + DEFAULT_CAMERA_BRAND = "Vivotek" DEFAULT_NAME = "Vivotek Camera" DEFAULT_EVENT_0_KEY = "event_i0_enable" +DEFAULT_STREAM_SOURCE = "live.sdp" PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend( { @@ -33,6 +36,7 @@ vol.Optional(CONF_SSL, default=False): cv.boolean, vol.Optional(CONF_VERIFY_SSL, default=True): cv.boolean, vol.Optional(CONF_FRAMERATE, default=2): cv.positive_int, + vol.Optional(CONF_STREAM_PATH, default=DEFAULT_STREAM_SOURCE): cv.string, } ) @@ -49,8 +53,13 @@ def setup_platform(hass, config, add_entities, discovery_info=None): pwd=config[CONF_PASSWORD], ), stream_source=( - "rtsp://%s:%s@%s:554/live.sdp" - % (config[CONF_USERNAME], config[CONF_PASSWORD], config[CONF_IP_ADDRESS]) + "rtsp://%s:%s@%s:554/%s" + % ( + config[CONF_USERNAME], + config[CONF_PASSWORD], + config[CONF_IP_ADDRESS], + config[CONF_STREAM_PATH], + ) ), ) add_entities([VivotekCam(**args)], True) From 46c5d5bd1472c80f3dd87b60c408c1682428c8d6 Mon Sep 17 00:00:00 2001 From: Kevin McCormack Date: Thu, 24 Oct 2019 23:06:33 -0400 Subject: [PATCH 3/3] Update Vivotek camera integration Use f-string to build stream source URL. This improve readability and I hear it runs faster. --- homeassistant/components/vivotek/camera.py | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/homeassistant/components/vivotek/camera.py b/homeassistant/components/vivotek/camera.py index 90106e6b06fec..c39a9b495bda0 100644 --- a/homeassistant/components/vivotek/camera.py +++ b/homeassistant/components/vivotek/camera.py @@ -43,6 +43,7 @@ def setup_platform(hass, config, add_entities, discovery_info=None): """Set up a Vivotek IP Camera.""" + creds = f"{config[CONF_USERNAME]}:{config[CONF_PASSWORD]}" args = dict( config=config, cam=VivotekCamera( @@ -52,15 +53,7 @@ def setup_platform(hass, config, add_entities, discovery_info=None): usr=config[CONF_USERNAME], pwd=config[CONF_PASSWORD], ), - stream_source=( - "rtsp://%s:%s@%s:554/%s" - % ( - config[CONF_USERNAME], - config[CONF_PASSWORD], - config[CONF_IP_ADDRESS], - config[CONF_STREAM_PATH], - ) - ), + stream_source=f"rtsp://{creds}@{config[CONF_IP_ADDRESS]}:554/{config[CONF_STREAM_PATH]}", ) add_entities([VivotekCam(**args)], True)