将树莓派4打造为一个边缘网关:第二部分
by liam zheng on 17 March 2020

在第一部分教程中,我们已经在树莓派4上安装和配置好了EdgeX foundry以将其打造为一个边缘网关。今天的教程将介绍把网关连接到到虚拟的IoT(物联网)设备上。这些虚拟的设备是使用软件模拟的。模拟的虚拟设备将通过托管在云端的MQTT消息服务器发送随机的消息,这些信息将被转发到已订阅接收消息的MQTT客户端上。
连接Southbound
设备端与边缘网关的物联网数据流被称之为Southbound。在EdgeX中,物联网设备和网关之间的通信被称为设备服务。一个设备服务就是由诸如Modbus,OPC-UA,REST,BLT,Zigbee,MQTT,BACNet,SNMP等等的物联网通信协议的接口实现的一个微服务。
虚拟设备服务的设定是方便进行配置和调试树莓派4边缘网关。它允许在不连接实际设备的情况下进行测试。基于这种方式,边缘网关上运行的微服务在不连接物联网设备的情况下进行配置和诊断。虚拟设备服务还模拟虚拟物联网设备,这些设备会生成和传输不同类型的随机数:整数,无符号整数,布尔值和浮点数。

虚拟设备服务可以很容易地通过以下命令开启:
sudo snap set edgexfoundry device-virtual=on
开启后,模拟的服务和虚拟设备可通过EdgeX浏览器管理界面显示。

在云端创建一个MQTT服务器
边缘网关是设备和服务器间的连接点。现在,我们将在云端配置一个自定义的MQTT消息接收服务器。MQTT消息接收服务器将接收来自虚拟设备的消息。这些消息将被发送到已订阅的客户端设备上。

我们在AWS创建了一个运行Ubuntu 18.04的实例,上面已安装MQTT消息接收服务器。在Ubuntu上可使用snap方式方便地安装MQTT。命令如下:
sudo snap install mqtt
查询消息接收服务器的状态:
sudo systemctl status snap.mosquitto.mosquitto.service
连接Northbound
有了云端MQTT服务器,还需要在树莓派4网关和服务器之间建立一个northbound连接。EdgeX 导出服务(EdgeX Export Service)是一个将设备服务已收集的数据传输到云端服务器的微服务。导出服务可以使用下面命令创建:
sudo snap set edgexfoundry export-client=on
sudo snap set edgexfoundry export-distro=on
通过上述命令激活后,MQTT服务器的数据传输已配置好。下面截图展示了如服务器IP地址,端口,通信协议,数据格式,主题和加密等参数。

保存后,导出服务将连接到MQTT消息服务器,然后创建一个主题。导出服务将把从虚拟设备端收集的数据通过该主题发布出去。
读取虚拟物联网数据流
通过以上操作,你有了一个监听虚拟物联网设备的树莓派4网关,它不断地把设备端收集到的数据转发到云上的MQTT服务器上。
现在,任何运行MQTT客户端的设备将可接收来自虚拟设备的物联网数据流。 客户端只需订阅来自于MQTT服务器相关的主题即可。
要读取这个数据流,我们需要在Ubuntu桌面上安装一个MQTT客户端,然后订阅通过导出服务创建的主题。当然,这个数据流可以通过任何桌面设备上的MQTT客户端进行访问。
sudo snap install mqtt
mosquitto_sub -h <your_ip_adress_here> -t <topic_name_here>
当然,你也可以在终端查看虚拟物联网数据流。流与虚拟设备产生的数据的响应,格式为导出服务指定的格式。如下图:

资源列表
- EdgeX Foundry documentation
- Mosquitto documentation
- Mosquitto snap store
- Install instructions for Ubuntu on the Raspberry Pi 4
下一步
本系列教程的第三部分将把网关与一个物联网实体设备连接。我们也会测试EdgeX foundry的设备管理兼容性。
订阅博客文章
查看更多内容
使用 MAAS 部署 VMware 虚拟机管理程序
多数现代数据中心本身均为异构架构。VMware 环境常与容器平台、数据库及其他裸机业务负载共存,多年运行于同一套硬件之上。服务器一次性采购,但会随业务需求变化调整承载业务。 然而,ESXi(VMware 虚拟机管理程序)的配置通常由独立流程负责。主机通过 VMware 工具、自定义脚本或专为将部署 ESXi 到机器中开发的自动化程序完成安装。这些工作流单独运行虽行之有效,却未必能与物理基础设施的其他部分实现统一的追踪与管理。 由此导致了脱节:即便归属同一硬件资源池,ESXi 主机的管理方式仍与数据中心其他设备脱离。随着环境规模扩大、架构日趋多元化,这种割裂式管理会形成业务瓶颈。 将 ESXi 纳入统一裸机平台进行统筹管理将是更具扩展性的方案。这使得 ESXi 的配置流程, […]
什么是 Ubuntu Pro?与标准版有不同吗?功能及内容详解
Ubuntu Pro 是 Canonical 推出的全方位订阅服务,提供开源安全防护、技术支持与合规保障。从长达 15 年的安全维护、全天候技术支持,到面向 IT 管理员的自动化加固工具,深入了解 Ubuntu Pro 订阅包含的全部服务。 Ubuntu Pro 具备哪些功能? Ubuntu Pro 是一套安全合规订阅服务,可为操作系统、应用程序及 IT 运维各层级及时提供补丁与安全维护。它助力企业及其工程师保障软件与系统安全,并通过加固工具、自动化流程及一系列其他功能,为企业满足安全标准合规铺平道路。 了解关于 Ubuntu Pro 的更多信息 › Ubuntu Pro 与标准版 Ubuntu 有何不同? 很多人存在误区,误以为 Ubuntu Pro 是独立版本或全新操 […]
代码热风险 – 软件供应链视角下,容器交付前要先“冷却”
已遭遇的安全漏洞,与即将到来的威胁 2025 年 9 月,npm 软件仓库中包括 chalk 和 debug 在内的数十个热门 JavaScript 软件包遭入侵。这些软件包应用极为广泛,几乎无处不在:前端应用、后端微服务以及 CI 工具中均有使用。开发人员并无任何失误操作,他们只是执行了一贯使用的命令:npm install chalk。但恶意软件却悄无声息地侵入了。 这并非操作系统中的漏洞。也不是某台笔记本电脑上的病毒。这是一次供应链攻击:攻击者在开发者构建软件所使用的组件中植入了恶意代码。手段并不复杂,仅仅是一名开发者遭到钓鱼攻击、一次恶意发布,数百万下游用户便因看似是合法更新而将恶意代码引入系统。 而这确实是一次合法的更新。发布者并非有意植入恶意软件,也对此毫不知 […]