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

【工业树莓派 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 软件实现网络加速。

  • 执行如下执行,获取安装包并安装软件
bash 复制代码
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
  • 若报错或提示缺失文件,可通过补全缺失包的方法解决
bash 复制代码
sudo apt update
sudo apt -f install
sudo dpkg -l dev-sidecar

部署方案

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

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

  • 若报错,可更换国内软件源
bash 复制代码
# 添加 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 镜像

bash 复制代码
sudo docker pull emqx/emqx:latest

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

启动容器

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

bash 复制代码
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,则执行指令
bash 复制代码
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 添加如下代码

python 复制代码
#!/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 等相关产品在工业物联网领域的快速开发和应用设计提供了参考。

相关推荐
码路飞1 小时前
写了个 AI 聊天页面,被 5 种流式格式折腾了一整天 😭
javascript·python
曲幽4 小时前
FastAPI压力测试实战:Locust模拟真实用户并发及优化建议
python·fastapi·web·locust·asyncio·test·uvicorn·workers
chlk1237 小时前
Linux文件权限完全图解:读懂 ls -l 和 chmod 755 背后的秘密
linux·操作系统
舒一笑8 小时前
Ubuntu系统安装CodeX出现问题
linux·后端
改一下配置文件8 小时前
Ubuntu24.04安装NVIDIA驱动完整指南(含Secure Boot解决方案)
linux
敏编程8 小时前
一天一个Python库:jsonschema - JSON 数据验证利器
python
前端付豪8 小时前
LangChain记忆:通过Memory记住上次的对话细节
人工智能·python·langchain
databook9 小时前
ManimCE v0.20.1 发布:LaTeX 渲染修复与动画稳定性提升
python·动效
深紫色的三北六号18 小时前
Linux 服务器磁盘扩容与目录迁移:rsync + bind mount 实现服务无感迁移(无需修改配置)
linux·扩容·服务迁移
花酒锄作田21 小时前
使用 pkgutil 实现动态插件系统
python