diff --git a/doc/Analytics.xml b/doc/Analytics.xml
index eaef26c36..075fa0e16 100755
--- a/doc/Analytics.xml
+++ b/doc/Analytics.xml
@@ -4,19 +4,19 @@
Analytics Service SpecificationAnalytics
- 21.12
+ 22.06ONVIF™www.onvif.org
- December, 2021
+ June, 2022
- 2008-2020
+ 2008-2022ONVIF™ All rights reserved.
@@ -234,6 +234,15 @@
Added body temperature alarm rule. Clarifications for color.
+
+ 22.06
+ Jun-2022
+
+ Fredrik Svensson, Hans Busch, Sriram Bhetanabottla, Venki Aravapalli
+
+ Move scene description to separate chapter and append section on JSON syntax.
+ Clarify color value range. Add missing Access Class for DeleteAnalyticsModule. Update license plate rule configuration.
+
@@ -254,6 +263,8 @@
<>ISO 3166-1:2013 Codes for the representation of names of countries and their subdivisions -- Part 1: Country codes<>
+ JSON-LD 1.1 A JSON-based Serialization for Linked Data
+ <>Terms and Definitions
@@ -488,7 +499,13 @@
This specification defines a configuration framework for the analytics engine called ONVIF Analytics Service. This framework enables a client to contact a device implementing the ONVIF Analytics Service for supported analytics modules and their configurations. Configurations of such modules can be dynamically added, removed or modified by a client, allowing a client to run multiple Analytics Modules in parallel if supported by the device.
- The output from the Analytics Engine is called a Scene Description. The Scene Description represents the abstraction of the scene in terms of metadata for the objects, either static or dynamic, that are part of the scene. This specification defines an XML-based Scene Description Interface including data types.
+ The output from the Analytics Engine is called a Scene Description.
+ The Scene Description represents the abstraction of the scene in terms of metadata for the
+ objects, either static or dynamic, that are part of the scene. This specification defines an
+ XML-based Scene Description Interface including data types. For easy consumption by
+ non-traditional clients (e.g. cloud vendors) and to bridge gap between traditional
+ surveillance systems and IoT ecosystems metadata including scene description can be published
+ in JSON format over the MQTT protocol.Rules describe how the scene description is interpreted and how to react on that information. The specification defines standard rule syntax and methods to communicate configuration of these rules from the application to the device. A device supporting ONVIF Analytics Service shall implement the Scene Description Interface and allow events to be dispatched using the Event Service. If the device additionally supports a rule engine then it shall implement the Rules Analytics Modules Interface.Event and action engine interfaces and configuration is out of scope of this specification. The event interface is handled through the Event Service as described in the ONVIF Core specification.
@@ -500,25 +517,12 @@
Radiometry types, modules and rules are defined in the RADIOMETRY Schema file http://www.onvif.org/ver20/analytics/radiometry.xsd.
- Service
- This section covers the following main areas of this architecture:
-
-
- Analytics Module interface
-
-
- Scene description
-
-
- Rules interface
-
-
- The analytics service allows fine-grained configuration of individual rules and individual analytics modules (see and ). introduces the XML-based scene description, which can be streamed as metadata to clients via RTP as defined in the ONVIF Streaming Specification.
-
- Scene Description Interface
+ Scene DescriptionOverview
- This specification defines the XML schema that shall be used to encode Scene Descriptions by a device. The scope of the Scene Description covers basic Scene Elements which can be displayed in a video overlay to the end-user as well as a framework for vendor-specific extensions. Annex A shows additional Scene Elements that may be used for processing vendor-specific rules.
+ This chapter defines the XML-based scene description, which can be streamed as metadata to clients via RTP as defined in the ONVIF Streaming Specification.
+ The scope of the Scene Description covers basic Scene Elements which can be displayed in a video overlay to the end-user as well as a framework for vendor-specific extensions.
+ Section defines an alternate JSON based representation.Frame Related Content
@@ -835,7 +839,7 @@
Color descriptorThe optional color descriptor allows to describe the representative colors of the
- detected object or region. Each color is represented as vectors based on a color space.
+ detected object or region. Each color is represented as a three-dimensional vector based on a color space.
Its weight denotes the fraction of pixels assigned to the representative color in the
range [0 .. 1]. Color covariance describes the variation of color values around the
representative color value in color space thus representative color denotes a region in
@@ -946,6 +950,41 @@
+ lists the acceptable value ranges for prominent color
+ spaces.
+
+ Colorspace value ranges
+
+
+
+
+
+ Colorspace
+
+ Range
+
+
+
+
+
+
+ YCbCr
+
+
+ Y [16 to 235] and Cb/Cr[16 to 240]
+
+
+
+
+ RGB
+
+
+ For all component values [0...255]
+
+
+
+
+
Object Class descriptor
@@ -2169,7 +2208,484 @@
+
+ JSON over MQTT
+
+ Metadata publish sequence
+ MQTT is a pub/sub messaging protocol centered around topics.
+ Consumers can subscribe to topics published by producers to get
+ continuous updates on the data content. ONVIF metadata, like video
+ analytics scene descriptions, can be published to an MQTT broker and
+ subscribed to by a consumer.
+ This is sequence of operations to set up the metadata flow:
+
+ An ONVIF client calls AddEventBroker in the device's Event
+ service to set up:
+
+ Address and credentials to the MQTT broker to use
+
+
+
+ A unique TopicPrefix for the device
+
+
+
+ A MetadataFilter listing topics to which the device
+ shall publish
+
+
+
+
+
+ The producer (ONVIF device) connects to the MQTT broker and starts publishing
+ data on the selected topics.
+
+
+
+ The consumer connects to the MQTT broker, specifying which topics
+ that it wants to subscribe to. A consumer can be any MQTT capable
+ client, for example, an event engine like Node-RED, IoT cloud
+ platforms, VSaaS platforms, etc. Multiple comsumers using
+ different topics are possible.
+
+
+
+ The consumer receives updates on subscribed topics and can
+ implement actions like statistics aggregation and complex
+ analytics rules with data from multiple sources.
+
+
+
+ The following sections describe how topics and payload shall be
+ structured by an ONVIF metadata producer when published to an MQTT
+ broker.
+
+
+ MQTT topic structure
+
+ This section describes how an MQTT topic is structured based on
+ metadata type and source expressed as ABNF rules according to RFC
+ 5234.
+
+ Topic = TopicPrefix "/" PayloadPrefix "/" MetadataType "/" MetadataProducer
+ Note that special characters like, ‘/’, ‘#’ and ‘+’ shall be omitted from the topic.
+ with
+
+ TopicPrefix - uniquely identifies the producer and is
+ configurable through the AddEventBroker command in the Event
+ service. It shall not be empty.
+
+
+
+ PayloadPrefix - signals in what format the data is
+ published. See below for
+ possible values.
+
+
+
+ MetadataType - signals what type of metadata it is. See
+ below for possible
+ values.
+
+
+
+ MetadataProducer - specifies additional source information for the metadata. The
+ format depends on the metadata type. See below
+ for definition.
+
+
+
+
+ MetadataType categories with corresponding MetadataProducer
+
+
+
+
+ MetadataType
+
+ MetadataProducer (template in ABNF)
+
+ Description
+
+
+
+
+
+ "VideoAnalytics"
+
+ ProfileToken "/"
+ AnalyticsModuleName
+
+ ONVIF metadata from a VideoAnalytics module
+ active via VideoAnalyticsConfiguration included in Profile
+ configuration
+
+
+
+ "AudioAnalytics"
+
+ ProfileToken "/"
+ AnalyticsModuleName
+
+ ONVIF metadata from an AudioAnalytics module
+ active via AudioAnalyticsConfiguration included in Profile
+ configuration
+
+
+
+ "PTZ"
+
+ ProfileToken "/" PTZConfigurationToken
+
+ ONVIF metadata from a PTZ node included in
+ Profile configuration
+
+
+
+
+
+ with
+
+ ProfileToken = The media profile token
+
+
+
+ AnalyticsModuleName = The name of the analytics
+ module
+
+
+
+ PTZConfigurationToken = The PTZ configuration token
+
+
+
+
+
+ JSON payload format
+
+ Instead of creating a full fledged schema for XML to JSON
+ conversion, provides a set of generic rules that devices
+ shall need to implement to express ONVIF metadata in JSON
+ format.
+
+
+ ONVIF Metadata XML to JSON conversion
+
+
+
+
+ ONVIF XML Element
+
+ ONVIF JSON
+ Representation
+
+ Description
+
+
+
+
+
+ <xmltag/>
+
+ “xmltag”: null
+
+ Null tag
+
+
+
+ <xmltag>text</xmltag>
+
+ “xmltag”: "text"
+
+ Simple tag with value
+
+
+
+ < xmltag name="value" />
+
+ “xmltag”:{"@name": "value"}
+
+ Tag with attribute
+
+
+
+ <xmltag name="value">text</
+ xmltag>
+
+ “xmltag”: { "@name": "value", "#text": "text"
+ }
+
+ Tag with attribute and value
+
+
+
+ <xmltag> <tag1>text</tag1>
+ <tag2>text</tag2> </xmltag
+
+ “xmltag”: { "tag1": "text", "tag2": "text"
+ }
+
+ Tag with multiple child tags
+
+
+
+ <xmltag> <tag1>text</tag1>
+ <tag1>text</tag1> </ xmltag>
+
+ “xmltag”: { "tag1": ["text", "text"]
+ }
+
+ Tag with multiple child tags of same type
+ (similar to minOccurs > 1)
+
+
+
+
+
+ All extension elements and attributes shall be included within
+ the same parent JSON object.
+
+ Namespace prefixes for ONVIF defined namespaces shall be
+ dropped, i.e. elements and attributes that belong to the following
+ namespaces:
+
+
+
+ http://www.onvif.org/ver10/schema
+
+
+
+ http://www.onvif.org/ver20/analytics/humanface
+
+
+
+ http://www.onvif.org/ver20/analytics/humanbody
+
+
+
+ http://www.onvif.org/ver20/analytics/radiometry
+
+
+
+ XML elements and attributes that belong to a different namespace
+ shall have their names prepended with their corresponding namespace
+ prefix joined by a ':' as shown in the example while defining
+ the namespace in the "context" object as per JSON-LD specification.. See specifically the acme:ColorName
+ exampe.
+
+
+
+ Example
+
+ Sample metadata frame in XML format:
+
+ <?xml version="1.0" encoding="UTF-8"?>
+<tt:MetadataStream xmlns:tt="http://www.onvif.org/ver10/schema"
+xmlns:fc="http://www.onvif.org/ver20/analytics/humanface"
+xmlns:bd="http://www.onvif.org/ver20/analytics/humanbody"
+xmlns:acme="http://www.acme.com/schema">
+ <tt:VideoAnalytics>
+ <tt:Frame UtcTime="2021-10-05T15:13:27.321" Source="MyClassifier">
+ <tt:Transformation>
+ <tt:Translate x="-1.0" y="-1.0"/>
+ <tt:Scale x="0.003125" y="0.00416667"/>
+ </tt:Transformation>
+ <tt:Object ObjectId="15">
+ <tt:Appearance>
+ <tt:Shape>
+ <tt:BoundingBox left="20.0" top="80.0" right="100.0" bottom="30.0"/>
+ <tt:CenterOfGravity x="60.0" y="50.0"/>
+ <tt:Polygon>
+ <tt:Point x="20.0" y="30.0"/>
+ <tt:Point x="100.0" y="30.0"/>
+ <tt:Point x="100.0" y="80.0"/>
+ <tt:Point x="20.0" y="80.0"/>
+ </tt:Polygon>
+ </tt:Shape>
+ <tt:Color>
+ <tt:ColorCluster>
+ <tt:Color X="213" Y="135" Z="126" />
+ <tt:Weight>0.9</tt:Weight>
+ <acme:ColorName>White</acme:ColorName>
+ </tt:ColorCluster>
+ <tt:ColorCluster>
+ <tt:Color X="102" Y="176" Z="119" />
+ <tt:Weight>0.5</tt:Weight>
+ <acme:ColorName>Blue</acme:ColorName>
+ </tt:ColorCluster>
+ </tt:Color>
+ <tt:Class>
+ <tt:Type Likelihood="0.8">Human</tt:Type>
+ </tt:Class>
+ <tt:HumanFace>
+ <fc:Gender>Male</fc:Gender>
+ <fc:Age>
+ <tt:Min>20</tt:Min>
+ <tt:Max>30</tt:Max>
+ </fc:Age>
+ <fc:Accessory>
+ <fc:Opticals>
+ <fc:Wear>True</fc:Wear>
+ </fc:Opticals>
+ <fc:Hat>
+ <fc:Wear>True</fc:Wear>
+ </fc:Hat>
+ </fc:Accessory>
+ </tt:HumanFace>
+ <tt:HumanBody>
+ <bd:Clothing>
+ <bd:Tops>
+ <bd:Category>LongSleeve</bd:Category>
+ </bd:Tops>
+ <bd:Bottoms>
+ <bd:Category>Shorts</bd:Category>
+ </bd:Bottoms>
+ </bd:Clothing>
+ <bd:Belonging>
+ <bd:Bag>
+ <bd:Category>Backpack</bd:Category>
+ </bd:Bag>
+ </bd:Belonging>
+ </tt:HumanBody>
+ </tt:Appearance>
+ </tt:Object>
+ </tt:Frame>
+ </tt:VideoAnalytics>
+</tt:MetadataStream>
+
+ This data will be published under this topic:
+
+ MyDevice/onvif-mj/VideoAnalytics/1/MyClassifier
+
+ Where "MyDevice" is the given TopicPrefix and "1" is the
+ profile token. Shown below is how the sample metadata
+ frame is formatted in JSON:
+
+ {
+ "Frame": [{
+ "@UtcTime": "2021-10-05T15:13:27.321",
+ "@Source": "MyClassifier",
+ "@context": {
+ "acme": "http://www.acme.com/schema"
+ },
+ "Transformation": {
+ "Translate": {
+ "@x": "-1.0", "@y": "-1.0"
+ },
+ "Scale": {
+ "@x": "0.003125", "@y": "0.00416667"
+ }
+ },
+ "Object": [{
+ "@ObjectId": "15",
+ "Appearance": {
+ "Shape": {
+ "BoundingBox": {
+ "@left": "20.0", "@top": "20.0", "@right": "100.0", "@bottom": "30.0"
+ },
+ "CenterOfGravity": {
+ "@x": "60.0", "@y": "50.0"
+ },
+ "Polygon": [{
+ "@x": "20.0", "@y": "30.0"
+ }, {
+ "@x": "100.0", "@y": "30.0"
+ }, {
+ "@x": "100.0", "@y": "80.0"
+ }, {
+ "@x": "20.0", "@y": "80.0"
+ }]
+ },
+ "Color": {
+ "ColorCluster": [{
+ "Color": {
+ "@X": "213", "@Y": "135", "@Z": "126"
+ },
+ "Weight": 0.9,
+ "acme:ColorName": "White"
+ }, {
+ "Color": {
+ "@X": "102", "@Y": "176", "@Z": "119"
+ },
+ "Weight": 0.5,
+ "acme:ColorName": "Blue"
+ }]
+ },
+ "Class": {
+ "@Likelihood": "0.8",
+ "#text": "Human"
+ },
+ "HumanFace": {
+ "Gender:": "Male",
+ "Age": {
+ "@Min": "20", "@Max": "30"
+ },
+ "Accessory": {
+ "Opticals": {
+ "Wear": "true"
+ },
+ "Hat": {
+ "Wear": "true"
+ }
+ }
+ },
+ "HumanBody": {
+ "Clothing": {
+ "Tops": {
+ "Category": "LongSleeve"
+ },
+ "Bottoms": {
+ "Category": "Shorts"
+ }
+ },
+ "Belonging": {
+ "Bag": {
+ "Category": "Backpack"
+ }
+ }
+ }
+ }
+ }]
+ }]
+}
+
+
+
+ Service
+ This section covers the following main areas of this architecture:
+
+
+ Analytics Module interface
+
+
+ Rules interface
+
+
+ The analytics service allows fine-grained configuration of individual rules and individual analytics modules (see and ). Configuration description languageThis specification introduces a description language which is used to configure rules and analytics modules. Beside configuration parameters the config description additionally contains an event description according to the OASIS topic notification.
@@ -2402,7 +2918,7 @@
Example
- This examples explains the options for an analytics module called myModule in namesapce nn with four simple parameters:
+ This examples explains the options for an analytics module called myModule in namespace nn with four simple parameters:
@@ -2968,6 +3484,12 @@
The device cannot delete the modules without creating a conflicting configuration.
+
+ access class
+
+ ACTUATE
+
+
@@ -3050,8 +3572,8 @@
-
- Capabilities
+
+ GetServiceCapabilitiesThe capabilities reflect optional functions and functionality of a service. The information is static and does not change during device operation. The following capabilites are available:
@@ -6233,6 +6755,17 @@
Optional
+
+
+
+ Threshold
+
+
+ The level of confidence required for the detection/recognition.
+
+
+ Optional
+
@@ -6420,6 +6953,12 @@
+
+
+
+
+
+
@@ -6498,6 +7037,61 @@
Optional
+
+
+
+ Country
+
+
+ Specifies the country for which LPR should be processed.
+
+
+ Optional
+
+
+
+
+ Sensitivity
+
+
+ Detection sensitivity which provides compromise between detection rate and false alarms.Higher the sensitivity, more License plates are detected at the cost of increasing false alarms number.
+
+
+ Optional
+
+
+
+
+ PlateMinWidth
+
+
+ Minimum width of the license plate in percentage to be detected/recognized with respect to Scene Image.
+
+
+ Optional
+
+
+
+
+ PlateMaxWidth
+
+
+ Maximum width of the license plate in percentage to be detected/recognized with respect to Scene Image.
+
+
+ Optional
+
+
+
+
+ EventInterval
+
+
+ Minimum interval between event notification when same license plate is recognized.
+
+
+ Optional
+
diff --git a/doc/AppMgmt.xml b/doc/AppMgmt.xml
index 82b52052b..5fe398848 100644
--- a/doc/AppMgmt.xml
+++ b/doc/AppMgmt.xml
@@ -4,19 +4,19 @@
Application Management Service SpecificationApp Mgmt
- 21.12
+ 22.06ONVIF™www.onvif.org
- December, 2021
+ June, 2022
- 2008-2021
+ 2008-2022ONVIF™ All rights reserved.
@@ -64,6 +64,14 @@
Fix inconsistencies between appmgmt schema and doc.
+
+ 22.06
+ Jun-2022
+
+ Sujith Raman
+
+ Correct namespace of event State member.
+
@@ -584,7 +592,7 @@
-
+
]]>
diff --git a/doc/Core.xml b/doc/Core.xml
index 0853733c0..f8bf74431 100644
--- a/doc/Core.xml
+++ b/doc/Core.xml
@@ -4,19 +4,19 @@
ONVIF Core SpecificationONVIF Core Spec
- 21.12
+ 22.06ONVIF™www.onvif.org
- December, 2021
+ June, 2022
- 2008-2020
+ 2008-2022ONVIF™ All rights reserved.
@@ -263,6 +263,14 @@
Add security policy configuration APIs.
+
+ 22.06
+ Jun-2022
+
+ Fredrik Svensson, Michael Adam, Sergey Bogdanov, Sriram Bhetanabottla
+
+ Restructure MQTT topic and payload sections. Include metadata filter. Add Addon capability. Rename sections to show real name of service command.
+
@@ -1102,9 +1110,9 @@
A successful discovery provides the device service address. Once a client has the device service address it can receive detailed device information through the device service, see section below.
- Profiles
- Device functionality can be grouped to so called profiles. The profiles themselves are defined in separate specifications.
- For each profile a number of services and functions are mandatory which are defined in the respective specifications.
+ Profiles and Addons
+ Device functionality can be grouped to so called profiles and addons. Profiles and addons themselves are defined in separate specifications. Addons complement profiles, and you must declare support for one or more profiles to use an addon.
+ For each profile or addon, a number of services and functions are mandatory which are defined in the respective specifications.Device management
@@ -1214,6 +1222,9 @@
Get and set device discovery parameters.
+
+ Get supported addons.
+
@@ -2820,7 +2831,7 @@ onvif://www.onvif.org/name/ARV-453
-
+ System
@@ -2948,6 +2959,14 @@ onvif://www.onvif.org/name/ARV-453
UserConfigNotSupportedIndicates no support for user configuration.
+
+
+ Addons
+
+
+ Indicates support for ONVIF Addons. Strings for each specific addon can be found in its respective specification document.
+
+ Security
@@ -5289,7 +5308,7 @@ onvif://www.onvif.org/name/ARV-453
- Set users settings
+ SetUserThis operation updates the settings for one or several users on a device for authentication, see Sect. for details. The device shall support update of device users and their credentials through the SetUser command. A device shall support this command unless support signalled via the UserConfigNotSupported capability is ‘True’. Either all change requests are processed successfully or a fault message shall be returned and no change requests be processed.In case the optional password value is omitted the device will consider to clear the password. If the device can not accept the password of zero length, the fault message of "ter:PasswordTooWeak" will be returned.If the device signals support for "ModifyPassword" in the SecurityPolicies capability, an authorized user shall be entitled to change his own password independently of the default access policy. In this case a device shall ignore the UserLevel field for any client not fulfilling access class WRITE_SYSTEM.
@@ -5887,7 +5906,7 @@ onvif://www.onvif.org/name/ARV-453
- Auxiliary operation
+ SendAuxiliaryCommandThis section describes operations to 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 commands supported by the device is reported in the AuxiliaryCommands attribute returned by the capabilites commands, see section . The command transmitted by using this command should match one of the commands supported by the device. If for example the capability command response lists only irlampon command, then the SendAuxiliaryCommand argument will be irlampon, which may indicate turning the connected IR lamp on.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.
@@ -7004,7 +7023,7 @@ Event description:
- Synchronization Point
+ SetSynchronizationPointNote that section defines rules for devices supporting persistent notification storage that override the behavior defined in this section.Properties, introduced in section , 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” (see Section ). 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. The following operation shall be provided by all Subscription Manager Endpoints:
@@ -7220,6 +7239,10 @@ http://www.onvif.org/ver10/tev/topicExpression/ConcreteSet
MaxEventBrokers Maxiumum number of event broker configurations that can be added to the device.
+
+
+ MetadataOverMQTT
+ Indicates that metadata streaming over MQTT is supported.
@@ -7468,10 +7491,8 @@ http://www.onvif.org/ver10/tev/topicExpression/ConcreteSet
-
-
+
+
@@ -7487,10 +7508,8 @@ http://www.onvif.org/ver10/tev/topicExpression/ConcreteSet
-
-
+
+
@@ -7599,8 +7618,16 @@ http://www.onvif.org/ver10/tev/topicExpression/ConcreteSet
PublishFilter
- Concrete Topic Expression to select specific topics to publish, see section .
+ Concrete Topic Expression to select specific event topics to publish, see section . Example TopicExpression: "tns1:VideoAnalytics//.|tns1:RuleEngine//."
+ If PublishFilter is empty, then device shall send all events but not metadata, for e.g. "MyDevice/onvif-ej//." .
+
+
+ MetadataFilter
+
+ Concrete Topic Expression to select specific metadata topics to publish, see section . Example TopicExpression: "tns1:VideoAnalytics//. |tns1:AudioAnalytics//. |tns1:PTZ//."
+ If MetadataFilter is empty, then device shall send metadata from all active providers, for e.g. "MyDevice/onvif-mj//." .
+ QoS
@@ -7721,14 +7748,48 @@ http://www.onvif.org/ver10/tev/topicExpression/ConcreteSet
Topic Structure
- Topics are published according to the following structure:
- <TopicPrefix>/<PayloadPrefix>/<LocalTopic>[/&<Source>[/<Key>]]
- ONVIF topics are are only locally unique within the device so they must be prefixed with a TopicPrefix to become globally unique. The TopicPrefix is configurable through the AddEventBroker command. The TopicPrefix shall not be empty. The PayloadPrefix signals what kind of data that is published. The following prefixes are defined.
-
+ Topics are published according to the following structure, expressed as ABNF rules
+ according to RFC 5234. Note that special characters like, '#' and '+' shall be omitted
+ from the topic. For an example, see section .
+ Topic = TopicPrefix "/" PayloadPrefix "/" LocalTopic [ "&" Source ]
+ Source = *("/" SVALUE)
+ with
+
+ TopicPrefix - uniquely identifies the producer and is configurable through the
+ AddEventBroker command in the Event service. It shall not be empty.
+
+
+ PayloadPrefix - signals in what format the data is published. See below for
+ possible values.
+
+
+ LocalTopic is the same as the ONVIF topic, but because MQTT does not support
+ namespaces, the namespace prefix for ONVIF topics shall be dropped, so that for
+ example, "tns1:Device/HardwareFailure/StorageFailure" becomes
+ "Device/HardwareFailure/StorageFailure". This means that the default topic namespace
+ is ONVIF, i.e. "http://www.onvif.org/ver10/topics". If an event uses another topic
+ namespace this should be signalled using the syntax:
+ "tns:{namespace-alias}/<topic>". Vendor specific extensions should choose a
+ suitable namespace alias to avoid name clashes. As an example, consider the ONVIF
+ topic "tns1:Device/HardwareFailure/acme:LensFailure" where
+ tns1="http://www.onvif.org/ver10/topics" and acme="http://www.acme.com/topics". This
+ should be translated to the MQTT topic
+ "Device/HardwareFailure/tns:acme/LensFailure".
+
+
+ SVALUE being the value of the Value attribute of a SimpleItem in the Source part
+ of the message. All SimpleItem values shall be listed in the SOURCE sequentially in
+ the same order as they are listed in the response to GetEventProperties. These
+ values are added to the topic to make it unique so that it can be cached by the
+ broker individually. See for an example.
+
+
+