onvif-zeep-async


Nameonvif-zeep-async JSON
Version 3.1.12 PyPI version JSON
download
home_pagehttp://github.com/hunterjm/python-onvif-zeep-async
SummaryAsync Python Client for ONVIF Camera
upload_time2023-07-15 00:04:12
maintainersinchb
docs_urlNone
authorCherish Chen
requires_python>=3.9
licenseMIT
keywords onvif camera ipc
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            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()

ONVIF CLI
---------
python-onvif also provides a command line interactive interface: onvif-cli.
onvif-cli is installed automatically.

Single command example
~~~~~~~~~~~~~~~~~~~~~~

::

    $ 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: {}

Interactive mode
~~~~~~~~~~~~~~~~

::

    $ 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

NOTE: Tab completion is supported for interactive mode.

Batch mode
~~~~~~~~~~

::

    $ 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}

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.9",
    "maintainer_email": "sinchb128@gmail.com",
    "keywords": "ONVIF,Camera,IPC",
    "author": "Cherish Chen",
    "author_email": "sinchb128@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/68/65/c39f751794b4cd60238b4202fc27d35c81fdc8ea226cc9bead2b983c7818/onvif-zeep-async-3.1.12.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\nONVIF CLI\n---------\npython-onvif also provides a command line interactive interface: onvif-cli.\nonvif-cli is installed automatically.\n\nSingle command example\n~~~~~~~~~~~~~~~~~~~~~~\n\n::\n\n    $ onvif-cli devicemgmt GetHostname --user 'admin' --password '12345' --host '192.168.0.112' --port 80\n    True: {'FromDHCP': True, 'Name': hision}\n    $ onvif-cli devicemgmt SetHostname \"{'Name': 'NewerHostname'}\" --user 'admin' --password '12345' --host '192.168.0.112' --port 80\n    True: {}\n\nInteractive mode\n~~~~~~~~~~~~~~~~\n\n::\n\n    $ onvif-cli -u 'admin' -a '12345' --host '192.168.0.112' --port 80 --wsdl /etc/onvif/wsdl/\n    ONVIF >>> cmd\n    analytics   devicemgmt  events      imaging     media       ptz\n    ONVIF >>> cmd devicemgmt GetWsdlUrl\n    True: http://www.onvif.org/\n    ONVIF >>> cmd devicemgmt SetHostname {'Name': 'NewHostname'}\n    ONVIF >>> cmd devicemgmt GetHostname\n    True: {'Name': 'NewHostName'}\n    ONVIF >>> cmd devicemgmt SomeOperation\n    False: No Operation: SomeOperation\n\nNOTE: Tab completion is supported for interactive mode.\n\nBatch mode\n~~~~~~~~~~\n\n::\n\n    $ vim batchcmds\n    $ cat batchcmds\n    cmd devicemgmt GetWsdlUrl\n    cmd devicemgmt SetHostname {'Name': 'NewHostname', 'FromDHCP': True}\n    cmd devicemgmt GetHostname\n    $ onvif-cli --host 192.168.0.112 -u admin -a 12345 -w /etc/onvif/wsdl/ < batchcmds\n    ONVIF >>> True: http://www.onvif.org/\n    ONVIF >>> True: {}\n    ONVIF >>> True: {'FromDHCP': False, 'Name': NewHostname}\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.1.12",
    "project_urls": {
        "Homepage": "http://github.com/hunterjm/python-onvif-zeep-async"
    },
    "split_keywords": [
        "onvif",
        "camera",
        "ipc"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d82e14b5fe969874f107b149316294eda0b0ba50d5017e2bc20c5afd4c85ec02",
                "md5": "4d5c78836ee55a877ddbac813992de6d",
                "sha256": "9cc2ec65287f3c9d0c6b5e6c5168aa01f1a2cefdfbadf6dcec2fa465195e6fff"
            },
            "downloads": -1,
            "filename": "onvif_zeep_async-3.1.12-py2.py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "4d5c78836ee55a877ddbac813992de6d",
            "packagetype": "bdist_wheel",
            "python_version": "py2.py3",
            "requires_python": ">=3.9",
            "size": 198219,
            "upload_time": "2023-07-15T00:04:10",
            "upload_time_iso_8601": "2023-07-15T00:04:10.502440Z",
            "url": "https://files.pythonhosted.org/packages/d8/2e/14b5fe969874f107b149316294eda0b0ba50d5017e2bc20c5afd4c85ec02/onvif_zeep_async-3.1.12-py2.py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6865c39f751794b4cd60238b4202fc27d35c81fdc8ea226cc9bead2b983c7818",
                "md5": "5408fd53cecc9a81b1c4e69cd3f3f2e7",
                "sha256": "4d74b0ad69c35f39ed5d937fbb4f5007706c21aeada5fe8ba4614a13203f187f"
            },
            "downloads": -1,
            "filename": "onvif-zeep-async-3.1.12.tar.gz",
            "has_sig": false,
            "md5_digest": "5408fd53cecc9a81b1c4e69cd3f3f2e7",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 180205,
            "upload_time": "2023-07-15T00:04:12",
            "upload_time_iso_8601": "2023-07-15T00:04:12.481699Z",
            "url": "https://files.pythonhosted.org/packages/68/65/c39f751794b4cd60238b4202fc27d35c81fdc8ea226cc9bead2b983c7818/onvif-zeep-async-3.1.12.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-07-15 00:04:12",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "hunterjm",
    "github_project": "python-onvif-zeep-async",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "requirements": [],
    "lcname": "onvif-zeep-async"
}
        
Elapsed time: 0.08789s