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 14: | Line 14: | ||
The following hierarchical topics with their respective payloads are implemented: | The following hierarchical topics with their respective payloads are implemented: | ||
− | * | + | *aas-repository/<repo-id>/shells/created |
** Payload: Complete AAS (without ConceptDictionaries) | ** Payload: Complete AAS (without ConceptDictionaries) | ||
− | * | + | *aas-repository/<repo-id>/shells/deleted |
*** Payload: Complete AAS (old, without ConceptDictionaries) | *** Payload: Complete AAS (old, without ConceptDictionaries) | ||
− | * | + | *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 |
** Payload: Submodels without SMEs | ** Payload: Submodels without SMEs | ||
− | * | + | *aas-repository/<repo-id>/shells/<encoded-aas-identifier>/submodels/deleted |
** Payload: Submodels without SMEs | ** Payload: Submodels without SMEs | ||
− | * | + | *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 |
** Payload: SME without value (or value-equivalent) | ** 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) | ** 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) | ** 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 | ** SME value, if not specified otherwise via qualifier | ||
Revision as of 11:38, 29 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
The MQTT broker connectivity is configured via mqtt.properties
Additional to the overall event configuration, the payload send on the ../value topic for updating a SubmodelElement's value can be tailored. For SubmodelElements containing huge values like Blobs, it may be sensible to disable sending their value's content. If this is the case, a qualifier with type emptyValueUpdateEvent and value set to true will configure empty value updates for the specific SubmodelElement (cf. ObservableSubmodelAPIV2Helper).