From cab186d28fa789b88f7dc52544cf0d56d60cb028 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ville=20Skytt=C3=A4?= Date: Fri, 20 Nov 2020 23:59:11 +0200 Subject: [PATCH] Add ONVIF PTZ Stop support (#39734) --- homeassistant/components/onvif/camera.py | 9 ++++++++- homeassistant/components/onvif/const.py | 1 + homeassistant/components/onvif/device.py | 3 +++ homeassistant/components/onvif/services.yaml | 2 +- 4 files changed, 13 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/onvif/camera.py b/homeassistant/components/onvif/camera.py index d9378588b03..595924fe40d 100644 --- a/homeassistant/components/onvif/camera.py +++ b/homeassistant/components/onvif/camera.py @@ -35,6 +35,7 @@ from .const import ( LOGGER, RELATIVE_MOVE, SERVICE_PTZ, + STOP_MOVE, ZOOM_IN, ZOOM_OUT, ) @@ -54,7 +55,13 @@ async def async_setup_entry(hass, config_entry, async_add_entities): vol.Optional(ATTR_DISTANCE, default=0.1): cv.small_float, vol.Optional(ATTR_SPEED, default=0.5): cv.small_float, vol.Optional(ATTR_MOVE_MODE, default=RELATIVE_MOVE): vol.In( - [CONTINUOUS_MOVE, RELATIVE_MOVE, ABSOLUTE_MOVE, GOTOPRESET_MOVE] + [ + CONTINUOUS_MOVE, + RELATIVE_MOVE, + ABSOLUTE_MOVE, + GOTOPRESET_MOVE, + STOP_MOVE, + ] ), vol.Optional(ATTR_CONTINUOUS_DURATION, default=0.5): cv.small_float, vol.Optional(ATTR_PRESET, default="0"): cv.string, diff --git a/homeassistant/components/onvif/const.py b/homeassistant/components/onvif/const.py index 2ac78622f05..dc0688c4b30 100644 --- a/homeassistant/components/onvif/const.py +++ b/homeassistant/components/onvif/const.py @@ -39,5 +39,6 @@ CONTINUOUS_MOVE = "ContinuousMove" RELATIVE_MOVE = "RelativeMove" ABSOLUTE_MOVE = "AbsoluteMove" GOTOPRESET_MOVE = "GotoPreset" +STOP_MOVE = "Stop" SERVICE_PTZ = "ptz" diff --git a/homeassistant/components/onvif/device.py b/homeassistant/components/onvif/device.py index 599e6084581..84761a4777f 100644 --- a/homeassistant/components/onvif/device.py +++ b/homeassistant/components/onvif/device.py @@ -28,6 +28,7 @@ from .const import ( LOGGER, PAN_FACTOR, RELATIVE_MOVE, + STOP_MOVE, TILT_FACTOR, ZOOM_FACTOR, ) @@ -433,6 +434,8 @@ class ONVIFDevice: "Zoom": {"x": speed_val}, } await ptz_service.GotoPreset(req) + elif move_mode == STOP_MOVE: + await ptz_service.Stop(req) except ONVIFError as err: if "Bad Request" in err.reason: LOGGER.warning("Device '%s' doesn't support PTZ.", self.name) diff --git a/homeassistant/components/onvif/services.yaml b/homeassistant/components/onvif/services.yaml index e5a8c9fce35..bed426e9924 100644 --- a/homeassistant/components/onvif/services.yaml +++ b/homeassistant/components/onvif/services.yaml @@ -29,6 +29,6 @@ ptz: description: "PTZ preset profile token. Sets the preset profile token which is executed with GotoPreset" example: "1" move_mode: - description: "PTZ moving mode. One of ContinuousMove, RelativeMove, AbsoluteMove or GotoPreset" + description: "PTZ moving mode. One of ContinuousMove, RelativeMove, AbsoluteMove, GotoPreset, or Stop" default: "RelativeMove" example: "ContinuousMove"