Advertisement
Guest User

Untitled

a guest
Dec 7th, 2018
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.11 KB | None | 0 0
  1. *******script py*******
  2.  
  3. from time import sleep
  4.  
  5. from onvif import ONVIFCamera
  6.  
  7. XMAX = 1
  8. XMIN = -1
  9. YMAX = 1
  10. YMIN = -1
  11.  
  12. def perform_move(ptz, request, timeout):
  13. # Start continuous move
  14. ptz.ContinuousMove(request)
  15. # Wait a certain time
  16. sleep(timeout)
  17. # Stop continuous move
  18. ptz.Stop({'ProfileToken': request.ProfileToken})
  19.  
  20. def move_up(ptz, request, timeout=1):
  21. print 'move up...'
  22. request.Velocity.PanTilt._x = 0
  23. request.Velocity.PanTilt._y = YMAX
  24. perform_move(ptz, request, timeout)
  25.  
  26. def move_down(ptz, request, timeout=1):
  27. print 'move down...'
  28. request.Velocity.PanTilt._x = 0
  29. request.Velocity.PanTilt._y = YMIN
  30. perform_move(ptz, request, timeout)
  31.  
  32. def move_right(ptz, request, timeout=1):
  33. print 'move right...'
  34. request.Velocity.PanTilt._x = XMAX
  35. request.Velocity.PanTilt._y = 0
  36. perform_move(ptz, request, timeout)
  37.  
  38. def move_left(ptz, request, timeout=1):
  39. print 'move left...'
  40. request.Velocity.PanTilt._x = XMIN
  41. request.Velocity.PanTilt._y = 0
  42. perform_move(ptz, request, timeout)
  43.  
  44. def continuous_move():
  45. mycam = ONVIFCamera('192.168.11.13', 80, 'admin', 'Supervisor')
  46. # Create media service object
  47. media = mycam.create_media_service()
  48. # Create ptz service object
  49. ptz = mycam.create_ptz_service()
  50.  
  51. # Get target profile
  52. media_profile = media.GetProfiles()[0];
  53.  
  54. # Get PTZ configuration options for getting continuous move range
  55. request = ptz.create_type('GetConfigurationOptions')
  56. request.ConfigurationToken = media_profile.PTZConfiguration._token
  57. ptz_configuration_options = ptz.GetConfigurationOptions(request)
  58.  
  59. request = ptz.create_type('ContinuousMove')
  60. request.ProfileToken = media_profile._token
  61.  
  62. ptz.Stop({'ProfileToken': media_profile._token})
  63.  
  64. # Get range of pan and tilt
  65. # NOTE: X and Y are velocity vector
  66. global XMAX, XMIN, YMAX, YMIN
  67. XMAX = ptz_configuration_options.Spaces.ContinuousPanTiltVelocitySpace[0].XRange.Max
  68. XMIN = ptz_configuration_options.Spaces.ContinuousPanTiltVelocitySpace[0].XRange.Min
  69. YMAX = ptz_configuration_options.Spaces.ContinuousPanTiltVelocitySpace[0].YRange.Max
  70. YMIN = ptz_configuration_options.Spaces.ContinuousPanTiltVelocitySpace[0].YRange.Min
  71.  
  72. # move left
  73. move_down(ptz, request)
  74.  
  75.  
  76. cam = ONVIFCamera('192.168.1.110', 80, 'admin', 'Supervisor')
  77. media_service = cam.create_media_service()
  78. #anlytics = cam.create_analytics_service()
  79. ptz = cam.create_ptz_service()
  80. profile = media_service.GetProfiles()[0]
  81. token = profile._token
  82. tourtoken = "0"
  83. request = ptz.GetStatus({'ProfileToken': profile._token})
  84. print(request)
  85. #continuous_move()
  86.  
  87.  
  88. ***ptz.py***
  89.  
  90. from time import sleep
  91.  
  92. from onvif import ONVIFCamera
  93.  
  94. XMAX = 1
  95. XMIN = -1
  96. YMAX = 1
  97. YMIN = -1
  98.  
  99. def perform_move(ptz, request, timeout):
  100. # Start continuous move
  101. ptz.ContinuousMove(request)
  102. # Wait a certain time
  103. sleep(timeout)
  104. # Stop continuous move
  105. ptz.Stop({'ProfileToken': request.ProfileToken})
  106.  
  107. def move_up(ptz, request, timeout=1):
  108. print 'move up...'
  109. request.Velocity.PanTilt._x = 0
  110. request.Velocity.PanTilt._y = YMAX
  111. perform_move(ptz, request, timeout)
  112.  
  113. def move_down(ptz, request, timeout=1):
  114. print 'move down...'
  115. request.Velocity.PanTilt._x = 0
  116. request.Velocity.PanTilt._y = YMIN
  117. perform_move(ptz, request, timeout)
  118.  
  119. def move_right(ptz, request, timeout=1):
  120. print 'move right...'
  121. request.Velocity.PanTilt._x = XMAX
  122. request.Velocity.PanTilt._y = 0
  123. perform_move(ptz, request, timeout)
  124.  
  125. def move_left(ptz, request, timeout=1):
  126. print 'move left...'
  127. request.Velocity.PanTilt._x = XMIN
  128. request.Velocity.PanTilt._y = 0
  129. perform_move(ptz, request, timeout)
  130.  
  131. def continuous_move():
  132. mycam = ONVIFCamera('192.168.11.42', 80, 'admin', 'Supervisor')
  133. # Create media service object
  134. media = mycam.create_media_service()
  135. # Create ptz service object
  136. ptz = mycam.create_ptz_service()
  137.  
  138. # Get target profile
  139. media_profile = media.GetProfiles()[0];
  140.  
  141. # Get PTZ configuration options for getting continuous move range
  142. request = ptz.create_type('GetConfigurationOptions')
  143. request.ConfigurationToken = media_profile.PTZConfiguration._token
  144. ptz_configuration_options = ptz.GetConfigurationOptions(request)
  145.  
  146. request = ptz.create_type('ContinuousMove')
  147. request.ProfileToken = media_profile._token
  148.  
  149. ptz.Stop({'ProfileToken': media_profile._token})
  150.  
  151. # Get range of pan and tilt
  152. # NOTE: X and Y are velocity vector
  153. global XMAX, XMIN, YMAX, YMIN
  154. XMAX = ptz_configuration_options.Spaces.ContinuousPanTiltVelocitySpace[0].XRange.Max
  155. XMIN = ptz_configuration_options.Spaces.ContinuousPanTiltVelocitySpace[0].XRange.Min
  156. YMAX = ptz_configuration_options.Spaces.ContinuousPanTiltVelocitySpace[0].YRange.Max
  157. YMIN = ptz_configuration_options.Spaces.ContinuousPanTiltVelocitySpace[0].YRange.Min
  158.  
  159. # move right
  160. move_right(ptz, request)
  161.  
  162. # move left
  163. move_left(ptz, request)
  164.  
  165. # Move up
  166. move_up(ptz, request)
  167.  
  168. # move down
  169. move_down(ptz, request)
  170.  
  171. if __name__ == '__main__':
  172. continuous_move()
  173.  
  174.  
  175.  
  176. ******discovery.py*******
  177. import subprocess
  178. import WSDiscovery
  179. from onvif import ONVIFCamera
  180.  
  181. def ws_discovery(scope=None):
  182. """List of IPs found in network"""
  183. lst = list()
  184. if (scope == None):
  185. cmd = 'hostname -I'
  186. scope = subprocess.check_output(cmd, shell=True).decode('utf-8')
  187. wsd = WSDiscovery.WSDiscovery()
  188. wsd.start()
  189. ret = wsd.searchServices()
  190. for service in ret:
  191. get_ip = str(service.getXAddrs())
  192. get_types = str(service.getTypes())
  193. for ip_scope in scope.split():
  194. result = get_ip.find(ip_scope.split('.')[0] + '.' + ip_scope.split('.')[1])
  195. if result > 0 and get_types.find('onvif') > 0:
  196. string_result = get_ip[result:result + 13]
  197. string_result = string_result.split('/')[0]
  198. lst.append(string_result)
  199. wsd.stop()
  200. lst.sort()
  201. return lst
  202.  
  203.  
  204. class CameraONVIF:
  205. def __init__(self, _ip, _user, _password):
  206. self.cam_ip = _ip
  207. self.cam_user = _user
  208. self.cam_password = _password
  209.  
  210. def camera_start(self):
  211. mycam = ONVIFCamera(self.cam_ip, 80, self.cam_user, self.cam_password, no_cache=True)
  212. media = mycam.create_media_service()
  213. media_profile = media.GetProfiles()[0]
  214. self.mycam = mycam
  215. self.camera_media = media
  216. self.camera_media_profile = media_profile
  217.  
  218. def get_hostname(self):
  219. response = self.mycam.devicemgmt.GetHostname()
  220. print response.Name
  221.  
  222. def get_device_information(self):
  223. response = self.mycam.devicemgmt.GetDeviceInformation()
  224. print response
  225.  
  226. print("Starting WS-Discovery")
  227. cam = ws_discovery()
  228. for ip in cam:
  229. print ip
  230.  
  231. camera = CameraONVIF('192.168.11.34', 'admin', 'Supervisor')
  232. camera.camera_start()
  233. print camera.get_device_information()
  234.  
  235.  
  236.  
  237.  
  238.  
  239.  
  240.  
  241.  
  242.  
  243.  
  244.  
  245.  
  246. def get_resolutions_available(self):
  247. request = self.camera_media.create_type('GetVideoEncoderConfigurationOptions')
  248. request.ProfileToken = self.camera_media_profile.token
  249. config = self.camera_media.GetVideoEncoderConfigurationOptions(request)
  250. return [(res.Width, res.Height) for res in config.H264.ResolutionsAvailable]
  251.  
  252. def get_frame_rate_range(self):
  253. request = self.camera_media.create_type('GetVideoEncoderConfigurationOptions')
  254. request.ProfileToken = self.camera_media_profile.token
  255. config = self.camera_media.GetVideoEncoderConfigurationOptions(request)
  256. return config.H264.FrameRateRange.Min, config.H264.FrameRateRange.Max
  257.  
  258. def get_date(self):
  259. datetime = self.mycam.devicemgmt.GetSystemDateAndTime()
  260. return datetime.UTCDateTime.Date
  261.  
  262. def get_time(self):
  263. datetime = self.mycam.devicemgmt.GetSystemDateAndTime()
  264. return datetime.UTCDateTime.Time
  265.  
  266. def is_ptz(self):
  267. response = self.mycam.devicemgmt.GetCapabilities()
  268. return bool(response.PTZ)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement