Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from onvif import ONVIFCamera
- import zeep
- def zeep_pythonvalue(self, xmlvalue):
- return xmlvalue
- zeep.xsd.simple.AnySimpleType.pythonvalue = zeep_pythonvalue
- XMAX = 1
- XMIN = -1
- YMAX = 1
- YMIN = -1
- moverequest = None
- ptz = None
- active = False
- def do_move(ptz, request):
- # Start continuous move
- global active
- if active:
- ptz.Stop({'ProfileToken': request.ProfileToken})
- active = True
- ptz.ContinuousMove(request)
- def move_right(ptz, request):
- print ('move right...')
- request.Velocity.PanTilt.x = XMAX
- request.Velocity.PanTilt.y = 0
- request.Velocity.Zoom = 0
- do_move(ptz, request)
- def test():
- mycam = ONVIFCamera('192.168.1.2', 80, 'admin', 'admin', '/home/fran/python-onvif-zeep/wsdl')
- media = mycam.create_media_service()
- profiles = media.GetProfiles()
- token = profiles[0].token
- ptz_service = mycam.create_ptz_service()
- status = ptz_service.GetStatus({'ProfileToken': token})
- request = ptz_service.create_type('GetConfigurationOptions')
- request.ConfigurationToken = token
- ptz_configuration_options = ptz_service.GetConfigurationOptions(request)
- global moverequest
- moverequest = ptz_service.create_type('ContinuousMove')
- moverequest.ProfileToken = token
- if moverequest.Velocity is None:
- moverequest.Velocity = ptz_service.GetStatus({'ProfileToken': token}).Position
- # Get range of pan and tilt
- # NOTE: X and Y are velocity vector
- global XMAX, XMIN, YMAX, YMIN
- XMAX = ptz_configuration_options.Spaces.ContinuousPanTiltVelocitySpace[0].XRange.Max
- XMIN = ptz_configuration_options.Spaces.ContinuousPanTiltVelocitySpace[0].XRange.Min
- YMAX = ptz_configuration_options.Spaces.ContinuousPanTiltVelocitySpace[0].YRange.Max
- YMIN = ptz_configuration_options.Spaces.ContinuousPanTiltVelocitySpace[0].YRange.Min
- for i in range(100):
- move_right(ptz_service, moverequest)
- if __name__ == '__main__':
- test()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement