11.Arduino基础入门— 8.Arduino通过MQTT客户端推送信息
Posted bruce_h21
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了11.Arduino基础入门— 8.Arduino通过MQTT客户端推送信息相关的知识,希望对你有一定的参考价值。
两个库的引用,
其中,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);
以上是关于11.Arduino基础入门— 8.Arduino通过MQTT客户端推送信息的主要内容,如果未能解决你的问题,请参考以下文章