MQTT入门指南

2025-08-08 宋洋葱 宋洋葱

前言

开发一套农产品溯源系统,需要实时显示农场的温湿度。

实现方案

  1. 温湿度传感器 —mqtt协议– mqtt服务器
  2. 从 mqtt 服务器获取温湿度数据

mqtt 服务器技术选型

在线服务

  1. 百度云 lot 每月 消息数 < 100万 免费。百度云 lot 不支持 mqtt 5.0 协议,且运维管理的日志服务延迟 30 分钟左右,若不使用时序数据库(收费)则无法实时查看 mqtt 客户端发送的内容,不过可通过配置转发规则把接受到的数据转发到自己的 http api 处理。

  2. emqx
    同样也提供免费额度,每月 1 GB 流量。他们家的客户端 mqttx 很好用。

  3. 提供免费试用的还有: Eclipse、Mosquitto、HiveMQ

  4. 提供收费的还有 阿里云等

开源方案

自用或快速测试推荐使用 docker 部署 nanomq,小巧快速。生产环境简易使用 docker 部署 emqx

  1. emqx 支持除了 windows 基本都支持,可通过 docker 部署。
  2. nanomq Docker、Linux、Windows。
  3. Eclipse Mosquitto Docker、Linux、Windows、Mac。
  4. VerneMQ Docker、Linux

客户端

mqttx 支持 Windows、Mac、Linux、Docker 及在线 web 端

部署服务器 emqx

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

访问 http:/your_ip:18083/ 账号 admin 密码 public 可进入 emqx 的 web 管理界面。

mqtt 服务器本身不存储客户端发送过来的消息,除了发送时指定消息类型为保留消息

使用百度云 lot

以 DHT11 温湿度传感器接入百度 lot 为例

创建 mqtt 服务

  1. 在百度元 lot 平台创建 loT core,选择按需付费(可使用免费额度)。
  2. 点击刚创建的 lot 名称,设备管理-设备列表-新增设备,选择「密钥认证」然后创建一个模板。
  3. 点击 设备管理–模板 下刚创建的模板名称,点击「添加主题」选择高级模式,填写 WifiDHT/+/DHT11

配置 DHT11 温湿度传感器

  1. 在 设备管理–设备列表 的右上角可查看[接入点]即域名信息,点击下方设备列表的具体[设备名称] 后可在设备详情页查看 IoTCoreId、DeviceKey、DeviceSecret 可查看需要的信息。
  2. 参考百度文档使用刚刚拿到的信息在网站MQTT连接信息生成器 可生成 mqtt 所需的用户名和密码。

wifiDHT3 测试发现仅支持 MD5 加密,不支持 SHA256,购买之前记得确认。

参考文档

  1. MQTT 服务器(MQTT Broker):工作原理与快速入门指南
  2. 百度云 lot 帮助文档