如何用ESP32通过MQTT连接华为云IoT?

摘要:1. 引言 最近正在学习 ESP32 联网操作,由于阿里云的物联网在 2025-2-1 就已经停止了 IoT 服务,然后腾讯云个人 IoT 服务购买有点小贵,所以就找到了个人免费的华为云 IoT 服务,网上的资料也相对较少,故写篇随笔记录。
1. 引言 最近正在学习 ESP32 联网操作,由于阿里云的物联网在 2025-2-1 就已经停止了 IoT 服务,然后腾讯云个人 IoT 服务购买有点小贵,所以就找到了个人免费的华为云 IoT 服务,网上的资料也相对较少,故写篇随笔记录。 在用 ESP32 连接之前,先用 mqtt.fx 调试华为云物联网 IoT,用于熟悉所需的参数。 2. 购买 IoT 实例 因为个人是免费的,所以标准版购买个三年也是没问题。 3. MQTT.fx 桌面客户端接入 MQTT.fx 为桌面端 MQTT 客户端工具,用来调试、测试 MQTT 服务器 / 物联网平台。 3.1 下载 下载 MQTT.fx(默认是64位操作系统,如果是32位操作系统,单击此处下载 MQTT.fx),安装 MQTT.fx 工具 4. 官方 MQTT.fx 用户指南 无论是使用开发板连接连接还是用 MQTT.fx 连接调试,指南中的产品和设备创建是必须的,一步步跟着配置即可,还是非常详细的。 =>【设备接入 IoTDA 用户指南】在线开发MQTT协议的模拟智慧路灯 <= 5. MQTT.fx 调试操作 5.1 获取连接信息 方法一:点击设备 -> 有设备 -> 更多 -> 获取连接参数,得到下图 方法二:访问此处填写注册设备后生成的设备 ID(DeviceId)和密钥(DeviceSecret),生成连接信息(ClientId、Username、Password) 5.2 连接鉴权 将以上连接信息填入设置中,端口使用默认的 1883 即可。 5.3 调试 5.3.1 数据上报 填写接口地址$oc/devices/{device_id}/sys/properties/report {device_id} 需填写为设备注册成功后返回的 deviceId 值。 所有设备中点击设备的标识码打开此页面。 在 MQTT.fx 中输入接口地址后,发送代码,即可看到如下光照强度发生了变化: { "services": [{ "service_id": "BasicData", "properties": { "luminance": 100 } } ] } 5.3.2 命令下发 同样的,填写接口地址:$oc/devices/{device_id}/sys/commands/#,其中 {device_id} 为设备注册成功后返回的 deviceId 值。 如图MQTT.fx中点击 Subscribe 订阅后进行下发命令,即可在 MQTT.fx 收到对应命令: 5.3.2.1 下发命令 5.3.2.2 接收命令 5.3.2.3 回复响应 下行 Topic 里的 request_id 是什么,响应 Topic 就必须原样带上! 假如接收到的是: Topic: $oc/devices/{device_id}/sys/commands/request_id=1234 数据格式: { "paras" : { "value" : "ON" }, "service_id" : "LightControl", "command_name" : "value" } 那么就需要在 Publish 中发布: Topic:$oc/devices/{device_id}/sys/commands/response/request_id=1234 数据格式: { "result_code": 0, "response_name": "COMMAND_RESPONSE", "paras": { "result": "success" } } 5.3.2.4 下发流程完成 博客导航 博客导航