两个库的引用,
其中,PubSubClient可以在Arduino IDE的库管理器中找到:
#include <WiFi.h> 本来是#include <ESP8266WiFi.h>
改成Wifi.h即可。
#include <WiFi.h> #include <PubSubClient.h> //设置设备ID const String deviceID = "tempDevice1"; // 设置wifi连接用户密码 const char* ssid = "KMWL003"; const char* password = "abcd1234"; //设置mqtt服务器 const char* mqtt_server = "192.168.0.101"; WiFiClient espClient;//创建tcp/ip连接 PubSubClient client(espClient);//mqtt使用的tcp连接 //mqtt连接到服务器 void reconnect() { while (!client.connected()) { Serial.print("Attempting MQTT connection..."); String clientId = "ESP8266Client-"; clientId += deviceID ;//String(random(0xffff), HEX);//生成随机客户端id if (client.connect(clientId.c_str())) { Serial.println("connected"); } else { Serial.print("failed, rc="); Serial.print(client.state()); Serial.println(" try again in 5 seconds"); //5秒后重试 delay(5000); } } } void setup() { Serial.begin(115200); //连接到wifi Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); //设置mqtt服务器和端口,默认为1883 client.setServer(mqtt_server, 1883); } void loop() { //如果没有连接到mqtt,自动连接 if (!client.connected()) { reconnect(); } Serial.println("begin push"); //把长文本做拆解 String msg1 = "1111111111111111333333333333333333"; String msg2 = "2222222222222333333333333333333333"; String msg3 = "3333333333333333333333333333333333"; //计算文本总长度 int msgLen = msg1.length() + msg2.length() + msg3.length(); //开始发送长文件参数分别为 主题,长度,是否持续 client.beginPublish("homeassitant/config", msgLen, false); //发送文本 client.print(msg1); client.print(msg2); client.print(msg3); client.endPublish(); //结束发送文本 Serial.println("sub push"); //每隔1秒发一次 delay(1000); }
原文地址:https://www.cnblogs.com/Bruce_H21/p/11573727.html
时间: 2024-10-29 11:23:58