onvif-python 0.0.1__py3-none-any.whl
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/__init__.py +13 -0
- onvif/client.py +485 -0
- onvif/operator.py +130 -0
- onvif/services/__init__.py +75 -0
- onvif/services/accesscontrol.py +105 -0
- onvif/services/accessrules.py +47 -0
- onvif/services/actionengine.py +46 -0
- onvif/services/analytics/analytics.py +60 -0
- onvif/services/analytics/ruleengine.py +44 -0
- onvif/services/analyticsdevice.py +122 -0
- onvif/services/appmgmt.py +40 -0
- onvif/services/authenticationbehavior.py +83 -0
- onvif/services/credential.py +159 -0
- onvif/services/deviceio.py +165 -0
- onvif/services/devicemgmt.py +410 -0
- onvif/services/display.py +62 -0
- onvif/services/doorcontrol.py +93 -0
- onvif/services/events/events.py +41 -0
- onvif/services/events/notification.py +34 -0
- onvif/services/events/pullpoint.py +29 -0
- onvif/services/events/subscription.py +21 -0
- onvif/services/imaging.py +62 -0
- onvif/services/media.py +424 -0
- onvif/services/media2.py +310 -0
- onvif/services/provisioning.py +50 -0
- onvif/services/ptz.py +187 -0
- onvif/services/receiver.py +46 -0
- onvif/services/recording.py +136 -0
- onvif/services/replay.py +30 -0
- onvif/services/schedule.py +82 -0
- onvif/services/search.py +149 -0
- onvif/services/security/advancedsecurity.py +19 -0
- onvif/services/security/authorizationserver.py +31 -0
- onvif/services/security/dot1x.py +42 -0
- onvif/services/security/jwt.py +21 -0
- onvif/services/security/keystore.py +208 -0
- onvif/services/security/mediasigning.py +30 -0
- onvif/services/security/tlsserver.py +82 -0
- onvif/services/thermal.py +54 -0
- onvif/services/uplink.py +28 -0
- onvif/utils/__init__.py +4 -0
- onvif/utils/exceptions.py +33 -0
- onvif/utils/wsdl.py +297 -0
- onvif/wsdl/ver10/accesscontrol/wsdl/index.html +7 -0
- onvif/wsdl/ver10/accessrules/wsdl/accessrules.wsdl +702 -0
- onvif/wsdl/ver10/accessrules/wsdl/index.html +7 -0
- onvif/wsdl/ver10/actionengine.wsdl +1265 -0
- onvif/wsdl/ver10/advancedsecurity/wsdl/advancedsecurity.wsdl +4159 -0
- onvif/wsdl/ver10/advancedsecurity/wsdl/index.html +7 -0
- onvif/wsdl/ver10/analyticsdevice.wsdl +709 -0
- onvif/wsdl/ver10/appmgmt/wsdl/appmgmt.wsdl +502 -0
- onvif/wsdl/ver10/appmgmt/wsdl/index.html +7 -0
- onvif/wsdl/ver10/authenticationbehavior/wsdl/authenticationbehavior.wsdl +1382 -0
- onvif/wsdl/ver10/authenticationbehavior/wsdl/index.html +7 -0
- onvif/wsdl/ver10/credential/wsdl/credential.wsdl +2018 -0
- onvif/wsdl/ver10/credential/wsdl/index.html +7 -0
- onvif/wsdl/ver10/device/wsdl/devicemgmt.wsdl +4623 -0
- onvif/wsdl/ver10/deviceio.wsdl +1414 -0
- onvif/wsdl/ver10/display/display.wsdl +383 -0
- onvif/wsdl/ver10/display/wsdl/index.htm +383 -0
- onvif/wsdl/ver10/display.wsdl +521 -0
- onvif/wsdl/ver10/doorcontrol/wsdl/index.html +7 -0
- onvif/wsdl/ver10/events/wsdl/bw-2-vs-mod.wsdl +449 -0
- onvif/wsdl/ver10/events/wsdl/event-vs.wsdl +947 -0
- onvif/wsdl/ver10/events/wsdl/event.wsdl +947 -0
- onvif/wsdl/ver10/events/wsdl/index.html +7 -0
- onvif/wsdl/ver10/federatedsearch.wsdl +344 -0
- onvif/wsdl/ver10/media/wsdl/media.wsdl +3684 -0
- onvif/wsdl/ver10/pacs/accesscontrol.wsdl +1942 -0
- onvif/wsdl/ver10/pacs/doorcontrol.wsdl +1792 -0
- onvif/wsdl/ver10/pacs/types.xsd +181 -0
- onvif/wsdl/ver10/provisioning/wsdl/provisioning.wsdl +588 -0
- onvif/wsdl/ver10/receiver.wsdl +398 -0
- onvif/wsdl/ver10/recording.wsdl +1231 -0
- onvif/wsdl/ver10/replay.wsdl +221 -0
- onvif/wsdl/ver10/schedule/wsdl/index.html +7 -0
- onvif/wsdl/ver10/schedule/wsdl/schedule.wsdl +1383 -0
- onvif/wsdl/ver10/schema/common.xsd +422 -0
- onvif/wsdl/ver10/schema/metadatastream.xsd +520 -0
- onvif/wsdl/ver10/schema/onvif.xsd +9251 -0
- onvif/wsdl/ver10/search.wsdl +882 -0
- onvif/wsdl/ver10/thermal/wsdl/index.html +7 -0
- onvif/wsdl/ver10/thermal/wsdl/thermal.wsdl +777 -0
- onvif/wsdl/ver10/topics/topicns.xml +13 -0
- onvif/wsdl/ver10/uplink/wsdl/index.html +7 -0
- onvif/wsdl/ver10/uplink/wsdl/uplink.wsdl +256 -0
- onvif/wsdl/ver20/analytics/humanbody.xsd +490 -0
- onvif/wsdl/ver20/analytics/humanface.xsd +501 -0
- onvif/wsdl/ver20/analytics/index.html +7 -0
- onvif/wsdl/ver20/analytics/radiometry.xsd +389 -0
- onvif/wsdl/ver20/analytics/rules.xsd +127 -0
- onvif/wsdl/ver20/analytics/wsdl/analytics.wsdl +757 -0
- onvif/wsdl/ver20/analytics/wsdl/index.html +7 -0
- onvif/wsdl/ver20/imaging/wsdl/imaging.wsdl +603 -0
- onvif/wsdl/ver20/media/wsdl/index.html +7 -0
- onvif/wsdl/ver20/media/wsdl/media.wsdl +2862 -0
- onvif/wsdl/ver20/ptz/wsdl/ptz.wsdl +1450 -0
- onvif/wsdl/ver20/util/federated_search_documentation.html +1647 -0
- onvif/wsdl/ver20/util/fedsearch-docu-viewer.xsl +8 -0
- onvif/wsdl/ver20/util/onvif-wsdl-viewer.xsl +2580 -0
- onvif/wsdl/ver20/util/operationIndex.html +97 -0
- onvif_python-0.0.1.dist-info/METADATA +381 -0
- onvif_python-0.0.1.dist-info/RECORD +106 -0
- onvif_python-0.0.1.dist-info/WHEEL +5 -0
- onvif_python-0.0.1.dist-info/licenses/LICENSE.md +21 -0
- onvif_python-0.0.1.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
# onvif/services/accesscontrol.py
|
|
2
|
+
|
|
3
|
+
from ..operator import ONVIFOperator
|
|
4
|
+
from ..utils import ONVIFWSDL
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class AccessControl:
|
|
8
|
+
def __init__(self, xaddr=None, **kwargs):
|
|
9
|
+
definition = ONVIFWSDL.get_definition("accesscontrol")
|
|
10
|
+
self.operator = ONVIFOperator(
|
|
11
|
+
definition["path"],
|
|
12
|
+
binding=f"{{{definition['namespace']}}}{definition['binding']}",
|
|
13
|
+
service_path="AccessControl", # fallback
|
|
14
|
+
xaddr=xaddr,
|
|
15
|
+
**kwargs,
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
def GetServiceCapabilities(self):
|
|
19
|
+
return self.operator.call("GetServiceCapabilities")
|
|
20
|
+
|
|
21
|
+
def GetAccessPointInfoList(self, Limit=None, StartReference=None):
|
|
22
|
+
return self.operator.call(
|
|
23
|
+
"GetAccessPointInfoList", Limit=Limit, StartReference=StartReference
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
def GetAccessPointInfo(self, Token):
|
|
27
|
+
return self.operator.call("GetAccessPointInfo", Token=Token)
|
|
28
|
+
|
|
29
|
+
def GetAccessPointList(self, Limit=None, StartReference=None):
|
|
30
|
+
return self.operator.call(
|
|
31
|
+
"GetAccessPointList", Limit=Limit, StartReference=StartReference
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
def GetAccessPoints(self, Token):
|
|
35
|
+
return self.operator.call("GetAccessPoints", Token=Token)
|
|
36
|
+
|
|
37
|
+
def CreateAccessPoint(self, AccessPoint):
|
|
38
|
+
return self.operator.call("CreateAccessPoint", AccessPoint=AccessPoint)
|
|
39
|
+
|
|
40
|
+
def SetAccessPoint(self, AccessPoint):
|
|
41
|
+
return self.operator.call("SetAccessPoint", AccessPoint=AccessPoint)
|
|
42
|
+
|
|
43
|
+
def ModifyAccessPoint(self, AccessPoint):
|
|
44
|
+
return self.operator.call("ModifyAccessPoint", AccessPoint=AccessPoint)
|
|
45
|
+
|
|
46
|
+
def DeleteAccessPoint(self, Token):
|
|
47
|
+
return self.operator.call("DeleteAccessPoint", Token=Token)
|
|
48
|
+
|
|
49
|
+
def SetAccessPointAuthenticationProfile(self, Token, AuthenticationProfileToken):
|
|
50
|
+
return self.operator.call(
|
|
51
|
+
"SetAccessPointAuthenticationProfile",
|
|
52
|
+
Token=Token,
|
|
53
|
+
AuthenticationProfileToken=AuthenticationProfileToken,
|
|
54
|
+
)
|
|
55
|
+
|
|
56
|
+
def DeleteAccessPointAuthenticationProfile(self, Token):
|
|
57
|
+
return self.operator.call("DeleteAccessPointAuthenticationProfile", Token=Token)
|
|
58
|
+
|
|
59
|
+
def GetAreaInfoList(self, Limit=None, StartReference=None):
|
|
60
|
+
return self.operator.call(
|
|
61
|
+
"GetAreaInfoList", Limit=Limit, StartReference=StartReference
|
|
62
|
+
)
|
|
63
|
+
|
|
64
|
+
def GetAreaInfo(self, Token):
|
|
65
|
+
return self.operator.call("GetAreaInfo", Token=Token)
|
|
66
|
+
|
|
67
|
+
def GetAreaList(self, Limit=None, StartReference=None):
|
|
68
|
+
return self.operator.call(
|
|
69
|
+
"GetAreaList", Limit=Limit, StartReference=StartReference
|
|
70
|
+
)
|
|
71
|
+
|
|
72
|
+
def GetAreas(self, Token):
|
|
73
|
+
return self.operator.call("GetAreas", Token=Token)
|
|
74
|
+
|
|
75
|
+
def CreateArea(self, Area):
|
|
76
|
+
return self.operator.call("CreateArea", Area=Area)
|
|
77
|
+
|
|
78
|
+
def SetArea(self, Area):
|
|
79
|
+
return self.operator.call("SetArea", Area=Area)
|
|
80
|
+
|
|
81
|
+
def ModifyArea(self, Area):
|
|
82
|
+
return self.operator.call("ModifyArea", Area=Area)
|
|
83
|
+
|
|
84
|
+
def DeleteArea(self, Token):
|
|
85
|
+
return self.operator.call("DeleteArea", Token=Token)
|
|
86
|
+
|
|
87
|
+
def GetAccessPointState(self, Token):
|
|
88
|
+
return self.operator.call("GetAccessPointState", Token=Token)
|
|
89
|
+
|
|
90
|
+
def EnableAccessPoint(self, Token):
|
|
91
|
+
return self.operator.call("EnableAccessPoint", Token=Token)
|
|
92
|
+
|
|
93
|
+
def DisableAccessPoint(self, Token):
|
|
94
|
+
return self.operator.call("DisableAccessPoint", Token=Token)
|
|
95
|
+
|
|
96
|
+
def ExternalAuthorization(
|
|
97
|
+
self, AccessPointToken, Decision, CredentialToken=None, Reason=None
|
|
98
|
+
):
|
|
99
|
+
return self.operator.call(
|
|
100
|
+
"ExternalAuthorization",
|
|
101
|
+
AccessPointToken=AccessPointToken,
|
|
102
|
+
CredentialToken=CredentialToken,
|
|
103
|
+
Reason=Reason,
|
|
104
|
+
Decision=Decision,
|
|
105
|
+
)
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# onvif/services/accessrules.py
|
|
2
|
+
|
|
3
|
+
from ..operator import ONVIFOperator
|
|
4
|
+
from ..utils import ONVIFWSDL
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class AccessRules:
|
|
8
|
+
def __init__(self, xaddr=None, **kwargs):
|
|
9
|
+
definition = ONVIFWSDL.get_definition("accessrules")
|
|
10
|
+
self.operator = ONVIFOperator(
|
|
11
|
+
definition["path"],
|
|
12
|
+
binding=f"{{{definition['namespace']}}}{definition['binding']}",
|
|
13
|
+
service_path="AccessRules", # fallback
|
|
14
|
+
xaddr=xaddr,
|
|
15
|
+
**kwargs,
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
def GetServiceCapabilities(self):
|
|
19
|
+
return self.operator.call("GetServiceCapabilities")
|
|
20
|
+
|
|
21
|
+
def GetAccessProfileInfo(self, Token):
|
|
22
|
+
return self.operator.call("GetAccessProfileInfo", Token=Token)
|
|
23
|
+
|
|
24
|
+
def GetAccessProfileInfoList(self, Limit=None, StartReference=None):
|
|
25
|
+
return self.operator.call(
|
|
26
|
+
"GetAccessProfileInfoList", Limit=Limit, StartReference=StartReference
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
def GetAccessProfiles(self, Token):
|
|
30
|
+
return self.operator.call("GetAccessProfiles", Token=Token)
|
|
31
|
+
|
|
32
|
+
def GetAccessProfileList(self, Limit=None, StartReference=None):
|
|
33
|
+
return self.operator.call(
|
|
34
|
+
"GetAccessProfileList", Limit=Limit, StartReference=StartReference
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
def CreateAccessProfile(self, AccessProfile):
|
|
38
|
+
return self.operator.call("CreateAccessProfile", AccessProfile=AccessProfile)
|
|
39
|
+
|
|
40
|
+
def ModifyAccessProfile(self, AccessProfile):
|
|
41
|
+
return self.operator.call("ModifyAccessProfile", AccessProfile=AccessProfile)
|
|
42
|
+
|
|
43
|
+
def SetAccessProfile(self, AccessProfile):
|
|
44
|
+
return self.operator.call("SetAccessProfile", AccessProfile=AccessProfile)
|
|
45
|
+
|
|
46
|
+
def DeleteAccessProfile(self, Token):
|
|
47
|
+
return self.operator.call("DeleteAccessProfile", Token=Token)
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# onvif/services/actionengine.py
|
|
2
|
+
|
|
3
|
+
from ..operator import ONVIFOperator
|
|
4
|
+
from ..utils import ONVIFWSDL
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class ActionEngine:
|
|
8
|
+
def __init__(self, xaddr=None, **kwargs):
|
|
9
|
+
definition = ONVIFWSDL.get_definition("actionengine")
|
|
10
|
+
self.operator = ONVIFOperator(
|
|
11
|
+
definition["path"],
|
|
12
|
+
binding=f"{{{definition['namespace']}}}{definition['binding']}",
|
|
13
|
+
service_path="ActionEngine", # fallback
|
|
14
|
+
xaddr=xaddr,
|
|
15
|
+
**kwargs,
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
def GetServiceCapabilities(self):
|
|
19
|
+
return self.operator.call("GetServiceCapabilities")
|
|
20
|
+
|
|
21
|
+
def GetSupportedActions(self):
|
|
22
|
+
return self.operator.call("GetSupportedActions")
|
|
23
|
+
|
|
24
|
+
def GetActions(self):
|
|
25
|
+
return self.operator.call("GetActions")
|
|
26
|
+
|
|
27
|
+
def CreateActions(self, Action):
|
|
28
|
+
return self.operator.call("CreateActions", Action=Action)
|
|
29
|
+
|
|
30
|
+
def DeleteActions(self, Token):
|
|
31
|
+
return self.operator.call("DeleteActions", Token=Token)
|
|
32
|
+
|
|
33
|
+
def ModifyActions(self, Action):
|
|
34
|
+
return self.operator.call("ModifyActions", Action=Action)
|
|
35
|
+
|
|
36
|
+
def GetActionTriggers(self):
|
|
37
|
+
return self.operator.call("GetActionTriggers")
|
|
38
|
+
|
|
39
|
+
def CreateActionTriggers(self, ActionTrigger):
|
|
40
|
+
return self.operator.call("CreateActionTriggers", ActionTrigger=ActionTrigger)
|
|
41
|
+
|
|
42
|
+
def DeleteActionTriggers(self, Token):
|
|
43
|
+
return self.operator.call("DeleteActionTriggers", Token=Token)
|
|
44
|
+
|
|
45
|
+
def ModifyActionTriggers(self, ActionTrigger):
|
|
46
|
+
return self.operator.call("ModifyActionTriggers", ActionTrigger=ActionTrigger)
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# onvif/services/analytics/analytics.py
|
|
2
|
+
|
|
3
|
+
from ...operator import ONVIFOperator
|
|
4
|
+
from ...utils import ONVIFWSDL
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class Analytics:
|
|
8
|
+
def __init__(self, xaddr=None, **kwargs):
|
|
9
|
+
definition = ONVIFWSDL.get_definition("analytics", "ver20")
|
|
10
|
+
self.operator = ONVIFOperator(
|
|
11
|
+
definition["path"],
|
|
12
|
+
binding=f"{{{definition['namespace']}}}{definition['binding']}",
|
|
13
|
+
service_path="Analytics", # fallback
|
|
14
|
+
xaddr=xaddr,
|
|
15
|
+
**kwargs,
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
def GetServiceCapabilities(self):
|
|
19
|
+
return self.operator.call("GetServiceCapabilities")
|
|
20
|
+
|
|
21
|
+
def GetSupportedAnalyticsModules(self, ConfigurationToken):
|
|
22
|
+
return self.operator.call(
|
|
23
|
+
"GetSupportedAnalyticsModules", ConfigurationToken=ConfigurationToken
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
def CreateAnalyticsModules(self, ConfigurationToken, AnalyticsModule):
|
|
27
|
+
return self.operator.call(
|
|
28
|
+
"CreateAnalyticsModules",
|
|
29
|
+
ConfigurationToken=ConfigurationToken,
|
|
30
|
+
AnalyticsModule=AnalyticsModule,
|
|
31
|
+
)
|
|
32
|
+
|
|
33
|
+
def DeleteAnalyticsModules(self, ConfigurationToken, AnalyticsModuleName):
|
|
34
|
+
return self.operator.call(
|
|
35
|
+
"DeleteAnalyticsModules",
|
|
36
|
+
ConfigurationToken=ConfigurationToken,
|
|
37
|
+
AnalyticsModuleName=AnalyticsModuleName,
|
|
38
|
+
)
|
|
39
|
+
|
|
40
|
+
def GetAnalyticsModules(self, ConfigurationToken):
|
|
41
|
+
return self.operator.call(
|
|
42
|
+
"GetAnalyticsModules", ConfigurationToken=ConfigurationToken
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
def GetAnalyticsModuleOptions(self, ConfigurationToken, Type=None):
|
|
46
|
+
return self.operator.call(
|
|
47
|
+
"GetAnalyticsModuleOptions",
|
|
48
|
+
Type=Type,
|
|
49
|
+
ConfigurationToken=ConfigurationToken,
|
|
50
|
+
)
|
|
51
|
+
|
|
52
|
+
def ModifyAnalyticsModules(self, ConfigurationToken, AnalyticsModule):
|
|
53
|
+
return self.operator.call(
|
|
54
|
+
"ModifyAnalyticsModules",
|
|
55
|
+
ConfigurationToken=ConfigurationToken,
|
|
56
|
+
AnalyticsModule=AnalyticsModule,
|
|
57
|
+
)
|
|
58
|
+
|
|
59
|
+
def GetSupportedMetadata(self, Type=None):
|
|
60
|
+
return self.operator.call("GetSupportedMetadata", Type=Type)
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# onvif/services/analytics/ruleengine.py
|
|
2
|
+
|
|
3
|
+
from ...operator import ONVIFOperator
|
|
4
|
+
from ...utils import ONVIFWSDL
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class RuleEngine:
|
|
8
|
+
def __init__(self, xaddr=None, **kwargs):
|
|
9
|
+
definition = ONVIFWSDL.get_definition("ruleengine", "ver20")
|
|
10
|
+
self.operator = ONVIFOperator(
|
|
11
|
+
definition["path"],
|
|
12
|
+
binding=f"{{{definition['namespace']}}}{definition['binding']}",
|
|
13
|
+
service_path="Analytics", # fallback
|
|
14
|
+
xaddr=xaddr,
|
|
15
|
+
**kwargs,
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
def GetSupportedRules(self, ConfigurationToken):
|
|
19
|
+
return self.operator.call(
|
|
20
|
+
"GetSupportedRules", ConfigurationToken=ConfigurationToken
|
|
21
|
+
)
|
|
22
|
+
|
|
23
|
+
def CreateRules(self, ConfigurationToken, Rule):
|
|
24
|
+
return self.operator.call(
|
|
25
|
+
"CreateRules", ConfigurationToken=ConfigurationToken, Rule=Rule
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
def DeleteRules(self, ConfigurationToken, RuleName):
|
|
29
|
+
return self.operator.call(
|
|
30
|
+
"DeleteRules", ConfigurationToken=ConfigurationToken, RuleName=RuleName
|
|
31
|
+
)
|
|
32
|
+
|
|
33
|
+
def GetRules(self, ConfigurationToken):
|
|
34
|
+
return self.operator.call("GetRules", ConfigurationToken=ConfigurationToken)
|
|
35
|
+
|
|
36
|
+
def GetRuleOptions(self, ConfigurationToken, RuleType=None):
|
|
37
|
+
return self.operator.call(
|
|
38
|
+
"GetRuleOptions", RuleType=RuleType, ConfigurationToken=ConfigurationToken
|
|
39
|
+
)
|
|
40
|
+
|
|
41
|
+
def ModifyRules(self, ConfigurationToken, Rule):
|
|
42
|
+
return self.operator.call(
|
|
43
|
+
"ModifyRules", ConfigurationToken=ConfigurationToken, Rule=Rule
|
|
44
|
+
)
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
# onvif/services/analyticsdevice.py
|
|
2
|
+
|
|
3
|
+
from ..operator import ONVIFOperator
|
|
4
|
+
from ..utils import ONVIFWSDL
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class AnalyticsDevice:
|
|
8
|
+
def __init__(self, xaddr=None, **kwargs):
|
|
9
|
+
# NOTE (ONVIF 18.12):
|
|
10
|
+
# The AnalyticsDevice service (AnalyticsDeviceBinding) has been marked as
|
|
11
|
+
# obsolete since ONVIF Release 18.12. Its functionality has largely been
|
|
12
|
+
# merged into the Analytics service and, in some cases, Media2.
|
|
13
|
+
#
|
|
14
|
+
# This class is kept here only for backward compatibility with older devices
|
|
15
|
+
# (pre-2019) that may still expose an AnalyticsDevice XAddr.
|
|
16
|
+
#
|
|
17
|
+
# In modern ONVIF-compliant devices, you should prefer using the Analytics
|
|
18
|
+
# service (`onvif/services/analytics.py`). If the device does not advertise
|
|
19
|
+
# an AnalyticsDevice capability in GetCapabilities → Extension, then calling
|
|
20
|
+
# this class will result in SOAP faults.
|
|
21
|
+
#
|
|
22
|
+
# References:
|
|
23
|
+
# - ONVIF Release 18.12 (December 2018) Release Notes
|
|
24
|
+
# - AnalyticsDeviceBinding (ver10/analyticsdevice.wsdl)
|
|
25
|
+
# - Successor: Analytics Service (ver20/analytics/wsdl/analytics.wsdl)
|
|
26
|
+
# - Operations: https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/analyticsdevice.wsdl
|
|
27
|
+
|
|
28
|
+
definition = ONVIFWSDL.get_definition("analyticsdevice")
|
|
29
|
+
self.operator = ONVIFOperator(
|
|
30
|
+
definition["path"],
|
|
31
|
+
binding=f"{{{definition['namespace']}}}{definition['binding']}",
|
|
32
|
+
service_path="AnalyticsDevice", # fallback
|
|
33
|
+
xaddr=xaddr,
|
|
34
|
+
**kwargs,
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
def GetServiceCapabilities(self):
|
|
38
|
+
return self.operator.call("GetServiceCapabilities")
|
|
39
|
+
|
|
40
|
+
def DeleteAnalyticsEngineControl(self, ConfigurationToken):
|
|
41
|
+
return self.operator.call(
|
|
42
|
+
"DeleteAnalyticsEngineControl", ConfigurationToken=ConfigurationToken
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
def CreateAnalyticsEngineControl(self, Configuration):
|
|
46
|
+
return self.operator.call(
|
|
47
|
+
"CreateAnalyticsEngineControl", Configuration=Configuration
|
|
48
|
+
)
|
|
49
|
+
|
|
50
|
+
def SetAnalyticsEngineControl(self, SetAnalyticsEngineControl, ForcePersistence):
|
|
51
|
+
return self.operator.call(
|
|
52
|
+
"SetAnalyticsEngineControl",
|
|
53
|
+
SetAnalyticsEngineControl=SetAnalyticsEngineControl,
|
|
54
|
+
ForcePersistence=ForcePersistence,
|
|
55
|
+
)
|
|
56
|
+
|
|
57
|
+
def GetAnalyticsEngineControl(self, ConfigurationToken):
|
|
58
|
+
return self.operator.call(
|
|
59
|
+
"GetAnalyticsEngineControl", ConfigurationToken=ConfigurationToken
|
|
60
|
+
)
|
|
61
|
+
|
|
62
|
+
def GetAnalyticsEngineControls(self):
|
|
63
|
+
return self.operator.call("GetAnalyticsEngineControls")
|
|
64
|
+
|
|
65
|
+
def GetAnalyticsEngine(self, ConfigurationToken):
|
|
66
|
+
return self.operator.call(
|
|
67
|
+
"GetAnalyticsEngine", ConfigurationToken=ConfigurationToken
|
|
68
|
+
)
|
|
69
|
+
|
|
70
|
+
def GetAnalyticsEngines(self):
|
|
71
|
+
return self.operator.call("GetAnalyticsEngines")
|
|
72
|
+
|
|
73
|
+
def SetVideoAnalyticsConfiguration(self, Configuration, ForcePersistence):
|
|
74
|
+
return self.operator.call(
|
|
75
|
+
"SetVideoAnalyticsConfiguration",
|
|
76
|
+
Configuration=Configuration,
|
|
77
|
+
ForcePersistence=ForcePersistence,
|
|
78
|
+
)
|
|
79
|
+
|
|
80
|
+
def SetAnalyticsEngineInput(self, Configuration, InputToken):
|
|
81
|
+
return self.operator.call(
|
|
82
|
+
"SetAnalyticsEngineInput",
|
|
83
|
+
Configuration=Configuration,
|
|
84
|
+
InputToken=InputToken,
|
|
85
|
+
)
|
|
86
|
+
|
|
87
|
+
def GetAnalyticsEngineInput(self, ConfigurationToken):
|
|
88
|
+
return self.operator.call(
|
|
89
|
+
"GetAnalyticsEngineInput", ConfigurationToken=ConfigurationToken
|
|
90
|
+
)
|
|
91
|
+
|
|
92
|
+
def GetAnalyticsEngineInputs(self):
|
|
93
|
+
return self.operator.call("GetAnalyticsEngineInputs")
|
|
94
|
+
|
|
95
|
+
def GetAnalyticsDeviceStreamUri(self, StreamSetup, AnalyticsEngineControlToken):
|
|
96
|
+
return self.operator.call(
|
|
97
|
+
"GetAnalyticsDeviceStreamUri",
|
|
98
|
+
StreamSetup=StreamSetup,
|
|
99
|
+
AnalyticsEngineControlToken=AnalyticsEngineControlToken,
|
|
100
|
+
)
|
|
101
|
+
|
|
102
|
+
def GetVideoAnalyticsConfiguration(self, ConfigurationToken):
|
|
103
|
+
return self.operator.call(
|
|
104
|
+
"GetVideoAnalyticsConfiguration", ConfigurationToken=ConfigurationToken
|
|
105
|
+
)
|
|
106
|
+
|
|
107
|
+
def CreateAnalyticsEngineInputs(self, Configuration, ForcePersistence):
|
|
108
|
+
return self.operator.call(
|
|
109
|
+
"CreateAnalyticsEngineInputs",
|
|
110
|
+
Configuration=Configuration,
|
|
111
|
+
ForcePersistence=ForcePersistence,
|
|
112
|
+
)
|
|
113
|
+
|
|
114
|
+
def DeleteAnalyticsEngineInputs(self, ConfigurationToken):
|
|
115
|
+
return self.operator.call(
|
|
116
|
+
"DeleteAnalyticsEngineInputs", ConfigurationToken=ConfigurationToken
|
|
117
|
+
)
|
|
118
|
+
|
|
119
|
+
def GetAnalyticsState(self, AnalyticsEngineControlToken):
|
|
120
|
+
return self.operator.call(
|
|
121
|
+
"GetAnalyticsState", AnalyticsEngineControlToken=AnalyticsEngineControlToken
|
|
122
|
+
)
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# onvif/services/appmgmt.py
|
|
2
|
+
|
|
3
|
+
from ..operator import ONVIFOperator
|
|
4
|
+
from ..utils import ONVIFWSDL
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class AppManagement:
|
|
8
|
+
def __init__(self, xaddr=None, **kwargs):
|
|
9
|
+
definition = ONVIFWSDL.get_definition("appmgmt")
|
|
10
|
+
self.operator = ONVIFOperator(
|
|
11
|
+
definition["path"],
|
|
12
|
+
binding=f"{{{definition['namespace']}}}{definition['binding']}",
|
|
13
|
+
service_path="AppManagement", # fallback
|
|
14
|
+
xaddr=xaddr,
|
|
15
|
+
**kwargs,
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
def GetServiceCapabilities(self):
|
|
19
|
+
return self.operator.call("GetServiceCapabilities")
|
|
20
|
+
|
|
21
|
+
def Uninstall(self, AppID):
|
|
22
|
+
return self.operator.call("Uninstall", AppID=AppID)
|
|
23
|
+
|
|
24
|
+
def GetInstalledApps(self):
|
|
25
|
+
return self.operator.call("GetInstalledApps")
|
|
26
|
+
|
|
27
|
+
def GetAppsInfo(self, AppID=None):
|
|
28
|
+
return self.operator.call("GetAppsInfo", AppID=AppID)
|
|
29
|
+
|
|
30
|
+
def Activate(self, AppID):
|
|
31
|
+
return self.operator.call("Activate", AppID=AppID)
|
|
32
|
+
|
|
33
|
+
def Deactivate(self, AppID):
|
|
34
|
+
return self.operator.call("Deactivate", AppID=AppID)
|
|
35
|
+
|
|
36
|
+
def InstallLicense(self, License, AppID=None):
|
|
37
|
+
return self.operator.call("InstallLicense", AppID=AppID, License=License)
|
|
38
|
+
|
|
39
|
+
def GetDeviceId(self):
|
|
40
|
+
return self.operator.call("GetDeviceId")
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# onvif/services/authenticationbehavior.py
|
|
2
|
+
|
|
3
|
+
from ..operator import ONVIFOperator
|
|
4
|
+
from ..utils import ONVIFWSDL
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class AuthenticationBehavior:
|
|
8
|
+
def __init__(self, xaddr=None, **kwargs):
|
|
9
|
+
definition = ONVIFWSDL.get_definition("authenticationbehavior")
|
|
10
|
+
self.operator = ONVIFOperator(
|
|
11
|
+
definition["path"],
|
|
12
|
+
binding=f"{{{definition['namespace']}}}{definition['binding']}",
|
|
13
|
+
service_path="AuthenticationBehavior", # fallback
|
|
14
|
+
xaddr=xaddr,
|
|
15
|
+
**kwargs,
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
def GetServiceCapabilities(self):
|
|
19
|
+
return self.operator.call("GetServiceCapabilities")
|
|
20
|
+
|
|
21
|
+
def GetAuthenticationProfileInfo(self, Token):
|
|
22
|
+
return self.operator.call("GetAuthenticationProfileInfo", Token=Token)
|
|
23
|
+
|
|
24
|
+
def GetAuthenticationProfileInfoList(self, Limit=None, StartReference=None):
|
|
25
|
+
return self.operator.call(
|
|
26
|
+
"GetAuthenticationProfileInfoList",
|
|
27
|
+
Limit=Limit,
|
|
28
|
+
StartReference=StartReference,
|
|
29
|
+
)
|
|
30
|
+
|
|
31
|
+
def GetAuthenticationProfiles(self, Token):
|
|
32
|
+
return self.operator.call("GetAuthenticationProfiles", Token=Token)
|
|
33
|
+
|
|
34
|
+
def GetAuthenticationProfileList(self, Limit=None, StartReference=None):
|
|
35
|
+
return self.operator.call(
|
|
36
|
+
"GetAuthenticationProfileList", Limit=Limit, StartReference=StartReference
|
|
37
|
+
)
|
|
38
|
+
|
|
39
|
+
def CreateAuthenticationProfile(self, AuthenticationProfile):
|
|
40
|
+
return self.operator.call(
|
|
41
|
+
"CreateAuthenticationProfile", AuthenticationProfile=AuthenticationProfile
|
|
42
|
+
)
|
|
43
|
+
|
|
44
|
+
def SetAuthenticationProfile(self, AuthenticationProfile):
|
|
45
|
+
return self.operator.call(
|
|
46
|
+
"SetAuthenticationProfile", AuthenticationProfile=AuthenticationProfile
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
def ModifyAuthenticationProfile(self, AuthenticationProfile):
|
|
50
|
+
return self.operator.call(
|
|
51
|
+
"ModifyAuthenticationProfile", AuthenticationProfile=AuthenticationProfile
|
|
52
|
+
)
|
|
53
|
+
|
|
54
|
+
def DeleteAuthenticationProfile(self, Token):
|
|
55
|
+
return self.operator.call("DeleteAuthenticationProfile", Token=Token)
|
|
56
|
+
|
|
57
|
+
def GetSecurityLevelInfo(self, Token):
|
|
58
|
+
return self.operator.call("GetSecurityLevelInfo", Token=Token)
|
|
59
|
+
|
|
60
|
+
def GetSecurityLevelInfoList(self, Limit=None, StartReference=None):
|
|
61
|
+
return self.operator.call(
|
|
62
|
+
"GetSecurityLevelInfoList", Limit=Limit, StartReference=StartReference
|
|
63
|
+
)
|
|
64
|
+
|
|
65
|
+
def GetSecurityLevels(self, Token):
|
|
66
|
+
return self.operator.call("GetSecurityLevels", Token=Token)
|
|
67
|
+
|
|
68
|
+
def GetSecurityLevelList(self, Limit=None, StartReference=None):
|
|
69
|
+
return self.operator.call(
|
|
70
|
+
"GetSecurityLevelList", Limit=Limit, StartReference=StartReference
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
def CreateSecurityLevel(self, SecurityLevel):
|
|
74
|
+
return self.operator.call("CreateSecurityLevel", SecurityLevel=SecurityLevel)
|
|
75
|
+
|
|
76
|
+
def SetSecurityLevel(self, SecurityLevel):
|
|
77
|
+
return self.operator.call("SetSecurityLevel", SecurityLevel=SecurityLevel)
|
|
78
|
+
|
|
79
|
+
def ModifySecurityLevel(self, SecurityLevel):
|
|
80
|
+
return self.operator.call("ModifySecurityLevel", SecurityLevel=SecurityLevel)
|
|
81
|
+
|
|
82
|
+
def DeleteSecurityLevel(self, Token):
|
|
83
|
+
return self.operator.call("DeleteSecurityLevel", Token=Token)
|