Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Difference between revisions of "BaSyx / Documentation / Components / AAS Server / Features / Hierarchical MQTT"
Line 8: | Line 8: | ||
− | MQTT supports hierarchical topics with wildcard subscription support. | + | MQTT supports hierarchical topics with [https://www.hivemq.com/blog/mqtt-essentials-part-5-mqtt-topics-best-practices/ wildcard subscription support]. |
− | For example, if the topics ''a/b/x'' and ''a/b/y'' exist, subscribing to ''a/b/ | + | For example, if the topics ''a/b/x'' and ''a/b/y'' exist, subscribing to ''a/b/+'' subscribes to all events broadcasted on both topics. |
== Feature Overview == | == Feature Overview == | ||
Line 20: | Line 20: | ||
*/aas-repository/<repo-id>/shells/updated | */aas-repository/<repo-id>/shells/updated | ||
** Payload: Complete AAS (without ConceptDictionaries) | ** Payload: Complete AAS (without ConceptDictionaries) | ||
+ | |||
*/aas-repository/<repo-id>/shells/<encoded-aas-identifier>/submodels/created | */aas-repository/<repo-id>/shells/<encoded-aas-identifier>/submodels/created | ||
Line 27: | Line 28: | ||
*/aas-repository/<repo-id>/shells/<encoded-aas-identifier>/submodels/updated | */aas-repository/<repo-id>/shells/<encoded-aas-identifier>/submodels/updated | ||
** Payload: Submodels without SMEs | ** Payload: Submodels without SMEs | ||
+ | |||
*/aas-repository/<repo-id>/shells/<encoded-aas-identifier>/submodels/<encoded-sm-identifier>/submodelElements/<idShortPath>/created | */aas-repository/<repo-id>/shells/<encoded-aas-identifier>/submodels/<encoded-sm-identifier>/submodelElements/<idShortPath>/created | ||
Line 41: | Line 43: | ||
== Feature Configuration == | == Feature Configuration == | ||
− | The feature can be configured | + | The feature can be configured in the ''aas.properties'' file by setting ''aas.events = MQTTV2'' for Base64URL encoding or ''aas.events = MQTTV2_SIMPLE_ENCODING'' for URL encoding. |
+ | Additionally, the repo id needs to be configured via ''aas.id = <repo-id>''. | ||
+ | |||
+ | An example configuration for this feature could be: | ||
+ | |||
+ | aas.events = MQTTV2 | ||
+ | aas.id = product-aas-repo |
Revision as of 14:26, 26 November 2022
Contents
Hierarchical MQTT Eventing
User Story & Use Case
As AAS Components user
I want hierarchical MQTT topics in the AAS Server Component
so that I can subscribe precisely to the topics of interest without having to filter on client side
MQTT supports hierarchical topics with wildcard subscription support.
For example, if the topics a/b/x and a/b/y exist, subscribing to a/b/+ subscribes to all events broadcasted on both topics.
Feature Overview
The following hierarchical topics with their respective payloads are implemented:
- /aas-repository/<repo-id>/shells/created
- Payload: Complete AAS (without ConceptDictionaries)
- /aas-repository/<repo-id>/shells/deleted
- Payload: Complete AAS (old, without ConceptDictionaries)
- /aas-repository/<repo-id>/shells/updated
- Payload: Complete AAS (without ConceptDictionaries)
- /aas-repository/<repo-id>/shells/<encoded-aas-identifier>/submodels/created
- Payload: Submodels without SMEs
- /aas-repository/<repo-id>/shells/<encoded-aas-identifier>/submodels/deleted
- Payload: Submodels without SMEs
- /aas-repository/<repo-id>/shells/<encoded-aas-identifier>/submodels/updated
- Payload: Submodels without SMEs
- /aas-repository/<repo-id>/shells/<encoded-aas-identifier>/submodels/<encoded-sm-identifier>/submodelElements/<idShortPath>/created
- Payload: SME without value (or value-equivalent)
- /aas-repository/<repo-id>/shells/<encoded-aas-identifier>/submodels/<encoded-sm-identifier>/submodelElements/<idShortPath>/deleted
- Payload: old SME without value (or value-equivalent)
- /aas-repository/<repo-id>/shells/<encoded-aas-identifier>/submodels/<encoded-sm-identifier>/submodelElements/<idShortPath>/updated
- Payload: SME without value (or value-equivalent)
- /aas-repository/<repo-id>/shells/<encoded-aas-identifier>/submodels/<encoded-sm-identifier>/submodelElements/<idShortPath>/value
- SME value, if not specified otherwise via qualifier
For AAS/SM-Identifier encoding, Base64URL encoding and URL encoding are available.
Feature Configuration
The feature can be configured in the aas.properties file by setting aas.events = MQTTV2 for Base64URL encoding or aas.events = MQTTV2_SIMPLE_ENCODING for URL encoding. Additionally, the repo id needs to be configured via aas.id = <repo-id>.
An example configuration for this feature could be:
aas.events = MQTTV2 aas.id = product-aas-repo