Note that I am no MQTT expert, but theses are the things I have picked up.
We need to embrace MQTT in a generic way from the Operations Control Portfolio. We need to be able to adapt to a variety of of topic name space structures and to many different JSON payload structures.
Publish capability must have a configurable topic structure. This should default to the name space of the source. I.e. System platform model name space. BUT you must have the capability to modify the topic hierarchy to suit the destination broker name space.
Publish capability must have a customisable JSON message structure for payloads. A default JSON structure should be provided, but the user must be able to modify this format to suit the destination system requirements.
Publish capability should have the ability to roll up data points in to higher level topics. I.e. InTouch might have a number of tags associated with a device. The requirement might be that all these tags must be packed in to the payload of a topic and not be exposed as seperate topics.
Subscribe capability must have the ability to unpack complex JSON payloads and distribute to tags or datapoints. This is required so that we can integrate in to any payload structure.
Publish capability should include an "auto" publish option. I.e. if new tags or objects are added in an AVEVA application, it should automatically start publishing. These should be controlled by pre-defined rules.
Keep support for plain text payloads for subscribe and publish
Keep support for Sparkplug subscribe and publish, but available for all apps
Keep support for store and forward
Have a configuration for items like last will/testament and birth
We need to provide users the option to use our own broker - AVEVA needs to provide a broker (On prem as a start as there are many cloud brokers available)
We need to provide a broker browsing facility so that the user can browse the broker namespace and link topics to tags or data points.
InTouch and System Platform must be able to have these capabilities - hence one driver or platform
These are just some I know is required - there may be lots more requirements. So it would be good that you get some seasoned MQTT people involved.
That is a fantastic list of suggestions . I cannot commit to everything at once so I'll comment on each of the points.
Point taken. Our primary focus is to complete the existing topic formats and to embrace standards where applicable, but we may also look at some of the vendor specifics such as the various MQTT-ish interfaces in Azure.
I acknowledge the need for payload composition/intepretation capability. We likely need to address this beyond MQTT since also REST APIs require JSON formatting/mapping capabilities.
For InTouch, this will likely tie in with UDTs, at least for our own JSON-VTQ2 format.
Same as 2) but inbound.
This will likely be part of UDTs, where instances will publish automatically if configured to do so in the template.
Agree.
Agree, and underway.
A must.
Under consideration
Under consideration
Planned for InTouch, with the aim to apply across portfolio over time.
We're aiming for common and consistent functionality across the products.