diff --git a/deps/bin/onvif-cli b/deps/bin/onvif-cli new file mode 100755 index 0000000..90e34d7 --- /dev/null +++ b/deps/bin/onvif-cli @@ -0,0 +1,8 @@ +#!/usr/local/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from onvif.cli import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/deps/lib/python3.10/site-packages/onvif/__init__.py b/deps/lib/python3.10/site-packages/onvif/__init__.py new file mode 100644 index 0000000..b229f7d --- /dev/null +++ b/deps/lib/python3.10/site-packages/onvif/__init__.py @@ -0,0 +1,31 @@ +"""Initialize onvif.""" +import zeep + +from onvif.client import SERVICES, ONVIFCamera, ONVIFService +from onvif.exceptions import ( + ERR_ONVIF_BUILD, + ERR_ONVIF_PROTOCOL, + ERR_ONVIF_UNKNOWN, + ERR_ONVIF_WSDL, + ONVIFError, +) + + +def zeep_pythonvalue(self, xmlvalue): + """Monkey patch zeep.""" + return xmlvalue + + +# pylint: disable=no-member +zeep.xsd.simple.AnySimpleType.pythonvalue = zeep_pythonvalue + +__all__ = ( + "ONVIFService", + "ONVIFCamera", + "ONVIFError", + "ERR_ONVIF_UNKNOWN", + "ERR_ONVIF_PROTOCOL", + "ERR_ONVIF_WSDL", + "ERR_ONVIF_BUILD", + "SERVICES", +) diff --git a/deps/lib/python3.10/site-packages/onvif/__pycache__/__init__.cpython-310.pyc b/deps/lib/python3.10/site-packages/onvif/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000..96954f6 Binary files /dev/null and b/deps/lib/python3.10/site-packages/onvif/__pycache__/__init__.cpython-310.pyc differ diff --git a/deps/lib/python3.10/site-packages/onvif/__pycache__/client.cpython-310.pyc b/deps/lib/python3.10/site-packages/onvif/__pycache__/client.cpython-310.pyc new file mode 100644 index 0000000..1973654 Binary files /dev/null and b/deps/lib/python3.10/site-packages/onvif/__pycache__/client.cpython-310.pyc differ diff --git a/deps/lib/python3.10/site-packages/onvif/__pycache__/definition.cpython-310.pyc b/deps/lib/python3.10/site-packages/onvif/__pycache__/definition.cpython-310.pyc new file mode 100644 index 0000000..4672a85 Binary files /dev/null and b/deps/lib/python3.10/site-packages/onvif/__pycache__/definition.cpython-310.pyc differ diff --git a/deps/lib/python3.10/site-packages/onvif/__pycache__/exceptions.cpython-310.pyc b/deps/lib/python3.10/site-packages/onvif/__pycache__/exceptions.cpython-310.pyc new file mode 100644 index 0000000..9b698be Binary files /dev/null and b/deps/lib/python3.10/site-packages/onvif/__pycache__/exceptions.cpython-310.pyc differ diff --git a/deps/lib/python3.10/site-packages/onvif/client.py b/deps/lib/python3.10/site-packages/onvif/client.py new file mode 100644 index 0000000..befc6ae --- /dev/null +++ b/deps/lib/python3.10/site-packages/onvif/client.py @@ -0,0 +1,483 @@ +"""ONVIF Client.""" +import datetime as dt +import logging +import os.path + +import httpx +from httpx import AsyncClient, BasicAuth, DigestAuth +from zeep.cache import SqliteCache +from zeep.client import AsyncClient as BaseZeepAsyncClient, Client, Settings +from zeep.exceptions import Fault +import zeep.helpers +from zeep.proxy import AsyncServiceProxy +from zeep.transports import AsyncTransport +from zeep.wsse.username import UsernameToken + +from onvif.definition import SERVICES +from onvif.exceptions import ONVIFAuthError, ONVIFError, ONVIFTimeoutError + +logger = logging.getLogger("onvif") +logging.basicConfig(level=logging.INFO) +logging.getLogger("zeep.client").setLevel(logging.CRITICAL) + + +def safe_func(func): + """Ensure methods to raise an ONVIFError Exception when some thing was wrong.""" + + def wrapped(*args, **kwargs): + try: + return func(*args, **kwargs) + except Exception as err: + raise ONVIFError(err) + + return wrapped + + +class UsernameDigestTokenDtDiff(UsernameToken): + """ + UsernameDigestToken class, with a time offset parameter that can be adjusted; + This allows authentication on cameras without being time synchronized. + Please note that using NTP on both end is the recommended solution, + this should only be used in "safe" environments. + """ + + def __init__(self, user, passw, dt_diff=None, **kwargs): + super().__init__(user, passw, **kwargs) + # Date/time difference in datetime.timedelta + self.dt_diff = dt_diff + + def apply(self, envelope, headers): + old_created = self.created + if self.created is None: + self.created = dt.datetime.utcnow() + if self.dt_diff is not None: + self.created += self.dt_diff + result = super().apply(envelope, headers) + self.created = old_created + return result + + +class ZeepAsyncClient(BaseZeepAsyncClient): + """Overwrite create_service method to be async.""" + + def create_service(self, binding_name, address): + """Create a new ServiceProxy for the given binding name and address. + :param binding_name: The QName of the binding + :param address: The address of the endpoint + """ + try: + binding = self.wsdl.bindings[binding_name] + except KeyError: + raise ValueError( + "No binding found with the given QName. Available bindings " + "are: %s" % (", ".join(self.wsdl.bindings.keys())) + ) + return AsyncServiceProxy(self, binding, address=address) + + +class ONVIFService: + """ + Python Implemention for ONVIF Service. + Services List: + DeviceMgmt DeviceIO Event AnalyticsDevice Display Imaging Media + PTZ Receiver RemoteDiscovery Recording Replay Search Extension + + >>> from onvif import ONVIFService + >>> device_service = ONVIFService('http://192.168.0.112/onvif/device_service', + ... 'admin', 'foscam', + ... '/etc/onvif/wsdl/devicemgmt.wsdl') + >>> ret = device_service.GetHostname() + >>> print ret.FromDHCP + >>> print ret.Name + >>> device_service.SetHostname(dict(Name='newhostname')) + >>> ret = device_service.GetSystemDateAndTime() + >>> print ret.DaylightSavings + >>> print ret.TimeZone + >>> dict_ret = device_service.to_dict(ret) + >>> print dict_ret['TimeZone'] + + There are two ways to pass parameter to services methods + 1. Dict + params = {'Name': 'NewHostName'} + device_service.SetHostname(params) + 2. Type Instance + params = device_service.create_type('SetHostname') + params.Hostname = 'NewHostName' + device_service.SetHostname(params) + """ + + @safe_func + def __init__( + self, + xaddr, + user, + passwd, + url, + encrypt=True, + no_cache=False, + dt_diff=None, + binding_name="", + binding_key="", + ): + if not os.path.isfile(url): + raise ONVIFError("%s doesn`t exist!" % url) + + self.url = url + self.xaddr = xaddr + self.binding_key = binding_key + wsse = UsernameDigestTokenDtDiff( + user, passwd, dt_diff=dt_diff, use_digest=encrypt + ) + # Create soap client + client = AsyncClient(timeout=90) + self.transport = ( + AsyncTransport(client=client) + if no_cache + else AsyncTransport(client=client, cache=SqliteCache()) + ) + settings = Settings() + settings.strict = False + settings.xml_huge_tree = True + self.zeep_client_authless = ZeepAsyncClient( + wsdl=url, + transport=self.transport, + settings=settings + ) + self.ws_client_authless = self.zeep_client_authless.create_service(binding_name, self.xaddr) + + self.zeep_client = ZeepAsyncClient( + wsdl=url, + wsse=wsse, + transport=self.transport, + settings=settings + ) + self.ws_client = self.zeep_client.create_service(binding_name, self.xaddr) + + # Set soap header for authentication + self.user = user + self.passwd = passwd + # Indicate wether password digest is needed + self.encrypt = encrypt + self.dt_diff = dt_diff + + namespace = binding_name[binding_name.find("{") + 1 : binding_name.find("}")] + available_ns = self.zeep_client.namespaces + active_ns = ( + list(available_ns.keys())[list(available_ns.values()).index(namespace)] + or "ns0" + ) + self.create_type = lambda x: self.zeep_client.get_element(active_ns + ":" + x)() + + async def close(self): + """Close the transport.""" + await self.transport.aclose() + + @staticmethod + @safe_func + def to_dict(zeepobject): + """Convert a WSDL Type instance into a dictionary.""" + return {} if zeepobject is None else zeep.helpers.serialize_object(zeepobject) + + def __getattr__(self, name): + """ + Call the real onvif Service operations, + See the official wsdl definition for the + APIs detail(API name, request parameters, + response parameters, parameter types, etc...) + """ + + def service_wrapper(func): + """Wrap service call.""" + + @safe_func + def wrapped(params=None): + def call(params=None): + # No params + if params is None: + params = {} + else: + params = ONVIFService.to_dict(params) + try: + ret = func(**params) + except TypeError: + ret = func(params) + return ret + + return call(params) + + return wrapped + + builtin = name.startswith("__") and name.endswith("__") + if builtin: + return self.__dict__[name] + if name.startswith("authless_"): + return service_wrapper(getattr(self.ws_client_authless, name.split("_")[1])) + return service_wrapper(getattr(self.ws_client, name)) + + +class ONVIFCamera: + """ + Python Implemention ONVIF compliant device + This class integrates onvif services + + adjust_time parameter allows authentication on cameras without being time synchronized. + Please note that using NTP on both end is the recommended solution, + this should only be used in "safe" environments. + Also, this cannot be used on AXIS camera, as every request is authenticated, contrary to ONVIF standard + + >>> from onvif import ONVIFCamera + >>> mycam = ONVIFCamera('192.168.0.112', 80, 'admin', '12345') + >>> mycam.devicemgmt.GetServices(False) + >>> media_service = mycam.create_media_service() + >>> ptz_service = mycam.create_ptz_service() + # Get PTZ Configuration: + >>> mycam.ptz.GetConfiguration() + # Another way: + >>> ptz_service.GetConfiguration() + """ + + def __init__( + self, + host, + port, + user, + passwd, + wsdl_dir=os.path.join(os.path.dirname(os.path.dirname(__file__)), "wsdl"), + encrypt=True, + no_cache=False, + adjust_time=False, + ): + os.environ.pop("http_proxy", None) + os.environ.pop("https_proxy", None) + self.host = host + self.port = int(port) + self.user = user + self.passwd = passwd + self.wsdl_dir = wsdl_dir + self.encrypt = encrypt + self.no_cache = no_cache + self.adjust_time = adjust_time + self.dt_diff = None + self.xaddrs = {} + + # Active service client container + self.services = {} + + self.to_dict = ONVIFService.to_dict + + self._snapshot_uris = {} + self._snapshot_client = AsyncClient() + + async def update_xaddrs(self): + """Update xaddrs for services.""" + self.dt_diff = None + devicemgmt = self.create_devicemgmt_service() + if self.adjust_time: + try: + sys_date = await devicemgmt.authless_GetSystemDateAndTime() + except zeep.exceptions.Fault: + # Looks like we should try with auth + sys_date = await devicemgmt.GetSystemDateAndTime() + cdate = sys_date.UTCDateTime + cam_date = dt.datetime( + cdate.Date.Year, + cdate.Date.Month, + cdate.Date.Day, + cdate.Time.Hour, + cdate.Time.Minute, + cdate.Time.Second, + ) + self.dt_diff = cam_date - dt.datetime.utcnow() + await devicemgmt.close() + del self.services[devicemgmt.binding_key] + devicemgmt = self.create_devicemgmt_service() + + # Get XAddr of services on the device + self.xaddrs = {} + capabilities = await devicemgmt.GetCapabilities({"Category": "All"}) + for name in capabilities: + capability = capabilities[name] + try: + if name.lower() in SERVICES and capability is not None: + namespace = SERVICES[name.lower()]["ns"] + self.xaddrs[namespace] = capability["XAddr"] + except Exception: + logger.exception("Unexpected service type") + + async def create_pullpoint_subscription(self): + """Create a pullpoint subscription.""" + try: + events = self.create_events_service() + pullpoint = await events.CreatePullPointSubscription() + # pylint: disable=protected-access + self.xaddrs[ + "http://www.onvif.org/ver10/events/wsdl/PullPointSubscription" + ] = pullpoint.SubscriptionReference.Address._value_1 + except Fault: + return False + return True + + async def close(self): + """Close all transports.""" + await self._snapshot_client.aclose() + for service in self.services.values(): + await service.close() + + async def get_snapshot_uri(self, profile_token): + """Get the snapshot uri for a given profile.""" + uri = self._snapshot_uris.get(profile_token) + if uri is None: + media_service = self.create_media_service() + req = media_service.create_type("GetSnapshotUri") + req.ProfileToken = profile_token + result = await media_service.GetSnapshotUri(req) + uri = result.Uri + self._snapshot_uris[profile_token] = uri + return uri + + async def get_snapshot(self, profile_token, basic_auth=False): + """Get a snapshot image from the camera.""" + uri = await self.get_snapshot_uri(profile_token) + if uri is None: + return None + + auth = None + if self.user and self.passwd: + if basic_auth: + auth = BasicAuth(self.user, self.passwd) + else: + auth = DigestAuth(self.user, self.passwd) + + try: + response = await self._snapshot_client.get(uri, auth=auth) + except httpx.TimeoutException as error: + raise ONVIFTimeoutError(error) from error + except httpx.RequestError as error: + raise ONVIFError(error) from error + + if response.status_code == 401: + raise ONVIFAuthError(f"Failed to authenticate to {uri}") + + if response.status_code < 300: + return response.content + + return None + + def get_definition(self, name, port_type=None): + """Returns xaddr and wsdl of specified service""" + # Check if the service is supported + if name not in SERVICES: + raise ONVIFError("Unknown service %s" % name) + wsdl_file = SERVICES[name]["wsdl"] + namespace = SERVICES[name]["ns"] + + binding_name = "{{{}}}{}".format(namespace, SERVICES[name]["binding"]) + + if port_type: + namespace += "/" + port_type + + wsdlpath = os.path.join(self.wsdl_dir, wsdl_file) + if not os.path.isfile(wsdlpath): + raise ONVIFError("No such file: %s" % wsdlpath) + + # XAddr for devicemgmt is fixed: + if name == "devicemgmt": + xaddr = "{}:{}/onvif/device_service".format( + self.host + if (self.host.startswith("http://") or self.host.startswith("https://")) + else "http://%s" % self.host, + self.port, + ) + return xaddr, wsdlpath, binding_name + + # Get other XAddr + xaddr = self.xaddrs.get(namespace) + if not xaddr: + raise ONVIFError("Device doesn`t support service: %s" % name) + + return xaddr, wsdlpath, binding_name + + def create_onvif_service(self, name, port_type=None): + """Create ONVIF service client""" + + name = name.lower() + xaddr, wsdl_file, binding_name = self.get_definition(name, port_type) + + # Don't re-create bindings if the xaddr remains the same. + # The xaddr can change when a new PullPointSubscription is created. + binding_key = f"{binding_name}{xaddr}" + binding = self.services.get(binding_key) + if binding: + return binding + + service = ONVIFService( + xaddr, + self.user, + self.passwd, + wsdl_file, + self.encrypt, + no_cache=self.no_cache, + dt_diff=self.dt_diff, + binding_name=binding_name, + binding_key=binding_key + ) + + self.services[binding_key] = service + + return service + + def create_devicemgmt_service(self): + """Service creation helper.""" + return self.create_onvif_service("devicemgmt") + + def create_media_service(self): + """Service creation helper.""" + return self.create_onvif_service("media") + + def create_ptz_service(self): + """Service creation helper.""" + return self.create_onvif_service("ptz") + + def create_imaging_service(self): + """Service creation helper.""" + return self.create_onvif_service("imaging") + + def create_deviceio_service(self): + """Service creation helper.""" + return self.create_onvif_service("deviceio") + + def create_events_service(self): + """Service creation helper.""" + return self.create_onvif_service("events") + + def create_analytics_service(self): + """Service creation helper.""" + return self.create_onvif_service("analytics") + + def create_recording_service(self): + """Service creation helper.""" + return self.create_onvif_service("recording") + + def create_search_service(self): + """Service creation helper.""" + return self.create_onvif_service("search") + + def create_replay_service(self): + """Service creation helper.""" + return self.create_onvif_service("replay") + + def create_pullpoint_service(self): + """Service creation helper.""" + return self.create_onvif_service("pullpoint", port_type="PullPointSubscription") + + def create_notification_service(self): + """Service creation helper.""" + return self.create_onvif_service("notification") + + def create_subscription_service(self, port_type=None): + """Service creation helper.""" + return self.create_onvif_service("subscription", port_type=port_type) + + def create_receiver_service(self): + """Service creation helper.""" + return self.create_onvif_service("receiver") diff --git a/deps/lib/python3.10/site-packages/onvif/definition.py b/deps/lib/python3.10/site-packages/onvif/definition.py new file mode 100644 index 0000000..8fad830 --- /dev/null +++ b/deps/lib/python3.10/site-packages/onvif/definition.py @@ -0,0 +1,74 @@ +"""ONVIF Service Definitions""" + +SERVICES = { + "devicemgmt": { + "ns": "http://www.onvif.org/ver10/device/wsdl", + "wsdl": "devicemgmt.wsdl", + "binding": "DeviceBinding", + }, + "media": { + "ns": "http://www.onvif.org/ver10/media/wsdl", + "wsdl": "media.wsdl", + "binding": "MediaBinding", + }, + "ptz": { + "ns": "http://www.onvif.org/ver20/ptz/wsdl", + "wsdl": "ptz.wsdl", + "binding": "PTZBinding", + }, + "imaging": { + "ns": "http://www.onvif.org/ver20/imaging/wsdl", + "wsdl": "imaging.wsdl", + "binding": "ImagingBinding", + }, + "deviceio": { + "ns": "http://www.onvif.org/ver10/deviceIO/wsdl", + "wsdl": "deviceio.wsdl", + "binding": "DeviceIOBinding", + }, + "events": { + "ns": "http://www.onvif.org/ver10/events/wsdl", + "wsdl": "events.wsdl", + "binding": "EventBinding", + }, + "pullpoint": { + "ns": "http://www.onvif.org/ver10/events/wsdl", + "wsdl": "events.wsdl", + "binding": "PullPointSubscriptionBinding", + }, + "notification": { + "ns": "http://www.onvif.org/ver10/events/wsdl", + "wsdl": "events.wsdl", + "binding": "NotificationProducerBinding", + }, + "subscription": { + "ns": "http://www.onvif.org/ver10/events/wsdl", + "wsdl": "events.wsdl", + "binding": "SubscriptionManagerBinding", + }, + "analytics": { + "ns": "http://www.onvif.org/ver20/analytics/wsdl", + "wsdl": "analytics.wsdl", + "binding": "AnalyticsEngineBinding", + }, + "recording": { + "ns": "http://www.onvif.org/ver10/recording/wsdl", + "wsdl": "recording.wsdl", + "binding": "RecordingBinding", + }, + "search": { + "ns": "http://www.onvif.org/ver10/search/wsdl", + "wsdl": "search.wsdl", + "binding": "SearchBinding", + }, + "replay": { + "ns": "http://www.onvif.org/ver10/replay/wsdl", + "wsdl": "replay.wsdl", + "binding": "ReplayBinding", + }, + "receiver": { + "ns": "http://www.onvif.org/ver10/receiver/wsdl", + "wsdl": "receiver.wsdl", + "binding": "ReceiverBinding", + }, +} diff --git a/deps/lib/python3.10/site-packages/onvif/exceptions.py b/deps/lib/python3.10/site-packages/onvif/exceptions.py new file mode 100644 index 0000000..dddce85 --- /dev/null +++ b/deps/lib/python3.10/site-packages/onvif/exceptions.py @@ -0,0 +1,38 @@ +""" Core exceptions raised by the ONVIF Client """ + +# Error codes setting +# Error unknown, e.g, HTTP errors +ERR_ONVIF_UNKNOWN = 1 +# Protocol error returned by WebService, +# e.g:DataEncodingUnknown, MissingAttr, InvalidArgs, ... +ERR_ONVIF_PROTOCOL = 2 +# Error about WSDL instance +ERR_ONVIF_WSDL = 3 +# Error about Build +ERR_ONVIF_BUILD = 4 + + +class ONVIFError(Exception): + """ONVIF Exception class.""" + + def __init__(self, err): + self.reason = "Unknown error: " + str(err) + self.code = ERR_ONVIF_UNKNOWN + super().__init__(err) + + def __str__(self): + return self.reason + + +class ONVIFTimeoutError(ONVIFError): + """ONVIF Timeout Exception class.""" + + def __init__(self, err): + super().__init__(err) + + +class ONVIFAuthError(ONVIFError): + """ONVIF Authentication Exception class.""" + + def __init__(self, err): + super().__init__(err) diff --git a/deps/lib/python3.10/site-packages/onvif/version.txt b/deps/lib/python3.10/site-packages/onvif/version.txt new file mode 100644 index 0000000..26aaba0 --- /dev/null +++ b/deps/lib/python3.10/site-packages/onvif/version.txt @@ -0,0 +1 @@ +1.2.0 diff --git a/deps/lib/python3.10/site-packages/onvif/wsdl/__init__.py b/deps/lib/python3.10/site-packages/onvif/wsdl/__init__.py new file mode 100644 index 0000000..80ea5fe --- /dev/null +++ b/deps/lib/python3.10/site-packages/onvif/wsdl/__init__.py @@ -0,0 +1 @@ +"""Dummy for packaging""" diff --git a/deps/lib/python3.10/site-packages/onvif/wsdl/__pycache__/__init__.cpython-310.pyc b/deps/lib/python3.10/site-packages/onvif/wsdl/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000..5ba637e Binary files /dev/null and b/deps/lib/python3.10/site-packages/onvif/wsdl/__pycache__/__init__.cpython-310.pyc differ diff --git a/deps/lib/python3.10/site-packages/onvif/wsdl/accesscontrol.wsdl b/deps/lib/python3.10/site-packages/onvif/wsdl/accesscontrol.wsdl new file mode 100644 index 0000000..652a892 --- /dev/null +++ b/deps/lib/python3.10/site-packages/onvif/wsdl/accesscontrol.wsdl @@ -0,0 +1,751 @@ + + + + + + + + + + + +The service capabilities reflect optional functionality of a service. +The information is static and does not change during device operation. +The following capabilities are available: + + + + + + + The maximum number of entries returned by a single GetList request. The device shall never return more than this number of entities in a single response. + + + + + + + +Used as extension base for AccessPointInfo. + + + + + + + A user readable name. It shall be up to 64 characters. + + + Optional user readable description for the AccessPoint. It shall be up to 1024 characters. + + + Optional reference to the Area from which access is requested. + + + Optional reference to the Area to which access is requested. + + + Optional entity type; if missing, a Door type as defined by the ONVIF DoorControl service should be assumed. This can also be represented by the QName value "tdc:Door" - where tdc is the namespace of the Door Control service: "http://www.onvif.org/ver10/doorcontrol/wsdl". This field is provided for future extensions; it will allow an AccessPoint being extended to cover entity types other than Doors as well. + + + Reference to the entity used to control access; the entity type may be specified by the optional EntityType field explained below but is typically a Door. + + + + + + + + + +The AccessPointInfo structure contains basic information about an AccessPoint instance. +An AccessPoint defines an entity a Credential can be granted or denied access to. The +AccessPointInfo provides basic information on how access is controlled in one direction for a +door (from which area to which area). +</p><p> + door is the typical device involved, but other type of +devices may be supported as well. +Multiple AccessPoints may cover the same Door. +A typical case is one AccessPoint for entry and another for exit, both referencing +the same Door. +</p><p> + +An ONVIF compliant device shall provide the following fields for each AccessPoint instance: + + + + + + + The capabilities for the AccessPoint. + + + + + + + + + + + +The AccessPoint capabilities reflect optional functionality of a particular physical entity. +Different AccessPoint instances may have different set of capabilities. This information may +change during device operation, e.g. if hardware settings are changed. +The following capabilities are available: + + + + + + Indicates whether or not this AccessPoint instance supports EnableAccessPoint and DisableAccessPoint commands. + + + Indicates whether or not this AccessPoint instance supports generation of duress events. + + + Indicates whether or not this AccessPoint has a REX switch or other input that allows anonymous access. + + + Indicates whether or not this AccessPoint instance supports generation of AccessTaken and AccessNotTaken events. If AnonymousAccess and AccessTaken are both true, it indicates that the Anonymous versions of AccessTaken and AccessNotTaken are supported. + + + Indicates whether or not this AccessPoint instance supports the ExternalAuthorization operation and the generation of Request events. If AnonymousAccess and ExternalAuthorization are both true, it indicates that the Anonymous version is supported as well. + + + + + + + +Basic information about an Area. Used as extension base. + + + + + + + User readable name. It shall be up to 64 characters. + + + User readable description for the Area. It shall be up to 1024 characters. + + + + + + + + + +The AreaInfo structure contains basic information about an Area. +An ONVIF compliant device shall provide the following fields for each Area: + + + + + + + + + + + + + + +The AccessPointState contains state information for an AccessPoint. +An ONVIF compliant device shall provide the following fields for each AccessPoint instance: + + + + + Indicates that the AccessPoint is enabled. By default this field value shall be True, if the DisableAccessPoint capabilities is not supported. + + + + + + + + + +The Decision enumeration represents a choice of two available options for an access request: + + + + + The decision is to grant access. + + + The decision is to deny access. + + + + + + + +Non-normative enum that describes the various reasons for denying access. +The following strings shall be used for the reason field: + + + + + The device shall provide the following event, whenever a valid credential is not enabled or has been disabled (e.g., due to credential being lost etc.) to prevent unauthorized entry. + + + The device shall provide the following event, whenever a valid credential is presented though it is not active yet;: e.g, the credential was presented before the start date. + + + The device shall provide the following event, whenever a valid credential was presented after its expiry date. + + + The device shall provide the following event, whenever an entered PIN code does not match the credential. + + + The device shall provide the following event, whenever a valid credential is denied access to the requested AccessPoint because the credential is not permitted at the moment. + + + The device shall provide the following event, whenever the presented credential is not authorized. + + + The device shall provide the following event, whenever the request is denied and no other specific event matches it or is supported by the service. + + + + + + + + + + + + + + + + + The capability response message contains the requested Access Control service capabilities using a hierarchical XML capability structure. + + + + + + + + + + Maximum number of entries to return. If not specified, less than one or higher than what the device supports, the number of items is determined by the device. + + + Start returning entries from this start reference. If not specified, entries shall start from the beginning of the dataset. + + + + + + + + + + StartReference to use in next call to get the following items. If absent, no more items to get. + + + List of AccessPointInfo items. + + + + + + + + + + Tokens of AccessPointInfo items to get. + + + + + + + + + + List of AccessPointInfo items. + + + + + + + + + + Maximum number of entries to return. If not specified, less than one or higher than what the device supports, the number of items is determined by the device. + + + Start returning entries from this start reference. If not specified, entries shall start from the beginning of the dataset. + + + + + + + + + + StartReference to use in next call to get the following items. If absent, no more items to get. + + + List of AreaInfo items. + + + + + + + + + + Tokens of AreaInfo items to get. + + + + + + + + + + List of AreaInfo items. + + + + + + + + + + Token of AccessPoint instance to get AccessPointState for. + + + + + + + + + + AccessPointState item. + + + + + + + + + + Token of the AccessPoint instance to enable. + + + + + + + + + + + + + + + + + Token of the AccessPoint instance to disable. + + + + + + + + + + + + + + + + + Token of the Access Point instance. + + + Optional token of the Credential involved. + + + Optional reason for decision. + + + Decision - Granted or Denied. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +This operation returns the capabilities of the Access Control service. +</p><p> +An ONVIF compliant device which provides the Access Control service shall +implement this method. + + + + + + +This operation requests a list of all AccessPointInfo items provided by the device. +An ONVIF compliant device which provides the Access Control service shall implement this method. +</p><p> +A call to this method shall return a StartReference when not all data is returned and more +data is available. The reference shall be valid for retrieving the next set of data. +Please refer section [Retrieving system configuration] for more details. +</p><p> +The number of items returned shall not be greater than Limit parameter. +</p><p> + + + + + + +This operation requests a list of AccessPointInfo items matching the given tokens. +</p><p> +An ONVIF compliant device which provides Access Control service shall implement this method. +</p><p> +The device shall ignore tokens it cannot resolve and shall return an empty list if there +are no items matching specified tokens. The device shall not return a fault in this case. +</p><p> +If the number of requested items is greater than MaxLimit, a TooManyItems +fault shall be returned. +</p><p> + + + + + + +This operation requests a list of all AreaInfo items provided by the device. +An ONVIF compliant device which provides the Access Control service shall implement this method. +</p><p> +A call to this method shall return a StartReference when not all data is returned and more +data is available. The reference shall be valid for retrieving the next set of data. +Please refer section [Retrieving system configuration] for more details. +</p><p> +The number of items returned shall not be greater than Limit parameter. +</p><p> + + + + + + + +This operation requests a list of AreaInfo items matching the given tokens. +</p><p> +An ONVIF compliant device which provides Access Control service shall implement this method. +</p><p> +The device shall ignore tokens it cannot resolve and shall return an empty list if there +are no items matching specified tokens. The device shall not return a fault in this case. +</p><p> +If the number of requested items is greater than MaxLimit, a TooManyItems +fault shall be returned. +</p><p> + + + + + + +This operation requests the AccessPointState for the AccessPoint instance specified by Token. +</p><p> +An ONVIF compliant device that provides Access Control service shall implement this method. + + + + + + +This operation allows enabling an access point. +</p><p> +A device that signals support for DisableAccessPoint capability for a particular AccessPoint +instance shall implement this command. +</p><p> + + + + + + +This operation allows disabling an access point. +</p><p> +A device that signals support for DisableAccessPoint capability for a particular AccessPoint +instance shall implement this command. +</p><p> + + + + + + +This operation allows to Deny or Grant decision at an AccessPoint instance. +</p><p> +A device that signals support for ExternalAuthorization capability for a particular +AccessPoint instance shall implement this method. + + + + + + + + +Copyright (c) 2010-2013 by ONVIF: Open Network Video Interface Forum. All rights reserved.
+This is the initial minimized version of the Access Control service +aimed at the first PACS Profile C.
+ + + + + + + +The AccessControl service implements the Authentication and +Authorization functionality and controls the actions to get +access to various Access Points controlling access to Doors and Areas.
+ + +The basic data structures used by the service are: + +* CredentialInfo holding basic information of a credential.
+* AccessPointInfo holding basic information on how access is controlled in +one direction for a door (from which area to which area) defined in the DoorControl service.
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
diff --git a/deps/lib/python3.10/site-packages/onvif/wsdl/actionengine.wsdl b/deps/lib/python3.10/site-packages/onvif/wsdl/actionengine.wsdl new file mode 100644 index 0000000..2eeec35 --- /dev/null +++ b/deps/lib/python3.10/site-packages/onvif/wsdl/actionengine.wsdl @@ -0,0 +1,1270 @@ + + + + + + + + + + + + + + + + + + + Array of supported Action types + + + + + + + + + + + + + + + Array of current Action configurations + + + + + + + + + + + + Array of Actions to be configured on service provider + + + + + + + + + + + Array of configured Actions with service provider assigned unique identifiers + + + + + + + + + + + + Array of tokens referencing existing Action configurations to be removed + + + + + + + + + + + + + + + Array of Action configurations to update the existing action configurations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Array of current Action Trigger configurations + + + + + + + + + + + + Action Triggers to be configured + + + + + + + + + + + Returns configured Action Triggers with service provider assigned unique identifers + + + + + + + + + + + + Array of Action Trigger configurations to be updated. + + + + + + + + + + + + + + + Array of tokens referencing existing Action Trigger configurations to be removed + + + + + + + + + + + + + + + Describes the configuration parameters of an action. + + + + + Action configuration parameter descriptions + + + + + + Action type name + + + + + + + + SupportedActions data structure lists the available action types that service provider supports. For each action type, data structure contains the action configuration parameters. + + + + + + Lists the location of all schemas that are referenced in the supported actions. If the action descriptions reference data types in the ONVIF schema file,the ONVIF schema file MUST be explicitly listed. + + + + + + List of actions supported by Action Engine Service provider. + + + + + + + + + + + + + + + + + Action Engine Capabilities data structure contains the maximum number of supported actions and number of actions in use for generic as well as specific action types + + + + + Limits for each action type + + + + + + + The maximum number of trigger configurations that the service provider can concurrently support + + + + + The maximum number of actions that the service provider can concurrently support + + + + + + + + + + + + + + + ActionTypeLimits data structure contains maximum and current usage information for a specific action type in the service provider + + + + + + + Action Type + + + + + For the specific action type, the maximum number of actions that could be concurrently supported by the service provider + + + + + For the specific action type, the number of actions in use by the service provider + + + + + + + + Action Configuration data type contains the configuration settings of action configuration parameters, service requester given action Name, and service provider supported action type value + + + + + Action configuration parameter settings. + + + + + + + User given name. + + + + + Denotes the action type. + + + + + + + + Action data type contains the configuration settings of one action instance and service provider assigned unique identifier for this action configuration. + + + + + Action configuration contains action type, user given action name, and configuratin parameter settings. + + + + + + + Unique Action identifier that service provider assigned to the action configuration. + + + + + + + + Action Trigger configuration data type contains mandatory Topic Expression (Section Topic Filter in [Core Specification]), optional Message content expression (Section Message Content Filter in [Core Specification]), and set of actions to be triggered. + + + + + Topic expression, for example, to trigger only for relays. Trigger based on event topic. + + + + + Content expression, for example, to trigger only when the relay value is on. Trigger based on content data in event. + + + + + Reference to actions to be triggered when the conditions are satisfied. + + + + + + + + + + + + + + + + + Action Trigger data type contains the service provider assigned unique identifier for the configuration and action trigger configuration data. + + + + + Action Trigger Configuration + Action Trigger Configuration + + + + + + + Unique Action Trigger identifier that service provider assigned to the action trigger configuration. + + + + + + + + + + + + + + + + + + + SMTP EMail Server configuration + + + + + POP EMail Server configuration + + + + + Credentials configuration + + + + + + + + + + + + Destination SMTP Address configuration + + + + + + + + + + + + + + + + + Destination POP Server Address configuration + + + + + + + + + + + + IP Address + + + + + + + IP Address format type such as IPv4 or IPv6 + + + + + + + + + + + + + + + + + + + Username + + + + + Password + + + + + + + + + + + + + + + + + + Username-password + + + + + + + Email server authentication mode + + + + + + + + + + + + + + + + + + + Configuration for E-mail TO + + + + + Configuration for E-mail CC + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Whether content of E-mail message contains event data + + + + + + + + + + + + + + + MediaSource profile reference token + + + + + + + + + + + + Destination HTTP Server configuration + + + + + + + + + + + + + + + + + + + + + + + Destination HTTP Server address configuration + + + + + User Credentials configuration for destination HTTP Server + + + + + + + + + + + URI for POST Message destination + + + + + HTTP/HTTPS protocol selection (default is http) + + + + + + + + + + + + + + + + + + + + + + + + + User credentials + + + + + + + + + + + HTTP Authentication Method + + + + + + + + + + + + + + + + + + + + + + + + + Destination HTTP Server IP Address + + + + + + + IPv4 or IPv6 + + + + + Port Number if different from 80 + + + + + + + + + + MediaSource reference when the media is attached to POST message + + + + + Configuration for POST Message content + + + + + + + + + + + + + + + + + + + Whether include event into POST message + + + + + Whether attach media into POST message + + + + + + + + + + FTP Action destination configuration + + + + + + + + + + + + + + + + + + + + + + + FTP Server IP Address + + + + + Upload Directory Path + + + + + User credentials confguration for target FTP Server + + + + + + + + + + + + + + + + + + + User Credentials + + + + + + + + + + + + + + + + + + + FTP Server IP Address + + + + + + + IPv4 or IPv6 + + + + + Port Number + + + + + + + + + + + + + + + + + + + + + + + + Name of file + + + + + Suffix of file + + + + + + + + + + + + + + + + + + + + Upload Images action configuration + + + + + Upload files action configuration + + + + + + + + Type of FTP Upload action + + + + + + + + + + Upload Image action; how long? + + + + + Upload Image action; sample interval? + + + + + Upload Image action; name of destination file + + + + + + + + + + + + Name of source file + + + + + Name of destination file + + + + + + + + + + + + SMS Provider's URL + + + + + Username and password + + + + + + + + + + + + Sender's e-mail address + + + + + + + + + + + + Text Message + + + + + + + + + + + + Length of recording time before the triggering event + + + + + Recording after alarm recording duration + + + + + Record duration + + + + + Recording frame rate + + + + + Whether Audio recording on/off + + + + + + + + + + + + Recording configuration + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The service provider returns the supported action types. +
The response returns a list of Action Descriptions according to the Action Description Language. +
The response also contains a list of URLs that provide the location of the schema files. These schema files describe the types and elements used in the Action Descriptions. If action descriptions reference types or elements of the ONVIF schema file, the ONVIF schema file shall be explicitly listed.
+ + +
+ + The service provider returns currently installed Actions. + + + + + The create action operation adds actions to configuration. The create action operation is atomic. If a service provider can not create all of requested actions, the service provider responds with a fault message. + + + + + The delete operation deletes actions. The delete action operation is atomic. If a service provider can not delete all of requested actions, the service provider responds with a fault message. + + + + + The modify action operation modifies action configurations.
The modify action operation is atomic. If a service provider can not modify all of requested action configurations, the service provider responds with a fault message.
All action parameters, except the action type, can be modified. The service provider shall return InvalidAction error if the request attempts to change the action type with modify action request.
+ + +
+ + The get capabilities operation returns the Action Engine capabilities + + + + + The service provider returns existing action triggers + + + + + Creates action triggers. The create action triggers operation is atomic. If a service provider can not create all of requested action triggers, the service provider responds with a fault message. + + + + + Deletes action triggers. The delete action triggers operation is atomic. If a service provider can not delete all of requested action triggers, the service provider responds with a fault message. + + + + + Modifies existing action triggers. The modify action triggers operation is atomic. If a service provider can not modify all of requested action trigger configurations, the service provider responds with a fault message. + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/deps/lib/python3.10/site-packages/onvif/wsdl/addressing b/deps/lib/python3.10/site-packages/onvif/wsdl/addressing new file mode 100644 index 0000000..8a668e2 --- /dev/null +++ b/deps/lib/python3.10/site-packages/onvif/wsdl/addressing @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + + If "Policy" elements from namespace "http://schemas.xmlsoap.org/ws/2002/12/policy#policy" are used, they must appear first (before any extensibility elements). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/deps/lib/python3.10/site-packages/onvif/wsdl/advancedsecurity.wsdl b/deps/lib/python3.10/site-packages/onvif/wsdl/advancedsecurity.wsdl new file mode 100644 index 0000000..8363f04 --- /dev/null +++ b/deps/lib/python3.10/site-packages/onvif/wsdl/advancedsecurity.wsdl @@ -0,0 +1,1628 @@ + + + + + + + + + + + + Unique identifier for keys in the keystore. + + + + + + + Unique identifier for certificates in the keystore. + + + + + + + Unique identifier for certification paths in the keystore. + + + + + + + The status of a key in the keystore. + + + + + Key is ready for use + + + + + Key is being generated + + + + + Key has not been successfully generated and cannot be used. + + + + + + + + An object identifier (OID) in dot-decimal form as specified in RFC4512. + + + + + + + + + The distinguished name attribute type encoded as specified in RFC 4514. + + + + + + + + + The distinguished name attribute values are encoded in UTF-8 or in hexadecimal form as specified in RFC 4514. + + + + + + + + The attributes of a key in the keystore. + + + + + The ID of the key. + + + + + The client-defined alias of the key. + + + + + Absent if the key is not a key pair. True if and only if the key is a key pair and contains a private key. False if and only if the key is a key pair and does not contain a private key. + + + + + The status of the key. The value should be one of the values in the tas:KeyStatus enumeration. + + + + + + + + + + A distinguished name attribute type and value pair. + + + + + The attribute type. + + + + + The value of the attribute. + + + + + + + + + + A multi-valued RDN + + + + + A list of types and values defining a multi-valued RDN + + + + + + + + + + A country name as specified in + X.500. + + + + + An organization name as specified in + X.500. + + + + + An organizational unit name as specified in + X.500. + + + + + A distinguished name qualifier as specified in + X.500. + + + + + A state or province name as specified in + X.500. + + + + + A common name as specified in + X.500. + + + + + A serial number as specified in + X.500. + + + + + A locality as specified in X.500. + + + + + A title as specified in X.500. + + + + + A surname as specified in X.500. + + + + + A given name as specified in X.500. + + + + + Initials as specified in X.500. + + + + + A pseudonym as specified in X.500. + + + + + A generation qualifier as specified in + X.500. + + + + + A generic type-value pair + attribute. + + + + + A multi-valued RDN + + + + + + + + + + + + + + + + An identifier of an algorithm. + + + + + The OID of the algorithm in dot-decimal form. + + + + + Optional parameters of the algorithm (depending on the algorithm). + + + + + + + + + + + + + + + + A CSR attribute as specified in RFC 2986. + + + + + The OID of the attribute. + + + + + The value of the attribute as a base64-encoded DER representation of an ASN.1 value. + + + + + + + + + + A CSR attribute as specified in PKCS#10. + + + + + An X.509v3 extension field. + + + + + A basic CSR attribute. + + + + + + + + + + + + + + + + A base64-encoded ASN.1 value. + + + + + + + An X.509v3 extension field as specified in RFC 5280 + + + + + The OID of the extension field. + + + + + True if and only if the extension is critical. + + + + + The value of the extension field as a base64-encoded DER representation of an ASN.1 value. + + + + + + + + + + An X.509 cerficiate as specified in RFC 5280. + + + + + The ID of the certificate. + + + + + The ID of the key that this certificate associates to the certificate subject. + + + + + The client-defined alias of the certificate. + + + + + The base64-encoded DER representation of the X.509 certificate. + + + + + + + + + + A sequence of certificate IDs. + + + + + A certificate ID. + + + + + + + + + An X.509 certification path as defined in RFC 5280. + + + + + A certificate in the certification path. + + + + + The client-defined alias of the certification path. + + + + + + + + + + + + + + + + A list of RSA key lenghts in bits. + + + + + + A list of X.509 versions. + + + + + + A list of TLS versions. + + + + + + + The capabilities of a keystore implementation on a device. + + + + + The signature algorithms supported by the keystore implementation. + + + + + + + + + + + + + Indicates the maximum number of keys that the device can store simultaneously. + + + + + Indicates the maximum number of certificates that the device can store simultaneously. + + + + + Indicates the maximum number of certification paths that the device can store simultaneously. + + + + + Indication that the device supports on-board RSA key pair generation. + + + + + Indicates which RSA key lengths are supported by the device. + + + + + Indicates support for creating PKCS#10 requests for RSA keys and uploading the certificate obtained from a CA.. + + + + + Indicates support for creating self-signed certificates for RSA keys. + + + + + Indicates which X.509 versions are supported by the device. + + + + + + + + The capabilities of a TLS server implementation on a device. + + + + + + + Indicates which TLS versions are supported by the device. + + + + + Indicates the maximum number of certification paths that may be assigned to the TLS server simultaneously. + + + + + + + + The capabilities of an Advanced Security Service implementation on a device. + + + + + The capabilities of the keystore implementation. + + + + + The capabilities of the TLS server implementation. + + + + + + + + + + + + + + + + + + + + + The capabilities for the advanced secuirty service is returned in the Capabilities element. + + + + + + + + + + + + The length of the key to be created. + + + + + The client-defined alias of the key. + + + + + + + + + + + The key ID of the key pair being generated. + + + + + Best-effort estimate of how long the key generation will take. + + + + + + + + + + + + The ID of the key for which to return the status. + + + + + + + + + + + Status of the requested key. The value should be one of the values in the tas:KeyStatus enumeration. + + + + + + + + + + + + The ID of the key pair for which to return whether it contains a private key. + + + + + + + + + + + True if and only if the key pair contains a private key. + + + + + + + + + + + + + + + + + Information about a key in the keystore. + + + + + + + + + + + + The ID of the key that is to be deleted from the keystore. + + + + + + + + + + + + + + + + + The subject to be included in the CSR. + + + + + The ID of the key for which the CSR shall be created. + + + + + An attribute to be included in the CSR. + + + + + The signature algorithm to be used to sign the CSR. Defaults to SHA1 with RSA Encryption. + + + + + + + + + + + The DER encoded PKCS#10 certification request. + + + + + + + + + + + + The X.509 version that the generated certificate shall comply to. + + + + + Distinguished name of the entity that the certificate shall belong to. + + + + + The ID of the key for which the certificate shall be created. + + + + + The client-defined alias of the certificate to be created. + + + + + The X.509 not valid before information to be included in the certificate. Defaults to the device's current time or a time before the device's current time. + + + + + The X.509 not valid after information to be included in the certificate. Defaults to the time 99991231235959Z as specified in RFC 5280. + + + + + The signature algorithm to be used for signing the certificate. Defaults to SHA1 with RSA Encryption. + + + + + An X.509v3 extension to be included in the certificate. + + + + + + + + + + + The ID of the generated certificate. + + + + + + + + + + + + The base64-encoded DER representation of the X.509 certificate to be uploaded. + + + + + The client-defined alias of the certificate. + + + + + The client-defined alias of the key pair. + + + + + Indicates if the device shall verify that a matching key pair with a private key exists in the keystore. + + + + + + + + + + + The ID of the uploaded certificate. + + + + + The ID of the key that the uploaded certificate certifies. + + + + + + + + + + + + The ID of the certificate to retrieve. + + + + + + + + + + + The DER representation of the certificate. + + + + + + + + + + + + + + + A list with all certificates stored in the keystore. + + + + + A certificate stored in the keystore. + + + + + + + + + + + + The ID of the certificate to delete. + + + + + + + + + + + + + + + + + The IDs of the certificates to include in the certification path, where each certificate signature except for the last one in the path must be verifiable with the public key certified by the next certificate in the path. + + + + + The client-defined alias of the certification path. + + + + + + + + + + + The ID of the generated certification path. + + + + + + + + + + + + The ID of the certification path to retrieve. + + + + + + + + + + + The certification path that is stored under the given ID in the keystore. + + + + + + + + + + + + + + + + + An ID of a certification path in the keystore. + + + + + + + + + + + + The ID of the certification path to delete. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The IDs of all certification paths that are assigned to the TLS server on the device. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Common functionality for all advanced security service parts. + + Returns the capabilities of the advanced security service. The result is returned in a typed answer. + + + + + + Basic keystore functionality. + + + This operation triggers the asynchronous generation of an RSA key pair of a particular key length (specified as the number of bits) as specified in [RFC 3447], with a suitable key generation mechanism on the device. + Keys, especially RSA key pairs, are uniquely identified using key IDs.
+ If the device does not have not enough storage capacity for storing the key pair to be created, the maximum number of keys reached fault shall be produced and no key pair shall be generated. + Otherwise, the operation generates a keyID for the new key and associates the generating status to it.
+ Immediately after key generation has started, the device shall return the keyID to the client and continue to generate the key pair. + The client may query the device with the GetKeyStatus operation whether the generation has finished. + The client may also subscribe to Key Status events to be notified about key status changes.
+ The device also returns a best-effort estimate of how much time it requires to create the key pair. + A client may use this information as an indication how long to wait before querying the device whether key generation is completed.
+ After the key has been successfully created, the device shall assign it the ok status. If the key generation fails, the device shall assign the key the corrupt status. +
+ + +
+ + + This operation returns the status of a key.
+ Keys are uniquely identified using key IDs. If no key is stored under the requested key ID in the keystore, an InvalidKeyID fault is produced. + Otherwise, the status of the key is returned. +
+ + +
+ + + This operation returns whether a key pair contains a private key.
+ Keys are uniquely identified using key IDs. If no key is stored under the requested key ID in the keystore or the key identified by the requested key ID does not identify a key pair, + the device shall produce an InvalidKeyID fault. + Otherwise, this operation returns true if the key pair identified by the key ID contains a private key, and false otherwise. +
+ + +
+ + + This operation returns information about all keys that are stored in the device’s keystore.
+ This operation may be used, e.g., if a client lost track of which keys are present on the device. + If no key is stored on the device, an empty list is returned. +
+ + +
+ + + This operation deletes a key from the device’s keystore.
+ Keys are uniquely identified using key IDs. If no key is stored under the requested key ID in the keystore, a device shall produce an InvalidArgVal fault. + If a reference exists for the specified key, a device shall produce the corresponding fault and shall not delete the key. + If there is a key under the requested key ID stored in the keystore and the key could not be deleted, a device shall produce a KeyDeletion fault. + If the key has the status generating, a device shall abort the generation of the key and delete from the keystore all data generated for this key. + After a key is successfully deleted, the device may assign its former ID to other keys. +
+ + +
+ + + This operation generates a DER-encoded PKCS#10 v1.7 certification request (sometimes also called certificate signing request or CSR) as specified in RFC 2986 + for a public key on the device.
+ The key pair that contains the public key for which a certification request shall be produced is specified by its key ID. + If no key is stored under the requested KeyID or the key specified by the requested KeyID is not an asymmetric key pair, an invalid key ID fault shall be produced and + no CSR shall be generated.
+ + A device that supports this command shall as minimum support the sha-1WithRSAEncryption signature algorithm as specified in RFC 3279. + If the specified signature algorithm is not supported by the device, an UnsupportedSignatureAlgorithm fault shall be produced and no CSR shall be generated.
+ + If the public key identified by the requested Key ID is an invalid input to the specified signature algorithm, a KeySignatureAlgorithmMismatch fault shall be produced + and no CSR shall be generated. + If the key pair does not have status ok, a device shall produce an InvalidKeyStatus fault and no CSR shall be generated. +
+ + +
+ + + This operation generates for a public key on the device a self-signed X.509 certificate that complies to RFC 5280.
+ The X509Version parameter specifies the version of X.509 that the generated certificate shall comply to. + A device that supports this command shall support the generation of X.509v3 certificates as specified in RFC 5280 and may additionally be able to handle other X.509 certificate formats + as indicated by the X.509Versions capability.
+ The key pair that contains the public key for which a self-signed certificate shall be produced is specified by its key pair ID. + The subject parameter describes the entity that the public key belongs to. + If the key pair does not have status ok, a device shall produce an InvalidKeyStatus fault and no certificate shall be generated. + + The signature algorithm parameter determines which signature algorithm shall be used for signing the certification request with the public key specified by the key ID parameter. + A device that supports this command shall as minimum support the sha-1WithRSAEncryption signature algorithm as specified in RFC 3279. + The Extensions parameter specifies potential X509v3 extensions that shall be contained in the certificate. + A device that supports this command shall support the extensions that are defined in [RFC 5280], Sect. 4.2] as mandatory for CAs that issue self-signed certificates.
+ + Certificates are uniquely identified using certificate IDs. If the command was successful, the device generates a new ID for the generated certificate and returns this ID.
+ If the device does not have not enough storage capacity for storing the certificate to be created, the maximum number of certificates reached fault shall be produced and no certificate shall be generated. +
+ + +
+ + + This operation uploads an X.509 certificate as specified by [RFC 5280] in DER encoding and the public key in the certificate to a device’s keystore.
+ A device that supports this command shall be able to handle X.509v3 certificates as specified in RFC 5280 and may additionally be able to handle other X.509 certificate formats as indicated by the X.509Versions capability. + A device that supports this command shall support sha1-WithRSAEncryption as certificate signature algorithm.
+ + Certificates are uniquely identified using certificate IDs, and key pairs are uniquely identified using key IDs. + The device shall generate a new certificate ID for the uploaded certificate.
+ Certain certificate usages, e.g. TLS server authentication, require the private key that corresponds to the public key in the certificate to be present in the keystore. + In such cases, the client may indicate that it expects the device to produce a fault if the matching private key for + the uploaded certificate is not present in the keystore by setting the PrivateKeyRequired argument in the upload request to true.
+ + The uploaded certificate has to be linked to a key pair in the keystore. + If no private key is required for the public key in the certificate and a key pair exists in the keystore with a public key equal to the public key in the certificate, + the uploaded certificate is linked to the key pair identified by the supplied key ID by adding a reference from the certificate to the key pair. + If no private key is required for the public key in the certificate and no key pair exists with the public key equal to the public key in the certificate, + a new key pair with status ok is created with the public key from the certificate, and this key pair is linked to the uploaded certificate by adding a reference from + the certificate to the key pair. + If a private key is required for the public key in the certificate, and a key pair exists in the keystore with a private key that matches the public key in the certificate, + the uploaded certificate is linked to this keypair by adding a reference from the certificate to the key pair. + If a private key is required for the public key and no such keypair exists in the keystore, the NoMatchingPrivateKey fault shall be produced and the certificate + shall not be stored in the keystore. + If the key pair that the certificate shall be linked to does not have status ok, an InvalidKeyID fault is produced, and the uploaded certificate is not stored in the keystore. + If the device cannot process the uploaded certificate, a BadCertificate fault is produced and neither the uploaded certificate nor the public key are stored in the device’s keystore. + The BadCertificate fault shall not be produced based on the mere fact that the device’s current time lies outside the interval defined by the notBefore and notAfter fields as specified by [RFC 5280], Sect. 4.1 . + This operation shall not mark the uploaded certificate as trusted.
+ + If the device does not have not enough storage capacity for storing the certificate to be uploaded, the maximum number of certificates reached fault shall be produced + and no certificate shall be uploaded. + If the device does not have not enough storage capacity for storing the key pair that eventually has to be created, the device shall generate a maximum number of keys reached fault. + Furthermore the device shall not generate a key pair and no certificate shall be stored. +
+ + +
+ + + This operation returns a specific certificate from the device’s keystore.
+ Certificates are uniquely identified using certificate IDs. If no certificate is stored under the requested certificate ID in the keystore, an InvalidArgVal fault is produced. + It shall be noted that this command does not return the private key that is associated to the public key in the certificate. +
+ + +
+ + + This operation returns the IDs of all certificates that are stored in the device’s keystore.
+ This operation may be used, e.g., if a client lost track of which certificates are present on the device. + If no certificate is stored in the device’s keystore, an empty list is returned. +
+ + +
+ + + This operation deletes a certificate from the device’s keystore.
+ The operation shall not delete the public key that is contained in the certificate from the keystore. + Certificates are uniquely identified using certificate IDs. If no certificate is stored under the requested certificate ID in the keystore, an InvalidArgVal fault is produced. + If there is a certificate under the requested certificate ID stored in the keystore and the certificate could not be deleted, a CertificateDeletion fault is produced. + If a reference exists for the specified certificate, the certificate shall not be deleted and the corresponding fault shall be produced. + After a certificate has been successfully deleted, the device may assign its former ID to other certificates. +
+ + +
+ + + This operation creates a sequence of certificates that may be used, e.g., for certification path validation or for TLS server authentication.
+ Certification paths are uniquely identified using certification path IDs. Certificates are uniquely identified using certificate IDs. + A certification path contains a sequence of certificate IDs. + If there is a certificate ID in the sequence of supplied certificate IDs for which no certificate exists in the device’s keystore, the corresponding fault shall be produced + and no certification path shall be created.
+ + The signature of each certificate in the certification path except for the last one must be verifiable with the public key contained in the next certificate in the path. + If there is a certificate ID in the request other than the last ID for which the corresponding certificate cannot be verified with the public key in the certificate identified + by the next certificate ID, an InvalidCertificateChain fault shall be produced and no certification path shall be created. +
+ + +
+ + + This operation returns a specific certification path from the device’s keystore.
+ Certification paths are uniquely identified using certification path IDs. + If no certification path is stored under the requested ID in the keystore, an InvalidArgVal fault is produced. +
+ + +
+ + + This operation returns the IDs of all certification paths that are stored in the device’s keystore.
+ This operation may be used, e.g., if a client lost track of which certificates are present on the device. + If no certification path is stored on the device, an empty list is returned. +
+ + +
+ + + This operation deletes a certification path from the device’s keystore.
+ This operation shall not delete the certificates that are referenced by the certification path. + Certification paths are uniquely identified using certification path IDs. + If no certification path is stored under the requested certification path ID in the keystore, an InvalidArgVal fault is produced. + If there is a certification path under the requested certification path ID stored in the keystore and the certification path could not be deleted, + a CertificationPathDeletion fault is produced. + If a reference exists for the specified certification path, the certification path shall not be deleted and the corresponding fault shall be produced. + After a certification path is successfully deleted, the device may assign its former ID to other certification paths. +
+ + +
+
+ + TLS server functionality. + + + This operation assigns a key pair and certificate along with a certification path (certificate chain) to the TLS server on the device. + The TLS server shall use this information for key exchange during the TLS handshake, particularly for constructing server certificate messages as specified in RFC 4346 and RFC 2246.
+ + Certification paths are identified by their certification path IDs in the keystore. The first certificate in the certification path must be the TLS server certificate. + Since each certificate has exactly one associated key pair, a reference to the key pair that is associated with the server certificate is not supplied explicitly. + Devices shall obtain the private key or results of operations under the private key by suitable internal interaction with the keystore.
+ If a device chooses to perform a TLS key exchange based on the supplied certification path, it shall use the key pair that is associated with the server certificate for + key exchange and transmit the certification path to TLS clients as-is, i.e., the device shall not check conformance of the certification path to RFC 4346 norRFC 2246. + In order to use the server certificate during the TLS handshake, the corresponding private key is required. + Therefore, if the key pair that is associated with the server certificate, i.e., the first certificate in the certification path, does not have an associated private key, + the NoPrivateKey fault is produced and the certification path is not associated to the TLS server.
+ A TLS server may present different certification paths to different clients during the TLS handshake instead of presenting the same certification path to all clients. + Therefore more than one certification path may be assigned to the TLS server.
+ If the maximum number of certification paths that may be assigned to the TLS server simultaneously is reached, the device shall generate a MaximumNumberOfCertificationPathsReached + fault and the requested certification path shall not be assigned to the TLS server. +
+ + +
+ + + This operation removes a key pair and certificate assignment (including certification path) to the TLS server on the device.
+ Certification paths are identified using certification path IDs. If the supplied certification path ID is not associated to the TLS server, an InvalidArgVal fault is produced. +
+ + +
+ + + This operation replaces an existing key pair and certificate assignment to the TLS server on the device by a new key pair and certificate assignment (including certification paths).
+ + After the replacement, the TLS server shall use the new certificate and certification path exactly in those cases in which it would have used the old certificate and certification path. + Therefore, especially in the case that several server certificates are assigned to the TLS server, clients that wish to replace an old certificate assignment by a new assignment + should use this operation instead of a combination of the Add TLS Server Certificate Assignment and the Remove TLS Server Certificate Assignment operations.
+ + Certification paths are identified using certification path IDs. If the supplied old certification path ID is not associated to the TLS server, or no certification path exists + under the new certification path ID, the corresponding InvalidArgVal faults are produced and the associations are unchanged. + The first certificate in the new certification path must be the TLS server certificate.
+ Since each certificate has exactly one associated key pair, a reference to the key pair that is associated with the new server certificate is not supplied explicitly. + Devices shall obtain the private key or results of operations under the private key by suitable internal interaction with the keystore.
+ If a device chooses to perform a TLS key exchange based on the new certification path, it shall use the key pair that is associated with the server certificate + for key exchange and transmit the certification path to TLS clients as-is, i.e., the device shall not check conformance of the certification path to RFC 4346 norRFC 2246. + In order to use the server certificate during the TLS handshake, the corresponding private key is required. + Therefore, if the key pair that is associated with the server certificate, i.e., the first certificate in the certification path, does not have an associated private key, + the NoPrivateKey fault is produced and the certification path is not associated to the TLS server. +
+ + +
+ + + This operation returns the IDs of all key pairs and certificates (including certification paths) that are assigned to the TLS server on the device.
+ This operation may be used, e.g., if a client lost track of the certification path assignments on the device. + If no certification path is assigned to the TLS server, an empty list is returned. +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/deps/lib/python3.10/site-packages/onvif/wsdl/analytics.wsdl b/deps/lib/python3.10/site-packages/onvif/wsdl/analytics.wsdl new file mode 100644 index 0000000..1076434 --- /dev/null +++ b/deps/lib/python3.10/site-packages/onvif/wsdl/analytics.wsdl @@ -0,0 +1,528 @@ + + + + + + + + + + + + + + + + + + + + The capabilities for the analytics service is returned in the Capabilities element. + + + + + + + + + + + + + Indication that the device supports the rules interface and the rules syntax. + + + + + Indication that the device supports the scene analytics module interface. + + + + + Indication that the device produces the cell based scene description + + + + + + + + + + + + + References an existing Video Analytics configuration. The list of available tokens can be obtained + via the Media service GetVideoAnalyticsConfigurations method. + + + + + + + + + + + + + + + + + + + + Reference to an existing VideoAnalyticsConfiguration. + + + + + + + + + + + + + + + + Reference to an existing VideoAnalyticsConfiguration. + + + + + References the specific rule to be deleted (e.g. "MyLineDetector"). + + + + + + + + + + + + + + + Reference to an existing VideoAnalyticsConfiguration. + + + + + + + + + + + + + + + + Reference to an existing VideoAnalyticsConfiguration. + + + + + + + + + + + + + + + + + + + Reference to an existing VideoAnalyticsConfiguration. + + + + + + + + + + + + + + + + + + + Reference to an existing VideoAnalyticsConfiguration. + + + + + + + + + + + + + + + + Reference to an existing Video Analytics configuration. + + + + + Name of the AnalyticsModule to be deleted. + + + + + + + + + + + + + + + Reference to an existing VideoAnalyticsConfiguration. + + + + + + + + + + + + + + + + Reference to an existing VideoAnalyticsConfiguration. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + List all rules that are supported by the given VideoAnalyticsConfiguration. + The result of this method may depend on the overall Video analytics configuration of the device, + which is available via the current set of profiles. + + + + + + + Add one or more rules to an existing VideoAnalyticsConfiguration. + The available supported types can be retrieved via GetSupportedRules, + where the Name of the supported rule correspond to the type of an rule instance.
+ Pass unique module names which can be later used as reference. + The Parameters of the rules must match those of the corresponding description. +
+ Although this method is mandatory a device implementation must not support adding rules. + Instead it can provide a fixed set of predefined configurations via the media service function + GetCompatibleVideoAnalyticsConfigurations. +
+ + +
+ + + Remove one or more rules from a VideoAnalyticsConfiguration. + + + + + + + List the currently assigned set of rules of a VideoAnalyticsConfiguration. + + + + + + + Modify one or more rules of a VideoAnalyticsConfiguration. The rules are referenced by their names. + + + + +
+ + + Returns the capabilities of the analytics service. The result is returned in a typed answer. + + + + + + List all analytics modules that are supported by the given VideoAnalyticsConfiguration. + The result of this method may depend on the overall Video analytics configuration of the device, + which is available via the current set of profiles. + + + + + + + Add one or more analytics modules to an existing VideoAnalyticsConfiguration. + The available supported types can be retrieved via GetSupportedAnalyticsModules, + where the Name of the supported AnalyticsModules correspond to the type of an AnalyticsModule instance.
+ Pass unique module names which can be later used as reference. The Parameters of the analytics module must match those of the corresponding AnalyticsModuleDescription. +
+ Although this method is mandatory a device implementation must not support adding modules. + Instead it can provide a fixed set of predefined configurations via the media service function + GetCompatibleVideoAnalyticsConfigurations. +
+ The device shall ensure that a corresponding analytics engine starts operation when a client + subscribes directly or indirectly for events produced by the analytics or rule engine or when a + client requests the corresponding scene description stream. + An analytics module must be attached to a Video source using the media profiles before it can be used. + In case differing analytics configurations are attached to the same profile it is undefined which + of the analytics module configuration becomes active if no stream is activated or multiple streams + with different profiles are activated at the same time. +
+ + +
+ + + Remove one or more analytics modules from a VideoAnalyticsConfiguration referenced by their names.
+
+ + +
+ + + List the currently assigned set of analytics modules of a VideoAnalyticsConfiguration. + + + + + + + Modify the settings of one or more analytics modules of a VideoAnalyticsConfiguration. The modules are referenced by their names. + It is allowed to pass only a subset to be modified. + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/deps/lib/python3.10/site-packages/onvif/wsdl/analyticsdevice.wsdl b/deps/lib/python3.10/site-packages/onvif/wsdl/analyticsdevice.wsdl new file mode 100644 index 0000000..8d3ae32 --- /dev/null +++ b/deps/lib/python3.10/site-packages/onvif/wsdl/analyticsdevice.wsdl @@ -0,0 +1,714 @@ + + + + + + + + + + + + + + + + + + + The capabilities for the analytics device service is returned in the Capabilities element. + + + + + + + + + + + + + + + + + + + + Token of the Analytics Engine Control configuration to be deleted. + + + + + + + + + + + + + + + + + Settings of the configurations to be created. + + + + + + + + + + + + Configurations containing token generated. + + + + + + + + + + + Settings of the Analytics Engine Control configuration to be created. Mode shall be set to "idle". + + + + + + + + + + + Configuration containing token generated. + + + + + + + + + + + Contains the modified Analytics Engine Control configuration. + + + + + + + + + + + + + + + + + + Token of the requested AnalyticsEngineControl configuration. + + + + + + + + + + + Configuration of the AnalyticsEngineControl. + + + + + + + + + + + + + + + + List of available AnalyticsEngineControl configurations. + + + + + + + + + + + Token of the requested AnalyticsEngine configuration. + + + + + + + + + + + Configuration of the AnalyticsEngine. + + + + + + + + + + + + + + + + + List of available AnalyticsEngine configurations. + + + + + + + + + + + Contains the modified video analytics configuration. The configuration shall exist in the device. + + + + + + + + + + + + + + + + + + Contains the modified Analytics Engine Input configuration. The configuration shall exist in the device. + + + + + + + + + + + + + + + + + + Token of the requested AnalyticsEngineInput configuration. + + + + + + + + + + + Configuration of the AnalyticsEngineInput. + + + + + + + + + + + + + + + + + List of available AnalyticsEngineInput configurations. + + + + + + + + + + + Configuration of the URI requested. + + + + + Token of the AnalyticsEngineControl whose URI is requested. + + + + + + + + + + + Streaming URI. + + + + + + + + + + + Token of the VideoAnalyticsConfiguration requested. + + + + + + + + + + + Settings of the VideoAnalyticsConfiguration. + + + + + + + + + + + LIst of tokens of Analytics Engine Input configurations to be deleted. + + + + + + + + + + + + + + + + + Token of the AnalyticsEngineControl whose state information is requested. + + + + + + + + + + + Current status information. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Returns the capabilities of the analytics device service. The result is returned in a typed answer. + + + + + DeleteAnalyticsEngineControl shall delete a control object . + + + + + CreateAnalyticsEngineControl shall create a new control object. + + + + + This command modifies the AnalyticsEngineControl configuration. + + + + + The GetAnalyticsEngineControl command fetches the analytics engine control if the analytics engine control token is known. + + + + + This operation lists all available analytics engine controls for the device. + + + + + The GetAnalyticsEngine command fetches the analytics engine configuration if the token is known. + + + + + This operation lists all available analytics engine configurations for the device. + + + + + A video analytics configuration is modified using this command. + + + + + This command modifies the analytics engine input configuration. + + + + + The GetAnalyticsEngineInput command fetches the input configuration if the analytics engine input configuration token is known. + + + + + This operation lists all available analytics engine input configurations for the device. + + + + + This operation requests a URI that can be used to initiate a live stream using RTSP as the control protocol if the token of the AnalyticsEngineControl is known. + + + + + The GetVideoAnalyticsConfiguration command fetches the video analytics configuration if the video analytics configuration token is known. + + + + + This command generates one or more analytics engine input configurations. + + + + + This command deletes analytics engine input configurations if the tokens are known. + + + + + GetAnalyticsState returns status information of the referenced AnalyticsEngineControl object. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/deps/lib/python3.10/site-packages/onvif/wsdl/b-2.xsd b/deps/lib/python3.10/site-packages/onvif/wsdl/b-2.xsd new file mode 100644 index 0000000..997bb8f --- /dev/null +++ b/deps/lib/python3.10/site-packages/onvif/wsdl/b-2.xsd @@ -0,0 +1,581 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/deps/lib/python3.10/site-packages/onvif/wsdl/bf-2.xsd b/deps/lib/python3.10/site-packages/onvif/wsdl/bf-2.xsd new file mode 100644 index 0000000..5c61816 --- /dev/null +++ b/deps/lib/python3.10/site-packages/onvif/wsdl/bf-2.xsd @@ -0,0 +1,83 @@ + + + + + + + + + Get access to the xml: attribute groups for xml:lang as declared on 'schema' + and 'documentation' below + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/deps/lib/python3.10/site-packages/onvif/wsdl/bw-2.wsdl b/deps/lib/python3.10/site-packages/onvif/wsdl/bw-2.wsdl new file mode 100644 index 0000000..401b5ff --- /dev/null +++ b/deps/lib/python3.10/site-packages/onvif/wsdl/bw-2.wsdl @@ -0,0 +1,448 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/deps/lib/python3.10/site-packages/onvif/wsdl/deviceio.wsdl b/deps/lib/python3.10/site-packages/onvif/wsdl/deviceio.wsdl new file mode 100644 index 0000000..e1928e1 --- /dev/null +++ b/deps/lib/python3.10/site-packages/onvif/wsdl/deviceio.wsdl @@ -0,0 +1,1311 @@ + + + + + + + + + + + + + + + + + + + + + The capabilities for the device IO service is returned in the Capabilities element. + + + + + + + + + + + + + Number of video sources (defaults to none). + + + + + Number of video outputs (defaults to none). + + + + + Number of audio sources (defaults to none). + + + + + Number of audio outputs (defaults to none). + + + + + Number of relay outputs (defaults to none). + + + + + Number of serial ports (defaults to none). + + + + + Number of digital inputs (defaults to none). + + + + + + + + + + + + + Optional reference token to the relay for which the options are requested. + + + + + + + + + + + + + Valid values and ranges for the configuration of a relay output. + + + + + + + + + + + Supported Modes. + + + + + Supported delay time range or discrete values in seconds. This element must be present if MonoStable mode is supported. + + + + + True if the relay only supports the exact values for the DelayTimes listed. Default is false. + + + + + + + Token of the relay output. + + + + + + + + + + + + + + + + + + + + + + + + + List containing all physical Video output connections of a device. + + + + + + + + + + + + Token of the requested AudioSource. + + + + + + + + + + + + Current configuration of the Audio input. + + + + + + + + + + + + + Token of the physical Audio output. + + + + + + + + + + + + Current configuration of the Audio output. + + + + + + + + + + + + + Token of the requested VideoSource. + + + + + + + + + + + + Current configuration of the Video input. + + + + + + + + + + + + + Token of the requested VideoOutput. + + + + + + + + + + + + Current configuration of the Video output. + + + + + + + + + + + + + + The ForcePersistence element determines how configuration + changes shall be stored. If true, changes shall be persistent. If false, changes MAY revert to previous values + after reboot. + + + + + + + + + + + + + + + + + + + + + The ForcePersistence element determines how configuration + changes shall be stored. If true, changes shall be persistent. If false, changes MAY revert to previous values + after reboot. + + + + + + + + + + + + + + + + + + + + + The ForcePersistence element determines how configuration + changes shall be stored. If true, changes shall be persistent. If false, changes MAY revert to previous values + after reboot. + + + + + + + + + + + + + + + + + + + + + The ForcePersistence element determines how configuration + changes shall be stored. If true, changes shall be persistent. If false, changes MAY revert to previous values + after reboot. + + + + + + + + + + + + + + + + + + + + Token of the Video input whose options are requested.. + + + + + + + + + + + + + + + + + + + + + Token of the Video Output whose options are requested.. + + + + + + + + + + + + + + + + + + + + + Token of the physical Audio input whose options are requested.. + + + + + + + + + + + + Returns the AudioSourceToken available. + + + + + + + + + + + + + Token of the physical Audio Output whose options are requested.. + + + + + + + + + + + + Available settings and ranges for the requested Audio output. + + + + + + + + + + + + + + + + + + + + + + + + Get the available digital inputs of a device. + + + + + + + + + Requested digital inputs. + + + + + + + + + + + The physical serial port on the device that allows serial data to be read and written. + + + + + + + + + Requested serial ports. + + + + + + + + + + + Gets the configuration that relates to serial port configuration. + + + + + + + + + + Requested serial port configuration. + + + + + + + + + + + Sets the configuration that relates to serial port configuration. + + + + + + + + + + + + + + + + + + Gets the configuration options that relates to serial port configuration. + + + + + + + + + + Requested serial port configuration options. + + + + + + + + + + + Transmitting arbitrary data to the connected serial device and then receiving its response data. + + + + + + The serial port data. + + + + + Indicates that the command should be responded back within the specified period of time. + + + + + This element may be put in the case that data length returned from the connected serial device is already determined as some fixed bytes length. It indicates the length of received data which can be regarded as available. + + + + + This element may be put in the case that the delimiter codes returned from the connected serial device is already known. It indicates the termination data sequence of the responded data. In case the string has more than one character a device shall interpret the whole string as a single delimiter. Furthermore a device shall return the delimiter character(s) to the client. + + + + + + + + Receiving the response data. + + + + + + + + + + + + + The serial port data. + + + + + + + + + + + Lists all available serial ports of a device + + + + + + + + + + + + + + The type of serial port.Generic can be signaled as a vendor specific serial port type. + + + + + + + + + + + + + + The parameters for configuring the serial port. + + + + + The transfer bitrate. + + + + + The parity for the data error detection. + + + + + The bit length for each character. + + + + + The number of stop bits used to terminate each character. + + + + + + + + + + + + The parity for the data error detection. + + + + + + + + + + + + + + The configuration options that relates to serial port. + + + + + The list of configurable transfer bitrate. + + + + + The list of configurable parity for the data error detection. + + + + + The list of configurable bit length for each character. + + + + + The list of configurable number of stop bits used to terminate each character. + + + + + + + + + + + The list of configurable parity for the data error detection. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Returns the capabilities of the device IO service. The result is returned in a typed answer. + + + + + Request the available settings and ranges for one or all relay outputs. A device that has one or more RelayOutputs should support this command.
+ Two examples that illustrate usage: +
    +
  • + 1) Device supports range PT1S to PT120S: +
    +<tmd:RelayOutputOptions token='44'>
    +  <tmd:Mode>Monostable</tmd:Mode>
    +  <tmd:DelayTimes>1 120</tmd:DelayTimes>
    +</tmd:RelayOutputOptions>
    +							
    +
  • +
  • + 2) Device supports values PT0.5S, PT1S, PT2s and PT1M: +
    +<tmd:RelayOutputOptions token='123'>
    +  <tmd:Mode>Monostable</tmd:Mode>
    +  <tmd:DelayTimes>0.5 1 2 60</tmd:DelayTimes>
    +  <tmd:Discrete>True</tmd:Discrete>
    +</tmd:RelayOutputOptions>
    +								
    +
  • +
+
+ + +
+ + List all available audio sources for the device. The device that has one or more audio sources shall support the listing of available audio inputs through the GetAudioSources command. + + + + + List all available audio outputs of a device. A device that has one ore more physical audio outputs shall support listing of available audio outputs through the GetAudioOutputs command. + + + + + List all available video sources for the device. The device that has one or more video inputs shall support the listing of available video sources through the GetVideoSources command. + + + + + List all available video outputs of a device. A device that has one or more physical video outputs shall support listing of available video outputs through the GetVideoOutputs command. + + + + + + Get the video source configurations of a VideoSource. A device with one or more video sources shall support the GetVideoSourceConfigurations command.. + + + + + Get the configuration of a Video Output. A device that has one or more Video Outputs shall support the retrieval of the VideoOutputConfiguration through this command. + + + + + List the configuration of an Audio Input. A device with one or more audio inputs shall support the GetAudioSourceConfiguration command. + + + + + Request the current configuration of a physical Audio output. A device that has one or more AudioOutputs shall support the retrieval of the AudioOutputConfiguration through this command. + + + + + + Modify a video input configuration. A device that has one or more video sources shall support the setting of the VideoSourceConfiguration through this command. + + + + + Modify a video output configuration. A device that has one or more video outputs shall support the setting of its video output configuration through this command. + + + + + Modify an audio source configuration. A device that has a one or more audio sources shall support the setting of the AudioSourceConfiguration through this command. + + + + + Modify an audio output configuration. A device that has one ore more audio outputs shall support the setting of the AudioOutputConfiguration through this command. + + + + + + Request the VideoSourceConfigurationOptions of a VideoSource. A device with one or more video sources shall support this command. + + + + + Request the VideoOutputConfigurationOptions of a VideoOutput. A device that has one or more video outputs shall support the retrieval of VideoOutputConfigurationOptions through this command. + + + + + Request the AudioSourceConfigurationOptions of an AudioSource. A device with one ore more AudioSources shall support this command. + + + + + Request the available settings and ranges for a physical Audio output. A device that has one or more AudioOutputs shall support this command. + + + + + This operation gets a list of all available relay outputs and their settings. + + + + + This operation sets the settings of a relay output. + The relay can work in two relay modes:
    +
  • + Bistable – After setting the state, the relay remains in this state.
  • +
  • + Monostable – After setting the state, the relay returns to its idle state after the + specified time.
  • +
+ The physical idle state of a relay output can be configured by setting the IdleState to ‘open’ or + ‘closed’ (inversion of the relay behaviour).
+ Idle State ‘open’ means that the relay is open when the relay state is set to ‘inactive’ through + the trigger command (see Section 8.5.3) and closed when the state is set to ‘active’ through + the same command.
+ Idle State ‘closed’ means, that the relay is closed when the relay state is set to ‘inactive’ + through the trigger command (see Section 8.5.3) and open when the state is set to ‘active’ + through the same command.
+ + +
+ + Modify the relay state. + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/deps/lib/python3.10/site-packages/onvif/wsdl/devicemgmt.wsdl b/deps/lib/python3.10/site-packages/onvif/wsdl/devicemgmt.wsdl new file mode 100644 index 0000000..86c1a9d --- /dev/null +++ b/deps/lib/python3.10/site-packages/onvif/wsdl/devicemgmt.wsdl @@ -0,0 +1,3783 @@ + + + + + + + + + + + + + + Indicates if the service capabilities (untyped) should be included in the response. + + + + + + + + + + + Each Service element contains information about one service. + + + + + + + + + + + Namespace of the service being described. This parameter allows to match the service capabilities to the service. Note that only one set of capabilities is supported per namespace. + + + + + The transport addresses where the service can be reached. The scheme and IP part shall match the one used in the request (i.e. the GetServices request). + + + + + + + + The placeholder for the service capabilities. The service capability element shall be returned here. For example for the device service that would be the tds:DeviceServiceCapabilities element (not complextype). + + + + + + + + The version of the service (not the ONVIF core spec version). + + + + + + + + + + + + + + + + + + The capabilities for the device service is returned in the Capabilities element. + + + + + + + + + + + Network capabilities. + + + + + Security capabilities. + + + + + System capabilities. + + + + + Capabilities that do not fit in any of the other categories. + + + + + + + + + + Indicates support for IP filtering. + + + + + Indicates support for zeroconf. + + + + + Indicates support for IPv6. + + + + + Indicates support for dynamic DNS configuration. + + + + + Indicates support for IEEE 802.11 configuration. + + + + + Indicates the maximum number of Dot1X configurations supported by the device + + + + + Indicates support for retrieval of hostname from DHCP. + + + + + Maximum number of NTP servers supported by the devices SetNTP command. + + + + + Indicates support for Stateful IPv6 DHCP. + + + + + + + + + + + + Indicates support for TLS 1.0. + + + + + Indicates support for TLS 1.1. + + + + + Indicates support for TLS 1.2. + + + + + Indicates support for onboard key generation. + + + + + Indicates support for access policy configuration. + + + + + Indicates support for the ONVIF default access policy. + + + + + Indicates support for IEEE 802.1X configuration. + + + + + Indicates support for remote user configuration. Used when accessing another device. + + + + + Indicates support for WS-Security X.509 token. + + + + + Indicates support for WS-Security SAML token. + + + + + Indicates support for WS-Security Kerberos token. + + + + + Indicates support for WS-Security Username token. + + + + + Indicates support for WS over HTTP digest authenticated communication layer. + + + + + Indicates support for WS-Security REL token. + + + + + EAP Methods supported by the device. The int values refer to the IANA EAP Registry. + + + + + The maximum number of users that the device supports. + + + + + + + + + Indicates support for WS Discovery resolve requests. + + + + + Indicates support for WS-Discovery Bye. + + + + + Indicates support for remote discovery. + + + + + Indicates support for system backup through MTOM. + + + + + Indicates support for retrieval of system logging through MTOM. + + + + + Indicates support for firmware upgrade through MTOM. + + + + + Indicates support for system backup through MTOM. + + + + + Indicates support for system backup through HTTP. + + + + + Indicates support for retrieval of system logging through HTTP. + + + + + Indicates support for retrieving support information through HTTP. + + + + + + + + + Lists of commands supported by SendAuxiliaryCommand. + + + + + + + + + + + + + + + + The manufactor of the device. + + + + + The device model. + + + + + The firmware version in the device. + + + + + The serial number of the device. + + + + + The hardware ID of the device. + + + + + + + + + + + + Defines if the date and time is set via NTP or manually. + + + + + Automatically adjust Daylight savings if defined in TimeZone. + + + + + The time zone in POSIX 1003.1 format + + + + + Date and time in UTC. If time is obtained via NTP, UTCDateTime has no meaning + + + + + + + + + + + + + + + + + + + + + + + Contains information whether system date and time are set manually or by NTP, daylight savings is on or off, time zone in POSIX 1003.1 format and system date and time in UTC and also local system date and time. + + + + + + + + + + + + Specifies the factory default action type. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Contains the reboot message sent by the device. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Contains the arbitary device diagnostics information. + + + + + + + + + + + + Specifies the type of system log to get. + + + + + + + + + + + Contains the system log information. + + + + + + + + + + + + + + + + + + Contains a list of URI definining the device scopes. Scope parameters can be of two types: fixed and configurable. Fixed parameters can not be altered. + + + + + + + + + + + + Contains a list of scope parameters that will replace all existing configurable scope parameters. + + + + + + + + + + + + + + + + + + Contains a list of new configurable scope parameters that will be added to the existing configurable scope. + + + + + + + + + + + + + + + + + + Contains a list of URIs that should be removed from the device scope.
+ Note that the response message always will match the request or an error will be returned. The use of the response is for that reason deprecated. +
+
+
+
+
+
+ + + + + + Contains a list of URIs that has been removed from the device scope + + + + + + + + + + + + + + + + + + + Indicator of discovery mode: Discoverable, NonDiscoverable. + + + + + + + + + + + + + + Indicator of discovery mode: Discoverable, NonDiscoverable. + + + + + + + + + + + + + + + + + + + + + + + + + + Indicator of discovery mode: Discoverable, NonDiscoverable. + + + + + + + + + + + + + + Indicator of discovery mode: Discoverable, NonDiscoverable. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Contains a list of the onvif users and following information is included in each entry: username and user level. + + + + + + + + + + + + Creates new device users and corresponding credentials. Each user entry includes: username, password and user level. Either all users are created successfully or a fault message MUST be returned without creating any user. If trying to create several users with exactly the same username the request is rejected and no users are created. If password is missing, then fault message Too weak password is returned. + + + + + + + + + + + + + + + + + + Deletes users on an device and there may exist users that cannot be deleted to ensure access to the unit. Either all users are deleted successfully or a fault message MUST be returned and no users be deleted. If a username exists multiple times in the request, then a fault message is returned. + + + + + + + + + + + + + + + + + + Updates the credentials for one or several users on an device. Either all change requests are processed successfully or a fault message MUST be returned. If the request contains the same username multiple times, a fault message is returned. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + List of categories to retrieve capability information on. + + + + + + + + + + + + + Capability information. + + + + + + + + + + + + + + + + + + + Contains the hostname information. + + + + + + + + + + + + The hostname to set. + + + + + + + + + + + + + + + + + + True if the hostname shall be obtained via DHCP. + + + + + + + + + + + + Indicates whether or not a reboot is required after configuration updates. + + + + + + + + + + + + + + + + + + + + DNS information. + + + + + + + + + + + + + + Indicate if the DNS address is to be retrieved using DHCP. + + + + + + + DNS search domain. + + + + + + + DNS address(es) set manually. + + + + + + + + + + + + + + + + + + + + + + + + + + NTP information. + + + + + + + + + + + + + + Indicate if NTP address information is to be retrieved using DHCP. + + + + + + + Manual NTP settings. + + + + + + + + + + + + + + + + + + + + + + + + + + Dynamic DNS information. + + + + + + + + + + + + + + Dynamic DNS type. + + + + + + + DNS name. + + + + + + + DNS record time to live. + + + + + + + + + + + + + + + + + + + + + + + + + + List of network interfaces. + + + + + + + + + + + + + + Symbolic network interface name. + + + + + + + Network interface name. + + + + + + + + + + + + + Indicates whether or not a reboot is required after configuration updates. + If a device responds with RebootNeeded set to false, the device can be reached + via the new IP address without further action. A client should be aware that a device + may not be responsive for a short period of time until it signals availability at + the new address via the discovery Hello messages. + If a device responds with RebootNeeded set to true, it will be further available under + its previous IP address. The settings will only be activated when the device is + rebooted via the SystemReboot command. + + + + + + + + + + + + + + + + + + + Contains an array of defined protocols supported by the device. There are three protocols defined; HTTP, HTTPS and RTSP. The following parameters can be retrieved for each protocol: port and enable/disable. + + + + + + + + + + + + Configures one or more defined network protocols supported by the device. There are currently three protocols defined; HTTP, HTTPS and RTSP. The following parameters can be set for each protocol: port and enable/disable. + + + + + + + + + + + + + + + + + + + + + + + + Gets the default IPv4 and IPv6 gateway settings from the device. + + + + + + + + + + + + Sets IPv4 gateway address used as default setting. + + + + + Sets IPv6 gateway address used as default setting. + + + + + + + + + + + + + + + + + + + + + + + + Contains the zero-configuration. + + + + + + + + + + + + Unique identifier referencing the physical interface. + + + + + Specifies if the zero-configuration should be enabled or not. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Certificate id. + + + + + Identification of the entity associated with the public-key. + + + + + Certificate validity start date. + + + + + Certificate expiry start date. + + + + + + + + + + + + base64 encoded DER representation of certificate. + + + + + + + + + + + + + + + + + + + + Id and base64 encoded DER representation of all available certificates. + + + + + + + + + + + + + + + + + + + + Indicates if a certificate is used in an optional HTTPS configuration of the device. + + + + + + + + + + + + + + Indicates if a certificate is to be used in an optional HTTPS configuration of the device. + + + + + + + + + + + + + + + + + + + + List of ids of certificates to delete. + + + + + + + + + + + + + + + + + + + + List of ids of certificates to delete. + + + + + + + Relative Dinstinguished Name(RDN) CommonName(CN). + + + + + + + Optional base64 encoded DER attributes. + + + + + + + + + + + + + base64 encoded DER representation of certificate. + + + + + + + + + + + + + + Optional id and base64 encoded DER representation of certificate. + + + + + + + + + + + + + + + + + + + + + + + + + + Indicates whether or not client certificates are required by device. + + + + + + + + + + + + + + Indicates whether or not client certificates are required by device. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Returns information about services on the device. + + + + + Returns the capabilities of the device service. The result is returned in a typed answer. + + + + + This operation gets basic device information from the device. + + + + + This operation sets the device system date and time. The device shall support the + configuration of the daylight saving setting and of the manual system date and time (if + applicable) or indication of NTP time (if applicable) through the SetSystemDateAndTime + command.
+ If system time and date are set manually, the client shall include UTCDateTime in the request.
+ A TimeZone token which is not formed according to the rules of IEEE 1003.1 section 8.3 is considered as invalid timezone.
+ The DayLightSavings flag should be set to true to activate any DST settings of the TimeZone string. + Clear the DayLightSavings flag if the DST portion of the TimeZone settings should be ignored. +
+ + +
+ + This operation gets the device system date and time. The device shall support the return of + the daylight saving setting and of the manual system date and time (if applicable) or indication + of NTP time (if applicable) through the GetSystemDateAndTime command.
+ A device shall provide the UTCDateTime information.
+ + +
+ + This operation reloads the parameters on the device to their factory default values. + + + + + This operation upgrades a device firmware version. After a successful upgrade the response + message is sent before the device reboots. The device should support firmware upgrade + through the UpgradeSystemFirmware command. The exact format of the firmware data is + outside the scope of this standard. + + + + + This operation reboots the device. + + + + + This operation restores the system backup configuration files(s) previously retrieved from a + device. The device should support restore of backup configuration file(s) through the + RestoreSystem command. The exact format of the backup configuration file(s) is outside the + scope of this standard. If the command is supported, it shall accept backup files returned by + the GetSystemBackup command. + + + + + This operation is retrieves system backup configuration file(s) from a device. The device + should support return of back up configuration file(s) through the GetSystemBackup command. + The backup is returned with reference to a name and mime-type together with binary data. + The exact format of the backup configuration files is outside the scope of this standard. + + + + + This operation gets a system log from the device. The exact format of the system logs is outside the scope of this standard. + + + + + This operation gets arbitary device diagnostics information from the device. + + + + + This operation requests the scope parameters of a device. The scope parameters are used in + the device discovery to match a probe message, see Section 7. The Scope parameters are of + two different types:
    +
  • Fixed
  • +
  • Configurable
  • +
+ Fixed scope parameters are permanent device characteristics and cannot be removed through the device management interface. + The scope type is indicated in the scope list returned in the get scope parameters response. A device shall support + retrieval of discovery scope parameters through the GetScopes command. As some scope parameters are mandatory, + the device shall return a non-empty scope list in the response.
+ + +
+ + This operation sets the scope parameters of a device. The scope parameters are used in the + device discovery to match a probe message. + This operation replaces all existing configurable scope parameters (not fixed parameters). If + this shall be avoided, one should use the scope add command instead. The device shall + support configuration of discovery scope parameters through the SetScopes command. + + + + + This operation adds new configurable scope parameters to a device. The scope parameters + are used in the device discovery to match a probe message. The device shall + support addition of discovery scope parameters through the AddScopes command. + + + + + This operation deletes scope-configurable scope parameters from a device. The scope + parameters are used in the device discovery to match a probe message, see Section 7. The + device shall support deletion of discovery scope parameters through the RemoveScopes + command. + Table + + + + + This operation gets the discovery mode of a device. See Section 7.2 for the definition of the + different device discovery modes. The device shall support retrieval of the discovery mode + setting through the GetDiscoveryMode command. + + + + + This operation sets the discovery mode operation of a device. See Section 7.2 for the + definition of the different device discovery modes. The device shall support configuration of + the discovery mode setting through the SetDiscoveryMode command. + + + + + This operation gets the remote discovery mode of a device. See Section 7.4 for the definition + of remote discovery extensions. A device that supports remote discovery shall support + retrieval of the remote discovery mode setting through the GetRemoteDiscoveryMode + command. + + + + + This operation sets the remote discovery mode of operation of a device. See Section 7.4 for + the definition of remote discovery remote extensions. A device that supports remote discovery + shall support configuration of the discovery mode setting through the + SetRemoteDiscoveryMode command. + + + + + This operation gets the remote DP address or addresses from a device. If the device supports + remote discovery, as specified in Section 7.4, the device shall support retrieval of the remote + DP address(es) through the GetDPAddresses command. + + + + + This operation sets the remote DP address or addresses on a device. If the device supports + remote discovery, as specified in Section 7.4, the device shall support configuration of the + remote DP address(es) through the SetDPAddresses command. + + + + + A client can ask for the device service endpoint reference address property that can be used + to derive the password equivalent for remote user operation. The device shall support the + GetEndpointReference command returning the address property of the device service + endpoint reference. + + + + + This operation returns the configured remote user (if any). A device supporting remote user + handling shall support this operation. The user is only valid for the WS-UserToken profile or + as a HTTP / RTSP user.
+ The algorithm to use for deriving the password is described in section 5.12.2.1 of the core specification.
+ + +
+ + This operation sets the remote user. A device supporting remote user handling shall support this + operation. The user is only valid for the WS-UserToken profile or as a HTTP / RTSP user.
+ The password that is set shall always be the original (not derived) password.
+ If UseDerivedPassword is set password derivation shall be done by the device when connecting to a + remote device.The algorithm to use for deriving the password is described in section 5.12.2.1 of the core specification.
+ To remove the remote user SetRemoteUser should be called without the RemoteUser parameter.
+ + +
+ + This operation lists the registered users and corresponding credentials on a device. The + device shall support retrieval of registered device users and their credentials for the user + token through the GetUsers command. + + + + + This operation creates new device users and corresponding credentials on a device for authentication purposes. + The device shall support creation of device users and their credentials through the CreateUsers + command. Either all users are created successfully or a fault message shall be returned + without creating any user.
+ ONVIF compliant devices are recommended to support password length of at least 28 bytes, + as clients may follow the password derivation mechanism which results in 'password + equivalent' of length 28 bytes, as described in section 3.1.2 of the ONVIF security white paper.
+ + +
+ + This operation deletes users on a device. The device shall support deletion of device users and their credentials + through the DeleteUsers command. A device may have one or more fixed users + that cannot be deleted to ensure access to the unit. Either all users are deleted successfully or a + fault message shall be returned and no users be deleted. + + + + + This operation updates the settings for one or several users on a device for authentication purposes. + The device shall support update of device users and their credentials through the SetUser command. + Either all change requests are processed successfully or a fault message shall be returned and no change requests be processed. + + + + + It is possible for an endpoint to request a URL that can be used to retrieve the complete + schema and WSDL definitions of a device. The command gives in return a URL entry point + where all the necessary product specific WSDL and schema definitions can be retrieved. The + device shall provide a URL for WSDL and schema download through the GetWsdlUrl command. + + + + + Any endpoint can ask for the capabilities of a device using the capability exchange request + response operation. The device shall indicate all its ONVIF compliant capabilities through the + GetCapabilities command. + The capability list includes references to the addresses (XAddr) of the service implementing + the interface operations in the category. Apart from the addresses, the + capabilities only reflect optional functions. + + + + + This operation is used by an endpoint to get the hostname from a device. The device shall + return its hostname configurations through the GetHostname command. + + + + + This operation sets the hostname on a device. It shall be possible to set the device hostname + configurations through the SetHostname command.
+ A device shall accept string formated according to RFC 1123 section 2.1 or alternatively to RFC 952, + other string shall be considered as invalid strings. +
+ + +
+ + This operation controls whether the hostname is set manually or retrieved via DHCP. + + + + + This operation gets the DNS settings from a device. The device shall return its DNS + configurations through the GetDNS command. + + + + + This operation sets the DNS settings on a device. It shall be possible to set the device DNS + configurations through the SetDNS command. + + + + + This operation gets the NTP settings from a device. If the device supports NTP, it shall be + possible to get the NTP server settings through the GetNTP command. + + + + + This operation sets the NTP settings on a device. If the device supports NTP, it shall be + possible to set the NTP server settings through the SetNTP command.
+ A device shall accept string formated according to RFC 1123 section 2.1 or alternatively to RFC 952, + other string shall be considered as invalid strings.
+ Changes to the NTP server list will not affect the clock mode DateTimeType. Use SetSystemDateAndTime to activate NTP operation. +
+ + +
+ + This operation gets the dynamic DNS settings from a device. If the device supports dynamic + DNS as specified in [RFC 2136] and [RFC 4702], it shall be possible to get the type, name + and TTL through the GetDynamicDNS command. + + + + + This operation sets the dynamic DNS settings on a device. If the device supports dynamic + DNS as specified in [RFC 2136] and [RFC 4702], it shall be possible to set the type, name + and TTL through the SetDynamicDNS command. + + + + + This operation gets the network interface configuration from a device. The device shall + support return of network interface configuration settings as defined by the NetworkInterface + type through the GetNetworkInterfaces command. + + + + + This operation sets the network interface configuration on a device. The device shall support + network configuration of supported network interfaces through the SetNetworkInterfaces + command.
+ For interoperability with a client unaware of the IEEE 802.11 extension a device shall retain + its IEEE 802.11 configuration if the IEEE 802.11 configuration element isn’t present in the + request.
+ + +
+ + This operation gets defined network protocols from a device. The device shall support the + GetNetworkProtocols command returning configured network protocols. + + + + + This operation configures defined network protocols on a device. The device shall support + configuration of defined network protocols through the SetNetworkProtocols command. + + + + + This operation gets the default gateway settings from a device. The device shall support the + GetNetworkDefaultGateway command returning configured default gateway address(es). + + + + + This operation sets the default gateway settings on a device. The device shall support + configuration of default gateway through the SetNetworkDefaultGateway command. + + + + + This operation gets the zero-configuration from a device. If the device supports dynamic IP + configuration according to [RFC3927], it shall support the return of IPv4 zero configuration + address and status through the GetZeroConfiguration command.
+ Devices supporting zero configuration on more than one interface shall use the extension to list the additional interface settings.
+ + +
+ + This operation sets the zero-configuration. Use GetCapalities to get if zero-zero-configuration is supported or not. + + + + + This operation gets the IP address filter settings from a device. If the device supports device + access control based on IP filtering rules (denied or accepted ranges of IP addresses), the + device shall support the GetIPAddressFilter command. + + + + + This operation sets the IP address filter settings on a device. If the device supports device + access control based on IP filtering rules (denied or accepted ranges of IP addresses), the + device shall support configuration of IP filtering rules through the SetIPAddressFilter + command. + + + + + This operation adds an IP filter address to a device. If the device supports device access + control based on IP filtering rules (denied or accepted ranges of IP addresses), the device + shall support adding of IP filtering addresses through the AddIPAddressFilter command. + + + + + This operation deletes an IP filter address from a device. If the device supports device access + control based on IP filtering rules (denied or accepted ranges of IP addresses), the device + shall support deletion of IP filtering addresses through the RemoveIPAddressFilter command. + + + + + Access to different services and sub-sets of services should be subject to access control. The + WS-Security framework gives the prerequisite for end-point authentication. Authorization + decisions can then be taken using an access security policy. This standard does not mandate + any particular policy description format or security policy but this is up to the device + manufacturer or system provider to choose policy and policy description format of choice. + However, an access policy (in arbitrary format) can be requested using this command. If the + device supports access policy settings based on WS-Security authentication, then the device + shall support this command. + + + + + This command sets the device access security policy (for more details on the access security + policy see the Get command). If the device supports access policy settings + based on WS-Security authentication, then the device shall support this command. + + + + + This operation generates a private/public key pair and also can create a self-signed device + certificate as a result of key pair generation. The certificate is created using a suitable + onboard key pair generation mechanism.
+ If a device supports onboard key pair generation, the device that supports TLS shall support + this certificate creation command. And also, if a device supports onboard key pair generation, + the device that support IEEE 802.1X shall support this command for the purpose of key pair + generation. Certificates and key pairs are identified using certificate IDs. These IDs are either + chosen by the certificate generation requester or by the device (in case that no ID value is + given).
+ + +
+ + This operation gets all device server certificates (including self-signed) for the purpose of TLS + authentication and all device client certificates for the purpose of IEEE 802.1X authentication. + This command lists only the TLS server certificates and IEEE 802.1X client certificates for the + device (neither trusted CA certificates nor trusted root certificates). The certificates are + returned as binary data. A device that supports TLS shall support this command and the + certificates shall be encoded using ASN.1 [X.681], [X.682], [X.683] DER [X.690] encoding + rules. + + + + + This operation is specific to TLS functionality. This operation gets the status + (enabled/disabled) of the device TLS server certificates. A device that supports TLS shall + support this command. + + + + + This operation is specific to TLS functionality. This operation sets the status (enable/disable) + of the device TLS server certificates. A device that supports TLS shall support this command. + Typically only one device server certificate is allowed to be enabled at a time. + + + + + This operation deletes a certificate or multiple certificates. The device MAY also delete a + private/public key pair which is coupled with the certificate to be deleted. The device that + support either TLS or IEEE 802.1X shall support the deletion of a certificate or multiple + certificates through this command. Either all certificates are deleted successfully or a fault + message shall be returned without deleting any certificate. + + + + + This operation requests a PKCS #10 certificate signature request from the device. The + returned information field shall be either formatted exactly as specified in [PKCS#10] or PEM + encoded [PKCS#10] format. In order for this command to work, the device must already have + a private/public key pair. This key pair should be referred by CertificateID as specified in the + input parameter description. This CertificateID refers to the key pair generated using + CreateCertificate command.
+ A device that support onboard key pair generation that supports either TLS or IEEE 802.1X + using client certificate shall support this command.
+ + +
+ + TLS server certificate(s) or IEEE 802.1X client certificate(s) created using the PKCS#10 + certificate request command can be loaded into the device using this command (see Section + 8.4.13). The certificate ID in the request shall be present. The device may sort the received + certificate(s) based on the public key and subject information in the certificate(s). + The certificate ID in the request will be the ID value the client wish to have. The device is + supposed to scan the generated key pairs present in the device to identify which is the + correspondent key pair with the loaded certificate and then make the link between the + certificate and the key pair.
+ A device that supports onboard key pair generation that support either TLS or IEEE 802.1X + shall support this command.
+ The certificates shall be encoded using ASN.1 [X.681], [X.682], [X.683] DER [X.690] encoding + rules.
+ This command is applicable to any device type, although the parameter name is called for + historical reasons NVTCertificate.
+ + +
+ + This operation is specific to TLS functionality. This operation gets the status + (enabled/disabled) of the device TLS client authentication. A device that supports TLS shall + support this command. + + + + + This operation is specific to TLS functionality. This operation sets the status + (enabled/disabled) of the device TLS client authentication. A device that supports TLS shall + support this command. + + + + + This operation gets a list of all available relay outputs and their settings.
+ This method has been depricated with version 2.0. Refer to the DeviceIO service.
+ + +
+ + This operation sets the settings of a relay output. +
This method has been depricated with version 2.0. Refer to the DeviceIO service.
+ + +
+ + This operation sets the state of a relay output. +
This method has been depricated with version 2.0. Refer to the DeviceIO service.
+ + +
+ + Manage auxiliary commands supported by a device, such as controlling an Infrared (IR) lamp, + a heater or a wiper or a thermometer that is connected to the device.
+ The supported commands can be retrieved via the AuxiliaryCommands capability.
+ Although the name of the auxiliary commands can be freely defined, commands starting with the prefix tt: are + reserved to define frequently used commands and these reserved commands shall all share the "tt:command|parameter" syntax. +
    +
  • tt:Wiper|On – Request to start the wiper.
  • +
  • tt:Wiper|Off – Request to stop the wiper.
  • +
  • tt:Washer|On – Request to start the washer.
  • +
  • tt:Washer|Off – Request to stop the washer.
  • +
  • tt:WashingProcedure|On – Request to start the washing procedure.
  • +
  • tt: WashingProcedure |Off – Request to stop the washing procedure.
  • +
  • tt:IRLamp|On – Request to turn ON an IR illuminator attached to the unit.
  • +
  • tt:IRLamp|Off – Request to turn OFF an IR illuminator attached to the unit.
  • +
  • tt:IRLamp|Auto – Request to configure an IR illuminator attached to the unit so that it automatically turns ON and OFF.
  • +
+ A device that indicates auxiliary service capability shall support this command.
+ + +
+ + CA certificates will be loaded into a device and be used for the sake of following two cases. + The one is for the purpose of TLS client authentication in TLS server function. The other one + is for the purpose of Authentication Server authentication in IEEE 802.1X function. This + operation gets all CA certificates loaded into a device. A device that supports either TLS client + authentication or IEEE 802.1X shall support this command and the returned certificates shall + be encoded using ASN.1 [X.681], [X.682], [X.683] DER [X.690] encoding rules. + + + + + There might be some cases that a Certificate Authority or some other equivalent creates a + certificate without having PKCS#10 certificate signing request. In such cases, the certificate + will be bundled in conjunction with its private key. This command will be used for such use + case scenarios. The certificate ID in the request is optionally set to the ID value the client + wish to have. If the certificate ID is not specified in the request, device can choose the ID + accordingly.
+ This operation imports a private/public key pair into the device. + The certificates shall be encoded using ASN.1 [X.681], [X.682], [X.683] DER [X.690] encoding + rules.
+ A device that does not support onboard key pair generation and support either TLS or IEEE + 802.1X using client certificate shall support this command. A device that support onboard key + pair generation MAY support this command. The security policy of a device that supports this + operation should make sure that the private key is sufficiently protected.
+ + +
+ + This operation requests the information of a certificate specified by certificate ID. The device + should respond with its “Issuer DN”, “Subject DN”, “Key usage”, "Extended key usage”, “Key + Length”, “Version”, “Serial Number”, “Signature Algorithm” and “Validity” data as the + information of the certificate, as long as the device can retrieve such information from the + specified certificate.
+ A device that supports either TLS or IEEE 802.1X should support this command.
+ + +
+ + This command is used when it is necessary to load trusted CA certificates or trusted root + certificates for the purpose of verification for its counterpart i.e. client certificate verification in + TLS function or server certificate verification in IEEE 802.1X function.
+ A device that support either TLS or IEEE 802.1X shall support this command. As for the + supported certificate format, either DER format or PEM format is possible to be used. But a + device that support this command shall support at least DER format as supported format type. + The device may sort the received certificate(s) based on the public key and subject + information in the certificate(s). Either all CA certificates are loaded successfully or a fault + message shall be returned without loading any CA certificate.
+ + +
+ + This operation newly creates IEEE 802.1X configuration parameter set of the device. The + device shall support this command if it supports IEEE 802.1X. If the device receives this + request with already existing configuration token (Dot1XConfigurationToken) specification, the + device should respond with 'ter:ReferenceToken ' error to indicate there is some configuration + conflict. + + + + + While the CreateDot1XConfiguration command is trying to create a new configuration + parameter set, this operation modifies existing IEEE 802.1X configuration parameter set of + the device. A device that support IEEE 802.1X shall support this command. + + + + + This operation gets one IEEE 802.1X configuration parameter set from the device by + specifying the configuration token (Dot1XConfigurationToken).
+ A device that supports IEEE 802.1X shall support this command. + Regardless of whether the 802.1X method in the retrieved configuration has a password or + not, the device shall not include the Password element in the response.
+ + +
+ + This operation gets all the existing IEEE 802.1X configuration parameter sets from the device. + The device shall respond with all the IEEE 802.1X configurations so that the client can get to + know how many IEEE 802.1X configurations are existing and how they are configured.
+ A device that support IEEE 802.1X shall support this command.
+ Regardless of whether the 802.1X method in the retrieved configuration has a password or + not, the device shall not include the Password element in the response.
+ + +
+ + This operation deletes an IEEE 802.1X configuration parameter set from the device. Which + configuration should be deleted is specified by the 'Dot1XConfigurationToken' in the request. + A device that support IEEE 802.1X shall support this command. + + + + + This operation returns the IEEE802.11 capabilities. The device shall support + this operation. + + + + + This operation returns the status of a wireless network interface. The device shall support this + command. + + + + + This operation returns a lists of the wireless networks in range of the device. A device should + support this operation. + + + + + This operation is used to retrieve URIs from which system information may be downloaded + using HTTP. URIs may be returned for the following system information:
+ System Logs. Multiple system logs may be returned, of different types. The exact format of + the system logs is outside the scope of this specification.
+ Support Information. This consists of arbitrary device diagnostics information from a device. + The exact format of the diagnostic information is outside the scope of this specification.
+ System Backup. The received file is a backup file that can be used to restore the current + device configuration at a later date. The exact format of the backup configuration file is + outside the scope of this specification.
+ If the device allows retrieval of system logs, support information or system backup data, it + should make them available via HTTP GET. If it does, it shall support the GetSystemUris + command.
+ + +
+ + This operation initiates a firmware upgrade using the HTTP POST mechanism. The response + to the command includes an HTTP URL to which the upgrade file may be uploaded. The + actual upgrade takes place as soon as the HTTP POST operation has completed. The device + should support firmware upgrade through the StartFirmwareUpgrade command. The exact + format of the firmware data is outside the scope of this specification. + Firmware upgrade over HTTP may be achieved using the following steps:
    +
  1. Client calls StartFirmwareUpgrade.
  2. +
  3. Server responds with upload URI and optional delay value.
  4. +
  5. Client waits for delay duration if specified by server.
  6. +
  7. Client transmits the firmware image to the upload URI using HTTP POST.
  8. +
  9. Server reprograms itself using the uploaded image, then reboots.
  10. +
+ If the firmware upgrade fails because the upgrade file was invalid, the HTTP POST response + shall be “415 Unsupported Media Type”. If the firmware upgrade fails due to an error at the + device, the HTTP POST response shall be “500 Internal Server Error”.
+ The value of the Content-Type header in the HTTP POST request shall be “application/octetstream”.
+ + +
+ + This operation initiates a system restore from backed up configuration data using the HTTP + POST mechanism. The response to the command includes an HTTP URL to which the backup + file may be uploaded. The actual restore takes place as soon as the HTTP POST operation + has completed. Devices should support system restore through the StartSystemRestore + command. The exact format of the backup configuration data is outside the scope of this + specification.
+ System restore over HTTP may be achieved using the following steps:
    +
  1. Client calls StartSystemRestore.
  2. +
  3. Server responds with upload URI.
  4. +
  5. Client transmits the configuration data to the upload URI using HTTP POST.
  6. +
  7. Server applies the uploaded configuration, then reboots if necessary.
  8. +
+ If the system restore fails because the uploaded file was invalid, the HTTP POST response + shall be “415 Unsupported Media Type”. If the system restore fails due to an error at the + device, the HTTP POST response shall be “500 Internal Server Error”.
+ The value of the Content-Type header in the HTTP POST request shall be “application/octetstream”.
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/deps/lib/python3.10/site-packages/onvif/wsdl/display.wsdl b/deps/lib/python3.10/site-packages/onvif/wsdl/display.wsdl new file mode 100644 index 0000000..c54830b --- /dev/null +++ b/deps/lib/python3.10/site-packages/onvif/wsdl/display.wsdl @@ -0,0 +1,522 @@ + + + + + + + + + + + + + + + + + + + The capabilities for the display service is returned in the Capabilities element. + + + + + + + + + + + Indication that the SetLayout command supports only predefined layouts. + + + + + + + + + + Token of the Video Output whose Layout is requested + + + + + + + + + + + + + Current layout of the video output. + + + + + + + + + + + + + Token of the Video Output whose Layout shall be changed. + + + + + Layout to be set + + + + + + + + + + + + + + + + + + + + + Token of the Video Output whose options are requested + + + + + + + + + + + + + The LayoutOptions describe the fixed and predefined layouts of a device. If the device does +not offer fixed layouts and allows setting the layout free this element is empty. + + + + + decoding and encoding capabilities of the device + + + + + + + + + + + + + Reference Token of the Video Output whose Pane Configurations are requested + + + + + + + + + + + + + Contains a list of defined Panes of the specified VideoOutput. Each VideoOutput has at least one PaneConfiguration. + + + + + + + + + + + + Reference Token of the Video Output the requested pane belongs to + + + + + Reference Token of the Pane whose Configuration is requested + + + + + + + + + + + + + returns the configuration of the requested pane. + + + + + + + + + + + + + Token of the video output whose panes to set. + + + + + Pane Configuration to be set. + + + + + + + + + + + + + + + + + + + + Token of the video output whose panes to set. + + + + + Pane Configuration to be set. + + + + + + + + + + + + + + + + + + + + + Token of the video output where the pane shall be created. + + + + + Configuration of the pane to be created. + + + + + + + + + + + + + Token of the new pane configuration. + + + + + + + + + + + + + Token of the video output where the pane shall be deleted. + + + + + Token of the pane to be deleted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Returns the capabilities of the display service. The result is returned in a typed answer. + + + + + Return the current layout of a video output. The Layout assigns a pane configuration to a certain area of the display. The layout settings +directly affect a specific video output. The layout consists of a list of PaneConfigurations and +their associated display areas. + + + + + Change the layout of a display (e.g. change from +single view to split screen view).The Layout assigns a pane configuration to a certain area of the display. The layout settings +directly affect a specific video output. The layout consists of a list of PaneConfigurations and +their associated display areas.
+A device implementation shall be tolerant against rounding errors when matching a layout against its fixed set of layouts by accepting differences of at least one percent. +
+ + +
+ + The Display Options contain the supported layouts (LayoutOptions) and the decoding and +encoding capabilities (CodingCapabilities) of the device. The GetDisplayOptions command +returns both, Layout and Coding Capabilities, of a VideoOutput. + + + + + List all currently defined panes of a device for a specified video output +(regardless if this pane is visible at a moment). A Pane is a display area on the monitor that is attached to a video output. A pane has a +PaneConfiguration that describes which entities are associated with the pane. A client has to configure the pane according to the connection to be established by setting the +AudioOutput and/or AudioSourceToken. If a Token is not set, the corresponding session will +not be established. + + + + + Retrieve the pane configuration for a pane token. + + + + + Modify one or more configurations of the specified video output. + This method will only modify the provided configurations and leave the others unchanged. + Use DeletePaneConfiguration to remove pane configurations. + + + + + This command changes the configuration of the specified pane (tbd) + + + + + Create a new pane configuration describing the streaming and coding settings for a display area.
+ This optional method is only supported by devices that signal support of dynamic pane creation via their capabilities.
+ The content of the Token field may be ignored by the device. +
+ + +
+ + Delete a pane configuration. A service must respond with an error if the pane configuration + is in use by the current layout.
+ This optional method is only supported by devices that signal support of dynamic pane creation via their capabilities. +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/deps/lib/python3.10/site-packages/onvif/wsdl/doorcontrol.wsdl b/deps/lib/python3.10/site-packages/onvif/wsdl/doorcontrol.wsdl new file mode 100644 index 0000000..d986910 --- /dev/null +++ b/deps/lib/python3.10/site-packages/onvif/wsdl/doorcontrol.wsdl @@ -0,0 +1,1069 @@ + + + + + + + + + + + +ServiceCapabilities structure reflects optional functionality of a service. +The information is static and does not change during device operation. +The following capabilities are available: + + + + + + + The maximum number of entries returned by a single Get<Entity>List or Get<Entity> request. The device shall never return more than this number of entities in a single response. + + + + + + + +Used as extension base. + + + + + + + A user readable name. It shall be up to 64 characters. + + + A user readable description. It shall be up to 1024 characters. + + + + + + + + + +The DoorInfo type represents the Door as a physical object. +The structure contains information and capabilities of a specific door instance. +An ONVIF compliant device shall provide the following fields for each Door instance: + + + + + + + The capabilities of the Door. + + + + + + + + + + + +DoorCapabilities reflect optional functionality of a particular physical entity. +Different door instances may have different set of capabilities. +This information may change during device operation, e.g. if hardware settings are changed. +The following capabilities are available: + + + + + + + Indicates whether or not this Door instance supports AccessDoor command to perform momentary access. + + + Indicates that this Door instance supports overriding configured timing in the AccessDoor command. + + + Indicates that this Door instance supports LockDoor command to lock the door. + + + Indicates that this Door instance supports UnlockDoor command to unlock the door. + + + Indicates that this Door instance supports BlockDoor command to block the door. + + + Indicates that this Door instance supports DoubleLockDoor command to lock multiple locks on the door. + + + Indicates that this Door instance supports LockDown (and LockDownRelease) commands to lock the door and put it in LockedDown mode. + + + Indicates that this Door instance supports LockOpen (and LockOpenRelease) commands to unlock the door and put it in LockedOpen mode. + + + Indicates that this Door instance has a DoorMonitor and supports the DoorPhysicalState event. + + + Indicates that this Door instance has a LockMonitor and supports the LockPhysicalState event. + + + Indicates that this Door instance has a DoubleLockMonitor and supports the DoubleLockPhysicalState event. + + + Indicates that this Door instance supports door alarm and the DoorAlarm event. + + + Indicates that this Door instance has a Tamper detector and supports the DoorTamper event. + + + Indicates that this Door instance supports door fault and the DoorFault event. + + + + + + + +The DoorState structure contains current aggregate runtime status of Door. + + + + + Physical state of Door; it is of type DoorPhysicalState. A device that signals support for DoorMonitor capability for a particular door instance shall provide this field. + + + Physical state of the Lock; it is of type LockPhysicalState. A device that signals support for LockMonitor capability for a particular door instance shall provide this field. + + + Physical state of the DoubleLock; it is of type LockPhysicalState. A device that signals support for DoubleLockMonitor capability for a particular door instance shall provide this field. + + + Alarm state of the door; it is of type DoorAlarmState. A device that signals support for Alarm capability for a particular door instance shall provide this field. + + + Tampering state of the door; it is of type DoorTamper. A device that signals support for Tamper capability for a particular door instance shall provide this field. + + + Fault information for door; it is of type DoorFault. A device that signals support for Fault capability for a particular door instance shall provide this field. + + + The logical operating mode of the door; it is of type DoorMode. An ONVIF compatible device shall report current operating mode in this field. + + + + + + + + + +The physical state of a Door. + + + + + Value is currently unknown (possibly due to initialization or monitors not giving a conclusive result). + + + Door is open. + + + Door is closed. + + + Door monitor fault is detected. + + + + + + + +The physical state of a Lock (including Double Lock). + + + + + Value is currently not known. + + + Lock is activated. + + + Lock is not activated. + + + Lock fault is detected. + + + + + + + +Describes the state of a Door with regard to alarms. + + + + + No alarm. + + + Door is forced open. + + + Door is held open too long. + + + + + + + +Tampering information for a Door. + + + + + Optional field; Details describing tampering state change (e.g., reason, place and time).
NOTE: All fields (including this one) which are designed to give end-user prompts can be localized to the customers's native language.
+
+ + State of the tamper detector; it is of type DoorTamperState. + + +
+ +
+ + + + +Describes the state of a Tamper detector. + + + + + Value is currently not known. + + + No tampering is detected. + + + Tampering is detected. + + + + + + + +Fault information for a Door. +This can be extended with optional attributes in the future. + + + + Optional reason for fault. + + + Overall fault state for the door; it is of type DoorFaultState. If there are any faults, the value shall be: FaultDetected. Details of the detected fault shall be found in the Reason field, and/or the various DoorState fields and/or in extensions to this structure. + + + + + + + + + +Describes the state of a Door fault. + + + + + Fault state is unknown. + + + No fault is detected. + + + Fault is detected. + + + + + + + +DoorMode parameters describe current Door mode from a logical perspective. + + + + + The Door is in an Unknown state. + + + The Door is in a Locked state. In this mode the device shall provide momentary access using the AccessDoor method if supported by the Door instance. + + + The Door is in an Unlocked (Permanent Access) state. Alarms related to door timing operations such as open too long or forced are masked in this mode. + + + The Door is in an Accessed state (momentary/temporary access). Alarms related to timing operations such as "door forced" are masked in this mode. + + + The Door is in a Blocked state (Door is locked, and AccessDoor requests are ignored, i.e., it is not possible for door to go to Accessed state). + + + The Door is in a LockedDown state (Door is locked) until released using the LockDownReleaseDoor command. AccessDoor, LockDoor, UnlockDoor, BlockDoor and LockOpenDoor requests are ignored, i.e., it is not possible for door to go to Accessed, Locked, Unlocked, Blocked or LockedOpen state. + + + The Door is in a LockedOpen state (Door is unlocked) until released using the LockOpenReleaseDoor command. AccessDoor, LockDoor, UnlockDoor, BlockDoor and LockDownDoor requests are ignored, i.e., it is not possible for door to go to Accessed, Locked, Unlocked, Blocked or LockedDown state. + + + The Door is in a Double Locked state - for doors with multiple locks. If the door does not have any DoubleLock, this shall be treated as a normal Locked mode. When changing to an Unlocked mode from the DoubleLocked mode, the door may first go to Locked state before unlocking. + + + + + + + +Extension for the AccessDoor command. + + + + + + + + + + + + + + + + + + + + + The capability response message contains the requested DoorControl service capabilities using a hierarchical XML capability structure. + + + + + + + + + + Maximum number of entries to return. If not specified, or higher than what the device supports, the number of items shall be determined by the device. + + + Start returning entries from this start reference. If not specified, entries shall start from the beginning of the dataset. + + + + + + + + + + StartReference to use in next call to get the following items. If absent, no more items to get. + + + List of DoorInfo items. + + + + + + + + + + Tokens of DoorInfo items to get. + + + + + + + + + + List of DoorInfo items. + + + + + + + + + + Token of the Door instance to get the state for. + + + + + + + + + + The state of the door. + + + + + + + + + + Token of the Door instance to control. + + + Optional - Indicates that the configured extended time should be used. + + + Optional - overrides AccessTime if specified. + + + Optional - overrides OpenTooLongTime if specified (DOTL). + + + Optional - overrides PreAlarmTime if specified. + + + Future extension. + + + + + + + + + + + + + + + + + Token of the Door instance to control. + + + + + + + + + + + + + + + + + Token of the Door instance to control. + + + + + + + + + + + + + + + + + Token of the Door instance to control. + + + + + + + + + + + + + + + + + Token of the Door instance to control. + + + + + + + + + + + + + + + + + Token of the Door instance to control. + + + + + + + + + + + + + + + + + Token of the Door instance to control. + + + + + + + + + + + + + + + + + Token of the Door instance to control. + + + + + + + + + + + + + + + + + Token of the Door instance to control. + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +This operation returns the capabilities of the service. +</p><p> +An ONVIF compliant device which provides the Door Control service shall implement this method. + + + + + + +This operation requests a list of all DoorInfo items provided by the device. +An ONVIF compliant device that provides Door Control service shall implement +this method. +</p><p> + +A call to this method shall return a StartReference when not all data is returned and more data is available. +The reference shall be valid for retrieving the next set of data. +Please refer section 4.8.3 of Access Control Service Specification for more details. +The number of items returned shall not be greater than Limit parameter. +</p><p> + + + + + + +This operation requests a list of DoorInfo items matching the given tokens. +An ONVIF-compliant device that provides Door Control service shall implement this method. +</p><p> + +The device shall ignore tokens it cannot resolve and may return an empty list +if there are no items matching specified tokens. +If the number of requested items is greater than MaxLimit, a TooManyItems fault shall be returned. +</p><p> + + + + + + +This operation requests the state of a Door specified by the Token. +</p><p> +A device implementing the Door Control service shall be capable of reporting +the status of a door using a DoorState structure available from the +GetDoorState command. + + + + + + +This operation allows momentarily accessing a Door. +It invokes the functionality typically used when a card holder presents a +card to a card reader at the door and is granted access. +</p><p> +The DoorMode shall change to Accessed state. Please refer to Accessed mode in section [DoorMode] for more details. +</p><p> +The Door shall remain accessible for the defined time. When the time span +elapses, the DoorMode shall change back to its previous state. +</p><p> +If the request cannot be fulfilled, a Failure fault shall be returned. +</p><p> +Please refer to section [DoorMode] for details about Door Modes restrictions. +</p><p> +A device that signals support for Access capability for a particular Door +instance shall implement this method. A device that signals support for +AccessTimingOverride capability for a particular Door instance shall also +provide optional timing parameters (AccessTime, OpenTooLongTime and +PreAlarmTime) when performing AccessDoor command. +</p><p> +The device shall take the best effort approach for parameters not supported, +it must fallback to preconfigured time or limit the time to the closest +supported time if the specified time is out of range. + + + + + + +This operation allows locking a Door. +The DoorMode shall change to Locked state. +Please refer to Locked mode in section [DoorMode] for more details. +</p><p> +A device that signals support for Lock capability for a particular Door +instance shall implement this method. +</p><p> +If the request cannot be fulfilled, a Failure fault shall be returned. +Please refer to section [DoorMode] for more details about Door Modes restrictions. + + + + + + +This operation allows unlocking a Door. +The DoorMode shall change to Unlocked state. +Please refer to Unlocked mode in section [DoorMode] for more details. +</p><p> +A device that signals support for Unlock capability for a particular Door +instance shall implement this method. +</p><p> +If the request cannot be fulfilled, a Failure fault shall be returned. +Please refer to section [DoorMode] for more details about Door Modes restrictions. + + + + + + +This operation allows blocking a Door and preventing momentary access (AccessDoor command). +The DoorMode shall change to Blocked state. +Please refer to Blocked mode in section [DoorMode] for more details. +</p><p> +A device that signals support for Block capability for a particular Door +instance shall implement this method. +</p><p> +If the request cannot be fulfilled, a Failure fault shall be returned. +Please refer to section [DoorMode] for more details about Door Modes restrictions. + + + + + + +This operation allows locking and preventing other actions until a LockDownRelease command is invoked. +The DoorMode shall change to LockedDown state. +Please refer to LockedDown mode in section [DoorMode] for more details. +</p><p> +The device shall ignore other door control commands until a LockDownRelease command is performed. +</p><p> +A device that signals support for LockDown capability for a particular Door +instance shall implement this method. +</p><p> +If a device supports DoubleLock capability for a particular Door instance, +that operation may be engaged as well. +</p><p> +If the request cannot be fulfilled, a Failure fault shall be returned. +Please refer to section [DoorMode] for more details about Door Modes restrictions. + + + + + + +This operation allows releasing the LockedDown state of a Door. +The DoorMode shall change back to its previous/next state. +It is not defined what the previous/next state shall be, but typically - Locked. +</p><p> +This method shall only succeed if the current DoorMode is LockedDown. + + + + + + +This operation allows unlocking a Door and preventing other actions until LockOpenRelease method is invoked. +The DoorMode shall change to LockedOpen state. +Please refer to LockedOpen mode in section [DoorMode] for more details. +</p><p> +The device shall ignore other door control commands until a LockOpenRelease command is performed. +</p><p> +A device that signals support for LockOpen capability for a particular Door instance shall implement this method. +</p><p> +If the request cannot be fulfilled, a Failure fault shall be returned. +Please refer to section [DoorMode] for more details about Door Modes restrictions. + + + + + + +This operation allows releasing the LockedOpen state of a Door. +The DoorMode shall change state from the LockedOpen state back to its previous/next state. +It is not defined what the previous/next state shall be, but typically - Unlocked. +</p><p> +This method shall only succeed if the current DoorMode is LockedOpen. + + + + + + +This operation is used for securely locking a Door. +A call to this method shall change DoorMode state to DoubleLocked. +Please refer to DoubleLocked mode in section [DoorMode] for more details. +</p><p> +A device that signals support for DoubleLock capability for a particular +Door instance shall implement this method. Otherwise this method can be +performed as a standard Lock operation (see [LockDoor command]). +</p><p> +If the door has an extra lock that shall be locked as well. +</p><p> +If the request cannot be fulfilled, a Failure fault shall be returned. + + + + + + + + +Copyright (c) 2010-2013 by ONVIF: Open Network Video Interface Forum. All rights reserved.
+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
diff --git a/deps/lib/python3.10/site-packages/onvif/wsdl/envelope b/deps/lib/python3.10/site-packages/onvif/wsdl/envelope new file mode 100644 index 0000000..b1a20e0 --- /dev/null +++ b/deps/lib/python3.10/site-packages/onvif/wsdl/envelope @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Prose in the spec does not specify that attributes are allowed on the Body element + + + + + + + + + + + + + + + + + + + + 'encodingStyle' indicates any canonicalization conventions followed in the contents of the containing element. For example, the value 'http://schemas.xmlsoap.org/soap/encoding/' indicates the pattern described in SOAP specification + + + + + + + + + + + + + + + Fault reporting structure + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/deps/lib/python3.10/site-packages/onvif/wsdl/events.wsdl b/deps/lib/python3.10/site-packages/onvif/wsdl/events.wsdl new file mode 100644 index 0000000..615439a --- /dev/null +++ b/deps/lib/python3.10/site-packages/onvif/wsdl/events.wsdl @@ -0,0 +1,737 @@ + + + + + + + + + + + + + + + + + + + + + + + + The capabilities for the event service is returned in the Capabilities element. + + + + + + + + + + + + + Indicates that the WS Subscription policy is supported. + + + + + Indicates that the WS Pull Point is supported. + + + + + Indicates that the WS Pausable Subscription Manager Interface is supported. + + + + + Maximum number of supported notification producers as defined by WS-BaseNotification. + + + + + Maximum supported number of notification pull points. + + + + + Indication if the device supports persistent notification storage. + + + + + + + + + + + + Optional XPATH expression to select specific topics. + + + + + Initial termination time. + + + + + Refer to Web Services Base Notification 1.3 (WS-BaseNotification). + + + + + + + + + + + + + + + + + Endpoint reference of the subscription to be used for pulling the messages. + + + + + Current time of the server for synchronization purposes. + + + + + Date time when the PullPoint will be shut down without further pull requests. + + + + + + + + + + + + + Maximum time to block until this method returns. + + + + + Upper limit for the number of messages to return at once. A server implementation may decide to return less messages. + + + + + + + + + + + + The date and time when the messages have been delivered by the web server to the client. + + + + + Date time when the PullPoint will be shut down without further pull requests. + + + + + List of messages. This list shall be empty in case of a timeout. + + + + + + + + + + + Maximum timeout supported by the device. + + + + + Maximum message limit supported by the device. + + + + + + + + + + + The date and time to match against stored messages. + Reverse the pull direction of PullMessages. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + List of topic namespaces supported. + + + + + True when topicset is fixed for all times. + + + + + Set of topics supported. + + + + + + Defines the XPath expression syntax supported for matching topic expressions.
+ The following TopicExpressionDialects are mandatory for an ONVIF compliant device : +
    +
  • http://docs.oasis-open.org/wsn/t-1/TopicExpression/Concrete
  • +
  • http://www.onvif.org/ver10/tev/topicExpression/ConcreteSet.
  • +
+
+
+
+ + + + Defines the XPath function set supported for message content filtering.
+ The following MessageContentFilterDialects are mandatory for an ONVIF compliant device: +
    +
  • http://www.onvif.org/ver10/tev/messageContentFilter/ItemFilter.
  • +
+
+
+
+ + + + Optional ProducerPropertiesDialects. Refer to Web Services Base Notification 1.3 (WS-BaseNotification) for advanced filtering. + + + + + + The Message Content Description Language allows referencing + of vendor-specific types. In order to ease the integration of such types into a client application, + the GetEventPropertiesResponse shall list all URI locations to schema files whose types are + used in the description of notifications, with MessageContentSchemaLocation elements.
+ This list shall at least contain the URI of the ONVIF schema file.
+
+
+ + + + + +
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Returns the capabilities of the event service. The result is returned in a typed answer. + + + + + This method returns a PullPointSubscription that can be polled using PullMessages. + This message contains the same elements as the SubscriptionRequest of the WS-BaseNotification without the ConsumerReference.
+ If no Filter is specified the pullpoint notifies all occurring events to the client.
+ This method is mandatory.
+ + + + + + + + + + + + + + +
+ + The WS-BaseNotification specification defines a set of OPTIONAL WS-ResouceProperties. + This specification does not require the implementation of the WS-ResourceProperty interface. + Instead, the subsequent direct interface shall be implemented by an ONVIF compliant device + in order to provide information about the FilterDialects, Schema files and topics supported by + the device. + + + +
+ + + + This method pulls one or more messages from a PullPoint. + The device shall provide the following PullMessages command for all SubscriptionManager + endpoints returned by the CreatePullPointSubscription command. This method shall not wait until + the requested number of messages is available but return as soon as at least one message is available.
+ The command shall at least support a Timeout of one minute. In case a device supports retrieval of less messages + than requested it shall return these without generating a fault.
+ + + +
+ + + This method readjusts the pull pointer into the past. + A device supporting persistent notification storage shall provide the + following Seek command for all SubscriptionManager endpoints returned by + the CreatePullPointSubscription command. The optional Reverse argument can + be used to reverse the pull direction of the PullMessages command.
+ The UtcTime argument will be matched against the UtcTime attribute on a + NotificationMessage. +
+ + +
+ + Properties inform a client about property creation, changes and + deletion in a uniform way. When a client wants to synchronize its properties with the + properties of the device, it can request a synchronization point which repeats the current + status of all properties to which a client has subscribed. The PropertyOperation of all + produced notifications is set to “Initialized”. The Synchronization Point is + requested directly from the SubscriptionManager which was returned in either the + SubscriptionResponse or in the CreatePullPointSubscriptionResponse. The property update is + transmitted via the notification transportation of the notification interface. This method is mandatory. + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/deps/lib/python3.10/site-packages/onvif/wsdl/imaging.wsdl b/deps/lib/python3.10/site-packages/onvif/wsdl/imaging.wsdl new file mode 100644 index 0000000..8203200 --- /dev/null +++ b/deps/lib/python3.10/site-packages/onvif/wsdl/imaging.wsdl @@ -0,0 +1,400 @@ + + + + + + + + + + + + + + + + + + + + The capabilities for the imaging service is returned in the Capabilities element. + + + + + + + + + + + + + Indicates whether or not Image Stabilization feature is supported. + + + + + + + + + + + + + Reference token to the VideoSource for which the ImagingSettings. + + + + + + + + + + + + + ImagingSettings for the VideoSource that was requested. + + + + + + + + + + + + + + + + + + + + + + + + + + + Reference token to the VideoSource for which the imaging parameter options are requested. + + + + + + + + + + + + + Valid ranges for the imaging parameters that are categorized as device specific. + + + + + + + + + + + + + + Reference to the VideoSource for the requested move (focus) operation. + + + + + + + Content of the requested move (focus) operation. + + + + + + + + + + + + + + + + + + + Reference token to the VideoSource for the requested move options. + + + + + + + + + + + + + Valid ranges for the focus lens move options. + + + + + + + + + + + + + + Reference token to the VideoSource where the focus movement should be stopped. + + + + + + + + + + + + + + + + + + + + Reference token to the VideoSource where the imaging status should be requested. + + + + + + + + + + + + + Requested imaging status. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Returns the capabilities of the imaging service. The result is returned in a typed answer. + + + + + Get the ImagingConfiguration for the requested VideoSource. + + + + + Set the ImagingConfiguration for the requested VideoSource. + + + + + This operation gets the valid ranges for the imaging parameters that have device specific ranges. + This command is mandatory for all device implementing the imaging service. The command returns all supported parameters and their ranges + such that these can be applied to the SetImagingSettings command.
+ For read-only parameters which cannot be modified via the SetImagingSettings command only a single option or identical Min and Max values + is provided.
+ + +
+ + The Move command moves the focus lens in an absolute, a relative or in a continuous manner from its current position. + The speed argument is optional for absolute and relative control, but required for continuous. If no speed argument is used, the default speed is used. + Focus adjustments through this operation will turn off the autofocus. A device with support for remote focus control should support absolute, + relative or continuous control through the Move operation. The supported MoveOpions are signalled via the GetMoveOptions command. + At least one focus control capability is required for this operation to be functional.
+ The move operation contains the following commands:
+ Absolute – Requires position parameter and optionally takes a speed argument. A unitless type is used by default for focus positioning and speed. Optionally, if supported, the position may be requested in m-1 units.
+ Relative – Requires distance parameter and optionally takes a speed argument. Negative distance means negative direction. + Continuous – Requires a speed argument. Negative speed argument means negative direction. +
+ + +
+ + Imaging move operation options supported for the Video source. + + + + + The Stop command stops all ongoing focus movements of the lense. A device with support for remote focus control as signalled via + the GetMoveOptions supports this command.
The operation will not affect ongoing autofocus operation.
+ + +
+ + Via this command the current status of the Move operation can be requested. Supported for this command is available if the support for the Move operation is signalled via GetMoveOptions. + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/deps/lib/python3.10/site-packages/onvif/wsdl/include b/deps/lib/python3.10/site-packages/onvif/wsdl/include new file mode 100644 index 0000000..edb43a0 --- /dev/null +++ b/deps/lib/python3.10/site-packages/onvif/wsdl/include @@ -0,0 +1,13 @@ + + + + + + + + + + + diff --git a/deps/lib/python3.10/site-packages/onvif/wsdl/media.wsdl b/deps/lib/python3.10/site-packages/onvif/wsdl/media.wsdl new file mode 100644 index 0000000..a4cb7d4 --- /dev/null +++ b/deps/lib/python3.10/site-packages/onvif/wsdl/media.wsdl @@ -0,0 +1,3687 @@ + + + + + + + + + + + + + + + + + + + + The capabilities for the media service is returned in the Capabilities element. + + + + + + + + + + + Media profile capabilities. + + + + + Streaming capabilities. + + + + + + + Indicates if GetSnapshotUri is supported. + + + + + Indicates whether or not Rotation feature is supported. + + + + + Indicates the support for changing video source mode. + + + + + Indicates if OSD is supported. + + + + + + + + + + + + + Maximum number of profiles supported. + + + + + + + + + + + + Indicates support for RTP multicast. + + + + + Indicates support for RTP over TCP. + + + + + Indicates support for RTP/RTSP/TCP. + + + + + Indicates support for non aggregate RTSP control. + + + + + Indicates the device does not support live media streaming via RTSP. + + + + + + + + + + + + + + + + + List of existing Video Sources + + + + + + + + + + + + + + + + + + List of existing Audio Sources + + + + + + + + + + + + + + + + + + List of existing Audio Outputs + + + + + + + + + + + + friendly name of the profile to be created + + + + + Optional token, specifying the unique identifier of the new profile.
A device supports at least a token length of 12 characters and characters "A-Z" | "a-z" | "0-9" | "-.".
+
+
+
+
+
+ + + + + + returns the new created profile + + + + + + + + + + + + this command requests a specific profile + + + + + + + + + + + returns the requested media profile + + + + + + + + + + + + + + + + + + + lists all profiles that exist in the media service + + + + + + + + + + + + Reference to the profile where the configuration should be added + + + + + Contains a reference to the VideoEncoderConfiguration to add + + + + + + + + + + + + + + + + + + Contains a reference to the media profile from which the +VideoEncoderConfiguration shall be removed. + + + + + + + + + + + + + + + + + + Reference to the profile where the configuration should be added + + + + + Contains a reference to the VideoSourceConfiguration to add + + + + + + + + + + + + + + + + + + Contains a reference to the media profile from which the +VideoSourceConfiguration shall be removed. + + + + + + + + + + + + + + + + + + Reference to the profile where the configuration should be added + + + + + Contains a reference to the AudioEncoderConfiguration to add + + + + + + + + + + + + + + + + + + Contains a reference to the media profile from which the +AudioEncoderConfiguration shall be removed. + + + + + + + + + + + + + + + + + + Reference to the profile where the configuration should be added + + + + + Contains a reference to the AudioSourceConfiguration to add + + + + + + + + + + + + + + + + + + Contains a reference to the media profile from which the +AudioSourceConfiguration shall be removed. + + + + + + + + + + + + + + + + + + Reference to the profile where the configuration should be added + + + + + Contains a reference to the PTZConfiguration to add + + + + + + + + + + + + + + + + + + Contains a reference to the media profile from which the +PTZConfiguration shall be removed. + + + + + + + + + + + + + + + + + + Reference to the profile where the configuration should be added + + + + + Contains a reference to the VideoAnalyticsConfiguration to add + + + + + + + + + + + + + + + + + + Contains a reference to the media profile from which the +VideoAnalyticsConfiguration shall be removed. + + + + + + + + + + + + + + + + + + Reference to the profile where the configuration should be added + + + + + Contains a reference to the MetadataConfiguration to add + + + + + + + + + + + + + + + + + + Contains a reference to the media profile from which the +MetadataConfiguration shall be removed. + + + + + + + + + + + + + + + + + + Reference to the profile where the configuration should be added + + + + + Contains a reference to the AudioOutputConfiguration to add + + + + + + + + + + + + + + + + + + Contains a reference to the media profile from which the +AudioOutputConfiguration shall be removed. + + + + + + + + + + + + + + + + + + This element contains a reference to the profile where the configuration should be added. + + + + + This element contains a reference to the AudioDecoderConfiguration to add. + + + + + + + + + + + + + + + + + + This element contains a reference to the media profile from which the AudioDecoderConfiguration shall be removed. + + + + + + + + + + + + + + + + + + This element contains a reference to the profile that should be deleted. + + + + + + + + + + + + + + + + + + + + + + + + + + This element contains a list of video encoder configurations. + + + + + + + + + + + + + + + + + + This element contains a list of video source configurations. + + + + + + + + + + + + + + + + + + This element contains a list of audio encoder configurations. + + + + + + + + + + + + + + + + + + This element contains a list of audio source configurations. + + + + + + + + + + + + + + + + + + This element contains a list of VideoAnalytics configurations. + + + + + + + + + + + + + + + + + + This element contains a list of metadata configurations + + + + + + + + + + + + + + + + + + + This element contains a list of audio output configurations + + + + + + + + + + + + + + + + + + This element contains a list of audio decoder configurations + + + + + + + + + + + + Token of the requested video source configuration. + + + + + + + + + + + + The requested video source configuration. + + + + + + + + + + + + Token of the requested video encoder configuration. + + + + + + + + + + + The requested video encoder configuration. + + + + + + + + + + + + Token of the requested audio source configuration. + + + + + + + + + + + The requested audio source configuration. + + + + + + + + + + + + Token of the requested audio encoder configuration. + + + + + + + + + + + The requested audio encoder configuration + + + + + + + + + + + + Token of the requested video analytics configuration. + + + + + + + + + + + The requested video analytics configuration. + + + + + + + + + + + + Token of the requested metadata configuration. + + + + + + + + + + + The requested metadata configuration. + + + + + + + + + + + + + Token of the requested audio output configuration. + + + + + + + + + + + + The requested audio output configuration. + + + + + + + + + + + + Token of the requested audio decoder configuration. + + + + + + + + + + + + The requested audio decoder configuration + + + + + + + + + + + + Contains the token of an existing media profile the configurations shall be compatible with. + + + + + + + + + + + Contains a list of video encoder configurations that are compatible with the specified media profile. + + + + + + + + + + + + Contains the token of an existing media profile the configurations shall be compatible with. + + + + + + + + + + + Contains a list of video source configurations that are compatible with the specified media profile. + + + + + + + + + + + + Contains the token of an existing media profile the configurations shall be compatible with. + + + + + + + + + + + Contains a list of audio encoder configurations that are compatible with the specified media profile. + + + + + + + + + + + + Contains the token of an existing media profile the configurations shall be compatible with. + + + + + + + + + + + Contains a list of audio source configurations that are compatible with the specified media profile. + + + + + + + + + + + + Contains the token of an existing media profile the configurations shall be compatible with. + + + + + + + + + + + Contains a list of video analytics configurations that are compatible with the specified media profile. + + + + + + + + + + + + Contains the token of an existing media profile the configurations shall be compatible with. + + + + + + + + + + + Contains a list of metadata configurations that are compatible with the specified media profile. + + + + + + + + + + + + + Contains the token of an existing media profile the configurations shall be compatible with. + + + + + + + + + + + Contains a list of audio output configurations that are compatible with the specified media profile. + + + + + + + + + + + + Contains the token of an existing media profile the configurations shall be compatible with. + + + + + + + + + + + Contains a list of audio decoder configurations that are compatible with the specified media profile. + + + + + + + + + + + + + + + + + Contains the modified video encoder configuration. The configuration shall exist in the device. + + + + + The ForcePersistence element is obsolete and should always be assumed to be true. + + + + + + + + + + + + + + + + + + Contains the modified video source configuration. The configuration shall exist in the device. + + + + + The ForcePersistence element is obsolete and should always be assumed to be true. + + + + + + + + + + + + + + + + + + Contains the modified audio encoder configuration. The configuration shall exist in the device. + + + + + The ForcePersistence element is obsolete and should always be assumed to be true. + + + + + + + + + + + + + + + + + + Contains the modified audio source configuration. The configuration shall exist in the device. + + + + + The ForcePersistence element is obsolete and should always be assumed to be true. + + + + + + + + + + + + + + + + + + Contains the modified video analytics configuration. The configuration shall exist in the device. + + + + + The ForcePersistence element is obsolete and should always be assumed to be true. + + + + + + + + + + + + + + + + + + Contains the modified metadata configuration. The configuration shall exist in the device. + + + + + The ForcePersistence element is obsolete and should always be assumed to be true. + + + + + + + + + + + + + + + + + + + Contains the modified audio output configuration. The configuration shall exist in the device. + + + + + The ForcePersistence element is obsolete and should always be assumed to be true. + + + + + + + + + + + + + + + + + + Contains the modified audio decoder configuration. The configuration shall exist in the device. + + + + + The ForcePersistence element is obsolete and should always be assumed to be true. + + + + + + + + + + + + + + + + + + Optional video source configurationToken that specifies an existing configuration that the options are intended for. + + + + + Optional ProfileToken that specifies an existing media profile that the options shall be compatible with. + + + + + + + + + + + This message contains the video source configuration options. If a video source configuration is specified, the options shall concern that particular configuration. If a media profile is specified, the options shall be compatible with that media profile. If no tokens are specified, the options shall be considered generic for the device. + + + + + + + + + + + + Optional video encoder configuration token that specifies an existing configuration that the options are intended for. + + + + + Optional ProfileToken that specifies an existing media profile that the options shall be compatible with. + + + + + + + + + + + + + + + + + + + Optional audio source configuration token that specifies an existing configuration that the options are intended for. + + + + + Optional ProfileToken that specifies an existing media profile that the options shall be compatible with. + + + + + + + + + + + This message contains the audio source configuration options. If a audio source configuration is specified, the options shall concern that particular configuration. If a media profile is specified, the options shall be compatible with that media profile. If no tokens are specified, the options shall be considered generic for the device. + + + + + + + + + + + + Optional audio encoder configuration token that specifies an existing configuration that the options are intended for. + + + + + Optional ProfileToken that specifies an existing media profile that the options shall be compatible with. + + + + + + + + + + + This message contains the audio encoder configuration options. If a audio encoder configuration is specified, the options shall concern that particular configuration. If a media profile is specified, the options shall be compatible with that media profile. If no tokens are specified, the options shall be considered generic for the device. + + + + + + + + + + + + Optional metadata configuration token that specifies an existing configuration that the options are intended for. + + + + + Optional ProfileToken that specifies an existing media profile that the options shall be compatible with. + + + + + + + + + + + This message contains the metadata configuration options. If a metadata configuration is specified, the options shall concern that particular configuration. If a media profile is specified, the options shall be compatible with that media profile. If no tokens are specified, the options shall be considered generic for the device. + + + + + + + + + + + + Optional audio output configuration token that specifies an existing configuration that the options are intended for. + + + + + Optional ProfileToken that specifies an existing media profile that the options shall be compatible with. + + + + + + + + + + + This message contains the audio output configuration options. If a audio output configuration is specified, the options shall concern that particular configuration. If a media profile is specified, the options shall be compatible with that media profile. If no tokens are specified, the options shall be considered generic for the device. + + + + + + + + + + + + Optional audio decoder configuration token that specifies an existing configuration that the options are intended for. + + + + + Optional ProfileToken that specifies an existing media profile that the options shall be compatible with. + + + + + + + + + + + This message contains the audio decoder configuration options. If a audio decoder configuration is specified, the options shall concern that particular configuration. If a media profile is specified, the options shall be compatible with that media profile. If no tokens are specified, the options shall be considered generic for the device. + + + + + + + + + + + + Token of the video source configuration + + + + + + + + + + + The minimum guaranteed total number of encoder instances (applications) per VideoSourceConfiguration. The device is able to deliver the TotalNumber of streams + + + + + If a device limits the number of instances for respective Video Codecs the response contains the information how many Jpeg streams can be set up at the same time per VideoSource. + + + + + If a device limits the number of instances for respective Video Codecs the response contains the information how many H264 streams can be set up at the same time per VideoSource. + + + + + If a device limits the number of instances for respective Video Codecs the response contains the information how many Mpeg4 streams can be set up at the same time per VideoSource. + + + + + + + + + + + + Stream Setup that should be used with the uri + + + + + The ProfileToken element indicates the media profile to use and will define the configuration of the content of the stream. + + + + + + + + + + + + + + + + + + + + + + + Contains the token of the Profile that is used to define the multicast stream. + + + + + + + + + + + + + + + + + + Contains the token of the Profile that is used to define the multicast stream. + + + + + + + + + + + + + + + + + + Contains a Profile reference for which a Synchronization Point is requested. + + + + + + + + + + + + + + + + + + The ProfileToken element indicates the media profile to use and will define the source and dimensions of the snapshot. + + + + + + + + + + + + + + + + + + + + + + + Contains a video source reference for which a video source mode is requested. + + + + + + + + + + + Return the information for specified video source mode. + + + + + + + + + + + + Contains a video source reference for which a video source mode is requested. + + + + + Indicate video source mode. + + + + + + + + + + + The response contains information about rebooting after returning response. When Reboot is set true, a device will reboot automatically after setting mode. + + + + + + + + + Indication which encodings are supported for this video source. The list may contain one or more enumeration values of tt:VideoEncoding. + + + + + + + + + Max frame rate in frames per second for this video source mode. + + + + + Max horizontal and vertical resolution for this video source mode. + + + + + Indication which encodings are supported for this video source. The list may contain one or more enumeration values of tt:VideoEncoding. + + + + + After setting the mode if a device starts to reboot this value is true. If a device change the mode without rebooting this value is false. If true, configured parameters may not be guaranteed by the device after rebooting. + + + + + Informative description of this video source mode. This field should be described in English. + + + + + + + Indicate token for video source mode. + + + + + Indication of whether this mode is active. If active this value is true. In case of non-indication, it means as false. The value of true shall be had by only one video source mode. + + + + + + + + + + + + + + + + + + + Token of the Video Source Configuration, which has OSDs associated with are requested. If token not exist, request all available OSDs. + + + + + + + + + + + This element contains a list of requested OSDs. + + + + + + + + + + + + The GetOSD command fetches the OSD configuration if the OSD token is known. + + + + + + + + + + + + The requested OSD configuration. + + + + + + + + + + + + + Contains the modified OSD configuration. + + + + + + + + + + + + + + + + + + + + Video Source Configuration Token that specifies an existing video source configuration that the options shall be compatible with. + + + + + + + + + + + + + + + + + + + + + + + + + Contain the initial OSD configuration for create. + + + + + + + + + + + + Returns Token of the newly created OSD + + + + + + + + + + + + + This element contains a reference to the OSD configuration that should be deleted. + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Returns the capabilities of the media service. The result is returned in a typed answer. + + + + + + This command lists all available physical video inputs of the device. + + + + + This command lists all available physical audio inputs of the device. + + + + + This command lists all available physical audio outputs of the device. + + + + + + This operation creates a new empty media profile. The media profile shall be created in the +device and shall be persistent (remain after reboot). A created profile shall be deletable and a device shall set the “fixed” attribute to false in the +returned Profile. + + + + + If the profile token is already known, a profile can be fetched through the GetProfile command. + + + + + Any endpoint can ask for the existing media profiles of a device using the GetProfiles +command. Pre-configured or dynamically configured profiles can be retrieved using this +command. This command lists all configured profiles in a device. The client does not need to +know the media profile in order to use the command. + + + + + This operation adds a VideoEncoderConfiguration to an existing media profile. If a +configuration exists in the media profile, it will be replaced. The change shall be persistent. A device shall +support adding a compatible VideoEncoderConfiguration to a Profile containing a VideoSourceConfiguration and shall +support streaming video data of such a profile. + + + + + + This operation removes a VideoEncoderConfiguration from an existing media profile. If the +media profile does not contain a VideoEncoderConfiguration, the operation has no effect. The removal shall be persistent. + + + + + This operation adds a VideoSourceConfiguration to an existing media profile. If such a +configuration exists in the media profile, it will be replaced. The change shall be persistent. + + + + + This operation removes a VideoSourceConfiguration from an existing media profile. If the +media profile does not contain a VideoSourceConfiguration, the operation has no effect. The removal shall be persistent. Video source configurations should only be removed after removing a +VideoEncoderConfiguration from the media profile. + + + + + This operation adds an AudioEncoderConfiguration to an existing media profile. If a +configuration exists in the media profile, it will be replaced. The change shall be persistent. A device shall +support adding a compatible AudioEncoderConfiguration to a profile containing an AudioSourceConfiguration and shall +support streaming audio data of such a profile. + + + + + + This operation removes an AudioEncoderConfiguration from an existing media profile. If the +media profile does not contain an AudioEncoderConfiguration, the operation has no effect. +The removal shall be persistent. + + + + + This operation adds an AudioSourceConfiguration to an existing media profile. If a +configuration exists in the media profile, it will be replaced. The change shall be persistent. + + + + + This operation removes an AudioSourceConfiguration from an existing media profile. If the +media profile does not contain an AudioSourceConfiguration, the operation has no effect. The +removal shall be persistent. Audio source configurations should only be removed after removing an +AudioEncoderConfiguration from the media profile. + + + + + This operation adds a PTZConfiguration to an existing media profile. If a configuration exists +in the media profile, it will be replaced. The change shall be persistent. Adding a PTZConfiguration to a media profile means that streams using that media profile can +contain PTZ status (in the metadata), and that the media profile can be used for controlling +PTZ movement. + + + + + This operation removes a PTZConfiguration from an existing media profile. If the media profile +does not contain a PTZConfiguration, the operation has no effect. The removal shall be persistent. + + + + + This operation adds a VideoAnalytics configuration to an existing media profile. If a +configuration exists in the media profile, it will be replaced. The change shall be persistent. Adding a VideoAnalyticsConfiguration to a media profile means that streams using that media +profile can contain video analytics data (in the metadata) as defined by the submitted configuration reference. A profile containing only a video analytics configuration but no video source configuration is incomplete. Therefore, a client should first add a video source configuration to a profile before adding a video analytics configuration. The device can deny adding of a video analytics +configuration before a video source configuration. + + + + + This operation removes a VideoAnalyticsConfiguration from an existing media profile. If the media profile does not contain a VideoAnalyticsConfiguration, the operation has no effect. +The removal shall be persistent. + + + + + This operation adds a Metadata configuration to an existing media profile. If a configuration exists in the media profile, it will be replaced. The change shall be persistent. Adding a MetadataConfiguration to a Profile means that streams using that profile contain metadata. Metadata can consist of events, PTZ status, and/or video analytics data. + + + + + This operation removes a MetadataConfiguration from an existing media profile. If the media profile does not contain a MetadataConfiguration, the operation has no effect. The removal shall be persistent. + + + + + This operation adds an AudioOutputConfiguration to an existing media profile. If a configuration exists in the media profile, it will be replaced. The change shall be persistent. + + + + + This operation removes an AudioOutputConfiguration from an existing media profile. If the media profile does not contain an AudioOutputConfiguration, the operation has no effect. The removal shall be persistent. + + + + + This operation adds an AudioDecoderConfiguration to an existing media profile. If a configuration exists in the media profile, it shall be replaced. The change shall be persistent. + + + + + This operation removes an AudioDecoderConfiguration from an existing media profile. If the media profile does not contain an AudioDecoderConfiguration, the operation has no effect. The removal shall be persistent. + + + + + This operation deletes a profile. This change shall always be persistent. Deletion of a profile is only possible for non-fixed profiles + + + + + + This operation lists all existing video source configurations for a device. The client need not know anything about the video source configurations in order to use the command. + + + + + This operation lists all existing video encoder configurations of a device. This command lists all configured video encoder configurations in a device. The client need not know anything apriori about the video encoder configurations in order to use the command. + + + + + This operation lists all existing audio source configurations of a device. This command lists all audio source configurations in a device. The client need not know anything apriori about the audio source configurations in order to use the command. + + + + + This operation lists all existing device audio encoder configurations. The client need not know anything apriori about the audio encoder configurations in order to use the command. + + + + + This operation lists all video analytics configurations of a device. This command lists all configured video analytics in a device. The client need not know anything apriori about the video analytics in order to use the command. + + + + + This operation lists all existing metadata configurations. The client need not know anything apriori about the metadata in order to use the command. + + + + + This command lists all existing AudioOutputConfigurations of a device. The NVC need not know anything apriori about the audio configurations to use this command. + + + + + This command lists all existing AudioDecoderConfigurations of a device. The NVC need not know anything apriori about the audio decoder configurations in order to +use this command. + + + + + If the video source configuration token is already known, the video source configuration can be fetched through the GetVideoSourceConfiguration command. + + + + + If the video encoder configuration token is already known, the encoder configuration can be fetched through the GetVideoEncoderConfiguration command. + + + + + The GetAudioSourceConfiguration command fetches the audio source configurations if the audio source configuration token is already known. An + + + + + The GetAudioEncoderConfiguration command fetches the encoder configuration if the audio encoder configuration token is known. + + + + + The GetVideoAnalyticsConfiguration command fetches the video analytics configuration if the video analytics token is known. + + + + + The GetMetadataConfiguration command fetches the metadata configuration if the metadata token is known. + + + + + If the audio output configuration token is already known, the output configuration can be fetched through the GetAudioOutputConfiguration command. + + + + + If the audio decoder configuration token is already known, the decoder configuration can be fetched through the GetAudioDecoderConfiguration command. + + + + + + This operation lists all the video encoder configurations of the device that are compatible with a certain media profile. Each of the returned configurations shall be a valid input parameter for the AddVideoEncoderConfiguration command on the media profile. The result will vary depending on the capabilities, configurations and settings in the device. + + + + + This operation requests all the video source configurations of the device that are compatible +with a certain media profile. Each of the returned configurations shall be a valid input +parameter for the AddVideoSourceConfiguration command on the media profile. The result +will vary depending on the capabilities, configurations and settings in the device. + + + + + This operation requests all audio encoder configurations of a device that are compatible with a certain media profile. Each of the returned configurations shall be a valid input parameter for the AddAudioSourceConfiguration command on the media profile. The result varies depending on the capabilities, configurations and settings in the device. + + + + + This operation requests all audio source configurations of the device that are compatible with a certain media profile. Each of the returned configurations shall be a valid input parameter for the AddAudioEncoderConfiguration command on the media profile. The result varies depending on the capabilities, configurations and settings in the device. + + + + + This operation requests all video analytic configurations of the device that are compatible with a certain media profile. Each of the returned configurations shall be a valid input parameter for the AddVideoAnalyticsConfiguration command on the media profile. The result varies depending on the capabilities, configurations and settings in the device. + + + + + This operation requests all the metadata configurations of the device that are compatible with a certain media profile. Each of the returned configurations shall be a valid input parameter for the AddMetadataConfiguration command on the media profile. The result varies depending on the capabilities, configurations and settings in the device. + + + + + This command lists all audio output configurations of a device that are compatible with a certain media profile. Each returned configuration shall be a valid input for the +AddAudioOutputConfiguration command. + + + + + This operation lists all the audio decoder configurations of the device that are compatible with a certain media profile. Each of the returned configurations shall be a valid input parameter for the AddAudioDecoderConfiguration command on the media profile. + + + + + + This operation modifies a video source configuration. The ForcePersistence flag indicates if the changes shall remain after reboot of the device. Running streams using this configuration may be immediately updated according to the new settings. The changes are not guaranteed to take effect unless the client requests a new stream URI and restarts any affected stream. NVC methods for changing a running stream are out of scope for this specification. + + + + + This operation modifies a video encoder configuration. The ForcePersistence flag indicates if the changes shall remain after reboot of the device. Changes in the Multicast settings shall always be persistent. Running streams using this configuration may be immediately updated according to the new settings. The changes are not guaranteed to take effect unless the client requests a new stream URI and restarts any affected stream. NVC methods for changing a running stream are out of scope for this specification.
SessionTimeout is provided as a hint for keeping rtsp session by a device. If necessary the device may adapt parameter values for SessionTimeout elements without returning an error. For the time between keep alive calls the client shall adhere to the timeout value signaled via RTSP.
+ + +
+ + This operation modifies an audio source configuration. The ForcePersistence flag indicates if +the changes shall remain after reboot of the device. Running streams using this configuration +may be immediately updated according to the new settings. The changes are not guaranteed +to take effect unless the client requests a new stream URI and restarts any affected stream +NVC methods for changing a running stream are out of scope for this specification. + + + + + This operation modifies an audio encoder configuration. The ForcePersistence flag indicates if +the changes shall remain after reboot of the device. Running streams using this configuration may be immediately updated +according to the new settings. The changes are not guaranteed to take effect unless the client +requests a new stream URI and restarts any affected streams. NVC methods for changing a +running stream are out of scope for this specification. + + + + + A video analytics configuration is modified using this command. The ForcePersistence flag +indicates if the changes shall remain after reboot of the device or not. Running streams using +this configuration shall be immediately updated according to the new settings. Otherwise +inconsistencies can occur between the scene description processed by the rule engine and +the notifications produced by analytics engine and rule engine which reference the very same +video analytics configuration token. + + + + + This operation modifies a metadata configuration. The ForcePersistence flag indicates if the +changes shall remain after reboot of the device. Changes in the Multicast settings shall +always be persistent. Running streams using this configuration may be updated immediately +according to the new settings. The changes are not guaranteed to take effect unless the client +requests a new stream URI and restarts any affected streams. NVC methods for changing a +running stream are out of scope for this specification. + + + + + This operation modifies an audio output configuration. The ForcePersistence flag indicates if +the changes shall remain after reboot of the device. + + + + + This operation modifies an audio decoder configuration. The ForcePersistence flag indicates if +the changes shall remain after reboot of the device. + + + + + + This operation returns the available options (supported values and ranges for video source configuration parameters) when the video source parameters are +reconfigured If a video source configuration is specified, the options shall concern that +particular configuration. If a media profile is specified, the options shall be compatible with +that media profile. + + + + + This operation returns the available options (supported values and ranges for video encoder + configuration parameters) when the video encoder parameters are reconfigured.
+ For JPEG, MPEG4 and H264 extension elements have been defined that provide additional information. A device must provide the + XxxOption information for all encodings supported and should additionally provide the corresponding XxxOption2 information.
+ This response contains the available video encoder configuration options. If a video encoder configuration is specified, + the options shall concern that particular configuration. If a media profile is specified, the options shall be + compatible with that media profile. If no tokens are specified, the options shall be considered generic for the device. +
+ + +
+ + This operation returns the available options (supported values and ranges for audio source configuration parameters) when the audio source parameters are +reconfigured. If an audio source configuration is specified, the options shall concern that +particular configuration. If a media profile is specified, the options shall be compatible with +that media profile. + + + + + This operation returns the available options (supported values and ranges for audio encoder configuration parameters) when the audio encoder parameters are +reconfigured. + + + + + This operation returns the available options (supported values and ranges for metadata configuration parameters) for changing the metadata configuration. + + + + + This operation returns the available options (supported values and ranges for audio output configuration parameters) for configuring an audio output. + + + + + This command list the audio decoding capabilities for a given profile and configuration of a +device. + + + + + + The GetGuaranteedNumberOfVideoEncoderInstances command can be used to request the +minimum number of guaranteed video encoder instances (applications) per Video Source +Configuration. + + + + + + This operation requests a URI that can be used to initiate a live media stream using RTSP as +the control protocol. The returned URI shall remain valid indefinitely even if the profile is +changed. The ValidUntilConnect, ValidUntilReboot and Timeout Parameter shall be set +accordingly (ValidUntilConnect=false, ValidUntilReboot=false, timeout=PT0S).
+ The correct syntax for the StreamSetup element for these media stream setups defined in 5.1.1 of the streaming specification are as follows: +
    +
  1. RTP unicast over UDP: StreamType = "RTP_unicast", TransportProtocol = "UDP"
  2. +
  3. RTP over RTSP over HTTP over TCP: StreamType = "RTP_unicast", TransportProtocol = "HTTP"
  4. +
  5. RTP over RTSP over TCP: StreamType = "RTP_unicast", TransportProtocol = "RTSP"
  6. +
+
+If a multicast stream is requested the VideoEncoderConfiguration, AudioEncoderConfiguration and MetadataConfiguration element inside the corresponding +media profile must be configured with valid multicast settings.
+For full compatibility with other ONVIF services a device should not generate Uris longer than +128 octets.
+ + +
+ + This command starts multicast streaming using a specified media profile of a device. +Streaming continues until StopMulticastStreaming is called for the same Profile. The +streaming shall continue after a reboot of the device until a StopMulticastStreaming request is +received. The multicast address, port and TTL are configured in the +VideoEncoderConfiguration, AudioEncoderConfiguration and MetadataConfiguration +respectively. + + + + + This command stop multicast streaming using a specified media profile of a device + + + + + Synchronization points allow clients to decode and correctly use all data after the +synchronization point. +For example, if a video stream is configured with a large I-frame distance and a client loses a +single packet, the client does not display video until the next I-frame is transmitted. In such +cases, the client can request a Synchronization Point which enforces the device to add an I-Frame as soon as possible. Clients can request Synchronization Points for profiles. The device +shall add synchronization points for all streams associated with this profile. +Similarly, a synchronization point is used to get an update on full PTZ or event status through +the metadata stream. +If a video stream is associated with the profile, an I-frame shall be added to this video stream. +If a PTZ metadata stream is associated to the profile, +the PTZ position shall be repeated within the metadata stream. + + + + + A client uses the GetSnapshotUri command to obtain a JPEG snapshot from the +device. The returned URI shall remain valid indefinitely even if the profile is changed. The +ValidUntilConnect, ValidUntilReboot and Timeout Parameter shall be set accordingly +(ValidUntilConnect=false, ValidUntilReboot=false, timeout=PT0S). The URI can be used for +acquiring a JPEG image through a HTTP GET operation. The image encoding will always be +JPEG regardless of the encoding setting in the media profile. The Jpeg settings +(like resolution or quality) may be taken from the profile if suitable. The provided +image will be updated automatically and independent from calls to GetSnapshotUri. + + + + + A device returns the information for current video source mode and settable video source modes of specified video source. A device that indicates a capability of VideoSourceModes shall support this command. + + + + + SetVideoSourceMode changes the media profile structure relating to video source for the specified video source mode. A device that indicates a capability of VideoSourceModes shall support this command. The behavior after changing the mode is not defined in this specification. + + + + + + Get the OSDs. + + + + + Get the OSD. + + + + + Get the OSD Options. + + + + + Set the OSD + + + + + Create the OSD. + + + + + Delete the OSD. + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/deps/lib/python3.10/site-packages/onvif/wsdl/onvif.xsd b/deps/lib/python3.10/site-packages/onvif/wsdl/onvif.xsd new file mode 100644 index 0000000..7ca17e2 --- /dev/null +++ b/deps/lib/python3.10/site-packages/onvif/wsdl/onvif.xsd @@ -0,0 +1,8551 @@ + + + + + + + + + + + + + + Base class for physical entities like inputs and outputs. + + + + Unique identifier referencing the physical entity. + + + + + + + Unique identifier for a physical or logical resource. + Tokens should be assigned such that they are unique within a device. Tokens must be at least unique within its class. + Length up to 64 characters. + + + + + + + + + User readable name. Length up to 64 characters. + + + + + + + + + Rectangle defined by lower left corner position and size. Units are pixel. + + + + + + + + + + Range of a rectangle. The rectangle itself is defined by lower left corner position and size. Units are pixel. + + + + + Range of X-axis. + + + + + Range of Y-axis. + + + + + Range of width. + + + + + Range of height. + + + + + + + + Range of values greater equal Min value and less equal Max value. + + + + + + + + + + Range of values greater equal Min value and less equal Max value. + + + + + + + + + + Range of duration greater equal Min duration and less equal Max duration. + + + + + + + + + + List of values. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Representation of a physical video input. + + + + + + + Frame rate in frames per second. + + + + + Horizontal and vertical resolution + + + + + Optional configuration of the image sensor. + + + + + + + + + + + + + + + Optional configuration of the image sensor. To be used if imaging service 2.00 is supported. + + + + + + + + + + + + + + + Representation of a physical audio input. + + + + + + + number of available audio channels. (1: mono, 2: stereo) + + + + + + + + + + + + + A media profile consists of a set of media configurations. Media profiles are used by a client + to configure properties of a media stream from an NVT.
+ An NVT shall provide at least one media profile at boot. An NVT should provide “ready to use” + profiles for the most common media configurations that the device offers.
+ A profile consists of a set of interconnected configuration entities. Configurations are provided + by the NVT and can be either static or created dynamically by the NVT. For example, the + dynamic configurations can be created by the NVT depending on current available encoding + resources. +
+
+ + + + User readable name of the profile. + + + + + Optional configuration of the Video input. + + + + + Optional configuration of the Audio input. + + + + + Optional configuration of the Video encoder. + + + + + Optional configuration of the Audio encoder. + + + + + Optional configuration of the video analytics module and rule engine. + + + + + Optional configuration of the pan tilt zoom unit. + + + + + Optional configuration of the metadata stream. + + + + + Extensions defined in ONVIF 2.0 + + + + + + Unique identifier of the profile. + + + + + A value of true signals that the profile cannot be deleted. Default is false. + + + +
+ + + + + + + Optional configuration of the Audio output. + + + + + Optional configuration of the Audio decoder. + + + + + + + + + + + + + + + + + + + + + + + + + + Base type defining the common properties of a configuration. + + + + + User readable name. Length up to 64 characters. + + + + + Number of internal references currently using this configuration.
This parameter is read-only and cannot be changed by a set request.
For example the value increases if the configuration is added to a media profile or attached to a PaneConfiguration.
+
+
+
+ + + Token that uniquely refernces this configuration. Length up to 64 characters. + + +
+ + + + + + + + + + Reference to the physical input. + + + + + Rectangle specifying the Video capturing area. The capturing area shall not be larger than the whole Video source area. + + + + + + + + + + + + + + + Optional element to configure rotation of captured image. + + + + + + + + + + + + + + + + + Parameter to enable/disable Rotation feature. + + + + + Optional parameter to configure how much degree of clockwise rotation of image for On mode. Omitting this parameter for On mode means 180 degree rotation. + + + + + + + + + + + + + + + + + + + + + + + + + + Supported range for the capturing area. + + + + + List of physical inputs. + + + + + + + + + + + + + Options of parameters for Rotation feature. + + + + + + + + + + + + + + + + + Supported options of Rotate mode parameter. + + + + + List of supported degree value for rotation. + + + + + + + + + + + + + + + + + + + + + + Used video codec, either Jpeg, H.264 or Mpeg4 + + + + + Configured video resolution + + + + + Relative value for the video quantizers and the quality of the video. A high value within supported quality range means higher quality + + + + + Optional element to configure rate control related parameters. + + + + + Optional element to configure Mpeg4 related parameters. + + + + + Optional element to configure H.264 related parameters. + + + + + Defines the multicast settings that could be used for video streaming. + + + + + The rtsp session timeout for the related video stream + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Number of the columns of the Video image. + + + + + Number of the lines of the Video image. + + + + + + + + + + Maximum output framerate in fps. If an EncodingInterval is provided the resulting encoded framerate will be reduced by the given factor. + + + + + Interval at which images are encoded and transmitted. (A value of 1 means that every frame is encoded, a value of 2 means that every 2nd frame is encoded ...) + + + + + the maximum output bitrate in kbps + + + + + + + + + + Determines the interval in which the I-Frames will be coded. An entry of 1 indicates I-Frames are continuously generated. An entry of 2 indicates that every 2nd image is an I-Frame, and 3 only every 3rd frame, etc. The frames in between are coded as P or B Frames. + + + + + the Mpeg4 profile, either simple profile (SP) or advanced simple profile (ASP) + + + + + + + + + + Group of Video frames length. Determines typically the interval in which the I-Frames will be coded. An entry of 1 indicates I-Frames are continuously generated. An entry of 2 indicates that every 2nd image is an I-Frame, and 3 only every 3rd frame, etc. The frames in between are coded as P or B Frames. + + + + + the H.264 profile, either baseline, main, extended or high + + + + + + + + + + Range of the quality values. A high value means higher quality. + + + + + Optional JPEG encoder settings ranges (See also Extension element). + + + + + Optional MPEG-4 encoder settings ranges (See also Extension element). + + + + + Optional H.264 encoder settings ranges (See also Extension element). + + + + + + + + + + + + + Optional JPEG encoder settings ranges. + + + + + Optional MPEG-4 encoder settings ranges. + + + + + Optional H.264 encoder settings ranges. + + + + + + + + + + + + + + + + + List of supported image sizes. + + + + + Supported frame rate in fps (frames per second). + + + + + Supported encoding interval range. The encoding interval corresponds to the number of frames devided by the encoded frames. An encoding interval value of "1" means that all frames are encoded. + + + + + + + + + + + + Supported range of encoded bitrate in kbps. + + + + + + + + + + + + + + List of supported image sizes. + + + + + Supported group of Video frames length. This value typically corresponds to the I-Frame distance. + + + + + Supported frame rate in fps (frames per second). + + + + + Supported encoding interval range. The encoding interval corresponds to the number of frames devided by the encoded frames. An encoding interval value of "1" means that all frames are encoded. + + + + + List of supported MPEG-4 profiles. + + + + + + + + + + + + Supported range of encoded bitrate in kbps. + + + + + + + + + + + + + + List of supported image sizes. + + + + + Supported group of Video frames length. This value typically corresponds to the I-Frame distance. + + + + + Supported frame rate in fps (frames per second). + + + + + Supported encoding interval range. The encoding interval corresponds to the number of frames devided by the encoded frames. An encoding interval value of "1" means that all frames are encoded. + + + + + List of supported H.264 profiles. + + + + + + + + + + + + Supported range of encoded bitrate in kbps. + + + + + + + + + + + + + + + + + + Token of the Audio Source the configuration applies to + + + + + + + + + + + + + + Tokens of the audio source the configuration can be used for. + + + + + + + + + + + + + + + + + + + + + + Audio codec used for encoding the audio input (either G.711, G.726 or AAC) + + + + + The output bitrate in kbps. + + + + + The output sample rate in kHz. + + + + + Defines the multicast settings that could be used for video streaming. + + + + + The rtsp session timeout for the related audio stream + + + + + + + + + + + + + + + + + + + + + + list of supported AudioEncoderConfigurations + + + + + + + + + + + The enoding used for audio data (either G.711, G.726 or AAC) + + + + + List of supported bitrates in kbps for the specified Encoding + + + + + List of supported Sample Rates in kHz for the specified Encoding + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + optional element to configure which PTZ related data is to include in the metadata stream + + + + + Optional element to configure the streaming of events. A client might be interested in receiving all, + none or some of the events produced by the device:
    +
  • To get all events: Include the Events element but do not include a filter.
  • +
  • To get no events: Do not include the Events element.
  • +
  • To get only some events: Include the Events element and include a filter in the element.
  • +
+
+
+
+ + + Defines whether the streamed metadata will include metadata from the analytics engines (video, cell motion, audio etc.) + + + + + Defines the multicast settings that could be used for video streaming. + + + + + The rtsp session timeout for the related audio stream + + + + + +
+ +
+
+
+ + + + + + + + + + + + True if the metadata stream shall contain the PTZ status (IDLE, MOVING or UNKNOWN) + + + + + True if the metadata stream shall contain the PTZ position + + + + + + + + + Subcription handling in the same way as base notification subscription. + + + + + + + + + + + + + + + + + + + + + + + + + + + + True if the device is able to stream pan or tilt status information. + + + + + True if the device is able to stream zoom status inforamtion. + + + + + + True if the device is able to stream the pan or tilt position. + + + + + True if the device is able to stream zoom position information. + + + + + + + + + + + + + + + + + + Representation of a physical video outputs. + + + + + + + + Resolution of the display in Pixel. + + + + + Refresh rate of the display in Hertz. + + + + + Aspect ratio of the display as physical extent of width divided by height. + + + + + + + + + + + + + + + + + + + + + + + + Token of the Video Output the configuration applies to + + + + + + + + + + + + + + + + + + + + + + + + + If the device is able to decode Jpeg streams this element describes the supported codecs and configurations + + + + + If the device is able to decode H.264 streams this element describes the supported codecs and configurations + + + + + If the device is able to decode Mpeg4 streams this element describes the supported codecs and configurations + + + + + + + + + + + + List of supported H.264 Video Resolutions + + + + + List of supported H264 Profiles (either baseline, main, extended or high) + + + + + Supported H.264 bitrate range in kbps + + + + + Supported H.264 framerate range in fps + + + + + + + + + + + + List of supported Jpeg Video Resolutions + + + + + Supported Jpeg bitrate range in kbps + + + + + Supported Jpeg framerate range in fps + + + + + + + + + + + + List of supported Mpeg4 Video Resolutions + + + + + List of supported Mpeg4 Profiles (either SP or ASP) + + + + + Supported Mpeg4 bitrate range in kbps + + + + + Supported Mpeg4 framerate range in fps + + + + + + + + + + + + + + + + + + Representation of a physical audio outputs. + + + + + + + + + + + + + + + + + + + + Token of the phsycial Audio output. + + + + + + An audio channel MAY support different types of audio transmission. While for full duplex + operation no special handling is required, in half duplex operation the transmission direction + needs to be switched. + The optional SendPrimacy parameter inside the AudioOutputConfiguration indicates which + direction is currently active. An NVC can switch between different modes by setting the + AudioOutputConfiguration.
+ The following modes for the Send-Primacy are defined:
    +
  • www.onvif.org/ver20/HalfDuplex/Server + The server is allowed to send audio data to the client. The client shall not send + audio data via the backchannel to the NVT in this mode.
  • +
  • www.onvif.org/ver20/HalfDuplex/Client + The client is allowed to send audio data via the backchannel to the server. The + NVT shall not send audio data to the client in this mode.
  • +
  • www.onvif.org/ver20/HalfDuplex/Auto + It is up to the device how to deal with sending and receiving audio data.
  • +
+ Acoustic echo cancellation is out of ONVIF scope.
+
+
+ + + Volume setting of the output. The applicable range is defined via the option AudioOutputOptions.OutputLevelRange. + + + +
+ +
+
+
+ + + + + + + + Tokens of the physical Audio outputs (typically one). + + + + + + An audio channel MAY support different types of audio transmission. While for full duplex + operation no special handling is required, in half duplex operation the transmission direction + needs to be switched. + The optional SendPrimacy parameter inside the AudioOutputConfiguration indicates which + direction is currently active. An NVC can switch between different modes by setting the + AudioOutputConfiguration.
+ The following modes for the Send-Primacy are defined:
    +
  • www.onvif.org/ver20/HalfDuplex/Server + The server is allowed to send audio data to the client. The client shall not send + audio data via the backchannel to the NVT in this mode.
  • +
  • www.onvif.org/ver20/HalfDuplex/Client + The client is allowed to send audio data via the backchannel to the server. The + NVT shall not send audio data to the client in this mode.
  • +
  • www.onvif.org/ver20/HalfDuplex/Auto + It is up to the device how to deal with sending and receiving audio data.
  • +
+ Acoustic echo cancellation is out of ONVIF scope.
+
+
+ + + Minimum and maximum level range supported for this Output. + + + +
+ +
+ + + + + + The Audio Decoder Configuration does not contain any that parameter to configure the +decoding .A decoder shall decode every data it receives (according to its capabilities). + + + + + + + + + + + + + + + + + + If the device is able to decode AAC encoded audio this section describes the supported configurations + + + + + If the device is able to decode G711 encoded audio this section describes the supported configurations + + + + + If the device is able to decode G726 encoded audio this section describes the supported configurations + + + + + + + + + + + + List of supported bitrates in kbps + + + + + List of supported sample rates in kHz + + + + + + + + + + + + List of supported bitrates in kbps + + + + + List of supported sample rates in kHz + + + + + + + + + + + + List of supported bitrates in kbps + + + + + List of supported sample rates in kHz + + + + + + + + + + + + + + + + + + + + The multicast address (if this address is set to 0 no multicast streaming is enaled) + + + + + The RTP mutlicast destination port. A device may support RTCP. In this case the port value shall be even to allow the corresponding RTCP stream to be mapped to the next higher (odd) destination port number as defined in the RTSP specification. + + + + + In case of IPv6 the TTL value is assumed as the hop limit. Note that for IPV6 and administratively scoped IPv4 multicast the primary use for hop limit / TTL is to prevent packets from (endlessly) circulating and not limiting scope. In these cases the address contains the scope. + + + + + Read only property signalling that streaming is persistant. Use the methods StartMulticastStreaming and StopMulticastStreaming to switch its state. + + + + + + + + + + + + Defines if a multicast or unicast stream is requested + + + + + + + + + + + + + + + + + + + + Defines the network protocol for streaming, either UDP=RTP/UDP, RTSP=RTP/RTSP/TCP or HTTP=RTP/RTSP/HTTP/TCP + + + + + Optional element to describe further tunnel options. This element is normally not needed + + + + + + + + + + + + + + + + + + + Stable Uri to be used for requesting the media stream + + + + + Indicates if the Uri is only valid until the connection is established. The value shall be set to "false". + + + + + Indicates if the Uri is invalid after a reboot of the device. The value shall be set to "false". + + + + + Duration how long the Uri is valid. This parameter shall be set to PT0S to indicate that this stream URI is indefinitely valid even if the profile changes + + + + + + + + + + + + + + + + + + + + + + + + + Indicates if the scope is fixed or configurable. + + + + + Scope item URI. + + + + + + + + + + + + + + + + + + + + + + + + + Indicates whether or not an interface is enabled. + + + + + Network interface information + + + + + Link configuration. + + + + + IPv4 network interface configuration. + + + + + IPv6 network interface configuration. + + + + + + + + + + + + + + + + Extension point prepared for future 802.3 configuration. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Configured link settings. + + + + + Current active link settings. + + + + + Integer indicating interface type, for example: 6 is ethernet. + + + + + + + + + + Auto negotiation on/off. + + + + + Speed. + + + + + Duplex type, Half or Full. + + + + + + + + + + + + + + + + + For valid numbers, please refer to http://www.iana.org/assignments/ianaiftype-mib. + + + + + + + + + + Network interface name, for example eth0. + + + + + Network interface MAC address. + + + + + Maximum transmission unit. + + + + + + + + + + Indicates whether or not IPv6 is enabled. + + + + + IPv6 configuration. + + + + + + + + + + Indicates whether or not IPv4 is enabled. + + + + + IPv4 configuration. + + + + + + + + + + List of manually added IPv4 addresses. + + + + + Link local address. + + + + + IPv4 address configured by using DHCP. + + + + + Indicates whether or not DHCP is used. + + + + + + + + + + + + Indicates whether router advertisment is used. + + + + + DHCP configuration. + + + + + List of manually entered IPv6 addresses. + + + + + List of link local IPv6 addresses. + + + + + List of IPv6 addresses configured by using DHCP. + + + + + List of IPv6 addresses configured by using router advertisment. + + + + + + + + + + + + + + + + + + + + + + + + + + + Network protocol type string. + + + + + Indicates if the protocol is enabled or not. + + + + + The port that is used by the protocol. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Network host type: IPv4, IPv6 or DNS. + + + + + IPv4 address. + + + + + IPv6 address. + + + + + DNS name. + + + + + + + + + + + + + + + + + + Indicates if the address is an IPv4 or IPv6 address. + + + + + IPv4 address. + + + + + IPv6 address + + + + + + + + + + IPv4 address + + + + + Prefix/submask length + + + + + + + + + + + + + + IPv6 address + + + + + Prefix/submask length + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Indicates whether the hostname is obtained from DHCP or not. + + + + + Indicates the hostname. + + + + + + + + + + + + + + + + + + Indicates whether or not DNS information is retrieved from DHCP. + + + + + Search domain. + + + + + List of DNS addresses received from DHCP. + + + + + List of manually entered DNS addresses. + + + + + + + + + + + + + + + + + + Indicates if NTP information is to be retrieved by using DHCP. + + + + + List of NTP addresses retrieved by using DHCP. + + + + + List of manually entered NTP addresses. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Dynamic DNS type. + + + + + DNS name. + + + + + Time to live. + + + + + + + + + + + + + + + + + + + + + + + + + + Indicates whether or not an interface is enabled. + + + + + Link configuration. + + + + + Maximum transmission unit. + + + + + IPv4 network interface configuration. + + + + + IPv6 network interface configuration. + + + + + + + + + + + + + + + + + + + + + Indicates whether or not IPv6 is enabled. + + + + + Indicates whether router advertisment is used. + + + + + List of manually added IPv6 addresses. + + + + + DHCP configuration. + + + + + + + + + + Indicates whether or not IPv4 is enabled. + + + + + List of manually added IPv4 addresses. + + + + + Indicates whether or not DHCP is used. + + + + + + + + + + IPv4 address string. + + + + + IPv6 address string. + + + + + + + + + + Unique identifier of network interface. + + + + + Indicates whether the zero-configuration is enabled or not. + + + + + The zero-configuration IPv4 address(es) + + + + + + + + + + + + + Optional array holding the configuration for the second and possibly further interfaces. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + According to IEEE802.11-2007 H.4.1 the RSNA PSK consists of 256 bits, or 64 octets when represented in hex
+ Either Key or Passphrase shall be given, if both are supplied Key shall be used by the device and Passphrase ignored. +
+
+
+ + + + According to IEEE802.11-2007 H.4.1 a pass-phrase is a sequence of between 8 and 63 ASCII-encoded characters and + each character in the pass-phrase must have an encoding in the range of 32 to 126 (decimal),inclusive.
+ If only Passpharse is supplied the Key shall be derived using the algorithm described in IEEE802.11-2007 section H.4 +
+
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + See IEEE802.11 7.3.2.25.2 for details. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Analytics capabilities + + + + + Device capabilities + + + + + Event capabilities + + + + + Imaging capabilities + + + + + Media capabilities + + + + + PTZ capabilities + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Analytics service URI. + + + + + Indicates whether or not rules are supported. + + + + + Indicates whether or not modules are supported. + + + + + + + + + + + + Device service URI. + + + + + Network capabilities. + + + + + System capabilities. + + + + + I/O capabilities. + + + + + Security capabilities. + + + + + + + + + + + + + + + + + + Event service URI. + + + + + Indicates whether or not WS Subscription policy is supported. + + + + + Indicates whether or not WS Pull Point is supported. + + + + + Indicates whether or not WS Pausable Subscription Manager Interface is supported. + + + + + + + + + + + + Number of input connectors. + + + + + Number of relay outputs. + + + + + + + + + + + + + + + + + + + + + + + + + + + + Media service URI. + + + + + Streaming capabilities. + + + + + + + + + + + + + + + + + + + + + Indicates whether or not RTP multicast is supported. + + + + + Indicates whether or not RTP over TCP is supported. + + + + + Indicates whether or not RTP/RTSP/TCP is supported. + + + + + + + + + + + + + + + + + + Maximum number of profiles. + + + + + + + + + + + + Indicates whether or not IP filtering is supported. + + + + + Indicates whether or not zeroconf is supported. + + + + + Indicates whether or not IPv6 is supported. + + + + + Indicates whether or not is supported. + + + + + + + + + + + + + + + + + + + + + + + + + + Indicates whether or not TLS 1.1 is supported. + + + + + Indicates whether or not TLS 1.2 is supported. + + + + + Indicates whether or not onboard key generation is supported. + + + + + Indicates whether or not access policy configuration is supported. + + + + + Indicates whether or not WS-Security X.509 token is supported. + + + + + Indicates whether or not WS-Security SAML token is supported. + + + + + Indicates whether or not WS-Security Kerberos token is supported. + + + + + Indicates whether or not WS-Security REL token is supported. + + + + + + + + + + + + + + + + + + + + + EAP Methods supported by the device. The int values refer to the IANA EAP Registry. + + + + + + + + + + + + Indicates whether or not WS Discovery resolve requests are supported. + + + + + Indicates whether or not WS-Discovery Bye is supported. + + + + + Indicates whether or not remote discovery is supported. + + + + + Indicates whether or not system backup is supported. + + + + + Indicates whether or not system logging is supported. + + + + + Indicates whether or not firmware upgrade is supported. + + + + + Indicates supported ONVIF version(s). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Major version number. + + + + + Two digit minor version number (e.g. X.0.1 maps to "01" and X.2.1 maps to "21" where X stands for Major version number). + + + + + + + + + + Imaging service URI. + + + + + + + + + + + PTZ service URI. + + + + + + + + + + + + + + + + + + + + + + + + + + Indication that the SetLayout command supports only predefined layouts. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The address of the replay service. + + + + + + + + + + + + The address of the receiver service. + + + + + Indicates whether the device can receive RTP multicast streams. + + + + + Indicates whether the device can receive RTP/TCP streams + + + + + Indicates whether the device can receive RTP/RTSP/TCP streams. + + + + + The maximum number of receivers supported by the device. + + + + + The maximum allowed length for RTSP URIs. + + + + + + + + + + + + + Obsolete property. + + + + + + + + + + + + + + + + + + + + + + + Enumeration describing the available system log modes. + + + + + Indicates that a system log is requested. + + + + + Indicates that a access log is requested. + + + + + + + + + + The log information as attachment data. + + + + + The log information as character data. + + + + + + + + + + The support information as attachment data. + + + + + The support information as character data. + + + + + + + + + + base64 encoded binary data. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Enumeration describing the available factory default modes. + + + + + Indicates that a hard factory default is requested. + + + + + Indicates that a soft factory default is requested. + + + + + + + + + + Indicates that the date and time are set manually. + + + + + Indicates that the date and time are set through NTP + + + + + + + + General date time inforamtion returned by the GetSystemDateTime method. + + + + + Indicates if the time is set manully or through NTP. + + + + + Informative indicator whether daylight savings is currently on/off. + + + + + Timezone information in Posix format. + + + + + Current system date and time in UTC format. This field is mandatory since version 2.0. + + + + + Date and time in local format. + + + + + + + + + + + + + + + + + + + + + + + + + + Range is 1 to 12. + + + + + Range is 1 to 31. + + + + + + + + + + Range is 0 to 23. + + + + + Range is 0 to 59. + + + + + Range is 0 to 61 (typically 59). + + + + + + + + + The TZ format is specified by POSIX, please refer to POSIX 1003.1 section 8.3
+ Example: Europe, Paris TZ=CET-1CEST,M3.5.0/2,M10.5.0/3
+ CET = designation for standard time when daylight saving is not in force
+ -1 = offset in hours = negative so 1 hour east of Greenwich meridian
+ CEST = designation when daylight saving is in force ("Central European Summer Time")
+ , = no offset number between code and comma, so default to one hour ahead for daylight saving
+ M3.5.0 = when daylight saving starts = the last Sunday in March (the "5th" week means the last in the month)
+ /2, = the local time when the switch occurs = 2 a.m. in this case
+ M10.5.0 = when daylight saving ends = the last Sunday in October.
+ /3, = the local time when the switch occurs = 3 a.m. in this case
+
+
+ + + + Posix timezone string. + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Username string. + + + + + Password string. + + + + + User level string. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Certificate id. + + + + + base64 encoded DER representation of certificate. + + + + + + + + + + Certificate id. + + + + + Indicates whether or not a certificate is used in a HTTPS configuration. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Validity Range is from "NotBefore" to "NotAfter"; the corresponding DateTimeRange is from "From" to "Until" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + EAP Method type as defined in IANA EAP Registry. + + + + + + + + + + + + + + + + + + + + + Confgiuration information for TLS Method. + + + + + Password for those EAP Methods that require a password. The password shall never be returned on a get method. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 'Bistable' or 'Monostable' +
    +
  • Bistable – After setting the state, the relay remains in this state.
  • +
  • Monostable – After setting the state, the relay returns to its idle state after the specified time.
  • +
+
+
+
+ + + Time after which the relay returns to its idle state if it is in monostable mode. If the Mode field is set to bistable mode the value of the parameter can be ignored. + + + + + + 'open' or 'closed' +
    +
  • 'open' means that the relay is open when the relay state is set to 'inactive' through the trigger command and closed when the state is set to 'active' through the same command.
  • +
  • 'closed' means that the relay is closed when the relay state is set to 'inactive' through the trigger command and open when the state is set to 'active' through the same command.
  • +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A unique identifier that is used to reference PTZ Nodes. + + + + + + + A list of Coordinate Systems available for the PTZ Node. For each Coordinate System, the PTZ Node MUST specify its allowed range. + + + + + + + All preset operations MUST be available for this PTZ Node if one preset is supported. + + + + + + + A boolean operator specifying the availability of a home position. If set to true, the Home Position Operations MUST be available for this PTZ Node. + + + + + + + A list of supported Auxiliary commands. If the list is not empty, the Auxiliary Operations MUST be available for this PTZ Node. + + + + + + + + + Indication whether the HomePosition of a Node is fixed or it can be changed via the SetHomePosition command. + + + + + + + + + + + + + + + Detail of supported Preset Tour feature. + + + + + + + + + + + + + + + + + + Indicates number of preset tours that can be created. Required preset tour operations shall be available for this PTZ Node if one or more preset tour is supported. + + + + + Indicates which preset tour operations are available for this PTZ Node. + + + + + + + + + + + + + + + + + + + + + A mandatory reference to the PTZ Node that the PTZ Configuration belongs to. + + + + + + + If the PTZ Node supports absolute Pan/Tilt movements, it shall specify one Absolute Pan/Tilt Position Space as default. + + + + + + + If the PTZ Node supports absolute zoom movements, it shall specify one Absolute Zoom Position Space as default. + + + + + + + If the PTZ Node supports relative Pan/Tilt movements, it shall specify one RelativePan/Tilt Translation Space as default. + + + + + + + If the PTZ Node supports relative zoom movements, it shall specify one Relative Zoom Translation Space as default. + + + + + + + If the PTZ Node supports continuous Pan/Tilt movements, it shall specify one Continuous Pan/Tilt Velocity Space as default. + + + + + + + If the PTZ Node supports continuous zoom movements, it shall specify one Continuous Zoom Velocity Space as default. + + + + + + + If the PTZ Node supports absolute or relative PTZ movements, it shall specify corresponding default Pan/Tilt and Zoom speeds. + + + + + + + If the PTZ Node supports continuous movements, it shall specify a default timeout, after which the movement stops. + + + + + + + The Pan/Tilt limits element should be present for a PTZ Node that supports an absolute Pan/Tilt. If the element is present it signals the support for configurable Pan/Tilt limits. If limits are enabled, the Pan/Tilt movements shall always stay within the specified range. The Pan/Tilt limits are disabled by setting the limits to –INF or +INF. + + + + + + + The Zoom limits element should be present for a PTZ Node that supports absolute zoom. If the element is present it signals the supports for configurable Zoom limits. If limits are enabled the zoom movements shall always stay within the specified range. The Zoom limits are disabled by settings the limits to -INF and +INF. + + + + + + + + + + + + + + + + + + + + + Optional element to configure PT Control Direction related features. + + + + + + + + + + + + + + + + + Optional element to configure related parameters for E-Flip. + + + + + Optional element to configure related parameters for reversing of PT Control Direction. + + + + + + + + + + + + + + + + + + + Parameter to enable/disable E-Flip feature. + + + + + + + + + + + + Parameter to enable/disable Reverse feature. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A list of supported coordinate systems including their range limitations. + + + + + + + A timeout Range within which Timeouts are accepted by the PTZ Node. + + + + + + + Supported options for PT Direction Control. + + + + + + + + + + + + + + + + + + Supported options for EFlip feature. + + + + + Supported options for Reverse feature. + + + + + + + + + + + + + + + + + + Options of EFlip mode parameter. + + + + + + + + + + + + + + + + + + Options of Reverse mode parameter. + + + + + + + + + + + + + + + + + + + A range of pan tilt limits. + + + + + + + + + + + + A range of zoom limit + + + + + + + + + + + + The Generic Pan/Tilt Position space is provided by every PTZ node that supports absolute Pan/Tilt, since it does not relate to a specific physical range. + Instead, the range should be defined as the full range of the PTZ unit normalized to the range -1 to 1 resulting in the following space description. + + + + + + + The Generic Zoom Position Space is provided by every PTZ node that supports absolute Zoom, since it does not relate to a specific physical range. + Instead, the range should be defined as the full range of the Zoom normalized to the range 0 (wide) to 1 (tele). + There is no assumption about how the generic zoom range is mapped to magnification, FOV or other physical zoom dimension. + + + + + + + The Generic Pan/Tilt translation space is provided by every PTZ node that supports relative Pan/Tilt, since it does not relate to a specific physical range. + Instead, the range should be defined as the full positive and negative translation range of the PTZ unit normalized to the range -1 to 1, + where positive translation would mean clockwise rotation or movement in right/up direction resulting in the following space description. + + + + + + + The Generic Zoom Translation Space is provided by every PTZ node that supports relative Zoom, since it does not relate to a specific physical range. + Instead, the corresponding absolute range should be defined as the full positive and negative translation range of the Zoom normalized to the range -1 to1, + where a positive translation maps to a movement in TELE direction. The translation is signed to indicate direction (negative is to wide, positive is to tele). + There is no assumption about how the generic zoom range is mapped to magnification, FOV or other physical zoom dimension. This results in the following space description. + + + + + + + The generic Pan/Tilt velocity space shall be provided by every PTZ node, since it does not relate to a specific physical range. + Instead, the range should be defined as a range of the PTZ unit’s speed normalized to the range -1 to 1, where a positive velocity would map to clockwise + rotation or movement in the right/up direction. A signed speed can be independently specified for the pan and tilt component resulting in the following space description. + + + + + + + The generic zoom velocity space specifies a zoom factor velocity without knowing the underlying physical model. The range should be normalized from -1 to 1, + where a positive velocity would map to TELE direction. A generic zoom velocity space description resembles the following. + + + + + + + The speed space specifies the speed for a Pan/Tilt movement when moving to an absolute position or to a relative translation. + In contrast to the velocity spaces, speed spaces do not contain any directional information. The speed of a combined Pan/Tilt + movement is represented by a single non-negative scalar value. + + + + + + + The speed space specifies the speed for a Zoom movement when moving to an absolute position or to a relative translation. + In contrast to the velocity spaces, speed spaces do not contain any directional information. + + + + + + + + + + + + + + + + + + + + A URI of coordinate systems. + + + + + + + A range of x-axis. + + + + + + + A range of y-axis. + + + + + + + + + + + + A URI of coordinate systems. + + + + + + + A range of x-axis. + + + + + + + + + + + + + Pan/tilt coordinate space selector. The following options are defined:
    +
  • http://www.onvif.org/ver10/tptz/PanTiltSpaces/PositionGenericSpace
  • +
  • http://www.onvif.org/ver10/tptz/PanTiltSpaces/TranslationGenericSpace
  • +
  • http://www.onvif.org/ver10/tptz/PanTiltSpaces/VelocityGenericSpace
  • +
  • http://www.onvif.org/ver10/tptz/PanTiltSpaces/GenericSpeedSpace
  • +
+
+
+
+
+ + + + + + + Pan/tilt coordinate space selector. The following options are defined:
    +
  • http://www.onvif.org/ver10/tptz/PanTiltSpaces/PositionGenericSpace
  • +
  • http://www.onvif.org/ver10/tptz/PanTiltSpaces/TranslationGenericSpace
  • +
  • http://www.onvif.org/ver10/tptz/PanTiltSpaces/VelocityGenericSpace
  • +
  • http://www.onvif.org/ver10/tptz/PanTiltSpaces/GenericSpeedSpace
  • +
+
+
+
+
+ + + + + + Pan and tilt position. The x component corresponds to pan and the y component to tilt. + + + + + + A zoom position. + + + + + + + + + + + Pan and tilt speed. The x component corresponds to pan and the y component to tilt. If omitted in a request, the current (if any) PanTilt movement should not be affected. + + + + + + A zoom speed. If omitted in a request, the current (if any) Zoom movement should not be affected. + + + + + + + + + + + + Specifies the absolute position of the PTZ unit together with the Space references. The default absolute spaces of the corresponding PTZ configuration MUST be referenced within the Position element. + + + + + + + Indicates if the Pan/Tilt/Zoom device unit is currently moving, idle or in an unknown state. + + + + + + + States a current PTZ error. + + + + + + + Specifies the UTC time when this status was generated. + + + + + + + + + + + + + + A list of preset position name. + + + + + + + A list of preset position. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Readable name of the preset tour. + + + + + Read only parameters to indicate the status of the preset tour. + + + + + Auto Start flag of the preset tour. True allows the preset tour to be activated always. + + + + + Parameters to specify the detail behavior of the preset tour. + + + + + A list of detail of touring spots including preset positions. + + + + + + + Unique identifier of this preset tour. + + + + + + + + + + + + + + + + Detail definition of preset position of the tour spot. + + + + + Optional parameter to specify Pan/Tilt and Zoom speed on moving toward this tour spot. + + + + + Optional parameter to specify time duration of staying on this tour sport. + + + + + + + + + + + + + + + + + + + Option to specify the preset position with Preset Token defined in advance. + + + + + Option to specify the preset position with the home position of this PTZ Node. "False" to this parameter shall be treated as an invalid argument. + + + + + Option to specify the preset position with vector of PTZ node directly. + + + + + + + + + + + + + + + + + + + + Indicates state of this preset tour by Idle/Touring/Paused. + + + + + Indicates a tour spot currently staying. + + + + + + + + + + + + + + + + + + Optional parameter to specify how many times the preset tour is recurred. + + + + + Optional parameter to specify how long time duration the preset tour is recurred. + + + + + Optional parameter to choose which direction the preset tour goes. Forward shall be chosen in case it is omitted. + + + + + + + + + + + + + + + + + + Indicates whether or not the AutoStart is supported. + + + + + Supported options for Preset Tour Starting Condition. + + + + + Supported options for Preset Tour Spot. + + + + + + + + + + + + Supported options for detail definition of preset position of the tour spot. + + + + + Supported range of stay time for a tour spot. + + + + + + + + + + + + A list of available Preset Tokens for tour spots. + + + + + An option to indicate Home postion for tour spots. + + + + + Supported range of Pan and Tilt for tour spots. + + + + + Supported range of Zoom for a tour spot. + + + + + + + + + + + + + + + + + + Supported range of Recurring Time. + + + + + Supported range of Recurring Duration. + + + + + Supported options for Direction of Preset Tour. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Status of focus position. + + + + + + + Status of focus MoveStatus. + + + + + + + Error status of focus. + + + + + + + + + + + + + + + Parameter to set autofocus near limit (unit: meter). + + + + + Parameter to set autofocus far limit (unit: meter). +If set to 0.0, infinity will be used. + + + + + + + + + + + + + + + + + + + Enabled/disabled BLC mode (on/off). + + + + + Image brightness (unit unspecified). + + + + + Color saturation of the image (unit unspecified). + + + + + Contrast of the image (unit unspecified). + + + + + Exposure mode of the device. + + + + + Focus configuration. + + + + + Infrared Cutoff Filter settings. + + + + + Sharpness of the Video image. + + + + + WDR settings. + + + + + White balance settings. + + + + + + + + + + + + + + + + + + + Exposure Mode +
    +
  • Auto – Enabled the exposure algorithm on the NVT.
  • +
  • Manual – Disabled exposure algorithm on the NVT.
  • +
+
+
+
+ + + + The exposure priority mode (low noise/framerate). + + + + + + + Rectangular exposure mask. + + + + + + + Minimum value of exposure time range allowed to be used by the algorithm. + + + + + + + Maximum value of exposure time range allowed to be used by the algorithm. + + + + + + + Minimum value of the sensor gain range that is allowed to be used by the algorithm. + + + + + + + Maximum value of the sensor gain range that is allowed to be used by the algorithm. + + + + + + + Minimum value of the iris range allowed to be used by the algorithm. + + + + + + + Maximum value of the iris range allowed to be used by the algorithm. + + + + + + + The fixed exposure time used by the image sensor (μs). + + + + + + + The fixed gain used by the image sensor (dB). + + + + + + + The fixed attenuation of input light affected by the iris (dB). 0dB maps to a fully opened iris. + + + +
+
+ + + + + + + + + + + + + + White dynamic range (on/off) + + + + + + + Optional level parameter (unitless) + + + + + + + + + Enumeration describing the available backlight compenstation modes. + + + + + Backlight compensation is disabled. + + + + + Backlight compensation is enabled. + + + + + + + + + + Backlight compensation mode (on/off). + + + + + Optional level parameter (unit unspecified). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Parameters for the absolute focus control. + + + + + + + Parameters for the relative focus control. + + + + + + + Parameter for the continuous focus control. + + + + + + + + + + + + Position parameter for the absolute focus control. + + + + + + + Speed parameter for the absolute focus control. + + + + + + + + + + + + Distance parameter for the relative focus control. + + + + + + + Speed parameter for the relative focus control. + + + + + + + + + + + + Speed parameter for the Continuous focus control. + + + + + + + + + + + + + + + + + + + + Valid ranges of the position. + + + + + + + Valid ranges of the speed. + + + + + + + + + + + + Valid ranges of the distance. + + + + + + + Valid ranges of the speed. + + + + + + + + + + + + Valid ranges of the speed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Auto whitebalancing mode (auto/manual). + + + + + Rgain (unitless). + + + + + Bgain (unitless). + + + + + + + + + + + + + + + + + + Status of focus. + + + + + + + + + + + + + + + + + + + + Status of focus position. + + + + + + + Status of focus MoveStatus. + + + + + + + Error status of focus. + + + + + + + + + + + + + + + + + Type describing the ImagingSettings of a VideoSource. The supported options and ranges can be obtained via the GetOptions command. + + + + + Enabled/disabled BLC mode (on/off). + + + + + Image brightness (unit unspecified). + + + + + Color saturation of the image (unit unspecified). + + + + + Contrast of the image (unit unspecified). + + + + + Exposure mode of the device. + + + + + Focus configuration. + + + + + Infrared Cutoff Filter settings. + + + + + Sharpness of the Video image. + + + + + WDR settings. + + + + + White balance settings. + + + + + + + + + + + + + Optional element to configure Image Stabilization feature. + + + + + + + + + + + An optional parameter applied to only auto mode to adjust timing of toggling Ir cut filter. + + + + + + + + + + + + + + + + + Parameter to enable/disable Image Stabilization feature. + + + + + Optional level parameter (unit unspecified) + + + + + + + + + + + + + + + + + + + + + + + + + + + Specifies which boundaries to automatically toggle Ir cut filter following parameters are applied to. Its options shall be chosen from tt:IrCutFilterAutoBoundaryType. + + + + + Adjusts boundary exposure level for toggling Ir cut filter to on/off specified with unitless normalized value from +1.0 to -1.0. Zero is default and -1.0 is the darkest adjustment (Unitless). + + + + + Delay time of toggling Ir cut filter to on/off after crossing of the boundary exposure levels. + + + + + + + + + + + + + + + + + + + + + + + + + Type describing whether WDR mode is enabled or disabled (on/off). + + + + + Wide dynamic range mode (on/off). + + + + + Optional level parameter (unit unspecified). + + + + + + + + Type describing whether BLC mode is enabled or disabled (on/off). + + + + + Backlight compensation mode (on/off). + + + + + Optional level parameter (unit unspecified). + + + + + + + + Type describing the exposure settings. + + + + + + Exposure Mode +
    +
  • Auto – Enabled the exposure algorithm on the device.
  • +
  • Manual – Disabled exposure algorithm on the device.
  • +
+
+
+
+ + + + The exposure priority mode (low noise/framerate). + + + + + + + Rectangular exposure mask. + + + + + + + Minimum value of exposure time range allowed to be used by the algorithm. + + + + + + + Maximum value of exposure time range allowed to be used by the algorithm. + + + + + + + Minimum value of the sensor gain range that is allowed to be used by the algorithm. + + + + + + + Maximum value of the sensor gain range that is allowed to be used by the algorithm. + + + + + + + Minimum value of the iris range allowed to be used by the algorithm. + + + + + + + Maximum value of the iris range allowed to be used by the algorithm. + + + + + + + The fixed exposure time used by the image sensor (μs). + + + + + + + The fixed gain used by the image sensor (dB). + + + + + + + The fixed attenuation of input light affected by the iris (dB). 0dB maps to a fully opened iris. + + + +
+
+ + + + + + + Valid range of Backlight Compensation. + + + + + + + Valid range of Brightness. + + + + + + + Valid range of Color Saturation. + + + + + + + Valid range of Contrast. + + + + + + + Valid range of Exposure. + + + + + + + Valid range of Focus. + + + + + + + Valid range of IrCutFilterModes. + + + + + + + Valid range of Sharpness. + + + + + + + Valid range of WideDynamicRange. + + + + + + + Valid range of WhiteBalance. + + + + + + + + + + + + + + Options of parameters for Image Stabilization feature. + + + + + + + + + + + Options of parameters for adjustment of Ir cut filter auto mode. + + + + + + + + + + + + + + + + + Supported options of Image Stabilization mode parameter. + + + + + Valid range of the Image Stabilization. + + + + + + + + + + + + + + + + + + Supported options of boundary types for adjustment of Ir cut filter auto mode. The opptions shall be chosen from tt:IrCutFilterAutoBoundaryType. + + + + + Indicates whether or not boundary offset for toggling Ir cut filter is supported. + + + + + Supported range of delay time for toggling Ir cut filter. + + + + + + + + + + + + + + + + + + + + + + + + + + 'ON' or 'OFF' + + + + + + + Level range of BacklightCompensation. + + + + + + + + + + + + Exposure Mode +
    +
  • Auto – Enabled the exposure algorithm on the device.
  • +
  • Manual – Disabled exposure algorithm on the device.
  • +
+
+
+
+ + + + The exposure priority mode (low noise/framerate). + + + + + + + Valid range of the Minimum ExposureTime. + + + + + + + Valid range of the Maximum ExposureTime. + + + + + + + Valid range of the Minimum Gain. + + + + + + + Valid range of the Maximum Gain. + + + + + + + Valid range of the Minimum Iris. + + + + + + + Valid range of the Maximum Iris. + + + + + + + Valid range of the ExposureTime. + + + + + + + Valid range of the Gain. + + + + + + + Valid range of the Iris. + + + +
+
+ + + + + + + Valid ranges for the absolute control. + + + + + + + Valid ranges for the relative control. + + + + + + + Valid ranges for the continuous control. + + + + + + + + + + + + Valid ranges of the distance. + + + + + + + Valid ranges of the speed. + + + + + + + + + + + + 'AUTO' or 'MANUAL' + + + + + + + Rgain (unitless). + + + + + + + Bgain (unitless). + + + + + + + + + + + + + + + + + + + + Mode of auto fucus. +
    +
  • AUTO
  • +
  • MANUAL
  • +
+
+
+
+ + + + Parameter to set autofocus near limit (unit: meter). + + + + + Parameter to set autofocus far limit (unit: meter). + + + +
+ +
+ + + + + + + + + + + + + Mode of WhiteBalance. +
    +
  • AUTO
  • +
  • MANUAL
  • +
+
+
+
+ + + +
+
+ + + + + + + + + + + + + Mode of Auto Focus. +
    +
  • AUTO
  • +
  • MANUAL
  • +
+
+
+
+ + + + Valid range of DefaultSpeed. + + + + + + + Valid range of NearLimit. + + + + + + + Valid range of FarLimit. + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Token value pairs that triggered this message. Typically only one item is present. + + + + + + + + + + + + + + + + + + + + + + List of parameters according to the corresponding ItemListDescription. + Each item in the list shall have a unique name. + + + + + + Value name pair as defined by the corresponding description. + + + + + Item name. + + + + + Item value. The type is defined in the corresponding description. + + + + + + + Complex value structure. + + + + + + XML tree contiaing the element value as defined in the corresponding description. + + + + + + Item name. + + + + + + + + + + + + + + + + + + + + + + Set of tokens producing this message. The list may only contain SimpleItemDescription items. + The set of tokens identify the component within the WS-Endpoint, which is responsible for the producing the message.
+ For analytics events the token set shall include the VideoSourceConfigurationToken, the VideoAnalyticsConfigurationToken + and the name of the analytics module or rule. +
+
+
+ + + Describes optional message payload parameters that may be used as key. E.g. object IDs of tracked objects are conveyed as key. + + + + + Describes the payload of the message. + + + +
+ + + Must be set to true when the described Message relates to a property. An alternative term of "property" is a "state" in contrast to a pure event, which contains relevant information for only a single point in time.
Default is false.
+
+
+ +
+ + + + + + + + + + + Describes a list of items. Each item in the list shall have a unique name. + The list is designed as linear structure without optional or unbounded elements. + Use ElementItems only when complex structures are inevitable. + + + + + + Description of a simple item. The type must be of cathegory simpleType (xs:string, xs:integer, xs:float, ...). + + + + + Item name. Must be unique within a list. + + + + + + + + + Description of a complex type. The Type must reference a defined type. + + + + + + Item name. Must be unique within a list. + + + + + The type of the item. The Type must reference a defined type. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Object Class Type + + + + + A likelihood/probability that the corresponding object belongs to this class. The sum of the likelihoods shall NOT exceed 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Number of columns of the cell grid (x dimension) + + + + + Number of rows of the cell grid (y dimension) + + + + + A “1” denotes a cell where motion is detected and a “0” an empty cell. The first cell is in the upper left corner. Then the cell order goes first from left to right and then from up to down. If the number of cells is not a multiple of 8 the last byte is filled with zeros. The information is run length encoded according to Packbit coding in ISO 12369 (TIFF, Revision 6.0). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + List of configuration parameters as defined in the correspding description. + + + + + + Name of the configuration. + + + + + Type of the configuration represented by a unique QName. The Type characterizes a ConfigDescription defining the Parameters. + + + + + + + + + + List describing the configuration parameters. The names of the parameters must be unique. If possible SimpleItems + should be used to transport the information to ease parsing of dynamically defined messages by a client + application. + + + + + + + The analytics modules and rule engine produce Events, which must be listed within the Analytics Module Description. In order to do so + the structure of the Message is defined and consists of three groups: Source, Key, and Data. It is recommended to use SimpleItemDescriptions wherever applicable. + The name of all Items must be unique within all Items contained in any group of this Message. + Depending on the component multiple parameters or none may be needed to identify the component uniquely. + + + + + + + + + + The ParentTopic labels the message (e.g. "nn:RuleEngine/LineCrossing"). The real message can extend the ParentTopic + by for example the name of the instaniated rule (e.g. "nn:RuleEngine/LineCrossing/corssMyFirstLine"). + Even without knowing the complete topic name, the subscriber will be able to distiguish the + messages produced by different rule instances of the same type via the Source fields of the message. + There the name of the rule instance, which produced the message, must be listed. + + + + + + + + + + + + + XML Type of the Configuration (e.g. "tt::LineDetector"). + + + + + + + + + + + + + + + + Lists the location of all schemas that are referenced in the rules. + + + + + List of rules supported by the Video Analytics configuration.. + + + + + + + + + + + + + + + + + + It optionally contains a list of URLs that provide the location of schema files. + These schema files describe the types and elements used in the analytics module descriptions. + If the analytics module descriptions reference types or elements of the ONVIF schema file, + the ONVIF schema file MUST be explicitly listed. + + + + + + + + + + + + + + + + + + + Contains Polygon configuration for rule parameters + + + + + + + + + + + + Contains array of Polyline + + + + + + + + + + + + + + + + + + Contains PolylineArray configuration data + + + + + + + + + + + + Motion Expression data structure contains motion expression which is based on Scene Descriptor schema with XPATH syntax. The Type argument could allow introduction of different dialects + + + + + + + + + + + + + Contains Rule MotionExpression configuration + + + + + + + + + + + + Mapping of the cell grid to the Video frame. The cell grid is starting from the upper left corner and x dimension is going from left to right and the y dimension from up to down. + + + + + + + Number of columns of the cell grid (x dimension) + + + + + Number of rows of the cell grid (y dimension) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Configuration of the streaming and coding settings of a Video window. + + + + + Optional name of the pane configuration. + + + + + If the device has audio outputs, this element contains a pointer to the audio output that is associated with the pane. A client +can retrieve the available audio outputs of a device using the GetAudioOutputs command of the DeviceIO service. + + + + + If the device has audio sources, this element contains a pointer to the audio source that is associated with this pane. +The audio connection from a decoder device to the NVT is established using the backchannel mechanism. A client can retrieve the available audio sources of a device using the GetAudioSources command of the +DeviceIO service. + + + + + The configuration of the audio encoder including codec, bitrate +and sample rate. + + + + + A pointer to a Receiver that has the necessary information to receive + data from a Transmitter. This Receiver can be connected and the network video decoder displays the received data on the specified outputs. A client can retrieve the available Receivers using the + GetReceivers command of the Receiver Service. + + + + + A unique identifier in the display device. + + + + + + + + + + A pane layout describes one Video window of a display. It links a pane configuration to a region of the screen. + + + + + Reference to the configuration of the streaming and coding parameters. + + + + + Describes the location and size of the area on the monitor. The area coordinate values are espressed in normalized units [-1.0, 1.0]. + + + + + + + + + + A layout describes a set of Video windows that are displayed simultaniously on a display. + + + + + List of panes assembling the display layout. + + + + + + + + + + + + + + + + This type contains the Audio and Video coding capabilities of a display service. + + + + + If the device supports audio encoding this section describes the supported codecs and their configuration. + + + + + If the device supports audio decoding this section describes the supported codecs and their settings. + + + + + This section describes the supported video codesc and their configuration. + + + + + + + + + + The options supported for a display layout. + + + + + Lists the possible Pane Layouts of the Video Output + + + + + + + + + + + + + + + + Description of a pane layout describing a complete display layout. + + + + + List of areas assembling a layout. Coordinate values are in the range [-1.0, 1.0]. + + + + + + + + + + + + + + + + + + + + + + Description of a receiver, including its token and configuration. + + + + + + Unique identifier of the receiver. + + + + + Describes the configuration of the receiver. + + + + + + + + + + + Describes the configuration of a receiver. + + + + + + The following connection modes are defined: + + + + + Details of the URI to which the receiver should connect. + + + + + Stream connection parameters. + + + + + + + + + + + Specifies a receiver connection mode. + + + + + + The receiver connects on demand, as required by consumers of the media streams. + + + + + The receiver attempts to maintain a persistent connection to the configured endpoint. + + + + + The receiver does not attempt to connect. + + + + + This case should never happen. + + + + + + + + + Specifies the current connection state of the receiver. + + + + + + The receiver is not connected. + + + + + The receiver is attempting to connect. + + + + + The receiver is connected. + + + + + This case should never happen. + + + + + + + + + Contains information about a receiver's current state. + + + + + + The connection state of the receiver may have one of the following states: + + + + + Indicates whether or not the receiver was created automatically. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The earliest point in time where there is recorded data on the device. + + + + + The most recent point in time where there is recorded data on the device. + + + + + The device contains this many recordings. + + + + + + + + + + A structure for defining a limited scope when searching in recorded data. + + + + + A list of sources that are included in the scope. If this list is included, only data from one of these sources shall be searched. + + + + + A list of recordings that are included in the scope. If this list is included, only data from one of these recordings shall be searched. + + + + + An xpath expression used to specify what recordings to search. Only those recordings with an RecordingInformation structure that matches the filter shall be searched. + + + + + Extension point + + + + + + + + + + + + + + + + + + + + + + + + + The lower boundary of the PTZ volume to look for. + + + + + The upper boundary of the PTZ volume to look for. + + + + + If true, search for when entering the specified PTZ volume. + + + + + + + + + + + + + + + + + + + + + + + + The state of the search when the result is returned. Indicates if there can be more results, or if the search is completed. + + + + + A RecordingInformation structure for each found recording matching the search. + + + + + + + + + + The state of the search when the result is returned. Indicates if there can be more results, or if the search is completed. + + + + + A FindEventResult structure for each found event matching the search. + + + + + + + + + + The recording where this event was found. Empty string if no recording is associated with this event. + + + + + A reference to the track where this event was found. Empty string if no track is associated with this event. + + + + + The time when the event occured. + + + + + The description of the event. + + + + + If true, indicates that the event is a virtual event generated for this particular search session to give the state of a property at the start time of the search. + + + + + + + + + + + + The state of the search when the result is returned. Indicates if there can be more results, or if the search is completed. + + + + + A FindPTZPositionResult structure for each found PTZ position matching the search. + + + + + + + + + + A reference to the recording containing the PTZ position. + + + + + A reference to the metadata track containing the PTZ position. + + + + + The time when the PTZ position was valid. + + + + + The PTZ position. + + + + + + + + + + + + The state of the search when the result is returned. Indicates if there can be more results, or if the search is completed. + + + + + A FindMetadataResult structure for each found set of Metadata matching the search. + + + + + + + + + + A reference to the recording containing the metadata. + + + + + A reference to the metadata track containing the matching metadata. + + + + + The point in time when the matching metadata occurs in the metadata track. + + + + + + + + + + + + The search is queued and not yet started. + + + + + The search is underway and not yet completed. + + + + + The search has been completed and no new results will be found. + + + + + The state of the search is unknown. (This is not a valid response from GetSearchState.) + + + + + + + + + + + + + + + + Information about the source of the recording. This gives a description of where the data in the recording comes from. Since a single + recording is intended to record related material, there is just one source. It is indicates the physical location or the + major data source for the recording. Currently the recordingconfiguration cannot describe each individual data source. + + + + + + + + + Basic information about the track. Note that a track may represent a single contiguous time span or consist of multiple slices. + + + + + + + + + + + + A set of informative desciptions of a data source. The Search searvice allows a client to filter on recordings based on information in this structure. + + + + + + + Identifier for the source chosen by the client that creates the structure. + This identifier is opaque to the device. Clients may use any type of URI for this field. A device shall support at least 128 characters. + + + + + Informative user readable name of the source, e.g. "Camera23". A device shall support at least 20 characters. + + + + + Informative description of the physical location of the source, e.g. the coordinates on a map. + + + + + Informative description of the source. + + + + + URI provided by the service supplying data to be recorded. A device shall support at least 128 characters. + + + + + + + + + + + + + + + + + This case should never happen. + + + + + + + + + + + Type of the track: "Video", "Audio" or "Metadata". + The track shall only be able to hold data of that type. + + + + + Informative description of the contents of the track. + + + + + The start date and time of the oldest recorded data in the track. + + + + + The stop date and time of the newest recorded data in the track. + + + + + + + + + + + + + + + Placeholder for future extension. + + + + + + + + A set of media attributes valid for a recording at a point in time or for a time interval. + + + + + A reference to the recording that has these attributes. + + + + + A set of attributes for each track. + + + + + The attributes are valid from this point in time in the recording. + + + + + The attributes are valid until this point in time in the recording. Can be equal to 'From' to indicate that the attributes are only known to be valid for this particular point in time. + + + + + + + + + + + + The basic information about the track. Note that a track may represent a single contiguous time span or consist of multiple slices. + + + + + If the track is a video track, exactly one of this structure shall be present and contain the video attributes. + + + + + If the track is an audio track, exactly one of this structure shall be present and contain the audio attributes. + + + + + If the track is an metadata track, exactly one of this structure shall be present and contain the metadata attributes. + + + + + + + + + + + + + + + + + + + + + + Average bitrate in kbps. + + + + + The width of the video in pixels. + + + + + The height of the video in pixels. + + + + + Used video codec, either Jpeg, H.264 or Mpeg4 + + + + + Average framerate in frames per second. + + + + + + + + + + + + The bitrate in kbps. + + + + + Audio codec used for encoding the audio (either G.711, G.726 or AAC) + + + + + The sample rate in kHz. + + + + + + + + + + + + Indicates that there can be PTZ data in the metadata track in the specified time interval. + + + + + Indicates that there can be analytics data in the metadata track in the specified time interval. + + + + + Indicates that there can be notifications in the metadata track in the specified time interval. + + + + + + + List of all PTZ spaces active for recording. Note that events are only recorded on position changes and the actual point of recording may not necessarily contain an event of the specified type. + + + + + + + + + + + + + + + + + Information about the source of the recording. + + + + + Informative description of the source. + + + + + Sspecifies the maximum time that data in any track within the + recording shall be stored. The device shall delete any data older than the maximum retention + time. Such data shall not be accessible anymore. If the MaximumRetentionPeriod is set to 0, + the device shall not limit the retention time of stored data, except by resource constraints. + Whatever the value of MaximumRetentionTime, the device may automatically delete + recordings to free up storage space for new recordings. + + + + + + + + + + + + Type of the track. It shall be equal to the strings “Video”, + “Audio” or “Metadata”. The track shall only be able to hold data of that type. + + + + + Informative description of the track. + + + + + + + + + + + + Token of the recording. + + + + + Configuration of the recording. + + + + + List of tracks. + + + + + + + + + + + + Configuration of a track. + + + + + + + + + + + Token of the track. + + + + + Configuration of the track. + + + + + + + + + + + + Identifies the recording to which this job shall store the received data. + + + + + The mode of the job. If it is idle, nothing shall happen. If it is active, the device shall try + to obtain data from the receivers. A client shall use GetRecordingJobState to determine if data transfer is really taking place.
+ The only valid values for Mode shall be “Idle” and “Active”.
+
+
+ + + This shall be a non-negative number. If there are multiple recording jobs that store data to + the same track, the device will only store the data for the recording job with the highest + priority. The priority is specified per recording job, but the device shall determine the priority + of each track individually. If there are two recording jobs with the same priority, the device + shall record the data corresponding to the recording job that was activated the latest. + + + + + Source of the recording. + + + +
+ +
+ + + + + + + + + + + + + + + + This field shall be a reference to the source of the data. The type of the source + is determined by the attribute Type in the SourceToken structure. If Type is + http://www.onvif.org/ver10/schema/Receiver, the token is a ReceiverReference. In this case + the device shall receive the data over the network. If Type is + http://www.onvif.org/ver10/schema/Profile, the token identifies a media profile, instructing the + device to obtain data from a profile that exists on the local device. + + + + + If this field is TRUE, and if the SourceToken is omitted, the device + shall create a receiver object (through the receiver service) and assign the + ReceiverReference to the SourceToken field. When retrieving the RecordingJobConfiguration + from the device, the AutoCreateReceiver field shall never be present. + + + + + List of tracks associated with the recording. + + + + + + + + + + + + + + + + + + If the received RTSP stream contains multiple tracks of the same type, the + SourceTag differentiates between those Tracks. This field can be ignored in case of recording a local source. + + + + + The destination is the tracktoken of the track to which the device shall store the + received data. + + + + + + + + + + + + Identification of the recording that the recording job records to. + + + + + Holds the aggregated state over the whole RecordingJobInformation structure. + + + + + Identifies the data source of the recording job. + + + + + + + + + + + + + + + + + + + + + + Identifies the data source of the recording job. + + + + + Holds the aggregated state over all substructures of RecordingJobStateSource. + + + + + List of track items. + + + + + + + + + + + + + + + + + + + Identifies the track of the data source that provides the data. + + + + + Indicates the destination track. + + + + + Optionally holds an implementation defined string value that describes the error. + The string should be in the English language. + + + + + Provides the job state of the track. The valid + values of state shall be “Idle”, “Active” and “Error”. If state equals “Error”, the Error field may be filled in with an implementation defined value. + + + + + + + + + + + + + + + + + + + + + + + + + + Configuration parameters for the replay service. + + + + + + The RTSP session timeout. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Token of the analytics engine (AnalyticsEngine) being controlled. + + + + + Token of the analytics engine configuration (VideoAnalyticsConfiguration) in effect. + + + + + Tokens of the input (AnalyticsEngineInput) configuration applied. + + + + + Tokens of the receiver providing media input data. The order of ReceiverToken shall exactly match the order of InputToken. + + + + + + + + + + + + + + + + + + + This case should never happen. + + + + + + + + + + Token of the control object whose status is requested. + + + + + + + + + + + + + + + + + + + + + + + + + + Action Engine Event Payload data structure contains the information about the ONVIF command invocations. Since this event could be generated by other or proprietary actions, the command invocation specific fields are defined as optional and additional extension mechanism is provided for future or additional action definitions. + + + + + Request Message + + + + + Response Message + + + + + Fault Message + + + + + + + + + + + + + + + + + + + + + + + AudioClassType acceptable values are; + gun_shot, scream, glass_breaking, tire_screech + + + + + + + + + + Indicates audio class label + + + + + A likelihood/probability that the corresponding audio event belongs to this class. The sum of the likelihoods shall NOT exceed 1 + + + + + + + + + + + + Array of audio class label and class probability + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + For OSD position type, following are the pre-defined:
  • UpperLeft
  • +
  • UpperRight
  • +
  • LowerLeft
  • +
  • LowerRight
  • +
  • Custom
+
+
+
+ + +
+ +
+ + + + + + + + + + + The value range of "Transparent" could be defined by vendors only should follow this rule: the minimum value means non-transparent and the maximum value maens fully transparent. + + + + + + + + + + + + + + The following OSD Text Type are defined:
    +
  • Plain - The Plain type means the OSD is shown as a text string which defined in the "PlainText" item.
  • +
  • Date - The Date type means the OSD is shown as a date, format of which should be present in the "DateFormat" item.
  • +
  • Time - The Time type means the OSD is shown as a time, format of which should be present in the "TimeFormat" item.
  • +
  • DateAndTime - The DateAndTime type means the OSD is shown as date and time, format of which should be present in the "DateFormat" and the "TimeFormat" item.
  • +
+
+
+
+ + + + List of supported OSD date formats. This element shall be present when the value of Type field has Date or DateAndTime. The following DateFormat are defined:
    +
  • M/d/yyyy - e.g. 3/6/2013
  • +
  • MM/dd/yyyy - e.g. 03/06/2013
  • +
  • dd/MM/yyyy - e.g. 06/03/2013
  • +
  • yyyy/MM/dd - e.g. 2013/03/06
  • +
  • yyyy-MM-dd - e.g. 2013-06-03
  • +
  • dddd, MMMM dd, yyyy - e.g. Wednesday, March 06, 2013
  • +
  • MMMM dd, yyyy - e.g. March 06, 2013
  • +
  • dd MMMM, yyyy - e.g. 06 March, 2013
  • +
+
+
+
+ + + + List of supported OSD time formats. This element shall be present when the value of Type field has Time or DateAndTime. The following TimeFormat are defined:
    +
  • h:mm:ss tt - e.g. 2:14:21 PM
  • +
  • hh:mm:ss tt - e.g. 02:14:21 PM
  • +
  • H:mm:ss - e.g. 14:14:21
  • +
  • HH:mm:ss - e.g. 14:14:21
  • +
+
+
+
+ + + Font size of the text in pt. + + + + + Font color of the text. + + + + + Background color of the text. + + + + + The content of text to be displayed. + + + +
+ +
+ + + + + + + + + + + + + The URI of the image which to be displayed. + + + + + + + + + + + + + + + + + + + + + + + + + + + Describe the option of the color supported. Either list each color or define the range of color value. The following values are acceptable for Colourspace attribute.
  • http://www.onvif.org/ver10/colorspace/YCbCr - YCbCr colourspace
  • +
  • http://www.onvif.org/ver10/colorspace/CIELUV - CIE LUV
  • +
  • http://www.onvif.org/ver10/colorspace/CIELAB - CIE 1976 (L*a*b*)
  • +
  • http://www.onvif.org/ver10/colorspace/HSV - HSV colourspace
+
+
+ + + + + List the supported color. + + + + + Define the rang of color supported. + + + + + +
+ + + + Describe the option of the color and its transparency. + + + + + Optional list of supported colors. + + + + + Range of the transparent level. Larger means more tranparent. + + + + + + + + + + + + + + + + + + + List of supported OSD text type. When a device indicates the supported number relating to Text type in MaximumNumberOfOSDs, the type shall be presented. + + + + + Range of the font size value. + + + + + List of supported date format. + + + + + List of supported time format. + + + + + List of supported font color. + + + + + List of supported background color. + + + + + + + + + + + + + + + + + + + List of avaiable uris of image. + + + + + + + + + + + + + + + + + + + + + Reference to the video source configuration. + + + + + Type of OSD. + + + + + Position configuration of OSD. + + + + + Text configuration of OSD. It shall be present when the value of Type field is Text. + + + + + Image configuration of OSD. It shall be present when the value of Type field is Image + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The maximum number of OSD configurations supported for the specificate video source configuration. If a device limits the number of instances by OSDType, it should indicate the supported number via the related attribute. + + + + + List supported type of OSD configuration. When a device indicates the supported number for each types in MaximumNumberOfOSDs, related type shall be presented. A device shall return Option element relating to listed type. + + + + + List available OSD position type. Following are the pre-defined:
  • UpperLeft
  • +
  • UpperRight
  • +
  • LowerLeft
  • +
  • LowerRight
  • +
  • Custom
+
+
+
+ + + Option of the OSD text configuration. This element shall be returned if the device is signaling the support for Text. + + + + + Option of the OSD image configuration. This element shall be returned if the device is signaling the support for Image. + + + +
+ +
+ + + + + + + + + + +
diff --git a/deps/lib/python3.10/site-packages/onvif/wsdl/ptz.wsdl b/deps/lib/python3.10/site-packages/onvif/wsdl/ptz.wsdl new file mode 100644 index 0000000..034b839 --- /dev/null +++ b/deps/lib/python3.10/site-packages/onvif/wsdl/ptz.wsdl @@ -0,0 +1,1297 @@ + + + + + + + + + + + + + + + + + + + + The capabilities for the PTZ service is returned in the Capabilities element. + + + + + + + + + + + + + Indicates whether or not EFlip is supported. + + + + + Indicates whether or not reversing of PT control direction is supported. + + + + + Indicates support for the GetCompatibleConfigurations command. + + + + + + + + + + + + + + + A list of the existing PTZ Nodes on the device. + + + + + + + + + + + + + Token of the requested PTZNode. + + + + + + + + + + + + A requested PTZNode. + + + + + + + + + + + + + + + + A list of all existing PTZConfigurations on the device. + + + + + + + + + + + + + Token of the requested PTZConfiguration. + + + + + + + + + + + + A requested PTZConfiguration. + + + + + + + + + + + + + + + + + + + Flag that makes configuration persistent. Example: User wants the configuration to exist after reboot. + + + + + + + + + + + + + + + + + + Token of an existing configuration that the options are intended for. + + + + + + + + + + + + The requested PTZ configuration options. + + + + + + + + + + + + + A reference to the MediaProfile where the operation should take place. + + + + + + The Auxiliary request data. + + + + + + + + + + + + The response contains the auxiliary response. + + + + + + + + + + + + + A reference to the MediaProfile where the operation should take place. + + + + + + + + + + + + A list of presets which are available for the requested MediaProfile. + + + + + + + + + + + + + A reference to the MediaProfile where the operation should take place. + + + + + + A requested preset name. + + + + + + A requested preset token. + + + + + + + + + + + + A token to the Preset which has been set. + + + + + + + + + + + + + A reference to the MediaProfile where the operation should take place. + + + + + + A requested preset token. + + + + + + + + + + + + + + + + A reference to the MediaProfile where the operation should take place. + + + + + + A requested preset token. + + + + + + A requested speed.The speed parameter can only be specified when Speed Spaces are available for the PTZ Node. + + + + + + + + + + + + + + + + A reference to the MediaProfile where the PTZStatus should be requested. + + + + + + + + + + + + The PTZStatus for the requested MediaProfile. + + + + + + + + + + + + + A reference to the MediaProfile where the operation should take place. + + + + + + A requested speed.The speed parameter can only be specified when Speed Spaces are available for the PTZ Node. + + + + + + + + + + + + + + + + + + A reference to the MediaProfile where the home position should be set. + + + + + + + + + + + + + + + + + + A reference to the MediaProfile. + + + + + + A Velocity vector specifying the velocity of pan, tilt and zoom. + + + + + + An optional Timeout parameter. + + + + + + + + + + + + + + + + + + A reference to the MediaProfile. + + + + + + A positional Translation relative to the current position + + + + + + An optional Speed parameter. + + + + + + + + + + + + + + + + + + A reference to the MediaProfile. + + + + + + A Position vector specifying the absolute target position. + + + + + + An optional Speed. + + + + + + + + + + + + + + + + + + A reference to the MediaProfile that indicate what should be stopped. + + + + + + Set true when we want to stop ongoing pan and tilt movements.If PanTilt arguments are not present, this command stops these movements. + + + + + + Set true when we want to stop ongoing zoom movement.If Zoom arguments are not present, this command stops ongoing zoom movement. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Contains the token of an existing media profile the configurations shall be compatible with. + + + + + + + + + + + A list of all existing PTZConfigurations on the NVT that is suitable to be added to the addressed media profile. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Returns the capabilities of the PTZ service. The result is returned in a typed answer. + + + + + + Get the descriptions of the available PTZ Nodes. +
+ A PTZ-capable device may have multiple PTZ Nodes. The PTZ Nodes may represent + mechanical PTZ drivers, uploaded PTZ drivers or digital PTZ drivers. PTZ Nodes are the + lowest level entities in the PTZ control API and reflect the supported PTZ capabilities. The + PTZ Node is referenced either by its name or by its reference token. +
+ + +
+ + Get a specific PTZ Node identified by a reference + token or a name. + + + + + + Get a specific PTZonfiguration from the device, identified by its reference token or name. +
+ The default Position/Translation/Velocity Spaces are introduced to allow NVCs sending move + requests without the need to specify a certain coordinate system. The default Speeds are + introduced to control the speed of move requests (absolute, relative, preset), where no + explicit speed has been set.
+ The allowed pan and tilt range for Pan/Tilt Limits is defined by a two-dimensional space range + that is mapped to a specific Absolute Pan/Tilt Position Space. At least one Pan/Tilt Position + Space is required by the PTZNode to support Pan/Tilt limits. The limits apply to all supported + absolute, relative and continuous Pan/Tilt movements. The limits shall be checked within the + coordinate system for which the limits have been specified. That means that even if + movements are specified in a different coordinate system, the requested movements shall be + transformed to the coordinate system of the limits where the limits can be checked. When a + relative or continuous movements is specified, which would leave the specified limits, the PTZ + unit has to move along the specified limits. The Zoom Limits have to be interpreted + accordingly. +
+ + +
+ + + Get all the existing PTZConfigurations from the device. +
+ The default Position/Translation/Velocity Spaces are introduced to allow NVCs sending move + requests without the need to specify a certain coordinate system. The default Speeds are + introduced to control the speed of move requests (absolute, relative, preset), where no + explicit speed has been set.
+ The allowed pan and tilt range for Pan/Tilt Limits is defined by a two-dimensional space range + that is mapped to a specific Absolute Pan/Tilt Position Space. At least one Pan/Tilt Position + Space is required by the PTZNode to support Pan/Tilt limits. The limits apply to all supported + absolute, relative and continuous Pan/Tilt movements. The limits shall be checked within the + coordinate system for which the limits have been specified. That means that even if + movements are specified in a different coordinate system, the requested movements shall be + transformed to the coordinate system of the limits where the limits can be checked. When a + relative or continuous movements is specified, which would leave the specified limits, the PTZ + unit has to move along the specified limits. The Zoom Limits have to be interpreted + accordingly. +
+ + +
+ + + Set/update a existing PTZConfiguration on the device. + + + + + + + List supported coordinate systems including their range limitations. Therefore, the options + MAY differ depending on whether the PTZ Configuration is assigned to a Profile containing a + Video Source Configuration. In that case, the options may additionally contain coordinate + systems referring to the image coordinate system described by the Video Source + Configuration. If the PTZ Node supports continuous movements, it shall return a Timeout Range within + which Timeouts are accepted by the PTZ Node. + + + + + + + Operation to send auxiliary commands to the PTZ device + mapped by the PTZNode in the selected profile. The + operation is supported + if the AuxiliarySupported element of the PTZNode is true + + + + + + + Operation to request all PTZ presets for the PTZNode + in the selected profile. The operation is supported if there is support + for at least on PTZ preset by the PTZNode. + + + + + + The SetPreset command saves the current device position parameters so that the device can + move to the saved preset position through the GotoPreset operation. + In order to create a new preset, the SetPresetRequest contains no PresetToken. If creation is + successful, the Response contains the PresetToken which uniquely identifies the Preset. An + existing Preset can be overwritten by specifying the PresetToken of the corresponding Preset. + In both cases (overwriting or creation) an optional PresetName can be specified. The + operation fails if the PTZ device is moving during the SetPreset operation. + The device MAY internally save additional states such as imaging properties in the PTZ + Preset which then should be recalled in the GotoPreset operation. + + + + + + Operation to remove a PTZ preset for the Node in + the + selected profile. The operation is supported if the + PresetPosition + capability exists for teh Node in the + selected profile. + + + + + + + Operation to go to a saved preset position for the + PTZNode in the selected profile. The operation is supported if there is + support for at least on PTZ preset by the PTZNode. + + + + + + Operation to move the PTZ device to it's "home" position. The operation is supported if the HomeSupported element in the PTZNode is true. + + + + + Operation to save current position as the home position. + The SetHomePosition command returns with a failure if the “home” position is fixed and + cannot be overwritten. If the SetHomePosition is successful, it is possible to recall the + Home Position with the GotoHomePosition command. + + + + + Operation for continuous Pan/Tilt and Zoom movements. The operation is supported if the PTZNode supports at least one continuous Pan/Tilt or Zoom space. If the space argument is omitted, the default space set by the PTZConfiguration will be used. + + + + + Operation for Relative Pan/Tilt and Zoom Move. The operation is supported if the PTZNode supports at least one relative Pan/Tilt or Zoom space.
+ The speed argument is optional. If an x/y speed value is given it is up to the device to either use + the x value as absolute resoluting speed vector or to map x and y to the component speed. + If the speed argument is omitted, the default speed set by the PTZConfiguration will be used. +
+ + +
+ + + Operation to request PTZ status for the Node in the + selected profile. + + + + + Operation to move pan,tilt or zoom to a absolute destination.
+ The speed argument is optional. If an x/y speed value is given it is up to the device to either use + the x value as absolute resoluting speed vector or to map x and y to the component speed. + If the speed argument is omitted, the default speed set by the PTZConfiguration will be used. +
+ + +
+ + Operation to stop ongoing pan, tilt and zoom movements of absolute relative and continuous type. +If no stop argument for pan, tilt or zoom is set, the device will stop all ongoing pan, tilt and zoom movements. + + + + + Operation to request PTZ preset tours in the selected media profiles. + + + + + Operation to request a specific PTZ preset tour in the selected media profile. + + + + + Operation to request available options to configure PTZ preset tour. + + + + + Operation to create a preset tour for the selected media profile. + + + + + Operation to modify a preset tour for the selected media profile. + + + + + Operation to perform specific operation on the preset tour in selected media profile. + + + + + Operation to delete a specific preset tour from the media profile. + + + + + Operation to get all available PTZConfigurations that can be added to the referenced media profile.
+ A device providing more than one PTZConfiguration or more than one VideoSourceConfiguration or which has any other resource + interdependency between PTZConfiguration entities and other resources listable in a media profile should implement this operation. + PTZConfiguration entities returned by this operation shall not fail on adding them to the referenced media profile. +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/deps/lib/python3.10/site-packages/onvif/wsdl/r-2.xsd b/deps/lib/python3.10/site-packages/onvif/wsdl/r-2.xsd new file mode 100644 index 0000000..afc8cc1 --- /dev/null +++ b/deps/lib/python3.10/site-packages/onvif/wsdl/r-2.xsd @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/deps/lib/python3.10/site-packages/onvif/wsdl/receiver.wsdl b/deps/lib/python3.10/site-packages/onvif/wsdl/receiver.wsdl new file mode 100644 index 0000000..de02891 --- /dev/null +++ b/deps/lib/python3.10/site-packages/onvif/wsdl/receiver.wsdl @@ -0,0 +1,403 @@ + + + + + + + + + + + + + + + + + + + + The capabilities for the receiver service is returned in the Capabilities element. + + + + + + + + + + + + + Indicates that the device can receive RTP multicast streams. + + + + + Indicates that the device can receive RTP/TCP streams + + + + + Indicates that the device can receive RTP/RTSP/TCP streams. + + + + + The maximum number of receivers supported by the device. + + + + + The maximum allowed length for RTSP URIs (Minimum and default value is 128 octet). + + + + + + + + + + + + + + + + + + A list of all receivers that currently exist on the device. + + + + + + + + + + + The token of the receiver to be retrieved. + + + + + + + + + + + The details of the receiver. + + + + + + + + + + + The initial configuration for the new receiver. + + + + + + + + + + + The details of the receiver that was created. + + + + + + + + + + + The token of the receiver to be deleted. + + + + + + + + + + + + + + + + + The token of the receiver to be configured. + + + + + The new configuration for the receiver. + + + + + + + + + + + + + + + + + The token of the receiver to be changed. + + + + + The new receiver mode. Options available are: + + + + + + + + + + + + + + + + + The token of the receiver to be queried. + + + + + + + + + + + Description of the current receiver state. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Returns the capabilities of the receiver service. The result is returned in a typed answer. + + + + + + Lists all receivers currently present on a device. This operation is mandatory. + + + + + + + Retrieves the details of a specific receiver. This operation is mandatory. + + + + + + + Creates a new receiver. This operation is mandatory, although the service may + raise a fault if the receiver cannot be created. + + + + + + + Deletes an existing receiver. A receiver may be deleted only if it is not + currently in use; otherwise a fault shall be raised. + This operation is mandatory. + + + + + + + Configures an existing receiver. This operation is mandatory. + + + + + + + Sets the mode of the receiver without affecting the rest of its configuration. + This operation is mandatory. + + + + + + + Determines whether the receiver is currently disconnected, connected or + attempting to connect. + This operation is mandatory. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/deps/lib/python3.10/site-packages/onvif/wsdl/recording.wsdl b/deps/lib/python3.10/site-packages/onvif/wsdl/recording.wsdl new file mode 100644 index 0000000..b92fcbb --- /dev/null +++ b/deps/lib/python3.10/site-packages/onvif/wsdl/recording.wsdl @@ -0,0 +1,934 @@ + + + + + + + + + + + + + + + + + + + + The capabilities for the recording service is returned in the Capabilities element. + + + + + + + + + + + + + Indication if the device supports dynamic creation and deletion of recordings + + + + + Indication if the device supports dynamic creation and deletion of tracks + + + + + Indication which encodings are supported for recording. The list may contain one or more enumeration values of tt:VideoEncoding and tt:AudioEncoding. If device does not support audio recording tt:AudioEncoding shall not be listed. + + + + + Maximum supported bit rate for all tracks of a recording in kBit/s. + + + + + Maximum supported bit rate for all recordings in kBit/s. + + + + + Maximum number of recordings supported. (Integer values only.) + + + + + Maximum total number of supported recording jobs by the device. + + + + + Indication if the device supports the GetRecordingOptions command. + + + + + Indication if the device supports recording metadata. + + + + + + + + + + + + + + + Initial configuration for the recording. + + + + + + + + + + + The reference to the created recording. + + + + + + + + + + + The reference of the recording to be deleted. + + + + + + + + + + + + + + + + + + + + + + + List of recording items. + + + + + + + + + + + Token of the recording that shall be changed. + + + + + The new configuration. + + + + + + + + + + + + + + + + + Token of the configuration to be retrieved. + + + + + + + + + + + Configuration of the recording. + + + + + + + + + + + Identifies the recording to which a track shall be added. + + + + + The configuration of the new track. + + + + + + + + + + + The TrackToken shall identify the newly created track. The + TrackToken shall be unique within the recoding to which + the new track belongs. + + + + + + + + + + + Token of the recording the track belongs to. + + + + + Token of the track to be deleted. + + + + + + + + + + + + + + + + + Token of the recording the track belongs to. + + + + + Token of the track. + + + + + + + + + + + Configuration of the track. + + + + + + + + + + + Token of the recording the track belongs to. + + + + + Token of the track to be modified. + + + + + New configuration for the track. + + + + + + + + + + + + + + + + + The initial configuration of the new recording job. + + + + + + + + + + + The JobToken shall identify the created recording job. + + + + + + The JobConfiguration structure shall be the configuration as it is used by the device. This may be different from the + JobConfiguration passed to CreateRecordingJob. + + + + + + + + + + + The token of the job to be deleted. + + + + + + + + + + + + + + + + + + + + + + + List of recording jobs. + + + + + + + + + + + Token of the job to be modified. + + + + + New configuration of the recording job. + + + + + + + + + + + The JobConfiguration structure shall be the configuration + as it is used by the device. This may be different from the JobConfiguration passed to SetRecordingJobConfiguration. + + + + + + + + + + + Token of the recording job. + + + + + + + + + + + Current configuration of the recording job. + + + + + + + + + + + Token of the recording job. + + + + + The new mode for the recording job. + + + + + + + + + + + + + + + + + Token of the recording job. + + + + + + + + + + + The current state of the recording job. + + + + + + + + + + + Token of the recording. + + + + + + + + + + + Configuration of the recording. + + + + + + + + + + + + + + + + + Number of spare jobs that can be created for the recording. + + + + + A device that supports recording of a restricted set of Media Service Profiles returns the list of profiles that can be recorded on the given Recording. + + + + + + + + Total spare number of tracks that can be added to this recording. + + + + + Number of spare Video tracks that can be added to this recording. + + + + + Number of spare Aduio tracks that can be added to this recording. + + + + + Number of spare Metadata tracks that can be added to this recording. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Returns the capabilities of the recording service. The result is returned in a typed answer. + + + + + CreateRecording shall create a new recording. The new recording shall be created with a track + for each supported TrackType see Recording Control Spec.
+ This method is optional. It shall be available if the Recording/DynamicRecordings capability is TRUE.
+ When successfully completed, CreateRecording shall have created three tracks with the following configurations:
    +
  • + TrackToken TrackType
  • +
  • + VIDEO001 Video
  • +
  • + AUDIO001 Audio
  • +
  • + META001 Metadata
  • +
+ All TrackConfigurations shall have the MaximumRetentionTime set to 0 (unlimited), and the + Description set to the empty string. +
+ + +
+ + DeleteRecording shall delete a recording object. Whenever a recording is deleted, the device + shall delete all the tracks that are part of the recording, and it shall delete all the Recording + Jobs that record into the recording. For each deleted recording job, the device shall also + delete all the receiver objects associated with the recording job that are automatically created + using the AutoCreateReceiver field of the recording job configuration structure and are not + used in any other recording job.
+ This method is optional. It shall be available if the Recording/DynamicRecordings capability is TRUE. +
+ + +
+ + GetRecordings shall return a description of all the recordings in the device. This description + shall include a list of all the tracks for each recording. + + + + + SetRecordingConfiguration shall change the configuration of a recording. + + + + + GetRecordingConfiguration shall retrieve the recording configuration for a recording. + + + + + GetRecordingOptions returns information for a recording identified by the RecordingToken. The information includes the number of additonal tracks as well as recording jobs that can be configured. + + + + + This method shall create a new track within a recording.
+ This method is optional. It shall be available if the Recording/DynamicTracks capability is TRUE.
+ A TrackToken in itself does not uniquely identify a specific track. Tracks within different + recordings may have the same TrackToken. +
+ + +
+ + DeleteTrack shall remove a track from a recording. All the data in the track shall be deleted.
+ This method is optional. It shall be available if the Recording/DynamicTracks capability is + TRUE.
+ + +
+ + GetTrackConfiguration shall retrieve the configuration for a specific track. + + + + + SetTrackConfiguration shall change the configuration of a track. + + + + + CreateRecordingJob shall create a new recording job.
+ The JobConfiguration returned from CreateRecordingJob shall be identical to the + JobConfiguration passed into CreateRecordingJob, except for the ReceiverToken and the + AutoCreateReceiver. In the returned structure, the ReceiverToken shall be present and valid + and the AutoCreateReceiver field shall be omitted. +
+ + +
+ + DeleteRecordingJob removes a recording job. It shall also implicitly delete all the receiver + objects associated with the recording job that are automatically created using the + AutoCreateReceiver field of the recording job configuration structure and are not used in any + other recording job. + + + + + GetRecordingJobs shall return a list of all the recording jobs in the device. + + + + + SetRecordingJobConfiguration shall change the configuration for a recording job.
+ SetRecordingJobConfiguration shall implicitly delete any receiver objects that were created + automatically if they are no longer used as a result of changing the recording job configuration. +
+ + +
+ + GetRecordingJobConfiguration shall return the current configuration for a recording job. + + + + + SetRecordingJobMode shall change the mode of the recording job. Using this method shall be + equivalent to retrieving the recording job configuration, and writing it back with a different + mode. + + + + + GetRecordingJobState returns the state of a recording job. It includes an aggregated state, + and state for each track of the recording job. + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/deps/lib/python3.10/site-packages/onvif/wsdl/remotediscovery.wsdl b/deps/lib/python3.10/site-packages/onvif/wsdl/remotediscovery.wsdl new file mode 100644 index 0000000..d320741 --- /dev/null +++ b/deps/lib/python3.10/site-packages/onvif/wsdl/remotediscovery.wsdl @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/deps/lib/python3.10/site-packages/onvif/wsdl/replay.wsdl b/deps/lib/python3.10/site-packages/onvif/wsdl/replay.wsdl new file mode 100644 index 0000000..6ab0f5b --- /dev/null +++ b/deps/lib/python3.10/site-packages/onvif/wsdl/replay.wsdl @@ -0,0 +1,221 @@ + + + + + + + + + + + + + + + + + + + + The capabilities for the replay service is returned in the Capabilities element. + + + + + + + + + + + + + Indicator that the Device supports reverse playback as defined in the ONVIF Streaming Specification. + + + + + The list contains two elements defining the minimum and maximum valid values supported as session timeout in seconds. + + + + + Indicates support for RTP/RTSP/TCP. + + + + + + + + + + + + Specifies the connection parameters to be used for the stream. The URI that is returned may depend on these parameters. + + + + + The identifier of the recording to be streamed. + + + + + + + + + + + The URI to which the client should connect in order to stream the recording. + + + + + + + + + + + Description of the new replay configuration parameters. + + + + + + + + + + + + + + + + + + + + + + + The current replay configuration parameters. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Returns the capabilities of the replay service. The result is returned in a typed answer. + + + + + + Requests a URI that can be used to initiate playback of a recorded stream + using RTSP as the control protocol. The URI is valid only as it is + specified in the response. + This operation is mandatory. + + + + + + + Returns the current configuration of the replay service. + This operation is mandatory. + + + + + + + Changes the current configuration of the replay service. + This operation is mandatory. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/deps/lib/python3.10/site-packages/onvif/wsdl/rw-2.wsdl b/deps/lib/python3.10/site-packages/onvif/wsdl/rw-2.wsdl new file mode 100644 index 0000000..658bfef --- /dev/null +++ b/deps/lib/python3.10/site-packages/onvif/wsdl/rw-2.wsdl @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/deps/lib/python3.10/site-packages/onvif/wsdl/search.wsdl b/deps/lib/python3.10/site-packages/onvif/wsdl/search.wsdl new file mode 100644 index 0000000..98361c5 --- /dev/null +++ b/deps/lib/python3.10/site-packages/onvif/wsdl/search.wsdl @@ -0,0 +1,887 @@ + + + + + + + + + + + + + + + + + + + + The capabilities for the search service is returned in the Capabilities element. + + + + + + + + + + + + Indicates support for general virtual property events in the FindEvents method. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Scope defines the dataset to consider for this search. + + + + + The search will be completed after this many matches. If not specified, the search will continue until reaching the endpoint or until the session expires. + + + + + The time the search session will be kept alive after responding to this and subsequent requests. A device shall support at least values up to ten seconds. + + + + + + + + + + + + + + + + Gets results from a particular recording listingession. + + + + + + The search session to get results from. + + + + + The minimum number of results to return in one response. + + + + + The maximum number of results to return in one response. + + + + + The maximum time before responding to the request, even if the MinResults parameter is not fulfilled. + + + + + + + + + + + + + + + + Starts a search session and specifies the search parameters. + + + + + + The point of time where the search will start. + + + + + The point of time where the search will stop. This can be a time before the StartPoint, in which case the search is performed backwards in time. + + + + + + + Setting IncludeStartState to true means that the server should return virtual events representing the start state for any recording included in the scope. Start state events are limited to the topics defined in the SearchFilter that have the IsProperty flag set to true. + + + + + The search will be completed after this many matches. If not specified, the search will continue until reaching the endpoint or until the session expires. + + + + + The time the search session will be kept alive after responding to this and subsequent requests. A device shall support at least values up to ten seconds. + + + + + + + + + + + A unique reference to the search session created by this request. + + + + + + + + + Gets results from a particular search session. + + + + + + The search session to get results from. + + + + + The minimum number of results to return in one response. + + + + + The maximum number of results to return in one response. + + + + + The maximum time before responding to the request, even if the MinResults parameter is not fulfilled. + + + + + + + + + + + + + + + + Starts a search session and specifies the search parameters. + + + + + + The point of time where the search will start. + + + + + The point of time where the search will stop. This can be a time before the StartPoint, in which case the search is performed backwards in time. + + + + + + + The search will be completed after this many matches. If not specified, the search will continue until reaching the endpoint or until the session expires. + + + + + The time the search session will be kept alive after responding to this and subsequent requests. A device shall support at least values up to ten seconds. + + + + + + + + + + + A unique reference to the search session created by this request. + + + + + + + + + Gets results from a particular search session. + + + + + + The search session to get results from. + + + + + The minimum number of results to return in one response. + + + + + The maximum number of results to return in one response. + + + + + The maximum time before responding to the request, even if the MinResults parameter is not fulfilled. + + + + + + + + + + + + + + + + Starts a search session and specifies the search parameters. + + + + + + The point of time where the search will start. + + + + + The point of time where the search will stop. This can be a time before the StartPoint, in which case the search is performed backwards in time. + + + + + + + The search will be completed after this many matches. If not specified, the search will continue until reaching the endpoint or until the session expires. + + + + + The time the search session will be kept alive after responding to this and subsequent requests. A device shall support at least values up to ten seconds. + + + + + + + + + + + A unique reference to the search session created by this request. + + + + + + + + + Gets results from a particular search session. + + + + + + The search session to get results from. + + + + + The minimum number of results to return in one response. + + + + + The maximum number of results to return in one response. + + + + + The maximum time before responding to the request, even if the MinResults parameter is not fulfilled. + + + + + + + + + + + + + + + + Returns the state of an ongoing search session. + + + + + + The search session to get the state from. + + + + + + + + + + + + + + + + Ends an ongoing search session, freeing any resources. + + + + + + The search session to end. + + + + + + + + + + + The point of time the search had reached when it was ended. It is equal to the EndPoint specified in Find-operation if the search was completed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Returns the capabilities of the search service. The result is returned in a typed answer. + + + + + + GetRecordingSummary is used to get a summary description of all recorded data. This + operation is mandatory to support for a device implementing the recording search service. + + + + + + Returns information about a single Recording specified by a RecordingToken. This operation + is mandatory to support for a device implementing the recording search service. + + + + + + Returns a set of media attributes for all tracks of the specified recordings at a specified point + in time. Clients using this operation shall be able to use it as a non blocking operation. A + device shall set the starttime and endtime of the MediaAttributes structure to equal values if + calculating this range would causes this operation to block. See MediaAttributes structure for + more information. This operation is mandatory to support for a device implementing the + recording search service. + + + + + + FindRecordings starts a search session, looking for recordings that matches the scope (See + 20.2.4) defined in the request. Results from the search are acquired using the + GetRecordingSearchResults request, specifying the search token returned from this request. + The device shall continue searching until one of the following occurs:
    +
  • The entire time range from StartPoint to EndPoint has been searched through.
  • +
  • The total number of matches has been found, defined by the MaxMatches parameter.
  • +
  • The session has been ended by a client EndSession request.
  • +
  • The session has been ended because KeepAliveTime since the last request related to + this session has expired.
  • +
+ The order of the results is undefined, to allow the device to return results in any order they + are found. This operation is mandatory to support for a device implementing the recording + search service.
+ + +
+ + + GetRecordingSearchResults acquires the results from a recording search session previously + initiated by a FindRecordings operation. The response shall not include results already + returned in previous requests for the same session. If MaxResults is specified, the response + shall not contain more than MaxResults results. The number of results relates to the number of recordings. + For viewing individual recorded data for a signal track use the FindEvents method.
+ GetRecordingSearchResults shall block until:
    +
  • + MaxResults results are available for the response if MaxResults is specified.
  • +
  • MinResults results are available for the response if MinResults is specified.
  • +
  • WaitTime has expired.
  • +
  • Search is completed or stopped.
  • +
+ This operation is mandatory to support for a device implementing the recording search service.
+ + +
+ + + FindEvents starts a search session, looking for recording events (in the scope that + matches the search filter defined in the request. Results from the search are + acquired using the GetEventSearchResults request, specifying the search token returned from + this request.
+ The device shall continue searching until one of the following occurs:
    +
  • + The entire time range from StartPoint to EndPoint has been searched through.
  • +
  • The total number of matches has been found, defined by the MaxMatches parameter.
  • +
  • The session has been ended by a client EndSession request.
  • +
  • The session has been ended because KeepAliveTime since the last request related to + this session has expired.
  • +
+ Results shall be ordered by time, ascending in case of forward search, or descending in case + of backward search. This operation is mandatory to support for a device implementing the + recording search service.
+ + +
+ + + GetEventSearchResults acquires the results from a recording event search session previously + initiated by a FindEvents operation. The response shall not include results already returned in + previous requests for the same session. If MaxResults is specified, the response shall not + contain more than MaxResults results.
+ GetEventSearchResults shall block until:
    +
  • + MaxResults results are available for the response if MaxResults is specified.
  • +
  • MinResults results are available for the response if MinResults is specified.
  • +
  • WaitTime has expired.
  • +
  • Search is completed or stopped.
  • +
+ This operation is mandatory to support for a device implementing the recording search service.
+ + +
+ + + FindPTZPosition starts a search session, looking for ptz positions in the scope (See 20.2.4) + that matches the search filter defined in the request. Results from the search are acquired + using the GetPTZPositionSearchResults request, specifying the search token returned from + this request.
+ The device shall continue searching until one of the following occurs:
    +
  • + The entire time range from StartPoint to EndPoint has been searched through.
  • +
  • The total number of matches has been found, defined by the MaxMatches parameter.
  • +
  • The session has been ended by a client EndSession request.
  • +
  • The session has been ended because KeepAliveTime since the last request related to + this session has expired.
  • +
+ This operation is mandatory to support whenever CanContainPTZ is true for any metadata + track in any recording on the device.
+ + +
+ + + GetPTZPositionSearchResults acquires the results from a ptz position search session + previously initiated by a FindPTZPosition operation. The response shall not include results + already returned in previous requests for the same session. If MaxResults is specified, the + response shall not contain more than MaxResults results.
+ GetPTZPositionSearchResults shall block until:
    +
  • + MaxResults results are available for the response if MaxResults is specified.
  • +
  • MinResults results are available for the response if MinResults is specified.
  • +
  • WaitTime has expired.
  • +
  • Search is completed or stopped.
  • +
+ This operation is mandatory to support whenever CanContainPTZ is true for any metadata + track in any recording on the device.
+ + +
+ + + GetSearchState returns the current state of the specified search session. This command is deprecated . + + + + + + EndSearch stops and ongoing search session, causing any blocking result request to return + and the SearchToken to become invalid. If the search was interrupted before completion, the + point in time that the search had reached shall be returned. If the search had not yet begun, + the StartPoint shall be returned. If the search was completed the original EndPoint supplied + by the Find operation shall be returned. When issuing EndSearch on a FindRecordings request the + EndPoint is undefined and shall not be used since the FindRecordings request doesn't have + StartPoint/EndPoint. This operation is mandatory to support for a device implementing the + recording search service. + + + + + + + FindMetadata starts a search session, looking for metadata in the scope (See 20.2.4) that + matches the search filter defined in the request. Results from the search are acquired using + the GetMetadataSearchResults request, specifying the search token returned from this + request.
+ The device shall continue searching until one of the following occurs:
    +
  • + The entire time range from StartPoint to EndPoint has been searched through.
  • +
  • The total number of matches has been found, defined by the MaxMatches parameter.
  • +
  • The session has been ended by a client EndSession request.
  • +
  • The session has been ended because KeepAliveTime since the last request related to + this session has expired.
  • +
+ This operation is mandatory to support if the MetaDataSearch capability is set to true in the + SearchCapabilities structure return by the GetCapabilities command in the Device service.
+ + +
+ + + GetMetadataSearchResults acquires the results from a recording search session previously + initiated by a FindMetadata operation. The response shall not include results already returned + in previous requests for the same session. If MaxResults is specified, the response shall not + contain more than MaxResults results.
+ GetMetadataSearchResults shall block until:
    +
  • + MaxResults results are available for the response if MaxResults is specified.
  • +
  • MinResults results are available for the response if MinResults is specified.
  • +
  • WaitTime has expired.
  • +
  • Search is completed or stopped.
  • +
+ This operation is mandatory to support if the MetaDataSearch capability is set to true in the + SearchCapabilities structure return by the GetCapabilities command in the Device service.
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/deps/lib/python3.10/site-packages/onvif/wsdl/t-1.xsd b/deps/lib/python3.10/site-packages/onvif/wsdl/t-1.xsd new file mode 100644 index 0000000..6e93314 --- /dev/null +++ b/deps/lib/python3.10/site-packages/onvif/wsdl/t-1.xsd @@ -0,0 +1,185 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + TopicPathExpression ::= TopicPath ( '|' TopicPath )* + TopicPath ::= RootTopic ChildTopicExpression* + RootTopic ::= NamespacePrefix? ('//')? (NCName | '*') + NamespacePrefix ::= NCName ':' + ChildTopicExpression ::= '/' '/'? (QName | NCName | '*'| '.') + + + + + + + + + + + + + The pattern allows strings matching the following EBNF: + ConcreteTopicPath ::= RootTopic ChildTopic* + RootTopic ::= QName + ChildTopic ::= '/' (QName | NCName) + + + + + + + + + + + + + The pattern allows strings matching the following EBNF: + RootTopic ::= QName + + + + + + + \ No newline at end of file diff --git a/deps/lib/python3.10/site-packages/onvif/wsdl/types.xsd b/deps/lib/python3.10/site-packages/onvif/wsdl/types.xsd new file mode 100644 index 0000000..238b904 --- /dev/null +++ b/deps/lib/python3.10/site-packages/onvif/wsdl/types.xsd @@ -0,0 +1,82 @@ + + + + + + + +Type used to reference logical and physical entities. + + + + + + + + + + +General datastructure referenced by a token. +Should be used as extension base. + + + + + A service-unique identifier of the item. + + + + + + +Type used for names of logical and physical entities. + + + + + + + + + + +Description is optional and the maximum length is device specific. +If the length is more than maximum length, it is silently chopped to the maximum length +supported by the device/service (which may be 0). + + + + + + + + diff --git a/deps/lib/python3.10/site-packages/onvif/wsdl/ws-addr.xsd b/deps/lib/python3.10/site-packages/onvif/wsdl/ws-addr.xsd new file mode 100644 index 0000000..69a906a --- /dev/null +++ b/deps/lib/python3.10/site-packages/onvif/wsdl/ws-addr.xsd @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/deps/lib/python3.10/site-packages/onvif/wsdl/ws-discovery.xsd b/deps/lib/python3.10/site-packages/onvif/wsdl/ws-discovery.xsd new file mode 100644 index 0000000..37d2635 --- /dev/null +++ b/deps/lib/python3.10/site-packages/onvif/wsdl/ws-discovery.xsd @@ -0,0 +1,272 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/deps/lib/python3.10/site-packages/onvif/wsdl/xml.xsd b/deps/lib/python3.10/site-packages/onvif/wsdl/xml.xsd new file mode 100644 index 0000000..aea7d0d --- /dev/null +++ b/deps/lib/python3.10/site-packages/onvif/wsdl/xml.xsd @@ -0,0 +1,287 @@ + + + + + + +
+

About the XML namespace

+ +
+

+ This schema document describes the XML namespace, in a form + suitable for import by other schema documents. +

+

+ See + http://www.w3.org/XML/1998/namespace.html and + + http://www.w3.org/TR/REC-xml for information + about this namespace. +

+

+ Note that local names in this namespace are intended to be + defined only by the World Wide Web Consortium or its subgroups. + The names currently defined in this namespace are listed below. + They should not be used with conflicting semantics by any Working + Group, specification, or document instance. +

+

+ See further below in this document for more information about how to refer to this schema document from your own + XSD schema documents and about the + namespace-versioning policy governing this schema document. +

+
+
+
+
+ + + + +
+ +

lang (as an attribute name)

+

+ denotes an attribute whose value + is a language code for the natural language of the content of + any element; its value is inherited. This name is reserved + by virtue of its definition in the XML specification.

+ +
+
+

Notes

+

+ Attempting to install the relevant ISO 2- and 3-letter + codes as the enumerated possible values is probably never + going to be a realistic possibility. +

+

+ See BCP 47 at + http://www.rfc-editor.org/rfc/bcp/bcp47.txt + and the IANA language subtag registry at + + http://www.iana.org/assignments/language-subtag-registry + for further information. +

+

+ The union allows for the 'un-declaration' of xml:lang with + the empty string. +

+
+
+
+ + + + + + + + + +
+ + + + +
+ +

space (as an attribute name)

+

+ denotes an attribute whose + value is a keyword indicating what whitespace processing + discipline is intended for the content of the element; its + value is inherited. This name is reserved by virtue of its + definition in the XML specification.

+ +
+
+
+ + + + + + +
+ + + +
+ +

base (as an attribute name)

+

+ denotes an attribute whose value + provides a URI to be used as the base for interpreting any + relative URIs in the scope of the element on which it + appears; its value is inherited. This name is reserved + by virtue of its definition in the XML Base specification.

+ +

+ See http://www.w3.org/TR/xmlbase/ + for information about this attribute. +

+
+
+
+
+ + + + +
+ +

id (as an attribute name)

+

+ denotes an attribute whose value + should be interpreted as if declared to be of type ID. + This name is reserved by virtue of its definition in the + xml:id specification.

+ +

+ See http://www.w3.org/TR/xml-id/ + for information about this attribute. +

+
+
+
+
+ + + + + + + + + + +
+ +

Father (in any context at all)

+ +
+

+ denotes Jon Bosak, the chair of + the original XML Working Group. This name is reserved by + the following decision of the W3C XML Plenary and + XML Coordination groups: +

+
+

+ In appreciation for his vision, leadership and + dedication the W3C XML Plenary on this 10th day of + February, 2000, reserves for Jon Bosak in perpetuity + the XML name "xml:Father". +

+
+
+
+
+
+ + + +
+

About this schema document

+ +
+

+ This schema defines attributes and an attribute group suitable + for use by schemas wishing to allow xml:base, + xml:lang, xml:space or + xml:id attributes on elements they define. +

+

+ To enable this, such a schema must import this schema for + the XML namespace, e.g. as follows: +

+
+          <schema . . .>
+           . . .
+           <import namespace="http://www.w3.org/XML/1998/namespace"
+                      schemaLocation="http://www.w3.org/2001/xml.xsd"/>
+     
+

+ or +

+
+           <import namespace="http://www.w3.org/XML/1998/namespace"
+                      schemaLocation="http://www.w3.org/2009/01/xml.xsd"/>
+     
+

+ Subsequently, qualified reference to any of the attributes or the + group defined below will have the desired effect, e.g. +

+
+          <type . . .>
+           . . .
+           <attributeGroup ref="xml:specialAttrs"/>
+     
+

+ will define a type which will schema-validate an instance element + with any of those attributes. +

+
+
+
+
+ + + +
+

Versioning policy for this schema document

+
+

+ In keeping with the XML Schema WG's standard versioning + policy, this schema document will persist at + + http://www.w3.org/2009/01/xml.xsd. +

+

+ At the date of issue it can also be found at + + http://www.w3.org/2001/xml.xsd. +

+

+ The schema document at that URI may however change in the future, + in order to remain compatible with the latest version of XML + Schema itself, or with the XML namespace itself. In other words, + if the XML Schema or XML namespaces change, the version of this + document at + http://www.w3.org/2001/xml.xsd + + will change accordingly; the version at + + http://www.w3.org/2009/01/xml.xsd + + will not change. +

+

+ Previous dated (and unchanging) versions of this schema + document are at: +

+ +
+
+
+
+ +
+ diff --git a/deps/lib/python3.10/site-packages/onvif/wsdl/xmlmime b/deps/lib/python3.10/site-packages/onvif/wsdl/xmlmime new file mode 100644 index 0000000..766a07b --- /dev/null +++ b/deps/lib/python3.10/site-packages/onvif/wsdl/xmlmime @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/deps/lib/python3.10/site-packages/onvif_zeep_async-1.2.0.dist-info/INSTALLER b/deps/lib/python3.10/site-packages/onvif_zeep_async-1.2.0.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/deps/lib/python3.10/site-packages/onvif_zeep_async-1.2.0.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/deps/lib/python3.10/site-packages/onvif_zeep_async-1.2.0.dist-info/LICENSE b/deps/lib/python3.10/site-packages/onvif_zeep_async-1.2.0.dist-info/LICENSE new file mode 100644 index 0000000..61a2f08 --- /dev/null +++ b/deps/lib/python3.10/site-packages/onvif_zeep_async-1.2.0.dist-info/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2014 Quatanium Co., Ltd. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + diff --git a/deps/lib/python3.10/site-packages/onvif_zeep_async-1.2.0.dist-info/METADATA b/deps/lib/python3.10/site-packages/onvif_zeep_async-1.2.0.dist-info/METADATA new file mode 100644 index 0000000..cbb7a58 --- /dev/null +++ b/deps/lib/python3.10/site-packages/onvif_zeep_async-1.2.0.dist-info/METADATA @@ -0,0 +1,189 @@ +Metadata-Version: 2.1 +Name: onvif-zeep-async +Version: 1.2.0 +Summary: Async Python Client for ONVIF Camera +Home-page: http://github.com/hunterjm/python-onvif-zeep-async +Author: Cherish Chen +Author-email: sinchb128@gmail.com +Maintainer: sinchb +Maintainer-email: sinchb128@gmail.com +License: MIT +Keywords: ONVIF,Camera,IPC +Platform: UNKNOWN +Requires-Python: >=3 +Requires-Dist: httpx (<1.0.0,>=0.19.0) +Requires-Dist: zeep[async] (<5.0.0,>=4.1.0) + +python-onvif-zeep-async +======================= + +ONVIF Client Implementation in Python 3 + +Dependencies +------------ +`zeep[async] `_ >= 4.1.0, < 5.0.0 +`httpx `_ >= 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 `_. +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 `_ + +* `Operations Index `_ + +* `ONVIF Develop Documents `_ + +* `Foscam Python Lib `_ + + diff --git a/deps/lib/python3.10/site-packages/onvif_zeep_async-1.2.0.dist-info/RECORD b/deps/lib/python3.10/site-packages/onvif_zeep_async-1.2.0.dist-info/RECORD new file mode 100644 index 0000000..a79839e --- /dev/null +++ b/deps/lib/python3.10/site-packages/onvif_zeep_async-1.2.0.dist-info/RECORD @@ -0,0 +1,53 @@ +../../../bin/onvif-cli,sha256=MAGXs94BBofHuAiVBTfKfcqsA_XM7ST0DEk9gA6XQWM,214 +onvif/__init__.py,sha256=DAsdFf5oJMqju-l7Vb-abV5z4RQ1fpZ8ddJmwD3zVok,599 +onvif/__pycache__/__init__.cpython-310.pyc,, +onvif/__pycache__/client.cpython-310.pyc,, +onvif/__pycache__/definition.cpython-310.pyc,, +onvif/__pycache__/exceptions.cpython-310.pyc,, +onvif/client.py,sha256=-o7t3DF9lg45rQqGZa8VysfO_KFmvt1LMPoD51geL7E,16455 +onvif/definition.py,sha256=dT2uCtYYxIWHVghIHnITos4WOzjOIPotPsaEWGdx9lg,2190 +onvif/exceptions.py,sha256=mbyY-nIc7yfApB_q3YcYm0471wY0KNFoJ7bYP9Szgp8,886 +onvif/version.txt,sha256=HltRzeUVOWqfp2KQnPjKZYTMxWSzJdLuvup2F1_pXE0,6 +onvif/wsdl/__init__.py,sha256=Em3m8NWsx8UMimkXjJIny_LgRuGGgQ5_J_BokzWDuQY,26 +onvif/wsdl/__pycache__/__init__.cpython-310.pyc,, +onvif/wsdl/accesscontrol.wsdl,sha256=GKQRCg8cSF4IRm2NdppfA0QX-CdxKpSiqr5L0AYFpbM,38072 +onvif/wsdl/actionengine.wsdl,sha256=jMPBM2GD3s2fh7n8LipF_bPNZhvzb1DLYNUZV6h19tA,57255 +onvif/wsdl/addressing,sha256=mqQSab7i4cPEbSmTDE_ce6-9nB4xVJmNRVRExqAqMEE,7263 +onvif/wsdl/advancedsecurity.wsdl,sha256=yTL8gF152Qm-RXeizLhULhpFfDOKkIUx74N3OJIMQBI,79284 +onvif/wsdl/analytics.wsdl,sha256=W5laHpMfME71MQwNjhS1LBtbZ4TIHFewyX22KXzrNu4,24131 +onvif/wsdl/analyticsdevice.wsdl,sha256=QCLXOfnRgbEIiTILaTbMUCbTBn42Z9ufhByrsZ5jJCQ,31976 +onvif/wsdl/b-2.xsd,sha256=oftw2i1rYft_ok8JknHx34npjJxvpChojE01j0ObbP8,23300 +onvif/wsdl/bf-2.xsd,sha256=9ala3IYLci5voOa04yJjR0hxMs1OI6T7gMmR8kQaIjs,5100 +onvif/wsdl/bw-2.wsdl,sha256=5M7OMEKxmlcbKRzWrD2rERRSdeJ38RiDEskpBqXEDBY,20498 +onvif/wsdl/deviceio.wsdl,sha256=dG4by3ReWpY6sWWPPLQfkvcZjaj4SSN0BCC1bfzIrwo,60231 +onvif/wsdl/devicemgmt.wsdl,sha256=Eg7OATq94VcY-hgb4l4qzxpSdm3Kr0Bd2sVfOZ4MeCI,163209 +onvif/wsdl/display.wsdl,sha256=ypm5RYq0X2Ac5oCy3OfXcEiQ1lvcOP_EAfygwROEPTY,24593 +onvif/wsdl/doorcontrol.wsdl,sha256=FKjpZNFd8jDmacXhacyt7mvdwZeIWSoSJADVKg0QQSM,53648 +onvif/wsdl/envelope,sha256=nGb4i3mtYNbVtjg5u7cJsM39WRiYw1rBh8PCcsR7Uq4,6249 +onvif/wsdl/events.wsdl,sha256=9GLKEWYPwoxHj5YqQGjb2Ui4hg6v0xb4sm6YZ2x-hhg,37870 +onvif/wsdl/imaging.wsdl,sha256=_s0QauUK5wtAc_B26DUY6o9py2ZzmmHb9SGDA6LIW9E,17998 +onvif/wsdl/include,sha256=3_kQDvzkr7Id4M9nP7f60QNnKhaYYqsPEuNMMSsg5g0,511 +onvif/wsdl/media.wsdl,sha256=pu1qNRCWgbunJ2DYZw80Xgsic25Frj0EVQX8vZ9YLr0,174812 +onvif/wsdl/onvif.xsd,sha256=nRdmSnFoTEOrM444eoGSg1YDZH45NCgCHCA0YYk3NLc,363349 +onvif/wsdl/ptz.wsdl,sha256=yY_iflOkYaqivi9Ene4iQyzgrR6VUtPuiiNnm5lXYBM,54058 +onvif/wsdl/r-2.xsd,sha256=5vnupoUZkNcSRgsgzZPJiCZqj-E-wnM3zFCdUy1yFhY,3660 +onvif/wsdl/receiver.wsdl,sha256=Fqamd4htp9phs_S_jdFIcW2T-VyILwSrUdJX1jox_YE,17214 +onvif/wsdl/recording.wsdl,sha256=taj5YpiTJwPboUgAGuUw29HVxa0TBKDEL3zReHjfy7g,40704 +onvif/wsdl/remotediscovery.wsdl,sha256=UoU7dgABpVHDCSxLFnsa2DXyNzIteGVXie6rhAyaxNY,5596 +onvif/wsdl/replay.wsdl,sha256=Yvs6a9b00tyFLTgptT67wvPyUqmlKp4OpqabA-UL3O8,10581 +onvif/wsdl/rw-2.wsdl,sha256=zv4pjJUS5IBz523QQolHzaN42Hh9aF7yAqFBXszBGnM,3727 +onvif/wsdl/search.wsdl,sha256=llUg6aAOOIRJFebwV7Th3KTVFBwEOG3FdGiAX2Dj_JY,43139 +onvif/wsdl/t-1.xsd,sha256=rV2wQyo4hdHIpXS6a0BYGTrym8lxIyxLtrMfgpX-Myk,8960 +onvif/wsdl/types.xsd,sha256=k1k3M6krspu9qKz0Wc45ix-foPeg_mI8t3XucagdfoI,3738 +onvif/wsdl/ws-addr.xsd,sha256=r4Bsya8lFOmwsH7-Tk3EKjLa2KwIRz3AJRNiB3edXuk,5849 +onvif/wsdl/ws-discovery.xsd,sha256=nJgWWM0EgHm82w2zxM5-WhHnulpvyB7vh-R5VFdXquE,10455 +onvif/wsdl/xml.xsd,sha256=YZYPsxMeOAIsqtU2Di8zozgleKs8gM1YvXQyDt5hsgw,8836 +onvif/wsdl/xmlmime,sha256=Mwq3ns3TqGKPEu9MvjQ1HkSPm5IxusrTOYgc4aYSN6I,1639 +onvif_zeep_async-1.2.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +onvif_zeep_async-1.2.0.dist-info/LICENSE,sha256=ZEQ7HH321Omn-RdwKJZsIzEFs26TN-xJxzy3VxPTWIk,1087 +onvif_zeep_async-1.2.0.dist-info/METADATA,sha256=XfKRbZNsDsoh2XPPauylogMn7MzvPeZsjzuTLEHoDXE,5371 +onvif_zeep_async-1.2.0.dist-info/RECORD,, +onvif_zeep_async-1.2.0.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +onvif_zeep_async-1.2.0.dist-info/WHEEL,sha256=kGT74LWyRUZrL4VgLh6_g12IeVl_9u9ZVhadrgXZUEY,110 +onvif_zeep_async-1.2.0.dist-info/entry_points.txt,sha256=T86-G39qBuLrqpISnl9sHjvR2Lt_KeMSAQus_tvBYM0,46 +onvif_zeep_async-1.2.0.dist-info/top_level.txt,sha256=MqCi1uJmIvtVFJDz2IxLbpwq6FwDtWhqrWQtKwLaQg4,6 diff --git a/deps/lib/python3.10/site-packages/onvif_zeep_async-1.2.0.dist-info/REQUESTED b/deps/lib/python3.10/site-packages/onvif_zeep_async-1.2.0.dist-info/REQUESTED new file mode 100644 index 0000000..e69de29 diff --git a/deps/lib/python3.10/site-packages/onvif_zeep_async-1.2.0.dist-info/WHEEL b/deps/lib/python3.10/site-packages/onvif_zeep_async-1.2.0.dist-info/WHEEL new file mode 100644 index 0000000..ef99c6c --- /dev/null +++ b/deps/lib/python3.10/site-packages/onvif_zeep_async-1.2.0.dist-info/WHEEL @@ -0,0 +1,6 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.34.2) +Root-Is-Purelib: true +Tag: py2-none-any +Tag: py3-none-any + diff --git a/deps/lib/python3.10/site-packages/onvif_zeep_async-1.2.0.dist-info/entry_points.txt b/deps/lib/python3.10/site-packages/onvif_zeep_async-1.2.0.dist-info/entry_points.txt new file mode 100644 index 0000000..20981a8 --- /dev/null +++ b/deps/lib/python3.10/site-packages/onvif_zeep_async-1.2.0.dist-info/entry_points.txt @@ -0,0 +1,3 @@ +[console_scripts] +onvif-cli = onvif.cli:main + diff --git a/deps/lib/python3.10/site-packages/onvif_zeep_async-1.2.0.dist-info/top_level.txt b/deps/lib/python3.10/site-packages/onvif_zeep_async-1.2.0.dist-info/top_level.txt new file mode 100644 index 0000000..4c01f15 --- /dev/null +++ b/deps/lib/python3.10/site-packages/onvif_zeep_async-1.2.0.dist-info/top_level.txt @@ -0,0 +1 @@ +onvif diff --git a/deps/lib/python3.10/site-packages/pytapo-2.9.1.dist-info/INSTALLER b/deps/lib/python3.10/site-packages/pytapo-2.9.1.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/deps/lib/python3.10/site-packages/pytapo-2.9.1.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/deps/lib/python3.10/site-packages/pytapo-2.9.1.dist-info/LICENSE b/deps/lib/python3.10/site-packages/pytapo-2.9.1.dist-info/LICENSE new file mode 100644 index 0000000..9164807 --- /dev/null +++ b/deps/lib/python3.10/site-packages/pytapo-2.9.1.dist-info/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 Juraj Nyíri + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/deps/lib/python3.10/site-packages/pytapo-2.9.1.dist-info/METADATA b/deps/lib/python3.10/site-packages/pytapo-2.9.1.dist-info/METADATA new file mode 100644 index 0000000..1afc92a --- /dev/null +++ b/deps/lib/python3.10/site-packages/pytapo-2.9.1.dist-info/METADATA @@ -0,0 +1,124 @@ +Metadata-Version: 2.1 +Name: pytapo +Version: 2.9.1 +Summary: Python library for communication with Tapo Cameras +Home-page: https://github.com/JurajNyiri/pytapo +Author: Juraj Nyíri +Author-email: juraj.nyiri@gmail.com +License: MIT +Platform: UNKNOWN +Classifier: Programming Language :: Python :: 3 +Classifier: License :: OSI Approved :: MIT License +Classifier: Operating System :: OS Independent +Description-Content-Type: text/markdown +License-File: LICENSE +Requires-Dist: requests +Requires-Dist: urllib3 +Requires-Dist: pycryptodome + +# PyTapo + +Python library for communication with Tapo Cameras + +## Install: + +``` +python3 -m pip install pytapo +``` + +## Usage examples: + +### Initiate library: + +``` +from pytapo import Tapo + +user = "" # user you set in Advanced Settings -> Camera Account +password = "" # password you set in Advanced Settings -> Camera Account +host = "" # ip of the camera, example: 192.168.1.52 + +tapo = Tapo(host, user, password) + +print(tapo.getBasicInfo()) +``` + +## Authentication + +Depending on your camera model and firmware version, the authentication method varies. + +Normally you should be able to authenticate using the "camera account" created via the Tapo App (Settings > Advanced settings > Camera account). + +In case of a similar stack trace: + +``` +Traceback (most recent call last): + File "/home/user/Projects/pytapo/pytapo/__init__.py", line 41, in __init__ + self.basicInfo = self.getBasicInfo() + File "/home/user/Projects/pytapo/pytapo/__init__.py", line 232, in getBasicInfo + return self.performRequest( + File "/home/user/Projects/pytapo/pytapo/__init__.py", line 95, in performRequest + self.ensureAuthenticated() + File "/home/user/Projects/pytapo/pytapo/__init__.py", line 61, in ensureAuthenticated + return self.refreshStok() + File "/home/user/Projects/pytapo/pytapo/__init__.py", line 80, in refreshStok + raise Exception("Invalid authentication data") +Exception: Invalid authentication data +``` + +Attempt to authenticate using `admin` as `user` and your TP-Link cloud account password as `password`. + +## Contributions: + +Contributions to pytapo are welcomed. + +By creating a PR you acknowledge and agree that you are not breaking any TOS, law and/or have a permission to provide and share the code changes. + +Owner of this repository is not legally responsible for any PRs or code changes to this project created by 3rd parties. + +When you make a new change to the code base, make sure to have 100% unit test coverage, see below for more information about tests. + +### Test instructions + +Set the following environment variables: + +`PYTAPO_USER` - user you set in Advanced Settings -> Camera Account + +`PYTAPO_PASSWORD` - password you set in Advanced Settings -> Camera Account + +`PYTAPO_IP` - ip of the camera, example: 192.168.1.52 + +Install `pre-commit` and `tox` from pip. + +Run `pre-commit install` and `pre-commit install -t pre-push`. + +Then run `tox` to run all the tests. + +Linters are ran on every commit. + +Tests are ran on push. + +Your camera may do all the actions supported by this library, including, but not limited to, move, change privacy mode and reboot while tests are running. Camera does not format SD card during tests. + +After the tests are done, your camera should be in the initial state. + +## Thank you + +- [Dale Pavey](https://research.nccgroup.com/2020/07/31/lights-camera-hacked-an-insight-into-the-world-of-popular-ip-cameras/) from NCC Group for the initial research on the Tapo C200 +- [likaci](https://github.com/likaci) and [his github repository](https://github.com/likaci/mercury-ipc-control) for the research on the Mercury camera on which tapo is based +- [Tim Zhang](https://github.com/ttimasdf) for additional research for Mercury camera on [his github repository](https://github.com/ttimasdf/mercury-ipc-control) +- [Gábor Szabados](https://github.com/GSzabados) for doing research and gathering all the information above in [Home Assistant Community forum](https://community.home-assistant.io/t/use-pan-tilt-function-for-tp-link-tapo-c200-from-home-assistant/170143/18) +- [Davide Depau](https://github.com/Depau) for additional [research](https://md.depau.eu/s/r1Ys_oWoP) of the cameras and work on pytapo library + +# Disclaimer + +Pytapo is an unofficial module for achieving interoperability with Tapo cameras. + +Author is in no way affiliated with Tp-Link or Tapo. + +All the api requests used within the library are available and published on the internet (examples linked above) and this module is purely just a wrapper around those https requests. + +Author does not guarantee functionality of this library and is not responsible for any damage. + +All product names, trademarks and registered trademarks in this repository, are property of their respective owners. + + diff --git a/deps/lib/python3.10/site-packages/pytapo-2.9.1.dist-info/RECORD b/deps/lib/python3.10/site-packages/pytapo-2.9.1.dist-info/RECORD new file mode 100644 index 0000000..033b158 --- /dev/null +++ b/deps/lib/python3.10/site-packages/pytapo-2.9.1.dist-info/RECORD @@ -0,0 +1,27 @@ +pytapo-2.9.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +pytapo-2.9.1.dist-info/LICENSE,sha256=-Gohgu4ID1c6R3KkZdPntxh5utGTdmVGJeB4QhIm4ZM,1069 +pytapo-2.9.1.dist-info/METADATA,sha256=qI-m0f48Tsccjv6q3x1_NxJznDZVYok0QnELgcSbLAc,4728 +pytapo-2.9.1.dist-info/RECORD,, +pytapo-2.9.1.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pytapo-2.9.1.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92 +pytapo-2.9.1.dist-info/top_level.txt,sha256=2LSWwAlazOi30LD9R8o-XOGMsTPXixLD_qzGQmFrwwA,7 +pytapo/ERROR_CODES.py,sha256=ca90Pi1ZaBeZYn87B6Sx7trjL8vSLpD4--uA_29akig,345 +pytapo/__init__.py,sha256=j3LtLc_dkMjGQne4dTTA3t53dHB1EU66Z9Il4yCfQNA,31555 +pytapo/__pycache__/ERROR_CODES.cpython-310.pyc,, +pytapo/__pycache__/__init__.cpython-310.pyc,, +pytapo/__pycache__/const.cpython-310.pyc,, +pytapo/const.py,sha256=ZwIwK6ZAmmIBHzNZNSjny3rAO3rWewo9quWdeLgriI8,412 +pytapo/media_stream/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pytapo/media_stream/__pycache__/__init__.cpython-310.pyc,, +pytapo/media_stream/__pycache__/_utils.cpython-310.pyc,, +pytapo/media_stream/__pycache__/crypto.cpython-310.pyc,, +pytapo/media_stream/__pycache__/error.cpython-310.pyc,, +pytapo/media_stream/__pycache__/response.cpython-310.pyc,, +pytapo/media_stream/__pycache__/session.cpython-310.pyc,, +pytapo/media_stream/_utils.py,sha256=_7zkj5Weay2bEYKf7_YaqyjdM720DS-IW1-ZdEdLwok,843 +pytapo/media_stream/crypto.py,sha256=d9E7J0iwbXjDyd5mRMnqNF1w8tZ97WWmxbXc44ntGWc,2286 +pytapo/media_stream/error.py,sha256=lxYqTkxPBECLM4xO8AWKKyjtDh5niYB1MHIwsCB10nA,607 +pytapo/media_stream/response.py,sha256=_w4wzVC8LYc-9QeePD_-FTOUdfpbLuj1TI2N2UrbiGg,589 +pytapo/media_stream/session.py,sha256=fZDb0tRX_Gb61ITCbYJO9H7ujsqbWWBUDPp4eGVh9Uw,18469 +pytapo/media_stream/temp.py,sha256=8RP1K_f4BHLwylACXbPqli1SfbTNWOMVPmnYE7Eo5AU,922 +pytapo/temp.py,sha256=VJglwz1iXg8vJMxMNjXCWKNfLi_nEabB0suHySKnRnc,2700 diff --git a/deps/lib/python3.10/site-packages/pytapo-2.9.1.dist-info/REQUESTED b/deps/lib/python3.10/site-packages/pytapo-2.9.1.dist-info/REQUESTED new file mode 100644 index 0000000..e69de29 diff --git a/deps/lib/python3.10/site-packages/pytapo-2.9.1.dist-info/WHEEL b/deps/lib/python3.10/site-packages/pytapo-2.9.1.dist-info/WHEEL new file mode 100644 index 0000000..becc9a6 --- /dev/null +++ b/deps/lib/python3.10/site-packages/pytapo-2.9.1.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.37.1) +Root-Is-Purelib: true +Tag: py3-none-any + diff --git a/deps/lib/python3.10/site-packages/pytapo-2.9.1.dist-info/top_level.txt b/deps/lib/python3.10/site-packages/pytapo-2.9.1.dist-info/top_level.txt new file mode 100644 index 0000000..3a39bcc --- /dev/null +++ b/deps/lib/python3.10/site-packages/pytapo-2.9.1.dist-info/top_level.txt @@ -0,0 +1 @@ +pytapo diff --git a/deps/lib/python3.10/site-packages/pytapo/ERROR_CODES.py b/deps/lib/python3.10/site-packages/pytapo/ERROR_CODES.py new file mode 100644 index 0000000..e9ed482 --- /dev/null +++ b/deps/lib/python3.10/site-packages/pytapo/ERROR_CODES.py @@ -0,0 +1,9 @@ +ERROR_CODES = { + "-40401": "Invalid stok value", + "-64324": "Privacy mode is ON, not able to execute", + "-64302": "Preset ID not found", + "-64321": "Preset ID was deleted so no longer exists", + "-40106": "Parameter to get/do does not exist", + "-40105": "Method does not exist", + "-40101": "Parameter to set does not exist" +} \ No newline at end of file diff --git a/deps/lib/python3.10/site-packages/pytapo/__init__.py b/deps/lib/python3.10/site-packages/pytapo/__init__.py new file mode 100644 index 0000000..140e7ad --- /dev/null +++ b/deps/lib/python3.10/site-packages/pytapo/__init__.py @@ -0,0 +1,872 @@ +# +# Author: See contributors at https://github.com/JurajNyiri/pytapo/graphs/contributors +# + +import hashlib +import json + +import requests +import urllib3 +from warnings import warn + +from .const import ERROR_CODES, MAX_LOGIN_RETRIES +from .media_stream.session import HttpMediaSession + +urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) + + +class Tapo: + def __init__( + self, host, user, password, cloudPassword="", superSecretKey="", childID=None + ): + self.host = host + self.user = user + self.password = password + self.cloudPassword = cloudPassword + self.superSecretKey = superSecretKey + self.stok = False + self.userID = False + self.childID = childID + self.headers = { + "Host": self.host, + "Referer": "https://{host}".format(host=self.host), + "Accept": "application/json", + "Accept-Encoding": "gzip, deflate", + "User-Agent": "Tapo CameraClient Android", + "Connection": "close", + "requestByApp": "true", + "Content-Type": "application/json; charset=UTF-8", + } + self.hashedPassword = hashlib.md5(password.encode("utf8")).hexdigest().upper() + self.hashedCloudPassword = ( + hashlib.md5(cloudPassword.encode("utf8")).hexdigest().upper() + ) + + self.basicInfo = self.getBasicInfo() + self.presets = self.isSupportingPresets() + if not self.presets: + self.presets = {} + + def isSupportingPresets(self): + try: + presets = self.getPresets() + return presets + except Exception: + return False + + def getHostURL(self): + return "https://{host}/stok={stok}/ds".format(host=self.host, stok=self.stok) + + def getStreamURL(self): + return "{host}:8800".format(host=self.host) + + def ensureAuthenticated(self): + if not self.stok: + return self.refreshStok() + return True + + def refreshStok(self): + url = "https://{host}".format(host=self.host) + data = { + "method": "login", + "params": { + "hashed": True, + "password": self.hashedPassword, + "username": self.user, + }, + } + res = requests.post( + url, data=json.dumps(data), headers=self.headers, verify=False + ) + if res.status_code == 401: + try: + data = res.json() + if data["result"]["data"]["code"] == -40411: + raise Exception("Invalid authentication data") + except Exception as e: + if str(e) == "Invalid authentication data": + raise e + else: + pass + + if self.responseIsOK(res): + self.stok = res.json()["result"]["stok"] + return self.stok + raise Exception("Invalid authentication data") + + def responseIsOK(self, res): + if res.status_code != 200: + raise Exception( + "Error communicating with Tapo Camera. Status code: " + + str(res.status_code) + ) + try: + data = res.json() + if "error_code" not in data or data["error_code"] == 0: + return True + except Exception as e: + raise Exception("Unexpected response from Tapo Camera: " + str(e)) + + def executeFunction(self, method, params): + if method == "multipleRequest": + data = self.performRequest({"method": "multipleRequest", "params": params})[ + "result" + ]["responses"] + else: + data = self.performRequest( + { + "method": "multipleRequest", + "params": {"requests": [{"method": method, "params": params}]}, + } + )["result"]["responses"][0] + + if type(data) == list: + return data + + if "result" in data: + return data["result"] + else: + raise Exception( + "Error: {}, Response: {}".format( + data["err_msg"] + if "err_msg" in data + else self.getErrorMessage(data["error_code"]), + json.dumps(data), + ) + ) + + def performRequest(self, requestData, loginRetryCount=0): + self.ensureAuthenticated() + url = self.getHostURL() + if self.childID: + fullRequest = { + "method": "multipleRequest", + "params": { + "requests": [ + { + "method": "controlChild", + "params": { + "childControl": { + "device_id": self.childID, + "request_data": requestData, + } + }, + } + ] + }, + } + else: + fullRequest = requestData + res = requests.post( + url, data=json.dumps(fullRequest), headers=self.headers, verify=False + ) + if not self.responseIsOK(res): + data = json.loads(res.text) + # -40401: Invalid Stok + if ( + data + and "error_code" in data + and data["error_code"] == -40401 + and loginRetryCount < MAX_LOGIN_RETRIES + ): + self.refreshStok() + return self.performRequest(requestData, loginRetryCount + 1) + else: + raise Exception( + "Error: {}, Response: {}".format( + self.getErrorMessage(data["error_code"]), json.dumps(data) + ) + ) + + responseJSON = res.json() + # strip away child device stuff to ensure consistent response format for HUB cameras + if self.childID: + responses = [] + for response in responseJSON["result"]["responses"]: + if "method" in response and response["method"] == "controlChild": + if "response_data" in response["result"]: + responses.append(response["result"]["response_data"]) + else: + responses.append(response["result"]) + else: + responses.append(response["result"]) # not sure if needed + responseJSON["result"]["responses"] = responses + return responseJSON["result"]["responses"][0] + elif self.responseIsOK(res): + return responseJSON + + def getMediaSession(self): + return HttpMediaSession( + self.host, self.cloudPassword, self.superSecretKey + ) # pragma: no cover + + def getChildDevices(self): + childDevices = self.performRequest( + { + "method": "getChildDeviceList", + "params": {"childControl": {"start_index": 0}}, + } + ) + return childDevices["result"]["child_device_list"] + + # returns empty response for child devices + def getOsd(self): + # no, asking for all does not work... + if self.childID: + return self.executeFunction( + "getOsd", {"OSD": {"name": ["logo", "date", "label"]}}, + ) + else: + return self.executeFunction( + "getOsd", + {"OSD": {"name": ["date", "week", "font"], "table": ["label_info"]}}, + ) + + def setOsd( + self, + label, + dateEnabled=True, + labelEnabled=False, + weekEnabled=False, + dateX=0, + dateY=0, + labelX=0, + labelY=500, + weekX=0, + weekY=0, + ): + if self.childID: + raise Exception("setOsd not supported for child devices yet") + data = { + "method": "set", + "OSD": { + "date": { + "enabled": "on" if dateEnabled else "off", + "x_coor": dateX, + "y_coor": dateY, + }, + "week": { + "enabled": "on" if weekEnabled else "off", + "x_coor": weekX, + "y_coor": weekY, + }, + "font": { + "color": "white", + "color_type": "auto", + "display": "ntnb", + "size": "auto", + }, + "label_info_1": { + "enabled": "on" if labelEnabled else "off", + "x_coor": labelX, + "y_coor": labelY, + }, + }, + } + + if len(label) >= 16: + raise Exception("Error: Label cannot be longer than 16 characters") + elif len(label) == 0: + data["OSD"]["label_info_1"]["enabled"] = "off" + else: + data["OSD"]["label_info_1"]["text"] = label + if ( + dateX > 10000 + or dateX < 0 + or labelX > 10000 + or labelX < 0 + or weekX > 10000 + or weekX < 0 + or dateY > 10000 + or dateY < 0 + or labelY > 10000 + or labelY < 0 + or weekY > 10000 + or weekY < 0 + ): + raise Exception("Error: Incorrect corrdinates, must be between 0 and 10000") + + return self.performRequest(data) + + # does not work for child devices, function discovery needed + def getModuleSpec(self): + return self.performRequest( + {"method": "get", "function": {"name": ["module_spec"]}} + ) + + def getPrivacyMode(self): + data = self.executeFunction( + "getLensMaskConfig", {"lens_mask": {"name": ["lens_mask_info"]}}, + ) + return data["lens_mask"]["lens_mask_info"] + + def getMediaEncrypt(self): + data = self.executeFunction( + "getMediaEncrypt", {"cet": {"name": ["media_encrypt"]}}, + ) + return data["cet"]["media_encrypt"] + + def getMotionDetection(self): + return self.executeFunction( + "getDetectionConfig", {"motion_detection": {"name": ["motion_det"]}}, + )["motion_detection"]["motion_det"] + + def getPersonDetection(self): + data = {"method": "get", "people_detection": {"name": ["detection"]}} + return self.performRequest(data)["people_detection"]["detection"] + + def getAlarm(self): + # ensure reverse compatibility, simulate the same response for children devices + if self.childID: + data = self.getAlarmConfig() + + # replace "siren" with "sound", some cameras call it siren, some sound + for i in range(len(data[0]["result"]["alarm_mode"])): + if data[0]["result"]["alarm_mode"][i] == "siren": + data[0]["result"]["alarm_mode"][i] = "sound" + return { + "alarm_type": "0", + "light_type": "0", + "enabled": data[0]["result"]["enabled"], + "alarm_mode": data[0]["result"]["alarm_mode"], + } + else: + return self.executeFunction( + "getLastAlarmInfo", {"msg_alarm": {"name": ["chn1_msg_alarm_info"]}}, + )["msg_alarm"]["chn1_msg_alarm_info"] + + def getAlarmConfig(self): + return self.executeFunction( + "multipleRequest", + { + "requests": [ + {"method": "getAlarmConfig", "params": {"msg_alarm": {}}}, + {"method": "getAlarmPlan", "params": {"msg_alarm_plan": {}}}, + {"method": "getSirenTypeList", "params": {"msg_alarm": {}}}, + {"method": "getLightTypeList", "params": {"msg_alarm": {}}}, + {"method": "getSirenStatus", "params": {"msg_alarm": {}}}, + ] + }, + ) + + def getRotationStatus(self): + return self.executeFunction( + "getRotationStatus", {"image": {"name": ["switch"]}}, + ) + + def getLED(self): + return self.executeFunction("getLedStatus", {"led": {"name": ["config"]}},)[ + "led" + ]["config"] + + def getAutoTrackTarget(self): + return self.executeFunction( + "getTargetTrackConfig", {"target_track": {"name": ["target_track_info"]}} + )["target_track"]["target_track_info"] + + # does not work for child devices, function discovery needed + def getAudioSpec(self): + return self.performRequest( + { + "method": "get", + "audio_capability": {"name": ["device_speaker", "device_microphone"]}, + } + ) + + # does not work for child devices, function discovery needed + def getVhttpd(self): + return self.performRequest({"method": "get", "cet": {"name": ["vhttpd"]}}) + + def getBasicInfo(self): + return self.executeFunction( + "getDeviceInfo", {"device_info": {"name": ["basic_info"]}} + ) + + def getTime(self): + return self.executeFunction( + "getClockStatus", {"system": {"name": "clock_status"}} + ) + + # does not work for child devices, function discovery needed + def getMotorCapability(self): + return self.performRequest({"method": "get", "motor": {"name": ["capability"]}}) + + def setPrivacyMode(self, enabled): + return self.executeFunction( + "setLensMaskConfig", + {"lens_mask": {"lens_mask_info": {"enabled": "on" if enabled else "off"}}}, + ) + + def setMediaEncrypt(self, enabled): + return self.executeFunction( + "setMediaEncrypt", + {"cet": {"media_encrypt": {"enabled": "on" if enabled else "off"}}}, + ) + + # todo child + def setAlarm(self, enabled, soundEnabled=True, lightEnabled=True): + alarm_mode = [] + + if not soundEnabled and not lightEnabled: + raise Exception("You need to use at least sound or light for alarm") + + if soundEnabled: + if self.childID: + alarm_mode.append("siren") + else: + alarm_mode.append("sound") + if lightEnabled: + alarm_mode.append("light") + + if self.childID: + data = { + "msg_alarm": { + "enabled": "on" if enabled else "off", + "alarm_mode": alarm_mode, + } + } + return self.executeFunction("setAlarmConfig", data) + else: + data = { + "method": "set", + "msg_alarm": { + "chn1_msg_alarm_info": { + "alarm_type": "0", + "enabled": "on" if enabled else "off", + "light_type": "0", + "alarm_mode": alarm_mode, + } + }, + } + return self.performRequest(data) + + # todo child + def moveMotor(self, x, y): + return self.performRequest( + {"method": "do", "motor": {"move": {"x_coord": str(x), "y_coord": str(y)}}} + ) + + # todo child + def moveMotorStep(self, angle): + if not (0 <= angle < 360): + raise Exception("Angle must be in a range 0 <= angle < 360") + + return self.performRequest( + {"method": "do", "motor": {"movestep": {"direction": str(angle)}}} + ) + + def moveMotorClockWise(self): + return self.moveMotorStep(0) + + def moveMotorCounterClockWise(self): + return self.moveMotorStep(180) + + def moveMotorVertical(self): + return self.moveMotorStep(90) + + def moveMotorHorizontal(self): + return self.moveMotorStep(270) + + # todo child + def calibrateMotor(self): + return self.performRequest({"method": "do", "motor": {"manual_cali": ""}}) + + def format(self): + return self.executeFunction( + "formatSdCard", {"harddisk_manage": {"format_hd": "1"}} + ) # pragma: no cover + + def setLEDEnabled(self, enabled): + return self.executeFunction( + "setLedStatus", {"led": {"config": {"enabled": "on" if enabled else "off"}}} + ) + + def getUserID(self): + if not self.userID: + self.userID = self.performRequest( + { + "method": "multipleRequest", + "params": { + "requests": [ + { + "method": "getUserID", + "params": {"system": {"get_user_id": "null"}}, + } + ] + }, + } + )["result"]["responses"][0]["result"]["user_id"] + return self.userID + + def getRecordings(self, date): + result = self.executeFunction( + "searchVideoOfDay", + { + "playback": { + "search_video_utility": { + "channel": 0, + "date": date, + "end_index": 99, + "id": self.getUserID(), + "start_index": 0, + } + } + }, + ) + if "playback" not in result: + raise Exception("Video playback is not supported by this camera") + return result["playback"]["search_video_results"] + + # does not work for child devices, function discovery needed + def getCommonImage(self): + warn("Prefer to use a specific value getter", DeprecationWarning, stacklevel=2) + return self.performRequest({"method": "get", "image": {"name": "common"}}) + + def setMotionDetection(self, enabled, sensitivity=False): + data = { + "motion_detection": {"motion_det": {"enabled": "on" if enabled else "off"}}, + } + if sensitivity: + if sensitivity == "high": + data["motion_detection"]["motion_det"]["digital_sensitivity"] = "80" + elif sensitivity == "normal": + data["motion_detection"]["motion_det"]["digital_sensitivity"] = "50" + elif sensitivity == "low": + data["motion_detection"]["motion_det"]["digital_sensitivity"] = "20" + else: + raise Exception("Invalid sensitivity, can be low, normal or high") + # child devices always need digital_sensitivity setting + if ( + self.childID + and "digital_sensitivity" not in data["motion_detection"]["motion_det"] + ): + currentData = self.getMotionDetection() + data["motion_detection"]["motion_det"]["digital_sensitivity"] = currentData[ + "digital_sensitivity" + ] + return self.executeFunction("setDetectionConfig", data) + + def setPersonDetection(self, enabled, sensitivity=False): + data = { + "method": "set", + "people_detection": {"detection": {"enabled": "on" if enabled else "off"}}, + } + if sensitivity: + if sensitivity == "high": + data["people_detection"]["detection"]["sensitivity"] = "80" + elif sensitivity == "normal": + data["people_detection"]["detection"]["sensitivity"] = "50" + elif sensitivity == "low": + data["people_detection"]["detection"]["sensitivity"] = "20" + else: + raise Exception("Invalid sensitivity, can be low, normal or high") + + return self.performRequest(data) + + def setAutoTrackTarget(self, enabled): + return self.executeFunction( + "setTargetTrackConfig", + { + "target_track": { + "target_track_info": {"enabled": "on" if enabled else "off"} + } + }, + ) + + def reboot(self): + return self.executeFunction("rebootDevice", {"system": {"reboot": "null"}}) + + def getPresets(self): + data = self.executeFunction("getPresetConfig", {"preset": {"name": ["preset"]}}) + self.presets = { + id: data["preset"]["preset"]["name"][key] + for key, id in enumerate(data["preset"]["preset"]["id"]) + } + return self.presets + + def savePreset(self, name): + self.executeFunction( + "addMotorPostion", # yes, there is a typo in function name + {"preset": {"set_preset": {"name": str(name), "save_ptz": "1"}}}, + ) + self.getPresets() + return True + + def deletePreset(self, presetID): + if not str(presetID) in self.presets: + raise Exception("Preset {} is not set in the app".format(str(presetID))) + + self.executeFunction( + "deletePreset", {"preset": {"remove_preset": {"id": [presetID]}}} + ) + self.getPresets() + return True + + def setPreset(self, presetID): + if not str(presetID) in self.presets: + raise Exception("Preset {} is not set in the app".format(str(presetID))) + return self.executeFunction( + "motorMoveToPreset", {"preset": {"goto_preset": {"id": str(presetID)}}} + ) + + # Switches + + def __getImageSwitch(self, switch: str) -> str: + data = self.executeFunction("getLdc", {"image": {"name": ["switch"]}}) + switches = data["image"]["switch"] + if switch not in switches: + raise Exception("Switch {} is not supported by this camera".format(switch)) + return switches[switch] + + def __setImageSwitch(self, switch: str, value: str): + return self.executeFunction("setLdc", {"image": {"switch": {switch: value}}}) + + def getLensDistortionCorrection(self): + return self.__getImageSwitch("ldc") == "on" + + def setLensDistortionCorrection(self, enable): + return self.__setImageSwitch("ldc", "on" if enable else "off") + + def getDayNightMode(self) -> str: + if self.childID: + rawValue = self.getNightVisionModeConfig()["image"]["switch"][ + "night_vision_mode" + ] + if rawValue == "inf_night_vision": + return "on" + elif rawValue == "wtl_night_vision": + return "off" + elif rawValue == "md_night_vision": + return "auto" + else: + return self.__getImageCommon("inf_type") + + def setDayNightMode(self, mode): + allowed_modes = ["off", "on", "auto"] + if mode not in allowed_modes: + raise Exception("Day night mode must be one of {}".format(allowed_modes)) + if self.childID: + if mode == "on": + return self.setNightVisionModeConfig("inf_night_vision") + elif mode == "off": + return self.setNightVisionModeConfig("wtl_night_vision") + elif mode == "auto": + return self.setNightVisionModeConfig("md_night_vision") + else: + return self.__setImageCommon("inf_type", mode) + + def getNightVisionModeConfig(self): + return self.executeFunction( + "getNightVisionModeConfig", {"image": {"name": "switch"}} + ) + + def setNightVisionModeConfig(self, mode): + return self.executeFunction( + "setNightVisionModeConfig", + {"image": {"switch": {"night_vision_mode": mode}}}, + ) + + def getImageFlipVertical(self): + if self.childID: + return self.getRotationStatus()["image"]["switch"]["flip_type"] == "center" + else: + return self.__getImageSwitch("flip_type") == "center" + + def setImageFlipVertical(self, enable): + if self.childID: + return self.setRotationStatus("center" if enable else "off") + else: + return self.__setImageSwitch("flip_type", "center" if enable else "off") + + def setRotationStatus(self, flip_type): + return self.executeFunction( + "setRotationStatus", {"image": {"switch": {"flip_type": flip_type}}}, + ) + + def getForceWhitelampState(self) -> bool: + return self.__getImageSwitch("force_wtl_state") == "on" + + def setForceWhitelampState(self, enable: bool): + return self.__setImageSwitch("force_wtl_state", "on" if enable else "off") + + # Common + + def __getImageCommon(self, field: str) -> str: + data = self.executeFunction( + "getLightFrequencyInfo", {"image": {"name": "common"}} + ) + if "common" not in data["image"]: + raise Exception("__getImageCommon is not supported by this camera") + fields = data["image"]["common"] + if field not in fields: + raise Exception("Field {} is not supported by this camera".format(field)) + return fields[field] + + def __setImageCommon(self, field: str, value: str): + return self.executeFunction( + "setLightFrequencyInfo", {"image": {"common": {field: value}}} + ) + + def getLightFrequencyMode(self) -> str: + return self.__getImageCommon("light_freq_mode") + + def setLightFrequencyMode(self, mode): + # todo: auto does not work on some child cameras? + allowed_modes = ["auto", "50", "60"] + if mode not in allowed_modes: + raise Exception( + "Light frequency mode must be one of {}".format(allowed_modes) + ) + return self.__setImageCommon("light_freq_mode", mode) + + # does not work for child devices, function discovery needed + def startManualAlarm(self): + return self.performRequest( + {"method": "do", "msg_alarm": {"manual_msg_alarm": {"action": "start"}},} + ) + + # does not work for child devices, function discovery needed + def stopManualAlarm(self): + return self.performRequest( + {"method": "do", "msg_alarm": {"manual_msg_alarm": {"action": "stop"}},} + ) + + @staticmethod + def getErrorMessage(errorCode): + if str(errorCode) in ERROR_CODES: + return str(ERROR_CODES[str(errorCode)]) + else: + return str(errorCode) + + def getFirmwareUpdateStatus(self): + return self.executeFunction( + "getFirmwareUpdateStatus", {"cloud_config": {"name": "upgrade_status"}} + ) + + def isUpdateAvailable(self): + return self.performRequest( + { + "method": "multipleRequest", + "params": { + "requests": [ + { + "method": "checkFirmwareVersionByCloud", + "params": {"cloud_config": {"check_fw_version": "null"}}, + }, + { + "method": "getCloudConfig", + "params": {"cloud_config": {"name": ["upgrade_info"]}}, + }, + ] + }, + } + ) + + def startFirmwareUpgrade(self): + try: + self.performRequest( + {"method": "do", "cloud_config": {"fw_download": "null"}} + ) + except Exception: + raise Exception("No new firmware available.") + + # Used for purposes of HomeAssistant-Tapo-Control + # Uses method names from https://md.depau.eu/s/r1Ys_oWoP + def getMost(self): + requestData = { + "method": "multipleRequest", + "params": { + "requests": [ + { + "method": "getDeviceInfo", + "params": {"device_info": {"name": ["basic_info"]}}, + }, + { + "method": "getDetectionConfig", + "params": {"motion_detection": {"name": ["motion_det"]}}, + }, + { + "method": "getPersonDetectionConfig", + "params": {"people_detection": {"name": ["detection"]}}, + }, + { + "method": "getLensMaskConfig", + "params": {"lens_mask": {"name": ["lens_mask_info"]}}, + }, + { + "method": "getLdc", + "params": {"image": {"name": ["switch", "common"]}}, + }, + { + "method": "getLastAlarmInfo", + "params": {"msg_alarm": {"name": ["chn1_msg_alarm_info"]}}, + }, + { + "method": "getLedStatus", + "params": {"led": {"name": ["config"]}}, + }, + { + "method": "getTargetTrackConfig", + "params": {"target_track": {"name": ["target_track_info"]}}, + }, + { + "method": "getPresetConfig", + "params": {"preset": {"name": ["preset"]}}, + }, + { + "method": "getFirmwareUpdateStatus", + "params": {"cloud_config": {"name": "upgrade_status"}}, + }, + { + "method": "getMediaEncrypt", + "params": {"cet": {"name": ["media_encrypt"]}}, + }, + { + "method": "getConnectionType", + "params": {"network": {"get_connection_type": []}}, + }, + {"method": "getAlarmConfig", "params": {"msg_alarm": {}}}, + {"method": "getAlarmPlan", "params": {"msg_alarm_plan": {}}}, + {"method": "getSirenTypeList", "params": {"msg_alarm": {}}}, + {"method": "getLightTypeList", "params": {"msg_alarm": {}}}, + {"method": "getSirenStatus", "params": {"msg_alarm": {}}}, + { + "method": "getLightFrequencyInfo", + "params": {"image": {"name": "common"}}, + }, + { + "method": "getLightFrequencyCapability", + "params": {"image": {"name": "common"}}, + }, + { + "method": "getChildDeviceList", + "params": {"childControl": {"start_index": 0}}, + }, + { + "method": "getRotationStatus", + "params": {"image": {"name": ["switch"]}}, + }, + { + "method": "getNightVisionModeConfig", + "params": {"image": {"name": "switch"}}, + }, + ] + }, + } + results = self.performRequest(requestData) + + returnData = {} + # todo finish on child + i = 0 + for result in results["result"]["responses"]: + if ( + "error_code" in result and result["error_code"] == 0 + ) and "result" in result: + returnData[result["method"]] = result["result"] + else: + if "method" in result: + returnData[result["method"]] = False + else: # some cameras are not returning method for error messages + returnData[requestData["params"]["requests"][i]["method"]] = False + i += 1 + return returnData diff --git a/deps/lib/python3.10/site-packages/pytapo/__pycache__/ERROR_CODES.cpython-310.pyc b/deps/lib/python3.10/site-packages/pytapo/__pycache__/ERROR_CODES.cpython-310.pyc new file mode 100644 index 0000000..8c882cf Binary files /dev/null and b/deps/lib/python3.10/site-packages/pytapo/__pycache__/ERROR_CODES.cpython-310.pyc differ diff --git a/deps/lib/python3.10/site-packages/pytapo/__pycache__/__init__.cpython-310.pyc b/deps/lib/python3.10/site-packages/pytapo/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000..d6a5b54 Binary files /dev/null and b/deps/lib/python3.10/site-packages/pytapo/__pycache__/__init__.cpython-310.pyc differ diff --git a/deps/lib/python3.10/site-packages/pytapo/__pycache__/const.cpython-310.pyc b/deps/lib/python3.10/site-packages/pytapo/__pycache__/const.cpython-310.pyc new file mode 100644 index 0000000..d138358 Binary files /dev/null and b/deps/lib/python3.10/site-packages/pytapo/__pycache__/const.cpython-310.pyc differ diff --git a/deps/lib/python3.10/site-packages/pytapo/const.py b/deps/lib/python3.10/site-packages/pytapo/const.py new file mode 100644 index 0000000..efb19c0 --- /dev/null +++ b/deps/lib/python3.10/site-packages/pytapo/const.py @@ -0,0 +1,11 @@ +ERROR_CODES = { + "-40401": "Invalid stok value", + "-64324": "Privacy mode is ON, not able to execute", + "-64302": "Preset ID not found", + "-64321": "Preset ID was deleted so no longer exists", + "-40106": "Parameter to get/do does not exist", + "-40105": "Method does not exist", + "-40101": "Parameter to set does not exist", + "-40209": "Invalid login credentials", +} +MAX_LOGIN_RETRIES = 2 diff --git a/deps/lib/python3.10/site-packages/pytapo/media_stream/__init__.py b/deps/lib/python3.10/site-packages/pytapo/media_stream/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/deps/lib/python3.10/site-packages/pytapo/media_stream/__pycache__/__init__.cpython-310.pyc b/deps/lib/python3.10/site-packages/pytapo/media_stream/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000..aae0bda Binary files /dev/null and b/deps/lib/python3.10/site-packages/pytapo/media_stream/__pycache__/__init__.cpython-310.pyc differ diff --git a/deps/lib/python3.10/site-packages/pytapo/media_stream/__pycache__/_utils.cpython-310.pyc b/deps/lib/python3.10/site-packages/pytapo/media_stream/__pycache__/_utils.cpython-310.pyc new file mode 100644 index 0000000..ddba962 Binary files /dev/null and b/deps/lib/python3.10/site-packages/pytapo/media_stream/__pycache__/_utils.cpython-310.pyc differ diff --git a/deps/lib/python3.10/site-packages/pytapo/media_stream/__pycache__/crypto.cpython-310.pyc b/deps/lib/python3.10/site-packages/pytapo/media_stream/__pycache__/crypto.cpython-310.pyc new file mode 100644 index 0000000..bd69675 Binary files /dev/null and b/deps/lib/python3.10/site-packages/pytapo/media_stream/__pycache__/crypto.cpython-310.pyc differ diff --git a/deps/lib/python3.10/site-packages/pytapo/media_stream/__pycache__/error.cpython-310.pyc b/deps/lib/python3.10/site-packages/pytapo/media_stream/__pycache__/error.cpython-310.pyc new file mode 100644 index 0000000..834178e Binary files /dev/null and b/deps/lib/python3.10/site-packages/pytapo/media_stream/__pycache__/error.cpython-310.pyc differ diff --git a/deps/lib/python3.10/site-packages/pytapo/media_stream/__pycache__/response.cpython-310.pyc b/deps/lib/python3.10/site-packages/pytapo/media_stream/__pycache__/response.cpython-310.pyc new file mode 100644 index 0000000..2766371 Binary files /dev/null and b/deps/lib/python3.10/site-packages/pytapo/media_stream/__pycache__/response.cpython-310.pyc differ diff --git a/deps/lib/python3.10/site-packages/pytapo/media_stream/__pycache__/session.cpython-310.pyc b/deps/lib/python3.10/site-packages/pytapo/media_stream/__pycache__/session.cpython-310.pyc new file mode 100644 index 0000000..3047762 Binary files /dev/null and b/deps/lib/python3.10/site-packages/pytapo/media_stream/__pycache__/session.cpython-310.pyc differ diff --git a/deps/lib/python3.10/site-packages/pytapo/media_stream/_utils.py b/deps/lib/python3.10/site-packages/pytapo/media_stream/_utils.py new file mode 100644 index 0000000..4e393fd --- /dev/null +++ b/deps/lib/python3.10/site-packages/pytapo/media_stream/_utils.py @@ -0,0 +1,29 @@ +import hashlib +import os + +from typing import Mapping, Tuple, Optional + + +def md5digest(to_hash: bytes) -> bytes: + return hashlib.md5(to_hash).digest().hex().upper().encode() + + +def generate_nonce(length: int) -> bytes: + return os.urandom(length).hex().encode() + + +def parse_http_headers(data: bytes) -> Mapping[str, str]: + return { + i[0].strip(): i[1].strip() + for i in (j.split(":", 1) for j in data.decode().strip().split("\r\n")) + } + + +def parse_http_response(res_line: bytes) -> Tuple[bytes, int, Optional[bytes]]: + http_ver, status_code_and_status = res_line.split(b" ", 1) + if b" " in status_code_and_status: + status_code, status = status_code_and_status.split(b" ", 1) + else: + status_code = status_code_and_status + status = None + return http_ver, int(status_code.decode()), status diff --git a/deps/lib/python3.10/site-packages/pytapo/media_stream/crypto.py b/deps/lib/python3.10/site-packages/pytapo/media_stream/crypto.py new file mode 100644 index 0000000..309d041 --- /dev/null +++ b/deps/lib/python3.10/site-packages/pytapo/media_stream/crypto.py @@ -0,0 +1,73 @@ +import hashlib +import logging +from typing import AnyStr + +from Crypto.Cipher import AES +from Crypto.Util.Padding import pad, unpad + +from pytapo.media_stream.error import NonceMissingException + +logger = logging.getLogger(__name__) + + +class AESHelper: + def __init__( + self, + username: bytes, + nonce: bytes, + cloud_password: bytes, + super_secret_key: bytes, + ): + if not nonce: + raise NonceMissingException() + self.nonce = nonce + + hashed_pwd = hashlib.md5(cloud_password).hexdigest().upper().encode() + if username == b"none": + logger.debug( + "Detected turned off media encryption, using super secret key." + ) + if super_secret_key == b"": + raise Exception( + "Media encryption is off and super secret key is not set." + ) + key = hashlib.md5(nonce + b":" + super_secret_key).digest() + else: + logger.debug("Detected turned on media encryption, using cloud password.") + key = hashlib.md5(nonce + b":" + hashed_pwd).digest() + + iv = hashlib.md5(username + b":" + nonce).digest() + + self._cipher = AES.new(key, AES.MODE_CBC, iv) + + logger.debug("AES cipher set up correctly") + + @classmethod + def from_keyexchange_and_password( + cls, key_exchange: AnyStr, cloud_password: AnyStr, super_secret_key: AnyStr + ): + if type(cloud_password) == str: + cloud_password = cloud_password.encode() + if type(key_exchange) == str: + key_exchange = key_exchange.encode() + + key_exchange = { + i[0].strip().replace(b'"', b""): i[1].strip().replace(b'"', b"") + for i in (j.split(b"=", 1) for j in key_exchange.split(b" ")) + } + + if b"nonce" not in key_exchange: + raise NonceMissingException() + + return cls( + key_exchange[b"username"], + key_exchange[b"nonce"], + cloud_password, + super_secret_key, + ) + + def decrypt(self, data: bytes) -> bytes: + return unpad(self._cipher.decrypt(data), 16, style="pkcs7") + + def encrypt(self, data: bytes) -> bytes: + return self._cipher.encrypt(pad(data, 16, style="pkcs7")) diff --git a/deps/lib/python3.10/site-packages/pytapo/media_stream/error.py b/deps/lib/python3.10/site-packages/pytapo/media_stream/error.py new file mode 100644 index 0000000..1cbdafb --- /dev/null +++ b/deps/lib/python3.10/site-packages/pytapo/media_stream/error.py @@ -0,0 +1,17 @@ +class HttpMediaSessionException(Exception): + pass + + +class NonceMissingException(HttpMediaSessionException, ValueError): + def __init__(self) -> None: + super().__init__("Nonce is missing from key exchange") + + +class HttpStatusCodeException(HttpMediaSessionException): + def __init__(self, status_code: int) -> None: + super().__init__("HTTP request returned {} status code".format(status_code)) + + +class KeyExchangeMissingException(HttpMediaSessionException, RuntimeError): + def __init__(self) -> None: + super().__init__("Server reply does not contain the required Key-Exchange") diff --git a/deps/lib/python3.10/site-packages/pytapo/media_stream/response.py b/deps/lib/python3.10/site-packages/pytapo/media_stream/response.py new file mode 100644 index 0000000..6f56beb --- /dev/null +++ b/deps/lib/python3.10/site-packages/pytapo/media_stream/response.py @@ -0,0 +1,23 @@ +from typing import Mapping, Optional + + +class HttpMediaResponse: + def __init__( + self, + seq: Optional[int], + session: Optional[int], + headers: Mapping[str, str], + encrypted: bool, + mimetype: str, + ciphertext: Optional[bytes], + plaintext: bytes, + json_data, + ): + self.seq = seq + self.session = session + self.headers = headers + self.encrypted = encrypted + self.mimetype = mimetype + self.ciphertext = ciphertext + self.plaintext = plaintext + self.json_data = json_data diff --git a/deps/lib/python3.10/site-packages/pytapo/media_stream/session.py b/deps/lib/python3.10/site-packages/pytapo/media_stream/session.py new file mode 100644 index 0000000..4a09cb2 --- /dev/null +++ b/deps/lib/python3.10/site-packages/pytapo/media_stream/session.py @@ -0,0 +1,509 @@ +import asyncio +import hashlib +import json +import logging +import random +import warnings +from asyncio import StreamReader, StreamWriter, Task, Queue +from json import JSONDecodeError +from typing import Optional, Mapping, Generator, MutableMapping + +from pytapo.media_stream._utils import ( + generate_nonce, + md5digest, + parse_http_response, + parse_http_headers, +) +from pytapo.media_stream.crypto import AESHelper +from pytapo.media_stream.error import ( + HttpStatusCodeException, + KeyExchangeMissingException, +) +from pytapo.media_stream.response import HttpMediaResponse + +logger = logging.getLogger(__name__) + + +class HttpMediaSession: + def __init__( + self, + ip: str, + cloud_password: str, + super_secret_key: str, + window_size=50, + port: int = 8800, + username: str = "admin", + multipart_boundary: bytes = b"--client-stream-boundary--", + ): + self.ip = ip + self.window_size = window_size + self.cloud_password = cloud_password + self.super_secret_key = super_secret_key + self.hashed_password = md5digest(cloud_password.encode()).decode() + self.port = port + self.username = username + self.client_boundary = multipart_boundary + + self._started: bool = False + self._response_handler_task: Optional[Task] = None + + self._auth_data: Mapping[str, str] = {} + self._authorization: Optional[str] = None + self._device_boundary = b"--device-stream-boundary--" + self._key_exchange: Optional[str] = None + self._aes: Optional[AESHelper] = None + + # Socket stream pair + self._reader: Optional[StreamReader] = None + self._writer: Optional[StreamWriter] = None + + self._sequence_numbers: MutableMapping[int, Queue] = {} + self._sessions: MutableMapping[int, Queue] = {} + + @property + def started(self) -> bool: + return self._started + + async def __aenter__(self): + await self.start() + return self + + async def start(self): + req_line = b"POST /stream HTTP/1.1" + headers = { + b"Content-Type": "multipart/mixed;boundary={}".format( + self.client_boundary.decode() + ).encode(), + b"Connection": b"keep-alive", + b"Content-Length": b"-1", + } + try: + self._reader, self._writer = await asyncio.open_connection( + self.ip, self.port + ) + logger.info("Connected to the media streaming server") + + # Step one: perform unauthenticated request + await self._send_http_request(req_line, headers) + + data = await self._reader.readuntil(b"\r\n\r\n") + res_line, headers_block = data.split(b"\r\n", 1) + _, status_code, _ = parse_http_response(res_line) + res_headers = parse_http_headers(headers_block) + + self._auth_data = { + i[0].strip().replace('"', ""): i[1].strip().replace('"', "") + for i in ( + j.split("=") + for j in res_headers["WWW-Authenticate"].split(" ", 1)[1].split(",") + ) + } + self._auth_data.update( + { + "username": self.username, + "cnonce": generate_nonce(24).decode(), + "nc": "00000001", + "qop": "auth", + } + ) + + challenge1 = hashlib.md5( + ":".join( + (self.username, self._auth_data["realm"], self.hashed_password) + ).encode() + ).hexdigest() + challenge2 = hashlib.md5(b"POST:/stream").hexdigest() + + self._auth_data["response"] = hashlib.md5( + b":".join( + ( + challenge1.encode(), + self._auth_data["nonce"].encode(), + self._auth_data["nc"].encode(), + self._auth_data["cnonce"].encode(), + self._auth_data["qop"].encode(), + challenge2.encode(), + ) + ) + ).hexdigest() + + self._authorization = ( + 'Digest username="{username}",realm="{realm}"' + ',uri="/stream",algorithm=MD5,' + 'nonce="{nonce}",nc={nc},cnonce="{cnonce}",qop={qop},' + 'response="{response}",opaque="{opaque}"'.format( + **self._auth_data + ).encode() + ) + headers[b"Authorization"] = self._authorization + + logger.debug("Authentication data retrieved") + + # Step two: start actual communication + await self._send_http_request(req_line, headers) + + # Ensure the request was successful + data = await self._reader.readuntil(b"\r\n\r\n") + res_line, headers_block = data.split(b"\r\n", 1) + _, status_code, _ = parse_http_response(res_line) + if status_code != 200: + raise HttpStatusCodeException(status_code) + + # Parse important HTTP headers + res_headers = parse_http_headers(headers_block) + if "Key-Exchange" not in res_headers: + raise KeyExchangeMissingException + + boundary = None + if "Content-Type" in res_headers: + # noinspection PyBroadException + try: + boundary = filter( + lambda chunk: chunk.startswith("boundary="), + res_headers["Content-Type"].split(";"), + ).__next__() + boundary = boundary.split("=")[1].encode() + except Exception: + boundary = None + if not boundary: + warnings.warn( + "Server did not provide a multipart/mixed boundary." + + " Assuming default." + ) + else: + self._device_boundary = boundary + + # Prepare for AES decryption of content + self._key_exchange = res_headers["Key-Exchange"] + self._aes = AESHelper.from_keyexchange_and_password( + self._key_exchange.encode(), + self.cloud_password.encode(), + self.super_secret_key.encode(), + ) + + logger.debug("AES key exchange performed") + + # Start the response handler in the background to shuffle + # responses to the correct callers + self._started = True + self._response_handler_task = asyncio.create_task( + self._device_response_handler_loop() + ) + + except Exception: + # Close socket in case of issues during setup + # noinspection PyBroadException + try: + self._writer.close() + except Exception: + pass + self._started = False + raise + + async def _send_http_request( + self, delimiter: bytes, headers: Mapping[bytes, bytes] + ): + self._writer.write(delimiter + b"\r\n") + for header, value in headers.items(): + self._writer.write(b": ".join((header, value)) + b"\r\n") + await self._writer.drain() + + self._writer.write(b"\r\n") + await self._writer.drain() + + async def _device_response_handler_loop(self): + logger.debug("Response handler is running") + + while self._started: + session = None + seq = None + + # We're only interested in what comes after it, + # what's before and the boundary goes to the trash + await self._reader.readuntil(self._device_boundary) + + logger.debug("Handling new server response") + + # print("got response") + + # Read and parse headers + headers_block = await self._reader.readuntil(b"\r\n\r\n") + headers = parse_http_headers(headers_block) + # print(headers) + + mimetype = headers["Content-Type"] + length = int(headers["Content-Length"]) + encrypted = bool(int(headers["X-If-Encrypt"])) + + if "X-Session-Id" in headers: + session = int(headers["X-Session-Id"]) + if "X-Data-Sequence" in headers: + seq = int(headers["X-Data-Sequence"]) + + # Now we know the content length, let's read it and decrypt it + json_data = None + # print("TEST0") + data = await self._reader.readexactly(length) + if encrypted: + # print("encrypted") + ciphertext = data + # print("TEST1") + try: + # print("lolo") + # print(ciphertext) + plaintext = self._aes.decrypt(ciphertext) + # if length == 384: + # print(plaintext) + # print("lala") + # print(plaintext) + except ValueError as e: + # print(e) + if "padding is incorrect" in e.args[0].lower(): + e = ValueError( + e.args[0] + + " - This usually means that" + + " the cloud password is incorrect." + ) + plaintext = e + except Exception as e: + plaintext = e + else: + # print("plaintext") + ciphertext = None + plaintext = data + # print(plaintext) + # JSON responses sometimes have the above info in the payload, + # not the headers. Let's parse it. + if mimetype == "application/json": + try: + json_data = json.loads(plaintext.decode()) + if "seq" in json_data: + # print("Setting seq") + seq = json_data["seq"] + if "params" in json_data and "session_id" in json_data["params"]: + session = int(json_data["params"]["session_id"]) + # print("Setting session") + except JSONDecodeError: + logger.warning("Unable to parse JSON sent from device") + + if ( + (session is None) + and (seq is None) + or ( + (session is not None) + and (session not in self._sessions) + and (seq is not None) + and (seq not in self._sequence_numbers) + ) + ): + logger.warning( + "Received response with no or invalid session information " + "(sequence {}, session {}), can't be delivered".format(seq, session) + ) + continue + + # # Update our own sequence numbers to avoid collisions + # if (seq is not None) and (seq > self._seq_counter): + # self._seq_counter = seq + 1 + + queue: Optional[Queue] = None + + # Move queue to use sessions from now on + if ( + (session is not None) + and (seq is not None) + and (session not in self._sessions) + and (seq in self._sequence_numbers) + ): + queue = self._sequence_numbers.pop(seq) + self._sessions[session] = queue + elif (session is not None) and (session in self._sessions): + queue = self._sessions[session] + + if queue is None: + raise AssertionError("BUG! Queue not retrieved and not caught earlier") + + response_obj = HttpMediaResponse( + seq=seq, + session=session, + headers=headers, + encrypted=encrypted, + mimetype=mimetype, + ciphertext=ciphertext, + plaintext=plaintext, + json_data=json_data, + ) + + if ( + seq is not None # never ack live stream + and seq % self.window_size == 0 + and (seq < 2000) + ): # seq < 2000 is temp + # print("sending ack") + data = { + "type": "notification", + "params": {"event_type": "stream_sequence"}, + } + data = json.dumps(data, separators=(",", ":")).encode() + headers = {} + headers[b"X-Session-Id"] = str(session).encode() + headers[b"X-Data-Received"] = str( + self.window_size * (seq // self.window_size) + ).encode() + headers[b"Content-Length"] = str(len(data)).encode() + logger.debug("Sending acknowledgement...") + + await self._send_http_request(b"--" + self.client_boundary, headers) + chunk_size = 4096 + for i in range(0, len(data), chunk_size): + # print(data[i : i + chunk_size]) + self._writer.write(data[i : i + chunk_size]) + await self._writer.drain() + + logger.debug( + ( + "{} response of type {} processed (sequence {}, session {})" + ", dispatching to queue {}" + ).format( + "Encrypted" if encrypted else "Plaintext", + mimetype, + seq, + session, + id(queue), + ) + ) + + await queue.put(response_obj) + + async def transceive( + self, + data: str, + mimetype: str = "application/json", + session: int = None, + encrypt: bool = False, + no_data_timeout=1.0, + ) -> Generator[HttpMediaResponse, None, None]: + sequence = None + queue = None + + if mimetype != "application/json" and session is None: + raise ValueError("Non-JSON streams must always be bound to a session") + + if mimetype == "application/json": + j = json.loads(data) + if "type" in j and j["type"] == "request": + # Use random high sequence number to avoid collisions + # with sequence numbers from server in queue + + # dispatching + sequence = random.randint(1000, 0x7FFF) + j["seq"] = sequence + data = json.dumps(j, separators=(",", ":")) + + if ( + (sequence is None) + and (session is None) + or (session is not None and session not in self._sessions) + ): + raise ValueError( + "Data is not a request and no existing session has been found" + ) + + if session is not None: + queue = self._sessions[session] + if sequence is not None: + queue = asyncio.Queue(128) + self._sequence_numbers[sequence] = queue + + if type(data) == str: + data = data.encode() + + headers = { + b"Content-Type": mimetype.encode(), + } + + if encrypt: + data = self._aes.encrypt(data) + headers[b"X-If-Encrypt"] = b"1" + + headers[b"Content-Length"] = str(len(data)).encode() + + if mimetype != "application/json": + headers[b"X-If-Encrypt"] = str( + int(encrypt) + ).encode() # Always sent if data is not JSON + if session is not None: + headers[b"X-Session-Id"] = str( + session + ).encode() # If JSON, session is included in the payload + + if self.window_size is not None: + headers[b"X-Data-Window-Size"] = str(self.window_size).encode() + + await self._send_http_request(b"--" + self.client_boundary, headers) + + chunk_size = 4096 + # print("Sending:") + for i in range(0, len(data), chunk_size): + # print(data[i : i + chunk_size]) + self._writer.write(data[i : i + chunk_size]) + await self._writer.drain() + + self._writer.write(b"\r\n") + await self._writer.drain() + + logger.debug( + ( + "{} request of type {} sent (sequence {}, session {})" + ", expecting {} responses from queue {}" + ).format( + "Encrypted" if encrypt else "Plaintext", + mimetype, + sequence, + session, + self.window_size + 1, + id(queue), + ) + ) + + try: + while True: + coro = queue.get() + if no_data_timeout is not None: + try: + resp: HttpMediaResponse = await asyncio.wait_for( + coro, timeout=no_data_timeout + ) + except asyncio.exceptions.TimeoutError: + logger.debug( + "Server did not send a new chunk in {} sec (sequence {}" + ", session {}), assuming the stream is over".format( + no_data_timeout, sequence, session + ) + ) + break + else: + # No timeout, the user needs to cancel this externally + resp: HttpMediaResponse = await coro + logger.debug("Got one response from queue {}".format(id(queue))) + if resp.session is not None: + session = resp.session + if resp.encrypted and isinstance(resp.plaintext, Exception): + raise resp.plaintext + # print(resp.plaintext) + yield resp + + finally: + # Ensure the queue is deleted even if the coroutine is canceled externally + if session in self._sessions: + del self._sessions[session] + + async def __aexit__(self, exc_type, exc_val, exc_tb): + await self.close() + + async def close(self): + if self._started: + self._started = False + self._response_handler_task.cancel() + self._writer.close() + await self._writer.wait_closed() diff --git a/deps/lib/python3.10/site-packages/pytapo/media_stream/temp.py b/deps/lib/python3.10/site-packages/pytapo/media_stream/temp.py new file mode 100644 index 0000000..72c993d --- /dev/null +++ b/deps/lib/python3.10/site-packages/pytapo/media_stream/temp.py @@ -0,0 +1,22 @@ + + """ + if not self.sentAudio: + self.sentAudio = True + print("Read") + with open("sample.mp2", mode="rb") as file: # b is important -> binary + fileContent = file.read() + data = fileContent + headers = {} + headers[b"Content-Type"] = str("audio/mp2t").encode() + headers[b"X-Session-Id"] = str(session).encode() + headers[b"Content-Length"] = str(len(data)).encode() + + await self._send_http_request(b"--" + self.client_boundary, headers) + chunk_size = 4096 + for i in range(0, len(data), chunk_size): + print(data[i : i + chunk_size]) + self._writer.write(data[i : i + chunk_size]) + await self._writer.drain() + + print("sending payload") + """ diff --git a/deps/lib/python3.10/site-packages/pytapo/temp.py b/deps/lib/python3.10/site-packages/pytapo/temp.py new file mode 100644 index 0000000..17dfbc9 --- /dev/null +++ b/deps/lib/python3.10/site-packages/pytapo/temp.py @@ -0,0 +1,58 @@ + + def scan(self): + requests = self.performRequest( + { + "method": "multipleRequest", + "params": { + "requests": [ + { + "method": "getDeviceInfo", + "params": {"device_info": {"name": ["basic_info"]}}, + }, # correct request, OK + { + "method": "getDeviceInfo", + "params": {"device_infoBAD": {"name": ["basic_info"]}}, + }, # incorrect param key: -40106 + { + "method": "getDeviceInfo", + "params": {"device_info": {"name": ["basic_infoBAD"]}}, + }, # incorrect value in array: -40106 + { + "method": "getDeviceInfo", + "params": {"device_info": {"name": []}}, + }, # empty array: OK + { + "method": "getDeviceInfo", + "params": {"device_info": {"name": "null"}}, + }, # incorrect value type: -40106 + { + "method": "getDeviceInfoBAD", + "params": {"device_info": {"name": []}}, + }, # incorrect function name: -40210 + { + "method": "getDeviceInfo", + "paramssssss": {"device_info": {"name": []}}, + }, # incorrect params key name, OK + {"method": "getDeviceInfo"}, # only method, OK + {"method": "getDeviceInfoBAD"}, # method does not exist: -40210 + { + "method": "getConnectStatus" + }, # -40210 this means the function does not exist + { + "method": "scanApList" + }, # -40210 this means the function does not exist + { + "method": "connectAp" + }, # -40210 this means the function does not exist + { + "method": "getConnectionType", + "params": {"network": {"get_connection_type": []}}, + }, # todo: create wifi function + ] + }, + } + ) + for request in requests["result"]["responses"]: + print(request) + + return True diff --git a/lovelace/overview/feed.yaml b/lovelace/overview/feed.yaml index 094f0a1..ccebc0d 100755 --- a/lovelace/overview/feed.yaml +++ b/lovelace/overview/feed.yaml @@ -23,4 +23,15 @@ # - "Safe" # - entity: binary_sensor.warning_duisburg_stadt_5 # exclude_states: - # - "Safe" \ No newline at end of file + # - "Safe" + +- camera_view: live + type: picture-glance + title: Wintergarten + entities: + - entity: button.wintergarten_move_left + - entity: button.wintergarten_move_up + - entity: button.wintergarten_move_down + - entity: button.wintergarten_move_right + - entity: switch.wintergarten_auto_track + camera_image: camera.wintergarten_hd_stream diff --git a/packages/homeassistant/recorder.yaml b/packages/homeassistant/recorder.yaml index d19f432..d7739e6 100755 --- a/packages/homeassistant/recorder.yaml +++ b/packages/homeassistant/recorder.yaml @@ -3,5 +3,14 @@ recorder: auto_purge: true purge_keep_days: 60 exclude: + domains: + - automation + - updater + entity_globs: + - sensor.weather_* entities: - - sensor.time \ No newline at end of file + - sun.sun # Don't record sun data + - sensor.last_boot # Comes from 'systemmonitor' sensor platform + - sensor.date + event_types: + - call_service # Don't record service calls diff --git a/zigbee.db-shm b/zigbee.db-shm new file mode 100755 index 0000000..07ffbf3 Binary files /dev/null and b/zigbee.db-shm differ diff --git a/zigbee.db-wal b/zigbee.db-wal new file mode 100755 index 0000000..15ec786 Binary files /dev/null and b/zigbee.db-wal differ