我是靠谱客的博主 勤奋黄豆,最近开发中收集的这篇文章主要介绍MQTT连接阿里云IOT方法一、使用PubSubClient库连接方法二、使用AliyunIoTSDK库连接常见问题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

方法一、使用PubSubClient库连接

1、安装依赖库

PubSubClient

2、测试程序

#include <ESP8266WiFiMulti.h>
#include <PubSubClient.h>

#define AP_SSID ""			// 填写
#define AP_PASS ""			// 填写

const char* clientId = "";		// 填写
const char* username = "";		// 填写
const char* passwd = "";		// 填写
const char* topic = "";		// 填写
const char* mqttHostUrl = "";		// 填写
const int port = 1883;

ESP8266WiFiMulti wifiMulti;
WiFiClient wifiClient;
PubSubClient client(wifiClient);

void setup() {
  Serial.begin(115200);
  wifiInit();
  mqttInit();
  mqttConnect();
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
  if(client.connected()){
    int led = !digitalRead(LED_BUILTIN);
    char msg[32];
    sprintf(msg, "%d", led);
    client.publish(topic, msg);
    client.loop();
    Serial.print("Publish:t");
    Serial.print(topic);
    Serial.print("t");
    Serial.println(led);
    delay(5000);
  }else{
    mqttConnect();
  }
}

void wifiInit() {
  wifiMulti.addAP(AP_SSID, AP_PASS);
  Serial.println("WiFi connecting...");
  while (wifiMulti.run() != WL_CONNECTED) {
    Serial.print(".");
    delay(1000);
  }
  Serial.println("WiFi connected!!!");
}

void mqttInit(){
  Serial.println("MQTT client init...");
  client.setServer(mqttHostUrl, port);
  client.setCallback(callback);
}

void mqttConnect(){
  if(client.connect(clientId, username, passwd)){
    Serial.println("MQTT server connected!!!");
    if(client.subscribe(topic)){
      Serial.println("订阅成功");
    }else{
      Serial.print("订阅失败, ");
      Serial.println(client.state());
    }
  }else{
    Serial.print(".");
    delay(5000);
  }
}

void callback(char* topic, byte* payload, unsigned int length){
  Serial.print("Subscribe:t");
  Serial.print(topic);
  Serial.print("t");
  Serial.println(length>0?payload[0]-'0':0);
  if(length > 0){
    int led = payload[0]-'0';
    if(led == 0){
      digitalWrite(LED_BUILTIN, LOW);
    }else{
      digitalWrite(LED_BUILTIN, HIGH);
    }
  }
}

方法二、使用AliyunIoTSDK库连接

1、安装依赖库

AliyunIoTSDK

2、测试程序

// 引入 wifi 模块,并实例化,不同的芯片这里的依赖可能不同
#include <ESP8266WiFi.h>
static WiFiClient espClient;

// 引入阿里云 IoT SDK
#include <AliyunIoTSDK.h>

// 设置产品和设备的信息,从阿里云设备信息里查看
#define PRODUCT_KEY ""    // 填写
#define DEVICE_NAME ""    // 填写
#define DEVICE_SECRET ""  // 填写
#define REGION_ID "cn-shanghai"

// 设置 wifi 信息
#define WIFI_SSID ""      // 填写
#define WIFI_PASSWD ""    // 填写

void setup()
{
    Serial.begin(115200);
    
    // 初始化 wifi
    wifiInit(WIFI_SSID, WIFI_PASSWD);
    
    // 初始化 iot,需传入 wifi 的 client,和设备产品信息
    AliyunIoTSDK::begin(espClient, PRODUCT_KEY, DEVICE_NAME, DEVICE_SECRET, REGION_ID);
    
    // 绑定一个设备属性回调,当远程修改此属性,会触发 powerCallback
    // PowerSwitch 是在设备产品中定义的物联网模型的 id
    AliyunIoTSDK::bindData("PowerSwitch", powerCallback);
    
    // 发送一个数据到云平台,LightLuminance 是在设备产品中定义的物联网模型的 id
    AliyunIoTSDK::send("LightLuminance", 100);
}

void loop()
{
    AliyunIoTSDK::loop();
}

// 初始化 wifi 连接
void wifiInit(const char *ssid, const char *passphrase)
{
    WiFi.mode(WIFI_STA);
    WiFi.begin(ssid, passphrase);
    while (WiFi.status() != WL_CONNECTED)
    {
        delay(1000);
        Serial.println("WiFi not Connect");
    }
    Serial.println("Connected to AP");
}

// 电源属性修改的回调函数
void powerCallback(JsonVariant p)
{
    int PowerSwitch = p["PowerSwitch"];
    if (PowerSwitch == 1)
    {
        // 启动设备
    } 
}

常见问题

1、报错状态码2

修改头文件“PubSubClient.h”

// MQTT_MAX_PACKET_SIZE : Maximum packet size. Override with setBufferSize().
#ifndef MQTT_MAX_PACKET_SIZE
#define MQTT_MAX_PACKET_SIZE 1024
#endif

// MQTT_KEEPALIVE : keepAlive interval in Seconds. Override with setKeepAlive()
#ifndef MQTT_KEEPALIVE
#define MQTT_KEEPALIVE 300
#endif

// MQTT_SOCKET_TIMEOUT: socket timeout interval in Seconds. Override with setSocketTimeout()
#ifndef MQTT_SOCKET_TIMEOUT
#define MQTT_SOCKET_TIMEOUT 60
#endif

最后

以上就是勤奋黄豆为你收集整理的MQTT连接阿里云IOT方法一、使用PubSubClient库连接方法二、使用AliyunIoTSDK库连接常见问题的全部内容,希望文章能够帮你解决MQTT连接阿里云IOT方法一、使用PubSubClient库连接方法二、使用AliyunIoTSDK库连接常见问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(62)

评论列表共有 0 条评论

立即
投稿
返回
顶部