【工业树莓派 CM0 NANO 单板计算机】本地部署 EMQX

本文介绍了树莓派 CM0 NANO 单板计算机通过 Docker 容器实现 EMQX 的本地部署,包括 Docker 安装、EMQX 镜像拉取、容器启动、客户端配置、MQTT 测试等流程。

项目介绍

该项目通过 Docker 软件实现 EMQX 平台在树莓派 CM0 NANO 单板计算机的本地部署。

  • Docker 安装:网络加速、安装脚本执行、软件源更换和版本检测等;
  • EMQX 部署:更换镜像源、镜像获取、容器启动、创建用户以及参数配置等;
  • 通信测试:MQTT 消息转发、芯片温度上报测试等流程。

在这里插入图片描述

应用

EMQX 作为高并发 MQTT 接入层,在工业场景主要承担 设备-边缘-云端 实时数据总线角色,应用场景包括且不限于

  • 智能家居终端控制与数据采集;
  • 工业自动化数据采集与远程控制;
  • 边缘 IIOT 工业物联网;
  • 工业环境监测,历史数据转发与存储;
  • ……

配合规则引擎与流计算,实现设备互联、生产监控、能耗优化,逐渐成为智能制造与数字化转型的核心数据底座。

硬件连接

  • 若采用 SSH 远程登录方式,需连接 5V 3A 电源和网线;
  • 若采用本地连接方式,需增加 HDMI 数据线连接显示器、USB 键盘及鼠标。

在这里插入图片描述

Docker

这里介绍树莓派 CM0 NANO 实现 Docker 部署的主要流程,包括更换软件源、安装脚本获取与执行、版本检测等。

在这里插入图片描述

网络加速

使用 Dev-Sidecar 软件实现网络加速。

  • 执行如下执行,获取安装包并安装软件
wget "https://bgithub.xyz/docmirror/dev-sidecar/releases/download/v2.0.0.2/DevSidecar-2.0.0.2-linux-arm64.deb"
sudo dpkg -i DevSidecar-2.0.0.2-linux-arm64.deb
  • 若报错或提示缺失文件,可通过补全缺失包的方法解决
sudo apt update
sudo apt -f install
sudo dpkg -l dev-sidecar

部署方案

  • 使用官方脚本安装,终端执行指令
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
  • 安装完成后,查询 Docker 版本号
docker -v

详见:【工业树莓派 CM0 NANO 单板计算机】本地部署 Home Assistant 智能家居平台 .

  • 若报错,可更换国内软件源
# 添加 Docker 官方 GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# 添加仓库到 Apt 源:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] http://mirrors.aliyun.com/docker-ce/linux/debian \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker_aliyun.list > /dev/null
sudo apt-get update

详见:树莓派安装Docker .

EMQX

EMQX 是全球领先的开源分布式云原生 MQTT 物联网接入平台,支持单机千万级并发、毫秒级延迟,为万物互联提供高可靠、高可用的消息总线底座。

在这里插入图片描述

详见:EMQX:MQTT 与 AI 一体化平台 .

在前面完成 Docker 安装的基础上,这里进一步介绍了部署 EMQX 容器的主要流程,包括镜像源更换、镜像拉取、容器启动、个性化配置等。

部署方案

在添加软件镜像源的基础上,终端执行如下指令,拉取最新版 emqx 镜像

sudo docker pull emqx/emqx:latest

在这里插入图片描述

实测部署 EMQX 需要至少 400MB 存储空间。

启动容器

终端执行如下指令,启动 EMQX 容器

docker run -d --name emqx -p 1883:1883 -p 8083:8083 -p 8084:8084 -p 8883:8883 -p 18083:18083 emqx/emqx:latest

在这里插入图片描述

  • 浏览器输入网址 http://<树莓派IP>:18083 ,如 http://192.168.1.115:18083 ;
  • 进入 EMQX 界面,初始账号 admin 密码 public ;
  • 首次登录会提示更新密码并进入概览界面

在这里插入图片描述

  • 运行过程占用内存约 310MB

在这里插入图片描述

  • 若要停止/启动/重启 EMQX,则执行指令
sudo docker stop emqx       # STOP
sudo docker start emqx      # RUN
sudo docker restart emqx    # Restart

创建用户

创建客户端

  • 依次打开 访问控制 - 客户端认证 - 创建 - Password-Based - 内置数据库 - (默认配置)- 创建 ;

在这里插入图片描述

创建用户

  • 用户管理 - 新建用户 - 自定义用户名和密码 - 保存.

在这里插入图片描述

至此,完成 EMQX 在树莓派 CM0 NANO 单板计算机的本地部署。

通信测试

这里介绍了基于 EMQX 服务器和 MQTT 协议的通信测试,包括 MQTT 消息转发、芯片温度上报等。

MQTT 转发

通过 MQTTX 软件向 EMQX 服务器发送消息,并订阅相同主题,实现消息接收。

  • 打开 MQTTX 软件,新建连接;
  • 输入 EMQX 服务器 IP 地址,用户名和密码等信息,连接服务器;
  • 添加订阅主题和发送主题,如 rpi/cm0/demo ;
  • 在发送框内输入任意 JSON 消息并点击发送,如 {"temp": 27.8, "humi": 42.6},立即接收到相同消息;

在这里插入图片描述

  • 在 EMQX 服务器后台可以看到消息的流入流出、在线会话数量、主题等信息

在这里插入图片描述

芯片温度上报

在前面本地测试通过的基础上,将芯片温度上传至 EMQX 服务器并实现消息转发。

流程图

1883
订阅主题
开始
初始化
读取 CPU 温度
构建 JSON
发布消息
EMQX 服务器
MQTTX

代码

终端执行 touch mqtt_temp.py 指令新建 python 文件,并 nano mqtt_temp.py 添加如下代码

#!/usr/bin/env python3
import paho.mqtt.client as mqtt
import time, json, subprocess

broker   = "localhost"    # ip
port     = 1883           # port
topic    = "rpi/cm0/temp" # topic
username = "xxx"          # EMQX user name
password = "xxx"          # password

client = mqtt.Client(callback_api_version=mqtt.CallbackAPIVersion.VERSION2)
client.username_pw_set(username, password)   # user info
client.connect(broker, port, keepalive=60)

def get_cpu_temp():
    raw = subprocess.check_output(["vcgencmd", "measure_temp"]).decode()
    return float(raw.split("=")[1].split("'")[0])

while True:
    temp = get_cpu_temp()
    payload = json.dumps({"temp": temp, "unit": "℃", "ts": int(time.time())})
    client.publish(topic, payload, qos=0)
    print(payload)
    time.sleep(2)

  • 保存代码;

终端执行指令 python mqtt_temp.py 运行程序;

  • 终端打印上报消息

在这里插入图片描述

  • 打开 MQTTX 软件,接收到 EMQX 服务器转发的 CM0 芯片温度信息

在这里插入图片描述

总结

本文介绍了树莓派 CM0 NANO 单板计算机通过 Docker 容器实现 EMQX 的本地部署,包括 Docker 安装、EMQX 镜像拉取、容器启动、客户端配置、MQTT 测试等流程,为树莓派 CM0 等相关产品在工业物联网领域的快速开发和应用设计提供了参考。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐