码迷,mamicode.com
首页 > 其他好文 > 详细

11.Arduino基础入门— 8.Arduino通过MQTT客户端推送信息

时间:2019-09-23 18:36:23      阅读:135      评论:0      收藏:0      [点我收藏+]

标签:password   tcp   conf   rop   cli   ted   cte   没有   用户   

两个库的引用,

其中,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客户端推送信息

标签:password   tcp   conf   rop   cli   ted   cte   没有   用户   

原文地址:https://www.cnblogs.com/Bruce_H21/p/11573727.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!