跳到主要内容

关于ESP32接入MQTT服务器(基于OneNet)

· 阅读需 2 分钟
小辉猫
Embedded Systems Developer @ China

此篇主要介绍如何使用ESP32接入OneNet的MQTT服务器。

事前准备:程序需要WiFi库函数以及PubSubClient库函数,可在library中直接下载,随即在主函数头文件上声明

#include <WiFi.h>         //wifi库函数
#include <WiFiClient.h> //wifi库函数
#include <PubSubClient.h> //MQTT协议 库函数 用于连接onenet物联网平台

1.注册OneNet平台账户 管理员界面 2.创建产品,随即在设备管理中创建设备,并使用数据流模式,接入协议采用MQTT协议 设备管理界面 3.获取设备ID和APIKEY,在官方推出的token计算工具中计算token

4.在程序部分声明相关信息

const char* mqtt_server = "183.230.4.96";   //onenet 服务端ip地址
const int port = 1883 ; //端口号
const char* mqtt_pubid = "id"; //产品ID
const char* mqtt_devid = "project"; //产品名称
const char* mqtt_password = "token";

5.创建一个PubSub客户端

WiFiClient wc;
PubSubClient pc(wc); // 创建一个PubSub客户端, 传入创建的WIFI客户端

6.执行MQTT服务器连接

  pc.setServer("183.230.40.96",1883);//设置客户端连接的服务器,连接Onenet服务器, 使用1883端口
pc.connect(mqtt_devid, mqtt_pubid, mqtt_password);

7.发布数据

   String payload = "{\"id\": 123,\"dp\": {\"temperature\": [{\"v\": " + String(temperature) + "}]}}";
构造完整的topic路径
String topic = "$sys/project_id/项目名称/dp/post/json";
pc.publish(topic.c_str(), payload.c_str());
String payload0 = "{\"id\": 123,\"dp\": {\"humidity\": [{\"v\": " + String(humidity) + "}]}}";
构造完整的topic路径
String topic0 = "$sys/project_id/项目名称/dp/post/json";
pc.publish(topic0.c_str(), payload0.c_str());

8.注意保持MQTT心跳

  pc.setKeepAlive(5);
pc.loop();

使用平台数据面板查看单片机上传的数据