Advertisement
Guest User

Untitled

a guest
Oct 15th, 2019
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.98 KB | None | 0 0
  1. from onvif import ONVIFCamera
  2. import zeep
  3.  
  4. def zeep_pythonvalue(self, xmlvalue):
  5. return xmlvalue
  6.  
  7. zeep.xsd.simple.AnySimpleType.pythonvalue = zeep_pythonvalue
  8.  
  9. XMAX = 1
  10. XMIN = -1
  11. YMAX = 1
  12. YMIN = -1
  13. moverequest = None
  14. ptz = None
  15. active = False
  16.  
  17. def do_move(ptz, request):
  18. # Start continuous move
  19. global active
  20. if active:
  21. ptz.Stop({'ProfileToken': request.ProfileToken})
  22. active = True
  23. ptz.ContinuousMove(request)
  24.  
  25.  
  26. def move_right(ptz, request):
  27. print ('move right...')
  28. request.Velocity.PanTilt.x = XMAX
  29. request.Velocity.PanTilt.y = 0
  30. request.Velocity.Zoom = 0
  31. do_move(ptz, request)
  32.  
  33.  
  34. def test():
  35. mycam = ONVIFCamera('192.168.1.2', 80, 'admin', 'admin', '/home/fran/python-onvif-zeep/wsdl')
  36.  
  37.  
  38. media = mycam.create_media_service()
  39. profiles = media.GetProfiles()
  40.  
  41. token = profiles[0].token
  42.  
  43. ptz_service = mycam.create_ptz_service()
  44. status = ptz_service.GetStatus({'ProfileToken': token})
  45. request = ptz_service.create_type('GetConfigurationOptions')
  46. request.ConfigurationToken = token
  47. ptz_configuration_options = ptz_service.GetConfigurationOptions(request)
  48.  
  49. global moverequest
  50. moverequest = ptz_service.create_type('ContinuousMove')
  51. moverequest.ProfileToken = token
  52. if moverequest.Velocity is None:
  53. moverequest.Velocity = ptz_service.GetStatus({'ProfileToken': token}).Position
  54.  
  55. # Get range of pan and tilt
  56. # NOTE: X and Y are velocity vector
  57. global XMAX, XMIN, YMAX, YMIN
  58. XMAX = ptz_configuration_options.Spaces.ContinuousPanTiltVelocitySpace[0].XRange.Max
  59. XMIN = ptz_configuration_options.Spaces.ContinuousPanTiltVelocitySpace[0].XRange.Min
  60. YMAX = ptz_configuration_options.Spaces.ContinuousPanTiltVelocitySpace[0].YRange.Max
  61. YMIN = ptz_configuration_options.Spaces.ContinuousPanTiltVelocitySpace[0].YRange.Min
  62.  
  63. for i in range(100):
  64. move_right(ptz_service, moverequest)
  65.  
  66.  
  67. if __name__ == '__main__':
  68.  
  69. test()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement