方法一、使用PubSubClient库连接
1、安装依赖库
复制代码
1PubSubClient
2、测试程序
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87#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、安装依赖库
复制代码
1AliyunIoTSDK
2、测试程序
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62// 引入 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”
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14// 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库连接常见问题内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复