mqtt
文章平均质量分 69
ironinfo
这个作者很懒,什么都没留下…
展开
-
基于 Dotnetty 的 Mqtt Client
Dotnetty Netty是顶顶大名的网络通讯开发库,使通讯开发人员再也不用非九牛二虎之力来处理socket通讯和一些常见应用层协议如HTTP、WEBSOCKET、MQTT等底层问题,而可以专心做应用层的开发工作。Dotnetty是Azure团队照着Netty开发的C#版本。MQTT Client 基于 Netty/Dotnetty 提供的是MQTT 14种Packet和编码、解码的实现,没有提供MQTT客户端或服务端的官方实现,我重点参考了https://github.com/j...原创 2021-03-12 16:18:42 · 1609 阅读 · 0 评论 -
MQTT 协议14种消息类型表
根据MQTT V3.1 协议文本整理了14种消息类型分别使用/不使用的参数,●使用 /不使用,给出了协议中明确的QoS和VariableHeader值。CLIENT列表示由MQTT客户端发送的消息类型,SERVER列表示由MQTT服务端(broker)发送的消息类型。相对地,CLIENT列表示由MQTT服务端接收的消息类型,SERVER列表示由MQTT客户端接收的消息类型。该表可以为 开发MQTT 客户端/服务端者 提供参考。...原创 2021-03-10 09:02:42 · 1593 阅读 · 0 评论 -
通讯协议的带宽占用:OPC UA、Modbus、MQTT、SparkplugB
注:本文主要内容源自一篇Johnathan Hottell的ppt “Efficient IIoT Comunications”。各种通讯协议 通讯协议是在应用层上定义报文结构和内容的约定。常见的如MODBUS、OPC UA、MQTT、CoAP等,他们的存在都有合理性,并没有绝对的好与坏。Modbus简单,OPC UA强大,MQTT灵活,要看具体的应用场景。本文重点介绍OPC UA、MODBUS、MQTT、SparkplugB在传感器数据传输的带宽占用。流量干什么了建立连接 传输..翻译 2021-01-14 15:02:27 · 2951 阅读 · 1 评论 -
Sparkplug规范-11.Sparkplug持久和非持久连接
持久连接用来始终保持与MQTT网络的连接,正常情况下从不发送MQTT DISCONNECT消息,这让主应用能够通过上线/下线机制,提供MQTT保活周期内网络内持久连接节点的实时状态。但在有些情景中,例如发送GPS坐标做定位跟踪,或其他周期性从传感器采集数据的物联网应用,MQTT设备不需要保持连接。此时,设备在下线之前需要发送MQTT DISCONNECT控制包,“优雅地”离开网络,用不到MQTT设备或关联设备下线消息。系统设计者只需知道,主应用的测点代表“最近已知良好”(Last Known Good)翻译 2021-03-02 08:21:33 · 2459 阅读 · 0 评论 -
Sparkplug规范-10.多MQTT服务器下的主应用状态
多MQTT服务器情况下,如果主应用与MQTT服务器失去连接,边缘节点有可能“搁浅”,这种情况下,边缘节点虽然连接MQTT服务器并正常发布信息,却不知道主应用无法收到消息。当采用多MQTT服务器时,主应用实例必须发布STATE上线消息,所有边缘节点需要订阅这个STATE消息。主应用需要说明是不是“主”命令/控制实例,如果是,每次连接MQTT服务器时,STATE上线消息就是成功建立MQTT会话后的第一条消息。边缘节点在多MQTT服务器网络中,可以连接任何一台MQTT服务器,连上后,边缘节点订阅主应用发布翻译 2021-03-02 08:19:38 · 585 阅读 · 0 评论 -
Sparkplug规范-9.Sparkplug MQTT数据和命令消息
到目前为止,我们已经说明了:主应用 MQTT服务器 网络边缘(EoN)节点 设备 主题名 上线消息 下线消息 状态消息 主应用、边缘节点和设备会话建立所有这些规范和定义都是为了达到Sparkplug的目标,即高效地将丰富的实时设备检测数据分发给企业里各个数据使用者,同时提供一流的命令/控制SCADA/IIoT系统。IIoT颠覆性的理念是,智能设备应该在需要时向网络发送测点数据。然而现实却是,100%现有的、成百上千万智能设备,只能通过请求-响应协议被“询问”是否有变化,这就是工业领翻译 2021-03-01 15:42:18 · 2985 阅读 · 0 评论 -
Sparkplug规范-8.Sparkplug MQTT会话管理和消息流
基于MQTT的SCADA系统独特之处在于不负责与设备建立和保持连接,而这是多数现有传统请求-响应设备协议需要做的。在MQTT系统中,应用、设备都与MQTT服务器建立MQTT会话,从而解除了应用与设备之间的耦合。其他的MQTT客户端可以连接和订阅任何实时数据,而不影响核心SCADA主机应用。鉴于实时SCADA方案特点,核心SCADA主机和所有连接的MQTT 边缘节点互相掌握对方的MQTT会话状态信息非常重要。为达到这个目的,Sparkplug主题名定义了上线/下线消息和负载,为SCADA主应用MQTT客户翻译 2021-03-01 15:34:33 · 1620 阅读 · 0 评论 -
Sparkplug规范-7.Sparkplug MQTT消息类型
Sparkplug为MQTT消息定义主题名,用来管理连接状态,实现双向测点(Metric)信息交换,可以用在许多典型实时SCADA/IIoT、监视、和数据收集系统中。定义的消息类型包括:NBIRTH – MQTT边缘节点上线 NDEATH – MQTT边缘节点下线 DBIRTH – 设备上线 DDEATH – 设备下线 NDATA – 节点数据(从节点读数据) DDATA – 设备数据(从设备读数据) NCMD – 节点命令(向节点写数据) DCMD – 设备命令(向设备写数据)..翻译 2021-03-01 15:26:03 · 2018 阅读 · 0 评论 -
Sparkplug规范-6.Sparkplug MQTT主题名
基于SCADA系统使用MQTT,获得一个可用的消息中间件(Message Oriented Middleware, MOM),首先必须定义主题名。MQTT妙在你可以随便用一个主题,例如“波特兰/温度”,连接到MQTT服务器,发布温度值,那些想利用温度数据的MQTT客户端应用需要先理解主题名。发布出来的MQTT消息都包含主题和负载,是MQTT消息的主体,传输时以字节数来度量。Sparkplug 规范设计在保证含义准确、易于理解同时,避免冗长的主题名给数据交换带宽和时长带来负面影响。 6.1 Sp..翻译 2021-03-01 15:21:57 · 1315 阅读 · 0 评论 -
Sparkplug规范-5.通用消息流
本节讨论图 2 简单MQTT系统 所示的通用拓扑结构,说明系统中组件之间如何交互。最简单情况下,只有如下图所示两个组件,一个MQTT客户端和一台MQTT服务器。任何有凭证的MQTT客户端都可以连接MQTT服务器,而不需要知道其他MQTT客户端的存在,并订阅感兴趣的MQTT消息,发布任何含有数据的消息,这正是IIoT的一个核心理念:解耦智能设备与应用之间的直接连接。 图 2 简单MQTT系统 5.1 MQTT会话状态感知任何网络架构中,网...翻译 2021-03-01 15:18:19 · 698 阅读 · 0 评论 -
Sparkplug规范-4.引用标准和资源
除了引用最新的MQTT V3.1.1标准,Sparkplug规范尽可能利用开源的开发工具和数据编码。 4.1 OASIS MQTT V3.1.1规范Sparkplug规范所指MQTT 服务器/客户端满足MQTT V3.1.1规范,参见“mqtt-v3.1.1-os.doc”:http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/mqtt-v3.1.1.html另请参阅MQTT V3.1.1规范的附录文件,讨论在MQTT TCP/IP 网络中实现安全通讯..翻译 2021-03-01 15:14:16 · 1680 阅读 · 0 评论 -
Sparkplug规范-3.系统构成
本节详细说明系统构成部分。 图 1 MQTT SCADA系统 3.1MQTT服务器MQTT系统要求1个或以上MQTT服务器(Server),Sparkplug规范只要求MQTT 服务器组件兼容MQTT V3.1.1规范,并能管理全部MQTT通讯负荷。可以(在需要时)用多MQTT服务器,实现冗余、高可用性、可扩展。 3.2 MQTT网络边缘(EoN)节点规范中的MQTT网络边缘(EoN)节点,是指管...翻译 2021-03-01 15:11:44 · 1087 阅读 · 0 评论 -
Sparkplug规范-2.背景
MQTT最早设计为实时SCADA系统做信息传输。MQTT消息传输规范没有硬性规定主题名,也没有定义用于发布或订阅数据的负载形式。此外,由于MQTT最早用于实时SCADA,有提供MQTT会话状态的机制,以便SCADA/控制画面能够监视网络中MQTT设备的当前状态。虽说状态信息实现和管理所依赖的主题名和负载没有明确定义,这些都内含在了原始规范中,以期为MQTT网络使用者提供最大灵活性。但在某些情况下,基于MQTT某一特定互操作场景,主题名、负载形式和会话状态必须定义。Sparkplug目标就是定义MQTT主翻译 2021-03-01 15:05:31 · 894 阅读 · 0 评论 -
Sparkplug规范-1.介绍
Sparkplug提供开放、免费的规范,解决边缘网关或内置MQTT的终端设备,与MQTT应用通过MQTT网络(Infrastructure)进行双向通讯问题。本文档详细说明在设备和应用两侧,符合Sparkplug的MQTT客户端在结构和实现上的要求。众所周知,MQTT广泛适用于各种应用场景、各种网络结构,Sparkplug规范力图实现如下三个目标: 1. 定义一套MQTT主题名正如本文多次提到的,没有硬性规定任何必须的主题名(Topic Namespace)是MQTT众多吸引人的特点之一,...翻译 2021-03-01 15:03:27 · 3907 阅读 · 0 评论 -
基于MQTT的Eclipse基金会Sparkplug规范
工业物联网应用中,边缘网关或支持MQTT的设备如何在带宽受限的不可靠网络条件下,以更低带宽、更可靠通讯实现数据采集、监视甚至控制的功能是Sparkplug规范要解决的问题。Sparkplug规范是2016年提出的基于MQTT的、面向工业物联网的主题(Topic)和负载(Payload)定义协议,是基于MQTT 3.1.1的MQTT应用层协议。相关测试表明,其通讯带宽占用比Modbus少75%~99.5%,比不压缩的MQTT少2/3,同时还具备网络拓扑监控功能。该规范2019年成为Eclipse基金...翻译 2021-03-01 14:58:41 · 1509 阅读 · 2 评论