onvif-python 0.1.3__tar.gz → 0.1.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {onvif_python-0.1.3/onvif_python.egg-info → onvif_python-0.1.4}/PKG-INFO +17 -6
- {onvif_python-0.1.3 → onvif_python-0.1.4}/README.md +16 -5
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/cli/interactive.py +30 -15
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/cli/main.py +17 -7
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/cli/utils.py +2 -33
- {onvif_python-0.1.3 → onvif_python-0.1.4/onvif_python.egg-info}/PKG-INFO +17 -6
- {onvif_python-0.1.3 → onvif_python-0.1.4}/pyproject.toml +1 -1
- {onvif_python-0.1.3 → onvif_python-0.1.4}/LICENSE.md +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/MANIFEST.in +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/__init__.py +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/cli/__init__.py +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/cli/__main__.py +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/client.py +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/operator.py +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/services/__init__.py +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/services/accesscontrol.py +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/services/accessrules.py +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/services/actionengine.py +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/services/analytics/analytics.py +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/services/analytics/ruleengine.py +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/services/analyticsdevice.py +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/services/appmgmt.py +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/services/authenticationbehavior.py +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/services/credential.py +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/services/deviceio.py +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/services/devicemgmt.py +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/services/display.py +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/services/doorcontrol.py +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/services/events/events.py +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/services/events/notification.py +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/services/events/pullpoint.py +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/services/events/subscription.py +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/services/imaging.py +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/services/media.py +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/services/media2.py +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/services/provisioning.py +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/services/ptz.py +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/services/receiver.py +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/services/recording.py +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/services/replay.py +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/services/schedule.py +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/services/search.py +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/services/security/advancedsecurity.py +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/services/security/authorizationserver.py +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/services/security/dot1x.py +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/services/security/jwt.py +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/services/security/keystore.py +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/services/security/mediasigning.py +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/services/security/tlsserver.py +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/services/thermal.py +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/services/uplink.py +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/utils/__init__.py +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/utils/error_handlers.py +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/utils/exceptions.py +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/utils/wsdl.py +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/utils/xml_capture.py +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/utils/zeep.py +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/wsdl/ver10/accesscontrol/wsdl/index.html +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/wsdl/ver10/accessrules/wsdl/accessrules.wsdl +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/wsdl/ver10/accessrules/wsdl/index.html +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/wsdl/ver10/actionengine.wsdl +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/wsdl/ver10/advancedsecurity/wsdl/advancedsecurity.wsdl +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/wsdl/ver10/advancedsecurity/wsdl/index.html +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/wsdl/ver10/analyticsdevice.wsdl +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/wsdl/ver10/appmgmt/wsdl/appmgmt.wsdl +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/wsdl/ver10/appmgmt/wsdl/index.html +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/wsdl/ver10/authenticationbehavior/wsdl/authenticationbehavior.wsdl +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/wsdl/ver10/authenticationbehavior/wsdl/index.html +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/wsdl/ver10/credential/wsdl/credential.wsdl +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/wsdl/ver10/credential/wsdl/index.html +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/wsdl/ver10/device/wsdl/devicemgmt.wsdl +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/wsdl/ver10/deviceio.wsdl +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/wsdl/ver10/display/display.wsdl +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/wsdl/ver10/display/wsdl/index.htm +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/wsdl/ver10/display.wsdl +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/wsdl/ver10/doorcontrol/wsdl/index.html +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/wsdl/ver10/events/wsdl/bw-2-vs-mod.wsdl +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/wsdl/ver10/events/wsdl/event-vs.wsdl +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/wsdl/ver10/events/wsdl/event.wsdl +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/wsdl/ver10/events/wsdl/index.html +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/wsdl/ver10/federatedsearch.wsdl +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/wsdl/ver10/media/wsdl/media.wsdl +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/wsdl/ver10/pacs/accesscontrol.wsdl +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/wsdl/ver10/pacs/doorcontrol.wsdl +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/wsdl/ver10/pacs/types.xsd +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/wsdl/ver10/provisioning/wsdl/provisioning.wsdl +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/wsdl/ver10/receiver.wsdl +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/wsdl/ver10/recording.wsdl +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/wsdl/ver10/replay.wsdl +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/wsdl/ver10/schedule/wsdl/index.html +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/wsdl/ver10/schedule/wsdl/schedule.wsdl +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/wsdl/ver10/schema/common.xsd +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/wsdl/ver10/schema/metadatastream.xsd +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/wsdl/ver10/schema/onvif.xsd +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/wsdl/ver10/search.wsdl +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/wsdl/ver10/thermal/wsdl/index.html +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/wsdl/ver10/thermal/wsdl/thermal.wsdl +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/wsdl/ver10/topics/topicns.xml +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/wsdl/ver10/uplink/wsdl/index.html +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/wsdl/ver10/uplink/wsdl/uplink.wsdl +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/wsdl/ver20/analytics/humanbody.xsd +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/wsdl/ver20/analytics/humanface.xsd +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/wsdl/ver20/analytics/index.html +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/wsdl/ver20/analytics/radiometry.xsd +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/wsdl/ver20/analytics/rules.xsd +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/wsdl/ver20/analytics/wsdl/analytics.wsdl +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/wsdl/ver20/analytics/wsdl/index.html +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/wsdl/ver20/imaging/wsdl/imaging.wsdl +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/wsdl/ver20/media/wsdl/index.html +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/wsdl/ver20/media/wsdl/media.wsdl +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/wsdl/ver20/ptz/wsdl/ptz.wsdl +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/wsdl/ver20/util/federated_search_documentation.html +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/wsdl/ver20/util/fedsearch-docu-viewer.xsl +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/wsdl/ver20/util/onvif-wsdl-viewer.xsl +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/wsdl/ver20/util/operationIndex.html +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif_python.egg-info/SOURCES.txt +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif_python.egg-info/dependency_links.txt +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif_python.egg-info/entry_points.txt +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif_python.egg-info/requires.txt +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/onvif_python.egg-info/top_level.txt +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/setup.cfg +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/setup.py +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/tests/test_client.py +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/tests/test_core.py +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/tests/test_error_handlers.py +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/tests/test_exceptions.py +0 -0
- {onvif_python-0.1.3 → onvif_python-0.1.4}/tests/test_wsdl_map.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: onvif-python
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.4
|
|
4
4
|
Summary: A comprehensive and developer-friendly Python library for working with ONVIF-compliant devices
|
|
5
5
|
Author-email: Nirsimetri Technologies® <open@nirsimetri.com>
|
|
6
6
|
Maintainer: Kaburagi
|
|
@@ -40,7 +40,7 @@ Dynamic: license-file
|
|
|
40
40
|
|
|
41
41
|
[](https://github.com/nirsimetri/onvif-python?tab=MIT-1-ov-file)
|
|
42
42
|
[](https://deepwiki.com/nirsimetri/onvif-python)
|
|
43
|
-
[](https://pypi.org/project/onvif-python/)
|
|
44
44
|
[](https://clickpy.clickhouse.com/dashboard/onvif-python)
|
|
45
45
|
<br>
|
|
46
46
|
[](https://github.com/nirsimetri/onvif-python/actions/workflows/python-app.yml)
|
|
@@ -212,10 +212,10 @@ This library includes a powerful command-line interface (CLI) for interacting wi
|
|
|
212
212
|
|
|
213
213
|
```bash
|
|
214
214
|
usage: onvif [-h] [--host HOST] [--port PORT] [--username USERNAME] [--password PASSWORD] [--discover] [--timeout TIMEOUT] [--https] [--no-verify]
|
|
215
|
-
[--no-patch] [--interactive] [--debug] [--wsdl WSDL] [--cache {all,db,mem,none}]
|
|
215
|
+
[--no-patch] [--interactive] [--debug] [--wsdl WSDL] [--cache {all,db,mem,none}] [--version]
|
|
216
216
|
[service] [method] [params ...]
|
|
217
217
|
|
|
218
|
-
ONVIF Terminal Client —
|
|
218
|
+
ONVIF Terminal Client — v0.1.4
|
|
219
219
|
https://github.com/nirsimetri/onvif-python
|
|
220
220
|
|
|
221
221
|
positional arguments:
|
|
@@ -241,6 +241,7 @@ options:
|
|
|
241
241
|
--wsdl WSDL Custom WSDL directory path
|
|
242
242
|
--cache {all,db,mem,none}
|
|
243
243
|
Caching mode for ONVIFClient (default: all). 'all': memory+disk, 'db': disk-only, 'mem': memory-only, 'none': disabled.
|
|
244
|
+
--version, -v Show ONVIF CLI version and exit
|
|
244
245
|
|
|
245
246
|
Examples:
|
|
246
247
|
# Discover ONVIF devices on network
|
|
@@ -269,7 +270,7 @@ Examples:
|
|
|
269
270
|
<summary><b>2. Interactive Shell</b></summary>
|
|
270
271
|
|
|
271
272
|
```bash
|
|
272
|
-
ONVIF Interactive Shell Commands -
|
|
273
|
+
ONVIF Interactive Shell Commands - v0.1.4
|
|
273
274
|
https://github.com/nirsimetri/onvif-python
|
|
274
275
|
|
|
275
276
|
Basic Commands:
|
|
@@ -278,7 +279,6 @@ Basic Commands:
|
|
|
278
279
|
info - Show connection and device information
|
|
279
280
|
exit, quit - Exit the shell
|
|
280
281
|
shortcuts - Show available shortcuts
|
|
281
|
-
help <command> - Show help for a specific command
|
|
282
282
|
|
|
283
283
|
Navigation Commands:
|
|
284
284
|
<service> - Enter service mode (e.g., devicemgmt, media)
|
|
@@ -287,6 +287,7 @@ Navigation Commands:
|
|
|
287
287
|
up - Exit current service mode (go up one level)
|
|
288
288
|
pwd - Show current service context
|
|
289
289
|
clear - Clear terminal screen
|
|
290
|
+
help <command> - Show help for a specific command
|
|
290
291
|
|
|
291
292
|
Service Mode Commands:
|
|
292
293
|
desc <method> - Show method documentation
|
|
@@ -752,6 +753,9 @@ If your device is not listed right now, feel free to contribute your test result
|
|
|
752
753
|
|
|
753
754
|
This library fully supports all major ONVIF Profiles listed below. Each profile represents a standardized set of features and use cases, ensuring interoperability between ONVIF-compliant devices and clients. You can use this library to integrate with devices and systems that implement any of these profiles.
|
|
754
755
|
|
|
756
|
+
<details>
|
|
757
|
+
<summary><b>ONVIF profiles list</b></summary>
|
|
758
|
+
|
|
755
759
|
| Name | Specifications | Main Features | Typical Use Case | Support |
|
|
756
760
|
|-----------|----------------|---------------|------------------|---------|
|
|
757
761
|
| Profile_S | [Document](https://www.onvif.org/wp-content/uploads/2019/12/ONVIF_Profile_-S_Specification_v1-3.pdf) | Video streaming, PTZ, audio, multicasting | Network video transmitters (cameras) and receivers (recorders, VMS) | ✅ Yes |
|
|
@@ -762,6 +766,8 @@ This library fully supports all major ONVIF Profiles listed below. Each profile
|
|
|
762
766
|
| Profile_D | [Document](https://www.onvif.org/wp-content/uploads/2021/06/onvif-profile-d-specification-v1-0.pdf) | Access control peripherals (locks, sensors, relays) | Peripheral devices for access control | ✅ Yes |
|
|
763
767
|
| Profile_M | [Document](https://www.onvif.org/wp-content/uploads/2024/04/onvif-profile-m-specification-v1-1.pdf) | Metadata, analytics events, object detection | Analytics devices, metadata clients | ✅ Yes |
|
|
764
768
|
|
|
769
|
+
</details>
|
|
770
|
+
|
|
765
771
|
For a full description of each profile and its features, visit [ONVIF Profiles](https://www.onvif.org/profiles/).
|
|
766
772
|
|
|
767
773
|
## Implemented ONVIF Services
|
|
@@ -771,6 +777,9 @@ For a full description of each profile and its features, visit [ONVIF Profiles](
|
|
|
771
777
|
|
|
772
778
|
Below is a list of ONVIF services implemented and supported by this library, along with links to the official specifications, service definitions, and schema files as referenced from the [ONVIF Developer Specs](https://developer.onvif.org/pub/specs/branches/development/doc/index.html). This table provides a quick overview of the available ONVIF features and their technical documentation for integration and development purposes.
|
|
773
779
|
|
|
780
|
+
<details>
|
|
781
|
+
<summary><b>ONVIF services list</b></summary>
|
|
782
|
+
|
|
774
783
|
| Service | Specifications | Service Definitions | Schema Files | Status |
|
|
775
784
|
|------------------------|-------------------------------|-----------------------------|-------------------------------------|------------|
|
|
776
785
|
| Device Management | [Document](https://developer.onvif.org/pub/specs/branches/development/doc/Core.xml) | [device.wsdl](https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/device/wsdl/devicemgmt.wsdl) | [onvif.xsd](https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/schema/onvif.xsd) <br> [common.xsd](https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/schema/common.xsd) | ✅ Complete |
|
|
@@ -802,6 +811,8 @@ Below is a list of ONVIF services implemented and supported by this library, alo
|
|
|
802
811
|
| Uplink | [Document](https://developer.onvif.org/pub/specs/branches/development/doc/Uplink.xml) | [uplink.wsdl](https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/uplink/wsdl/uplink.wsdl) | - | ✅ Complete |
|
|
803
812
|
| WebRTC | [Document](https://developer.onvif.org/pub/specs/branches/development/doc/WebRTC.xml) | - | - | ❌ Any idea? |
|
|
804
813
|
|
|
814
|
+
</details>
|
|
815
|
+
|
|
805
816
|
## Service Bindings in ONVIF
|
|
806
817
|
|
|
807
818
|
ONVIF services are defined by WSDL bindings. In this library, there are two main patterns:
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://github.com/nirsimetri/onvif-python?tab=MIT-1-ov-file)
|
|
4
4
|
[](https://deepwiki.com/nirsimetri/onvif-python)
|
|
5
|
-
[](https://pypi.org/project/onvif-python/)
|
|
6
6
|
[](https://clickpy.clickhouse.com/dashboard/onvif-python)
|
|
7
7
|
<br>
|
|
8
8
|
[](https://github.com/nirsimetri/onvif-python/actions/workflows/python-app.yml)
|
|
@@ -174,10 +174,10 @@ This library includes a powerful command-line interface (CLI) for interacting wi
|
|
|
174
174
|
|
|
175
175
|
```bash
|
|
176
176
|
usage: onvif [-h] [--host HOST] [--port PORT] [--username USERNAME] [--password PASSWORD] [--discover] [--timeout TIMEOUT] [--https] [--no-verify]
|
|
177
|
-
[--no-patch] [--interactive] [--debug] [--wsdl WSDL] [--cache {all,db,mem,none}]
|
|
177
|
+
[--no-patch] [--interactive] [--debug] [--wsdl WSDL] [--cache {all,db,mem,none}] [--version]
|
|
178
178
|
[service] [method] [params ...]
|
|
179
179
|
|
|
180
|
-
ONVIF Terminal Client —
|
|
180
|
+
ONVIF Terminal Client — v0.1.4
|
|
181
181
|
https://github.com/nirsimetri/onvif-python
|
|
182
182
|
|
|
183
183
|
positional arguments:
|
|
@@ -203,6 +203,7 @@ options:
|
|
|
203
203
|
--wsdl WSDL Custom WSDL directory path
|
|
204
204
|
--cache {all,db,mem,none}
|
|
205
205
|
Caching mode for ONVIFClient (default: all). 'all': memory+disk, 'db': disk-only, 'mem': memory-only, 'none': disabled.
|
|
206
|
+
--version, -v Show ONVIF CLI version and exit
|
|
206
207
|
|
|
207
208
|
Examples:
|
|
208
209
|
# Discover ONVIF devices on network
|
|
@@ -231,7 +232,7 @@ Examples:
|
|
|
231
232
|
<summary><b>2. Interactive Shell</b></summary>
|
|
232
233
|
|
|
233
234
|
```bash
|
|
234
|
-
ONVIF Interactive Shell Commands -
|
|
235
|
+
ONVIF Interactive Shell Commands - v0.1.4
|
|
235
236
|
https://github.com/nirsimetri/onvif-python
|
|
236
237
|
|
|
237
238
|
Basic Commands:
|
|
@@ -240,7 +241,6 @@ Basic Commands:
|
|
|
240
241
|
info - Show connection and device information
|
|
241
242
|
exit, quit - Exit the shell
|
|
242
243
|
shortcuts - Show available shortcuts
|
|
243
|
-
help <command> - Show help for a specific command
|
|
244
244
|
|
|
245
245
|
Navigation Commands:
|
|
246
246
|
<service> - Enter service mode (e.g., devicemgmt, media)
|
|
@@ -249,6 +249,7 @@ Navigation Commands:
|
|
|
249
249
|
up - Exit current service mode (go up one level)
|
|
250
250
|
pwd - Show current service context
|
|
251
251
|
clear - Clear terminal screen
|
|
252
|
+
help <command> - Show help for a specific command
|
|
252
253
|
|
|
253
254
|
Service Mode Commands:
|
|
254
255
|
desc <method> - Show method documentation
|
|
@@ -714,6 +715,9 @@ If your device is not listed right now, feel free to contribute your test result
|
|
|
714
715
|
|
|
715
716
|
This library fully supports all major ONVIF Profiles listed below. Each profile represents a standardized set of features and use cases, ensuring interoperability between ONVIF-compliant devices and clients. You can use this library to integrate with devices and systems that implement any of these profiles.
|
|
716
717
|
|
|
718
|
+
<details>
|
|
719
|
+
<summary><b>ONVIF profiles list</b></summary>
|
|
720
|
+
|
|
717
721
|
| Name | Specifications | Main Features | Typical Use Case | Support |
|
|
718
722
|
|-----------|----------------|---------------|------------------|---------|
|
|
719
723
|
| Profile_S | [Document](https://www.onvif.org/wp-content/uploads/2019/12/ONVIF_Profile_-S_Specification_v1-3.pdf) | Video streaming, PTZ, audio, multicasting | Network video transmitters (cameras) and receivers (recorders, VMS) | ✅ Yes |
|
|
@@ -724,6 +728,8 @@ This library fully supports all major ONVIF Profiles listed below. Each profile
|
|
|
724
728
|
| Profile_D | [Document](https://www.onvif.org/wp-content/uploads/2021/06/onvif-profile-d-specification-v1-0.pdf) | Access control peripherals (locks, sensors, relays) | Peripheral devices for access control | ✅ Yes |
|
|
725
729
|
| Profile_M | [Document](https://www.onvif.org/wp-content/uploads/2024/04/onvif-profile-m-specification-v1-1.pdf) | Metadata, analytics events, object detection | Analytics devices, metadata clients | ✅ Yes |
|
|
726
730
|
|
|
731
|
+
</details>
|
|
732
|
+
|
|
727
733
|
For a full description of each profile and its features, visit [ONVIF Profiles](https://www.onvif.org/profiles/).
|
|
728
734
|
|
|
729
735
|
## Implemented ONVIF Services
|
|
@@ -733,6 +739,9 @@ For a full description of each profile and its features, visit [ONVIF Profiles](
|
|
|
733
739
|
|
|
734
740
|
Below is a list of ONVIF services implemented and supported by this library, along with links to the official specifications, service definitions, and schema files as referenced from the [ONVIF Developer Specs](https://developer.onvif.org/pub/specs/branches/development/doc/index.html). This table provides a quick overview of the available ONVIF features and their technical documentation for integration and development purposes.
|
|
735
741
|
|
|
742
|
+
<details>
|
|
743
|
+
<summary><b>ONVIF services list</b></summary>
|
|
744
|
+
|
|
736
745
|
| Service | Specifications | Service Definitions | Schema Files | Status |
|
|
737
746
|
|------------------------|-------------------------------|-----------------------------|-------------------------------------|------------|
|
|
738
747
|
| Device Management | [Document](https://developer.onvif.org/pub/specs/branches/development/doc/Core.xml) | [device.wsdl](https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/device/wsdl/devicemgmt.wsdl) | [onvif.xsd](https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/schema/onvif.xsd) <br> [common.xsd](https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/schema/common.xsd) | ✅ Complete |
|
|
@@ -764,6 +773,8 @@ Below is a list of ONVIF services implemented and supported by this library, alo
|
|
|
764
773
|
| Uplink | [Document](https://developer.onvif.org/pub/specs/branches/development/doc/Uplink.xml) | [uplink.wsdl](https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/uplink/wsdl/uplink.wsdl) | - | ✅ Complete |
|
|
765
774
|
| WebRTC | [Document](https://developer.onvif.org/pub/specs/branches/development/doc/WebRTC.xml) | - | - | ❌ Any idea? |
|
|
766
775
|
|
|
776
|
+
</details>
|
|
777
|
+
|
|
767
778
|
## Service Bindings in ONVIF
|
|
768
779
|
|
|
769
780
|
ONVIF services are defined by WSDL bindings. In this library, there are two main patterns:
|
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
import cmd
|
|
4
4
|
import sys
|
|
5
5
|
import socket
|
|
6
|
+
import ssl
|
|
7
|
+
import os
|
|
6
8
|
import threading
|
|
7
9
|
import textwrap
|
|
8
10
|
from datetime import datetime
|
|
@@ -181,7 +183,7 @@ class InteractiveShell(cmd.Cmd):
|
|
|
181
183
|
" / __ \\/ | / / | / / _/ ____/",
|
|
182
184
|
" / / / / |/ /| | / // // /_ ",
|
|
183
185
|
"/ /_/ / /| / | |/ // // __/ ",
|
|
184
|
-
"\\____/_/ |_/ |___/___/_/ v0.1.
|
|
186
|
+
"\\____/_/ |_/ |___/___/_/ v0.1.4",
|
|
185
187
|
" ",
|
|
186
188
|
]
|
|
187
189
|
|
|
@@ -220,22 +222,39 @@ class InteractiveShell(cmd.Cmd):
|
|
|
220
222
|
self._health_check_thread.start()
|
|
221
223
|
|
|
222
224
|
def _periodic_health_check(self):
|
|
223
|
-
"""Periodically checks device connection using
|
|
224
|
-
# Wait
|
|
225
|
+
"""Periodically checks device connection using TCP or TLS depending on mode."""
|
|
226
|
+
# Wait before first check to allow intro to finish
|
|
225
227
|
self._stop_health_check.wait(10.0)
|
|
228
|
+
|
|
226
229
|
while not self._stop_health_check.is_set():
|
|
227
230
|
sock = None
|
|
228
231
|
try:
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
+
sock = socket.create_connection(
|
|
233
|
+
(self.args.host, self.args.port), timeout=5.0
|
|
234
|
+
)
|
|
235
|
+
|
|
236
|
+
# If HTTPS, perform a short TLS handshake check
|
|
237
|
+
if getattr(self.args, "https", False):
|
|
238
|
+
context = ssl.create_default_context()
|
|
239
|
+
context.check_hostname = False
|
|
240
|
+
context.verify_mode = ssl.CERT_NONE
|
|
241
|
+
|
|
242
|
+
with context.wrap_socket(
|
|
243
|
+
sock, server_hostname=self.args.host
|
|
244
|
+
) as ssock:
|
|
245
|
+
ssock.settimeout(5)
|
|
246
|
+
# Try a minimal handshake
|
|
247
|
+
ssock.do_handshake()
|
|
248
|
+
|
|
249
|
+
# If we reach here, the connection (and TLS if applicable) succeeded
|
|
250
|
+
pass
|
|
232
251
|
|
|
233
|
-
# Try to connect to the host and port
|
|
234
|
-
sock.connect((self.args.host, self.args.port))
|
|
235
252
|
except (
|
|
236
253
|
socket.timeout,
|
|
237
254
|
ConnectionRefusedError,
|
|
238
255
|
socket.gaierror,
|
|
256
|
+
ssl.SSLError,
|
|
257
|
+
ssl.SSLEOFError,
|
|
239
258
|
OSError,
|
|
240
259
|
) as e:
|
|
241
260
|
# Connection failed, trigger exit
|
|
@@ -244,7 +263,7 @@ class InteractiveShell(cmd.Cmd):
|
|
|
244
263
|
file=sys.stderr,
|
|
245
264
|
)
|
|
246
265
|
print(
|
|
247
|
-
f"{colorize('Error:', 'red')}
|
|
266
|
+
f"{colorize('Error:', 'red')} Health check failed: {e}",
|
|
248
267
|
file=sys.stderr,
|
|
249
268
|
)
|
|
250
269
|
print(
|
|
@@ -253,15 +272,13 @@ class InteractiveShell(cmd.Cmd):
|
|
|
253
272
|
)
|
|
254
273
|
# Forcibly exit the entire process. This is necessary to interrupt
|
|
255
274
|
# the blocking input() call in the main thread.
|
|
256
|
-
import os
|
|
257
|
-
|
|
258
275
|
os._exit(1)
|
|
259
276
|
finally:
|
|
260
277
|
# Ensure the socket is always closed
|
|
261
278
|
if sock:
|
|
262
279
|
sock.close()
|
|
263
280
|
|
|
264
|
-
# Wait
|
|
281
|
+
# Wait before next check or stop signal
|
|
265
282
|
self._stop_health_check.wait(5.0) # Check every 5 seconds
|
|
266
283
|
|
|
267
284
|
def _handle_connection_error(self, e):
|
|
@@ -1141,8 +1158,6 @@ class InteractiveShell(cmd.Cmd):
|
|
|
1141
1158
|
|
|
1142
1159
|
def do_clear(self, line):
|
|
1143
1160
|
"""Clear terminal screen"""
|
|
1144
|
-
import os
|
|
1145
|
-
|
|
1146
1161
|
# Clear screen for both Windows and Unix-like systems
|
|
1147
1162
|
os.system("cls" if os.name == "nt" else "clear")
|
|
1148
1163
|
|
|
@@ -1285,7 +1300,7 @@ class InteractiveShell(cmd.Cmd):
|
|
|
1285
1300
|
super().do_help(line)
|
|
1286
1301
|
else:
|
|
1287
1302
|
help_text = f"""
|
|
1288
|
-
{colorize('ONVIF Interactive Shell Commands -', 'cyan')}\n{colorize('https://github.com/nirsimetri/onvif-python', 'white')}
|
|
1303
|
+
{colorize('ONVIF Interactive Shell Commands - v0.1.4', 'cyan')}\n{colorize('https://github.com/nirsimetri/onvif-python', 'white')}
|
|
1289
1304
|
|
|
1290
1305
|
{colorize('Basic Commands:', 'yellow')}
|
|
1291
1306
|
capabilities, caps - Show device capabilities
|
|
@@ -16,7 +16,7 @@ def create_parser():
|
|
|
16
16
|
"""Create argument parser for ONVIF CLI"""
|
|
17
17
|
parser = argparse.ArgumentParser(
|
|
18
18
|
prog="onvif",
|
|
19
|
-
description=f"{colorize('ONVIF Terminal Client', 'yellow')}
|
|
19
|
+
description=f"{colorize('ONVIF Terminal Client', 'yellow')} — v0.1.4\nhttps://github.com/nirsimetri/onvif-python",
|
|
20
20
|
formatter_class=argparse.RawDescriptionHelpFormatter,
|
|
21
21
|
epilog=f"""
|
|
22
22
|
Examples:
|
|
@@ -107,6 +107,11 @@ Examples:
|
|
|
107
107
|
"params", nargs="*", help="Method parameters as Simple Parameter or JSON string"
|
|
108
108
|
)
|
|
109
109
|
|
|
110
|
+
# ONVI CLI
|
|
111
|
+
parser.add_argument(
|
|
112
|
+
"--version", "-v", action="store_true", help="Show ONVIF CLI version and exit"
|
|
113
|
+
)
|
|
114
|
+
|
|
110
115
|
return parser
|
|
111
116
|
|
|
112
117
|
|
|
@@ -124,6 +129,17 @@ def main():
|
|
|
124
129
|
|
|
125
130
|
args = parser.parse_intermixed_args()
|
|
126
131
|
|
|
132
|
+
# Show ONVIF CLI version
|
|
133
|
+
if args.version:
|
|
134
|
+
print(colorize("0.1.4", "yellow"))
|
|
135
|
+
sys.exit(0)
|
|
136
|
+
|
|
137
|
+
# Validate arguments early (before discovery)
|
|
138
|
+
if not args.interactive and (not args.service or not args.method):
|
|
139
|
+
parser.error(
|
|
140
|
+
f"Either {colorize('--interactive', 'white')}/{colorize('-i', 'white')} mode or {colorize('service/method', 'white')} must be specified"
|
|
141
|
+
)
|
|
142
|
+
|
|
127
143
|
# Handle discovery mode
|
|
128
144
|
if args.discover:
|
|
129
145
|
if args.host:
|
|
@@ -175,12 +191,6 @@ def main():
|
|
|
175
191
|
print("\nPassword entry cancelled.")
|
|
176
192
|
sys.exit(1)
|
|
177
193
|
|
|
178
|
-
# Validate arguments
|
|
179
|
-
if not args.interactive and (not args.service or not args.method):
|
|
180
|
-
parser.error(
|
|
181
|
-
f"Either {colorize('--interactive', 'white')}/{colorize('-i', 'white')} mode or {colorize('service/method', 'white')} must be specified"
|
|
182
|
-
)
|
|
183
|
-
|
|
184
194
|
try:
|
|
185
195
|
# Create ONVIF client
|
|
186
196
|
client = ONVIFClient(
|
|
@@ -547,36 +547,6 @@ def extract_documentation_text(doc_elem) -> str:
|
|
|
547
547
|
return "".join(parts)
|
|
548
548
|
|
|
549
549
|
|
|
550
|
-
def extract_documentation_text(doc_elem) -> str:
|
|
551
|
-
"""
|
|
552
|
-
Extract full text from xs:documentation element including child elements.
|
|
553
|
-
This handles cases where documentation contains HTML tags like <a href="">.
|
|
554
|
-
|
|
555
|
-
Args:
|
|
556
|
-
doc_elem: The xs:documentation XML element
|
|
557
|
-
|
|
558
|
-
Returns:
|
|
559
|
-
Full text content including text from child elements
|
|
560
|
-
"""
|
|
561
|
-
if doc_elem is None:
|
|
562
|
-
return ""
|
|
563
|
-
|
|
564
|
-
parts = []
|
|
565
|
-
|
|
566
|
-
# Get text before first child
|
|
567
|
-
if doc_elem.text:
|
|
568
|
-
parts.append(doc_elem.text)
|
|
569
|
-
|
|
570
|
-
# Get text from and after each child element
|
|
571
|
-
for child in doc_elem:
|
|
572
|
-
if child.text:
|
|
573
|
-
parts.append(child.text)
|
|
574
|
-
if child.tail:
|
|
575
|
-
parts.append(child.tail)
|
|
576
|
-
|
|
577
|
-
return "".join(parts)
|
|
578
|
-
|
|
579
|
-
|
|
580
550
|
def get_operation_type_info(
|
|
581
551
|
service_obj, operation_name: str
|
|
582
552
|
) -> Optional[Dict[str, Any]]:
|
|
@@ -641,7 +611,7 @@ def get_operation_type_info(
|
|
|
641
611
|
|
|
642
612
|
return result
|
|
643
613
|
|
|
644
|
-
except Exception
|
|
614
|
+
except Exception:
|
|
645
615
|
return None
|
|
646
616
|
|
|
647
617
|
|
|
@@ -802,12 +772,11 @@ def resolve_element_type(
|
|
|
802
772
|
return parameters
|
|
803
773
|
|
|
804
774
|
# Get element documentation
|
|
805
|
-
element_doc = None
|
|
806
775
|
doc_elem = element.find("xs:annotation/xs:documentation", namespaces)
|
|
807
776
|
if doc_elem is not None:
|
|
808
777
|
full_text = extract_documentation_text(doc_elem)
|
|
809
778
|
if full_text:
|
|
810
|
-
|
|
779
|
+
clean_documentation_html(full_text)
|
|
811
780
|
|
|
812
781
|
# Check if it has a complexType
|
|
813
782
|
complex_type = element.find("xs:complexType", namespaces)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: onvif-python
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.4
|
|
4
4
|
Summary: A comprehensive and developer-friendly Python library for working with ONVIF-compliant devices
|
|
5
5
|
Author-email: Nirsimetri Technologies® <open@nirsimetri.com>
|
|
6
6
|
Maintainer: Kaburagi
|
|
@@ -40,7 +40,7 @@ Dynamic: license-file
|
|
|
40
40
|
|
|
41
41
|
[](https://github.com/nirsimetri/onvif-python?tab=MIT-1-ov-file)
|
|
42
42
|
[](https://deepwiki.com/nirsimetri/onvif-python)
|
|
43
|
-
[](https://pypi.org/project/onvif-python/)
|
|
44
44
|
[](https://clickpy.clickhouse.com/dashboard/onvif-python)
|
|
45
45
|
<br>
|
|
46
46
|
[](https://github.com/nirsimetri/onvif-python/actions/workflows/python-app.yml)
|
|
@@ -212,10 +212,10 @@ This library includes a powerful command-line interface (CLI) for interacting wi
|
|
|
212
212
|
|
|
213
213
|
```bash
|
|
214
214
|
usage: onvif [-h] [--host HOST] [--port PORT] [--username USERNAME] [--password PASSWORD] [--discover] [--timeout TIMEOUT] [--https] [--no-verify]
|
|
215
|
-
[--no-patch] [--interactive] [--debug] [--wsdl WSDL] [--cache {all,db,mem,none}]
|
|
215
|
+
[--no-patch] [--interactive] [--debug] [--wsdl WSDL] [--cache {all,db,mem,none}] [--version]
|
|
216
216
|
[service] [method] [params ...]
|
|
217
217
|
|
|
218
|
-
ONVIF Terminal Client —
|
|
218
|
+
ONVIF Terminal Client — v0.1.4
|
|
219
219
|
https://github.com/nirsimetri/onvif-python
|
|
220
220
|
|
|
221
221
|
positional arguments:
|
|
@@ -241,6 +241,7 @@ options:
|
|
|
241
241
|
--wsdl WSDL Custom WSDL directory path
|
|
242
242
|
--cache {all,db,mem,none}
|
|
243
243
|
Caching mode for ONVIFClient (default: all). 'all': memory+disk, 'db': disk-only, 'mem': memory-only, 'none': disabled.
|
|
244
|
+
--version, -v Show ONVIF CLI version and exit
|
|
244
245
|
|
|
245
246
|
Examples:
|
|
246
247
|
# Discover ONVIF devices on network
|
|
@@ -269,7 +270,7 @@ Examples:
|
|
|
269
270
|
<summary><b>2. Interactive Shell</b></summary>
|
|
270
271
|
|
|
271
272
|
```bash
|
|
272
|
-
ONVIF Interactive Shell Commands -
|
|
273
|
+
ONVIF Interactive Shell Commands - v0.1.4
|
|
273
274
|
https://github.com/nirsimetri/onvif-python
|
|
274
275
|
|
|
275
276
|
Basic Commands:
|
|
@@ -278,7 +279,6 @@ Basic Commands:
|
|
|
278
279
|
info - Show connection and device information
|
|
279
280
|
exit, quit - Exit the shell
|
|
280
281
|
shortcuts - Show available shortcuts
|
|
281
|
-
help <command> - Show help for a specific command
|
|
282
282
|
|
|
283
283
|
Navigation Commands:
|
|
284
284
|
<service> - Enter service mode (e.g., devicemgmt, media)
|
|
@@ -287,6 +287,7 @@ Navigation Commands:
|
|
|
287
287
|
up - Exit current service mode (go up one level)
|
|
288
288
|
pwd - Show current service context
|
|
289
289
|
clear - Clear terminal screen
|
|
290
|
+
help <command> - Show help for a specific command
|
|
290
291
|
|
|
291
292
|
Service Mode Commands:
|
|
292
293
|
desc <method> - Show method documentation
|
|
@@ -752,6 +753,9 @@ If your device is not listed right now, feel free to contribute your test result
|
|
|
752
753
|
|
|
753
754
|
This library fully supports all major ONVIF Profiles listed below. Each profile represents a standardized set of features and use cases, ensuring interoperability between ONVIF-compliant devices and clients. You can use this library to integrate with devices and systems that implement any of these profiles.
|
|
754
755
|
|
|
756
|
+
<details>
|
|
757
|
+
<summary><b>ONVIF profiles list</b></summary>
|
|
758
|
+
|
|
755
759
|
| Name | Specifications | Main Features | Typical Use Case | Support |
|
|
756
760
|
|-----------|----------------|---------------|------------------|---------|
|
|
757
761
|
| Profile_S | [Document](https://www.onvif.org/wp-content/uploads/2019/12/ONVIF_Profile_-S_Specification_v1-3.pdf) | Video streaming, PTZ, audio, multicasting | Network video transmitters (cameras) and receivers (recorders, VMS) | ✅ Yes |
|
|
@@ -762,6 +766,8 @@ This library fully supports all major ONVIF Profiles listed below. Each profile
|
|
|
762
766
|
| Profile_D | [Document](https://www.onvif.org/wp-content/uploads/2021/06/onvif-profile-d-specification-v1-0.pdf) | Access control peripherals (locks, sensors, relays) | Peripheral devices for access control | ✅ Yes |
|
|
763
767
|
| Profile_M | [Document](https://www.onvif.org/wp-content/uploads/2024/04/onvif-profile-m-specification-v1-1.pdf) | Metadata, analytics events, object detection | Analytics devices, metadata clients | ✅ Yes |
|
|
764
768
|
|
|
769
|
+
</details>
|
|
770
|
+
|
|
765
771
|
For a full description of each profile and its features, visit [ONVIF Profiles](https://www.onvif.org/profiles/).
|
|
766
772
|
|
|
767
773
|
## Implemented ONVIF Services
|
|
@@ -771,6 +777,9 @@ For a full description of each profile and its features, visit [ONVIF Profiles](
|
|
|
771
777
|
|
|
772
778
|
Below is a list of ONVIF services implemented and supported by this library, along with links to the official specifications, service definitions, and schema files as referenced from the [ONVIF Developer Specs](https://developer.onvif.org/pub/specs/branches/development/doc/index.html). This table provides a quick overview of the available ONVIF features and their technical documentation for integration and development purposes.
|
|
773
779
|
|
|
780
|
+
<details>
|
|
781
|
+
<summary><b>ONVIF services list</b></summary>
|
|
782
|
+
|
|
774
783
|
| Service | Specifications | Service Definitions | Schema Files | Status |
|
|
775
784
|
|------------------------|-------------------------------|-----------------------------|-------------------------------------|------------|
|
|
776
785
|
| Device Management | [Document](https://developer.onvif.org/pub/specs/branches/development/doc/Core.xml) | [device.wsdl](https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/device/wsdl/devicemgmt.wsdl) | [onvif.xsd](https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/schema/onvif.xsd) <br> [common.xsd](https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/schema/common.xsd) | ✅ Complete |
|
|
@@ -802,6 +811,8 @@ Below is a list of ONVIF services implemented and supported by this library, alo
|
|
|
802
811
|
| Uplink | [Document](https://developer.onvif.org/pub/specs/branches/development/doc/Uplink.xml) | [uplink.wsdl](https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/uplink/wsdl/uplink.wsdl) | - | ✅ Complete |
|
|
803
812
|
| WebRTC | [Document](https://developer.onvif.org/pub/specs/branches/development/doc/WebRTC.xml) | - | - | ❌ Any idea? |
|
|
804
813
|
|
|
814
|
+
</details>
|
|
815
|
+
|
|
805
816
|
## Service Bindings in ONVIF
|
|
806
817
|
|
|
807
818
|
ONVIF services are defined by WSDL bindings. In this library, there are two main patterns:
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "onvif-python"
|
|
7
|
-
version = "0.1.
|
|
7
|
+
version = "0.1.4"
|
|
8
8
|
description = "A comprehensive and developer-friendly Python library for working with ONVIF-compliant devices"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.9"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/wsdl/ver10/accessrules/wsdl/accessrules.wsdl
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/wsdl/ver10/authenticationbehavior/wsdl/index.html
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/wsdl/ver10/provisioning/wsdl/provisioning.wsdl
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{onvif_python-0.1.3 → onvif_python-0.1.4}/onvif/wsdl/ver20/util/federated_search_documentation.html
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|