关于ESP32接入MQTT服务器(基于OneNet)
· 阅读需 2 分钟
此篇主要介绍如何使用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();
使用平台数据面板查看单片机上传的数据


