我是靠谱客的博主 欢喜猫咪,这篇文章主要介绍设备接入ONENET(5)esp8266 订阅 onenet 主题(arduino)1. 简介2. 准备3. Arduino IDE要求4. 程序源码5. 如何使用,现在分享给大家,希望可以做个参考。
重要提示:由于OneNET版本迭代,导致鉴权方式可能变更,若程序无法连接,请参考官方手册或再OneNET论坛搜索相关内容
本文假设你有一定的编程基础,并且对MQTT和OneNET有一点了解。
1. 简介
esp8266 作为一款带 WiFI 收发硬件的 MCU,是可以直接与 OneNET平台连接的,好处就是节约了一颗MCU的成品,对于不熟悉 esp8266 的用户使用 SDK 的方式开发可能有一定困难,本文使用 arduino 的方式,示例了esp8266 如何订阅一个主题。
2. 准备
- Arduino IDE(软件) :Arduino IDE 是开发Arduino一个简易的IDE环境
- NodeMCU(硬件):NodeMCU 使用 ESP-12E 模组的一个最小系统板子,可以支持一键下载
- MQTT Simulate Device(软件) :这是一个可以模拟MQTT设备的软件,本文需要用该软件模拟一个设备,以便发送一个主题。
- OneNET云平台:你需要在OneNET云平台建立2个MQTT设备
3. Arduino IDE要求
- esp8266 开发板:开发esp8266,你需要在IDE中安装改开发板
- PubSubClient库:你需要通过Arduino IDE 安装该库,它支持用户创建一个 MQTT 客户端等操作
4. 程序源码
复制代码
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120#include <ESP8266WiFi.h> #include <PubSubClient.h> /*************************************** Config ********************************************************/ //WiFi 配置 const char* ssid = "TP-LINK_4252"; //WiFi账号:需要修改为所处环境的WiFi 账号 const char* password = "pp12345678"; //WiFi密码:秘密需要修改为所处环境的WiFi 密码 //OneNet MQTT 配置 const char* mqttServer = "183.230.40.39"; //目前 Onenet mqtt服务器 的 ip地址 const uint16_t mqttPort = 6002; //目前 Onenet mqtt服务器 的 端口号 //【以下三项更改时请注意保留双引号】 #define PRODUCT_ID "364161" //产品ID,需要更改为你自己创建的产品的 ID #define API_KEY "7GMiWLTMtluwREq1x8SAC9bko0k=" //APIKEY,需要更改为你自己创建的产品的 APIKEY #define DEVICE_ID "617424064" //APIKEY,需要更改为你自己创建的产品的 设备ID /******************************************************************************************************/ #define ONENET_DISCONNECTED (1) //已经断开 #define ONENET_CONNECTED (2) //已经连接上 #define ONENET_RECONNECT (3) //重连成功 #define TOPIC "LED" //主题 int sta_mqtt_connect; WiFiClient espClient; //创建一个 WiFi 客户端 PubSubClient mqttClient; //创建一个 mqtt 客户端 //Onenet MQTT 连接 int Onenet_MQTT_Connect(void){ int cnt = 0; while(!mqttClient.connected()){ cnt++; Serial.println("Connect to OneNet MQTT..."); /* 连接 Onenet 云平台*/ if (mqttClient.connect(DEVICE_ID,PRODUCT_ID,API_KEY)) { Serial.println("rnconnect success!"); return ONENET_RECONNECT; } else { Serial.print("Connect Fail!"); Serial.println("Retry in 5 seconds"); delay(5000); } if(cnt >=10){ cnt = 0; Serial.println("Connet Failed"); Serial.println("Please Check API_KEY and Device ID,Product ID"); while(1){ delay(1); } } } return ONENET_CONNECTED; } //MQTT 消息回调函数 void callback(char* topic, byte* payload, unsigned int length) { Serial.print("Message Recive: topic["); Serial.print(topic); Serial.print("],value: "); for (int i = 0; i < length; i++) { Serial.print((char)payload[i]); } Serial.println(); if ((char)payload[0] == '1') { digitalWrite(LED_BUILTIN, LOW); } else{ digitalWrite(LED_BUILTIN, HIGH); } } void setup() { //#0. 配置串口 Serial.begin (115200); Serial.println("rnrnESP826(MQTT)Start: "); delay(100); //#1. 连接WIFI WiFi.begin(ssid, password); Serial.print("Wait for WiFi Connect"); while (WiFi.status() != WL_CONNECTED) { static int wait_cnt = 0; if(50 <= wait_cnt++){ Serial.println("rnConnect Fialed"); Serial.println("Please Check Your WiFi SSID and PWD or"); Serial.println("Reset the Device and Retry"); while(1) { Serial.print("*"); delay(5000); } } delay(500); Serial.print("."); } Serial.println(" "); pinMode(LED_BUILTIN, OUTPUT); //#2. 客户端设置MQTT服务器 & 回调函数 mqttClient.setServer(mqttServer,mqttPort); mqttClient.setClient(espClient); mqttClient.setCallback(callback); } void loop() { //#3.连接 Onenet sta_mqtt_connect = Onenet_MQTT_Connect(); if(sta_mqtt_connect == ONENET_RECONNECT){ mqttClient.subscribe(TOPIC,1); //订阅主题,消息质量 QOS = 1 mqttClient.loop(); } else if(sta_mqtt_connect == ONENET_CONNECTED){ mqttClient.loop(); } }
5. 如何使用
- 首先将程序源码需要更改的部分(具体参考程序注释,这些配置在 Config 区中),然后通过 Arduino IDE 编译后下载到 esp8266 中,此时观察通过串口监视器:
该调试信息表示设备已经成功接入 OneNET,此时再开发者平台中,可以看到设备在线:
- 使用 软件模拟另一个设备,以便发送信息:
3. 模拟设备发送一个主题消息:
4.点击Submit
发送:
最后
以上就是欢喜猫咪最近收集整理的关于设备接入ONENET(5)esp8266 订阅 onenet 主题(arduino)1. 简介2. 准备3. Arduino IDE要求4. 程序源码5. 如何使用的全部内容,更多相关设备接入ONENET(5)esp8266内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复