1.什么是物联网网关?
在电信中,网关的主要目的是在不同类型的通信技术之间提供桥梁。这些技术在连接类型,接口或协议方面可能会有所不同。例如,您在家中的Internet网关将您的局域网(LAN)与Internet服务提供商(ISP)连接起来。该网关通过PPP或HDLC等技术将ISP的WAN链接到具有TCP / IP的LAN。
物联网网关遵循将不同技术的通信桥接在一起的相同原则。它在物联网传感器和互联网之间建立了桥梁。物联网网关将汇总所有数据,转换传感器的协议,并在发送数据之前对其进行预处理。
物联网设备使用蓝牙LE,Zigbee,Z-wave或LTE,LTE-M,WiFi之类的远程之类的短距离无线传输模式连接物联网网关,然后将它们链接到Internet(公共云)通过以太网LAN或光纤WAN(HDLC / PPP)。
物联网网关了解这些传输模式和数据(MQTT,CoAP,AMQP,DDS,Websocket)协议,并将其转换为数据系统所需的其他协议。
2.物联网网关的主要功能
物联网的主要功能有通信桥接和M2M通信; 用作数据缓存,缓冲区和流设备; 离线服务和设备的实时控制; 汇总数据。 在发送数据之前对其进行预处理,清理和过滤;一些物联网设备的附加智能。 此外,它提供了额外的安全性, 设备配置和变更管理。
3.物联网关网关如何工作?
当今网络中的大多数物联网设备都可以聚合数据。例如,汽车交通中的传感器可以聚合数据并将其发送到云中的AI分析服务。但是要到达云,传感器必须首先将所有这些原始数据发送到物联网网关。 物联网网关的简单过程是预处理,清理和过滤原始数据;翻译用于加密和通信的协议;将数据发送到Internet或Intranet上的目标。
MQTT消息总线
以上这些进程之间需要相互通信,不是简单的点对点通信,而是一个网状的通信模型。比如:
- 设备管理进程 Proc_DevMgr:当任何一种设备被添加到系统中时,都需要处进行处理,因此它需要与 Proc_ZigBee, Proc_RF, Proc_ZWave 这些进程进行通信;
- 当某个设备上报数据时(例如:Proc_ZigBee),Proc_Protocol 进程需要把数据进行协议转换,然后 Proc_Bridge 进程把转换后的数据上报给服务器,同时 Proc_Auto 进程需要检查这个设备上报的数据是否触发了其他相关联的设备;
也就是说,这些进程中间的通信是相互交叉的,如果通过传统的 IPC 方式(共享内存、命名管道、消息队列、Socket)等,处理起来比较复杂。
引入了 MQTT 消息总线之后,每个进程只需要挂载到总线上。每个进程只需要监听自己感兴趣的 topic,就可以接收到相应的数据。
我们以一个控制指令为例,来梳理一下数据是如何通过 topic 进行流动:
- Proc_Bridge 进程从服务器接收到控制指令后,发送到消息总线上的 topic: $iot/v1/Device/Control。
- 由于 Proc_Protocol 进程订阅了这个 topic,所以立刻接收到指令。
- Proc_Protocol 分析指令内容,发现是一个 ZigBee 设备,于是进行协议转换,发送一个 ZigBee 控制指令到消息总线上的 topic: $iot/v1/ZigBee/Control。
- 由于 Proc_ZigBee 进程订阅了这个 topic,因此它接收到这个控制指令。
- Proc_ZigBee 把控制指令转换成 ZigBee 无线通信模块要求的格式,通过硬件发送给设备灯泡。
我们再分析一下设备数据上报的场景:
先关注图中红色箭头,忽略蓝色箭头:
- 门磁打开后,通过无线通信把信息上报给进程 Proc_CF。
- Proc_RF 进程接收到 RF433 通信模块上报的数据,把“门磁打开”这个信息发送到消息总线上的 topic:$iot/v1/RF/Report。
- 由于 Proc_Protocol 进程订阅了这个 topic,因此接收到上报的门磁数据。
- Proc_Protocol 分析数据,把 RF433 协议的数据转成统一的应用层协议的数据,发送到消息总线上的 topic:$iot/v1/Device/Report。
- 由于 Proc_Bridge 进程订阅了这个 topic,因此就接收到了这次上报的数据。
- Proc_Bridge 进程把数据上报给服务器。
在物联网协议中,我们一般分为两大类,一类是传输协议,一类是通信协议。传输协议一般负责子网内设备间的组网及通信;通信协议则主要是运行在传统互联网TCP/IP协议之上的设备通讯协议,负责设备通过互联网进行数据交换及通信。