Sparkplug提供开放、免费的规范,解决边缘网关或内置MQTT的终端设备,与MQTT应用通过MQTT网络(Infrastructure)进行双向通讯问题。本文档详细说明在设备和应用两侧,符合Sparkplug的MQTT客户端在结构和实现上的要求。
众所周知,MQTT广泛适用于各种应用场景、各种网络结构,Sparkplug规范力图实现如下三个目标:
1.1 定义一套MQTT主题名
正如本文多次提到的,没有硬性规定任何必须的主题名(Topic Namespace)是MQTT众多吸引人的特点之一,这一事实意味着MQTT在物联网解决方案中占有主导地位。Sparkplug规范目的是,识别并记录一套用于SCADA/IIOT的、经过深思熟虑的、优化的主题名。
1.2 定义MQTT状态管理
MQTT规范原本设计是在带宽受限并通常不可靠网络环境下,帮助实时SCADA系统减少数据延迟的,不过许多实现没有很好理解“持续会话感知”(Continuous Session Awareness),甚至没有实现。Sparkplug规范意在充分利用MQTT在应用于SCADA/IIOT时,原生的持续会话感知能力。
1.3 定义MQTT负载
MQTT规范既没有硬性规定特定的主题名,也没有硬性规定特定负载数据编码。Sparkplug规范力图定义负载编码结构,在保留MQTT原始的轻量、带宽利用率高、低延迟特征的同时,增加面向SCADA/IIOT方案的现代编码方案。
Sparkplug定义了通过主题名确定负载编码方案的途径。目前,本规范支持的Sparkplug编码方案有两套:Sparkplug A编码方案基于Kura 开源Google Protocol Buffer定义; Sparkplug B编码方案根据许多使用MQTT的系统集成人员和最终用户的反馈,提供了更丰富的数据模型。
链接:
0. 目录
2. 背景