python-onvif-zeep-async
=======================
ONVIF Client Implementation in Python 3
Dependencies
------------
`zeep[async] <http://docs.python-zeep.org>`_ >= 4.1.0, < 5.0.0
`httpx <https://www.python-httpx.org/>`_ >= 0.19.0, < 1.0.0
Install python-onvif-zeep-async
-------------------------------
**From Source**
You should clone this repository and run setup.py::
cd python-onvif-zeep-async && python setup.py install
Alternatively, you can run::
pip install --upgrade onvif-zeep-async
Getting Started
---------------
Initialize an ONVIFCamera instance
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
::
from onvif import ONVIFCamera
mycam = ONVIFCamera('192.168.0.2', 80, 'user', 'passwd', '/etc/onvif/wsdl/')
await mycam.update_xaddrs()
Now, an ONVIFCamera instance is available. By default, a devicemgmt service is also available if everything is OK.
So, all operations defined in the WSDL document::
/etc/onvif/wsdl/devicemgmt.wsdl
are available.
Get information from your camera
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
::
# 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
Configure (Control) your camera
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
To configure your camera, there are two ways to pass parameters to service methods.
**Dict**
This is the simpler way::
params = {'Name': 'NewHostName'}
await device_service.SetHostname(params)
**Type Instance**
This is the recommended way. Type instance will raise an
exception if you set an invalid (or non-existent) parameter.
::
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)
Use other services
~~~~~~~~~~~~~~~~~~
ONVIF protocol has defined many services.
You can find all the services and operations `here <http://www.onvif.org/onvif/ver20/util/operationIndex.html>`_.
ONVIFCamera has support methods to create new services::
# Create ptz service
ptz_service = mycam.create_ptz_service()
# Get ptz configuration
await mycam.ptz.GetConfiguration()
# Another way
# await ptz_service.GetConfiguration()
Or create an unofficial service::
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()
References
----------
* `ONVIF Offical Website <http://www.onvif.com>`_
* `Operations Index <http://www.onvif.org/onvif/ver20/util/operationIndex.html>`_
* `ONVIF Develop Documents <http://www.onvif.org/specs/DocMap-2.4.2.html>`_
* `Foscam Python Lib <http://github.com/quatanium/foscam-python-lib>`_
Raw data
{
"_id": null,
"home_page": "http://github.com/hunterjm/python-onvif-zeep-async",
"name": "onvif-zeep-async",
"maintainer": "sinchb",
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": "sinchb128@gmail.com",
"keywords": "ONVIF, Camera, IPC",
"author": "Cherish Chen",
"author_email": "sinchb128@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/60/25/a61ba701157ac932e51a81173ef88cf39e3c3d3a12f6a09da967f22c653d/onvif_zeep_async-3.2.5.tar.gz",
"platform": null,
"description": "python-onvif-zeep-async\n=======================\n\nONVIF Client Implementation in Python 3\n\nDependencies\n------------\n`zeep[async] <http://docs.python-zeep.org>`_ >= 4.1.0, < 5.0.0\n`httpx <https://www.python-httpx.org/>`_ >= 0.19.0, < 1.0.0\n\nInstall python-onvif-zeep-async\n-------------------------------\n**From Source**\n\nYou should clone this repository and run setup.py::\n\n cd python-onvif-zeep-async && python setup.py install\n\nAlternatively, you can run::\n\n pip install --upgrade onvif-zeep-async\n\n\nGetting Started\n---------------\n\nInitialize an ONVIFCamera instance\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n::\n\n from onvif import ONVIFCamera\n mycam = ONVIFCamera('192.168.0.2', 80, 'user', 'passwd', '/etc/onvif/wsdl/')\n await mycam.update_xaddrs()\n\nNow, an ONVIFCamera instance is available. By default, a devicemgmt service is also available if everything is OK.\n\nSo, all operations defined in the WSDL document::\n\n/etc/onvif/wsdl/devicemgmt.wsdl\n\nare available.\n\nGet information from your camera\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n::\n\n # Get Hostname\n resp = await mycam.devicemgmt.GetHostname()\n print 'My camera`s hostname: ' + str(resp.Name)\n\n # Get system date and time\n dt = await mycam.devicemgmt.GetSystemDateAndTime()\n tz = dt.TimeZone\n year = dt.UTCDateTime.Date.Year\n hour = dt.UTCDateTime.Time.Hour\n\nConfigure (Control) your camera\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nTo configure your camera, there are two ways to pass parameters to service methods.\n\n**Dict**\n\nThis is the simpler way::\n\n params = {'Name': 'NewHostName'}\n await device_service.SetHostname(params)\n\n**Type Instance**\n\nThis is the recommended way. Type instance will raise an\nexception if you set an invalid (or non-existent) parameter.\n\n::\n\n params = mycam.devicemgmt.create_type('SetHostname')\n params.Hostname = 'NewHostName'\n await mycam.devicemgmt.SetHostname(params)\n\n time_params = mycam.devicemgmt.create_type('SetSystemDateAndTime')\n time_params.DateTimeType = 'Manual'\n time_params.DaylightSavings = True\n time_params.TimeZone.TZ = 'CST-8:00:00'\n time_params.UTCDateTime.Date.Year = 2014\n time_params.UTCDateTime.Date.Month = 12\n time_params.UTCDateTime.Date.Day = 3\n time_params.UTCDateTime.Time.Hour = 9\n time_params.UTCDateTime.Time.Minute = 36\n time_params.UTCDateTime.Time.Second = 11\n await mycam.devicemgmt.SetSystemDateAndTime(time_params)\n\nUse other services\n~~~~~~~~~~~~~~~~~~\nONVIF protocol has defined many services.\nYou can find all the services and operations `here <http://www.onvif.org/onvif/ver20/util/operationIndex.html>`_.\nONVIFCamera has support methods to create new services::\n\n # Create ptz service\n ptz_service = mycam.create_ptz_service()\n # Get ptz configuration\n await mycam.ptz.GetConfiguration()\n # Another way\n # await ptz_service.GetConfiguration()\n\nOr create an unofficial service::\n\n xaddr = 'http://192.168.0.3:8888/onvif/yourservice'\n yourservice = mycam.create_onvif_service('service.wsdl', xaddr, 'yourservice')\n await yourservice.SomeOperation()\n # Another way\n # await mycam.yourservice.SomeOperation()\n\nReferences\n----------\n\n* `ONVIF Offical Website <http://www.onvif.com>`_\n\n* `Operations Index <http://www.onvif.org/onvif/ver20/util/operationIndex.html>`_\n\n* `ONVIF Develop Documents <http://www.onvif.org/specs/DocMap-2.4.2.html>`_\n\n* `Foscam Python Lib <http://github.com/quatanium/foscam-python-lib>`_\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Async Python Client for ONVIF Camera",
"version": "3.2.5",
"project_urls": {
"Homepage": "http://github.com/hunterjm/python-onvif-zeep-async"
},
"split_keywords": [
"onvif",
" camera",
" ipc"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "f1be8eb68ec741f0e575925416bfeff7378a4d5525428e4e4cae14b51f7fb9ac",
"md5": "83ead5f9781a6096057b77e4ab551ce1",
"sha256": "6898b7bbdb412b9613b165a0a0c6001ec45561a7561759ff8e4e538a6eac8d70"
},
"downloads": -1,
"filename": "onvif_zeep_async-3.2.5-py3-none-any.whl",
"has_sig": false,
"md5_digest": "83ead5f9781a6096057b77e4ab551ce1",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 198906,
"upload_time": "2025-01-23T02:23:22",
"upload_time_iso_8601": "2025-01-23T02:23:22.306480Z",
"url": "https://files.pythonhosted.org/packages/f1/be/8eb68ec741f0e575925416bfeff7378a4d5525428e4e4cae14b51f7fb9ac/onvif_zeep_async-3.2.5-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "6025a61ba701157ac932e51a81173ef88cf39e3c3d3a12f6a09da967f22c653d",
"md5": "6800a3b6f148d537f1c7808b11f67556",
"sha256": "7b3b5e5d3a93731ed030cf5b2fada6abb3d5f88e3db95bd347556e883bd5518e"
},
"downloads": -1,
"filename": "onvif_zeep_async-3.2.5.tar.gz",
"has_sig": false,
"md5_digest": "6800a3b6f148d537f1c7808b11f67556",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 177459,
"upload_time": "2025-01-23T02:23:25",
"upload_time_iso_8601": "2025-01-23T02:23:25.073014Z",
"url": "https://files.pythonhosted.org/packages/60/25/a61ba701157ac932e51a81173ef88cf39e3c3d3a12f6a09da967f22c653d/onvif_zeep_async-3.2.5.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-01-23 02:23:25",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "hunterjm",
"github_project": "python-onvif-zeep-async",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "ciso8601",
"specs": [
[
"==",
"2.3.2"
]
]
},
{
"name": "httpx",
"specs": [
[
"==",
"0.28.1"
]
]
},
{
"name": "zeep",
"specs": [
[
"==",
"4.3.1"
]
]
},
{
"name": "yarl",
"specs": [
[
"==",
"1.18.3"
]
]
}
],
"lcname": "onvif-zeep-async"
}