ONVIF摄像头的异步Python客户端
项目描述
Python 3的ONVIF客户端实现
依赖关系
zeep[async] >= 4.1.0, < 5.0.0 httpx >= 0.19.0, < 1.0.0
安装python-onvif-zeep-async
从源代码安装
您应该克隆此存储库并运行setup.py
cd python-onvif-zeep-async && python setup.py install
或者,您可以运行
pip install --upgrade onvif-zeep-async
入门指南
初始化ONVIFCamera实例
from onvif import ONVIFCamera mycam = ONVIFCamera('192.168.0.2', 80, 'user', 'passwd', '/etc/onvif/wsdl/') await mycam.update_xaddrs()
现在,一个ONVIFCamera实例已经可用。如果一切正常,默认情况下,devicemgmt服务也是可用的。
因此,WSDL文档中定义的所有操作
/etc/onvif/wsdl/devicemgmt.wsdl
都是可用的。
从您的摄像机获取信息
# Get Hostname resp = await mycam.devicemgmt.GetHostname() print 'My camera`s hostname: ' + str(resp.Name) # Get system date and time dt = await mycam.devicemgmt.GetSystemDateAndTime() tz = dt.TimeZone year = dt.UTCDateTime.Date.Year hour = dt.UTCDateTime.Time.Hour
配置(控制)您的摄像机
要配置您的摄像机,有两种方法可以将参数传递给服务方法。
字典
这是更简单的方法
params = {'Name': 'NewHostName'} await device_service.SetHostname(params)
类型实例
这是推荐的方法。类型实例将在设置无效(或不存在)的参数时引发异常。
params = mycam.devicemgmt.create_type('SetHostname') params.Hostname = 'NewHostName' await mycam.devicemgmt.SetHostname(params) time_params = mycam.devicemgmt.create_type('SetSystemDateAndTime') time_params.DateTimeType = 'Manual' time_params.DaylightSavings = True time_params.TimeZone.TZ = 'CST-8:00:00' time_params.UTCDateTime.Date.Year = 2014 time_params.UTCDateTime.Date.Month = 12 time_params.UTCDateTime.Date.Day = 3 time_params.UTCDateTime.Time.Hour = 9 time_params.UTCDateTime.Time.Minute = 36 time_params.UTCDateTime.Time.Second = 11 await mycam.devicemgmt.SetSystemDateAndTime(time_params)
使用其他服务
ONVIF协议已定义了许多服务。您可以在此处找到所有服务和操作。ONVIFCamera支持创建新服务的方法
# Create ptz service ptz_service = mycam.create_ptz_service() # Get ptz configuration await mycam.ptz.GetConfiguration() # Another way # await ptz_service.GetConfiguration()
或创建非官方服务
xaddr = 'http://192.168.0.3:8888/onvif/yourservice' yourservice = mycam.create_onvif_service('service.wsdl', xaddr, 'yourservice') await yourservice.SomeOperation() # Another way # await mycam.yourservice.SomeOperation()
ONVIF CLI
python-onvif 还提供了一个命令行交互式界面:onvif-cli。onvif-cli 会自动安装。
单个命令示例
$ onvif-cli devicemgmt GetHostname --user 'admin' --password '12345' --host '192.168.0.112' --port 80 True: {'FromDHCP': True, 'Name': hision} $ onvif-cli devicemgmt SetHostname "{'Name': 'NewerHostname'}" --user 'admin' --password '12345' --host '192.168.0.112' --port 80 True: {}
交互模式
$ onvif-cli -u 'admin' -a '12345' --host '192.168.0.112' --port 80 --wsdl /etc/onvif/wsdl/ ONVIF >>> cmd analytics devicemgmt events imaging media ptz ONVIF >>> cmd devicemgmt GetWsdlUrl True: http://www.onvif.org/ ONVIF >>> cmd devicemgmt SetHostname {'Name': 'NewHostname'} ONVIF >>> cmd devicemgmt GetHostname True: {'Name': 'NewHostName'} ONVIF >>> cmd devicemgmt SomeOperation False: No Operation: SomeOperation
注意:交互模式支持Tab补全。
批处理模式
$ vim batchcmds $ cat batchcmds cmd devicemgmt GetWsdlUrl cmd devicemgmt SetHostname {'Name': 'NewHostname', 'FromDHCP': True} cmd devicemgmt GetHostname $ onvif-cli --host 192.168.0.112 -u admin -a 12345 -w /etc/onvif/wsdl/ < batchcmds ONVIF >>> True: http://www.onvif.org/ ONVIF >>> True: {} ONVIF >>> True: {'FromDHCP': False, 'Name': NewHostname}
参考资料
项目详情
关闭
onvif-zeep-async-3.1.12.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4d74b0ad69c35f39ed5d937fbb4f5007706c21aeada5fe8ba4614a13203f187f |
|
MD5 | 5408fd53cecc9a81b1c4e69cd3f3f2e7 |
|
BLAKE2b-256 | 6865c39f751794b4cd60238b4202fc27d35c81fdc8ea226cc9bead2b983c7818 |
关闭
onvif_zeep_async-3.1.12-py2.py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 9cc2ec65287f3c9d0c6b5e6c5168aa01f1a2cefdfbadf6dcec2fa465195e6fff |
|
MD5 | 4d5c78836ee55a877ddbac813992de6d |
|
BLAKE2b-256 | d82e14b5fe969874f107b149316294eda0b0ba50d5017e2bc20c5afd4c85ec02 |