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客户端推送信息的主要内容,如果未能解决你的问题,请参考以下文章

arduino basic issue

processing与arduino互动编程

PHP入门基础教程

JAVA基础入门教程 -

Containerd 入门基础操作

Axure基础入门