python-onvif-zeep
python-onvif-zeep copied to clipboard
ONVIF camera ignores speed parameters
def make_relative_move(self, move: Moves, pan_offset=0.1, tilt_offset=0.1, zoom_offset=0.1):
"""
Perform a relative move based on the specified move type.
:param move: The type of move (from Moves enum).
:param pan_offset: Relative pan offset (default: 0.1).
:param tilt_offset: Relative tilt offset (default: 0.1).
:param zoom_offset: Relative zoom offset (default: 0.1).
"""
# Set relative move parameters
match move:
case Moves.Up:
print('Up action...')
self.relative_move_request.Translation = {'PanTilt': {'x': 0, 'y': tilt_offset}, 'Zoom': 0}
self.relative_move_request.Speed = {'PanTilt': {'x': 0, 'y': 0}}
case Moves.Down:
print('Down action...')
self.relative_move_request.Translation = {'PanTilt': {'x': 0, 'y': -tilt_offset}, 'Zoom': 0}
self.relative_move_request.Speed = {'PanTilt': {'x': 0, 'y': 0}}
case Moves.Left:
print('Left action...')
self.relative_move_request.Translation = {"PanTilt": {"x": -pan_offset, "y": 0}}
self.relative_move_request.Speed = {'PanTilt': {'x': 0, 'y': 0}}
case Moves.Right:
print('Right action...')
self.relative_move_request.Translation = {"PanTilt": {"x": pan_offset, "y": 0}}
self.relative_move_request.Speed = {'PanTilt': {'x': 0, 'y': 0}}
case Moves.ZoomIn:
print('Zoom in action...')
self.relative_move_request.Translation = {"Zoom": zoom_offset}
self.relative_move_request.Speed = {'Zoom': 0}
case Moves.ZoomOut:
print('Zoom out action...')
self.relative_move_request.Translation = {"Zoom": -zoom_offset}
self.relative_move_request.Speed = {'Zoom': 0}
case _: print('Неопознанная команда')
# Perform the relative move
self.ptz.RelativeMove(self.relative_move_request)
I have a function for relative movements of the ONVIF camera, however, the code ignores the values of the speed parameters. Even if you write zero values everywhere, the camera will move in the specified direction. How can I fix this?