将第三方库PubSubClient下载到lib文件夹 git clone https://GitHub.com/knolleary/pubsubclient.git 一、阿里云ioT使用 打开阿里云IOT官网,登录阿里云账号 http
将第三方库PubSubClient下载到lib文件夹
打开阿里云IOT官网,登录阿里云账号
https://iot.console.aliyun.com/
创建实例
新建产品
自定义主题
5、添加设备
6、查看设备配置
修改PubSubClient.h头文件,否则无法连接阿里云MQtT服务器
将MQTT_MAX_PACKET_SIZE的值改为1024
将MQTT_KEEPALIVE的值改为65
代码解析
第27行:创建WIFI客户端
第28行:创建MQTT客户端
第29行:创建任务对象
第30行:定义MQTT消息发送函数
第32行:发送消息前先判断MQTT服务器是否连接成功
第37行:发送MQTT消息
第47行:定义MQTT消息接收函数
第53行:定义MQTT服务器连接函数
第54行:请求连接MQTT服务器
第59行:订阅MQTT主题
第64行:开始定时任务,每隔三秒发送一条MQTT消息
第67行:结束定时任务
第82行:设置MQTT服务器主机地址和端口号
第84行:设置MQTT消息接收回调函数
第94行:保持MQTT客户端心跳,否则会连接中断
#include #include #include #include "../lib/pubsubclient/src/PubSubClient.h"#define WIFI_SSID "WWW"#define WIFI_PASS "00000000"#define MQTT_HOST "MQTT服务器地址"#define MQTT_PORT 1883#define MQTT_CLIENT_ID "MQTT客户端名称"#define MQTT_USER "MQTT用户名"#define MQTT_PASS "MQTT登录密码"void connectWIFI() { // 连接WIFI热点 WiFi.begin(WIFI_SSID, WIFI_PASS); int retryCount = 1; while (WiFi.status() != WL_CONNECTED) { Serial.println("重试次数: " + String(retryCount)); retryCount++; delay(1000); } Serial.println("WIFI连接成功"); Serial.println("IP地址: " + WiFi.localIP().toString());}WiFiClient wifiClient;PubSubClient mqttClient(wifiClient);Ticker ticker;void sendMsg() { if (mqttClient.connected()) { String topic = "/a1aeNGS45Gg/"; topic += "ESP8266"; topic += "/user/info"; String payload = "Hello World !"; if (mqttClient.publish(topic.c_str(), payload.c_str())) { Serial.println("MQTT消息发送成功"); } else { Serial.println("MQTT消息发送失败"); } } else { Serial.println("MQTT服务器未连接"); }}void recvMsg(char *topic, uint8_t *payload, size_t length) { Serial.println("topic: " + String(topic)); Serial.println("payload: " + String((char *)payload).substring(0, length)); Serial.println("length: " + String(length));}void connectMQTT() { if (mqttClient.connect(MQTT_CLIENT_ID, MQTT_USER, MQTT_PASS)) { Serial.println("MQTT服务器连接成功"); String topic = "/a1aeNGS45Gg/"; topic += "ESP8266"; topic += "/user/info"; if (mqttClient.subscribe(topic.c_str())) { Serial.println("MQTT主题订阅成功"); } else { Serial.println("MQTT主题订阅失败"); } ticker.attach(3, sendMsg); } else { Serial.println("MQTT服务器连接失败"); ticker.detach(); delay(3000); }}void setup() { // put your setup code here, to run once: // 设置波特率 Serial.begin(9600); Serial.println(); // 连接WIFI热点 connectWIFI(); // 配置MQTT服务器 mqttClient.setServer(MQTT_HOST, MQTT_PORT); // 设置回调函数 mqttClient.setCallback(recvMsg); // 连接MQTT服务器 connectMQTT();}void loop() { // put your main code here, to run repeatedly: // 判断MQTT服务器是否连接成功 if (mqttClient.connected()) { mqttClient.loop(); } else { connectMQTT(); }}
来源地址:https://blog.csdn.net/qq_20147559/article/details/128517613
--结束END--
本文标题: ESP8266入门教程11:连接MQTT服务器
本文链接: https://www.lsjlt.com/news/431461.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-05-13
2024-05-13
2024-05-11
2024-05-11
2024-05-10
2024-05-07
2024-04-30
2024-04-30
2024-04-30
2024-04-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0