五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

【零基礎學物聯(lián)網(wǎng)】MQTT篇 1-9 自我測試

2020-12-03 10:28 作者:太極創(chuàng)客  | 我要投稿

為了幫助您學習,我們專門為本教程制作了視頻。


到目前為止,我們已經(jīng)掌握了MQTT通訊的基本流程以及如何使用ESP8266來發(fā)布和訂閱MQTT消息。這節(jié)課我們來進行自我測試。

以下示例程序可以讓ESP8266同時訂閱和發(fā)布MQTT消息。請將本程序上傳到ESP8266開發(fā)板并且仔細閱讀程序內(nèi)容。關于此程序的具體使用方法,您可以參考本文首部的視頻說明。

假如您對程序的所有內(nèi)容全部理解,那么恭喜您,目前我們所教授的知識您已經(jīng)完全掌握了。

假如您對程序有任何不理解的地方,那么請務必將整個程序搞清楚,然后再繼續(xù)后面的學習。

目前我們所學的都是基礎知識,因此一定要牢固掌握所有程序內(nèi)容,這樣才能讓我們后續(xù)的學習更加順利。

假如您需要收看本教程的全部內(nèi)容,請點擊此處進入教程合輯頁面。


/**********************************************************************

項目名稱/Project??????????: 零基礎入門學用物聯(lián)網(wǎng)

程序名稱/Program name???? : pub_and_sub

團隊/Team????????????????: 太極創(chuàng)客團隊 / Taichi-Maker (www.taichi-maker.com)

作者/Author??????????????: CYNO朔

日期/Date(YYYYMMDD)???? : 20200719

程序目的/Purpose??????????:

利用PubSubClient同時訂閱和發(fā)布信息。

定時向主題發(fā)布D3按鍵的狀態(tài)

通過訂閱主題收到信息是數(shù)字1則打開LED,否則關閉LED。

-----------------------------------------------------------------------

本示例程序為太極創(chuàng)客團隊制作的《零基礎入門學用物聯(lián)網(wǎng)》中示例程序。

該教程為對物聯(lián)網(wǎng)開發(fā)感興趣的朋友所設計和制作。如需了解更多該教程的信息,請參考以下網(wǎng)頁:

http://www.taichi-maker.com/homepage/esp8266-nodemcu-iot/iot-c/esp8266-nodemcu-web-client/http-request/

***********************************************************************/

#include <ESP8266WiFi.h>

#include <PubSubClient.h>

#include <Ticker.h>

?

// 設置wifi接入信息(請根據(jù)您的WiFi信息進行修改)

const char* ssid = "taichi-maker";

const char* password = "12345678";

const char* mqttServer = "test.ranye-iot.net";

// 如以上MQTT服務器無法正常連接,請前往以下頁面尋找解決方案

// http://www.taichi-maker.com/public-mqtt-broker/

?

Ticker ticker;

WiFiClient wifiClient;

PubSubClient mqttClient(wifiClient);

?

int count;????// Ticker計數(shù)用變量

?

void setup() {

??Serial.begin(9600);

?

??pinMode(D3, INPUT_PULLUP);

?

??// Ticker定時對象

??ticker.attach(1, tickerCount);

??

??//設置ESP8266工作模式為無線終端模式

??WiFi.mode(WIFI_STA);

??

??// 連接WiFi

??connectWifi();

??

??// 設置MQTT服務器和端口號

??mqttClient.setServer(mqttServer, 1883);

??mqttClient.setCallback(receiveCallback);

?

??// 連接MQTT服務器

??connectMQTTServer();

}

?

void loop() {

??if (mqttClient.connected()) { // 如果開發(fā)板成功連接服務器

????// 每隔3秒鐘發(fā)布一次信息

????if (count >= 3){

??????pubMQTTmsg();

??????count = 0;

????}????

????// 保持心跳

????mqttClient.loop();

??} else {??????????????????// 如果開發(fā)板未能成功連接服務器

????connectMQTTServer();????// 則嘗試連接服務器

??}

}

?

void tickerCount(){

??count++;

}

?

void connectMQTTServer(){

??// 根據(jù)ESP8266的MAC地址生成客戶端ID(避免與其它ESP8266的客戶端ID重名)

??String clientId = "esp8266-" + WiFi.macAddress();

?

??// 連接MQTT服務器

??if (mqttClient.connect(clientId.c_str())) {

????Serial.println("MQTT Server Connected.");

????Serial.println("Server Address: ");

????Serial.println(mqttServer);

????Serial.println("ClientId:");

????Serial.println(clientId);

????subscribeTopic(); // 訂閱指定主題

??} else {

????Serial.print("MQTT Server Connect Failed. Client State:");

????Serial.println(mqttClient.state());

????delay(3000);

??}??

}

?

// 發(fā)布信息

void pubMQTTmsg(){

??// 建立發(fā)布主題。主題名稱以Taichi-Maker-為前綴,后面添加設備的MAC地址。

??// 這么做是為確保不同用戶進行MQTT信息發(fā)布時,ESP8266客戶端名稱各不相同,

??String topicString = "Taichi-Maker-Pub-" + WiFi.macAddress();

??char publishTopic[topicString.length() + 1];??

??strcpy(publishTopic, topicString.c_str());

?

??// 定時向服務器主題發(fā)布當前D3引腳狀態(tài)

??String messageString;

??if(digitalRead(D3)){

????messageString = "on";

??} else {

????messageString = "off";

??}

??char publishMsg[messageString.length() + 1];??

??strcpy(publishMsg, messageString.c_str());

??

??// 實現(xiàn)ESP8266向主題發(fā)布信息

??if(mqttClient.publish(publishTopic, publishMsg)){

????Serial.println("Publish Topic:");Serial.println(publishTopic);

????Serial.println("Publish message:");Serial.println(publishMsg);????

??} else {

????Serial.println("Message Publish Failed.");

??}

}

?

// 訂閱指定主題

void subscribeTopic(){

?

??// 建立訂閱主題。主題名稱以Taichi-Maker-Sub為前綴,后面添加設備的MAC地址。

??// 這么做是為確保不同設備使用同一個MQTT服務器測試消息訂閱時,所訂閱的主題名稱不同

??String topicString = "Taichi-Maker-Sub-" + WiFi.macAddress();

??char subTopic[topicString.length() + 1];??

??strcpy(subTopic, topicString.c_str());

??

??// 通過串口監(jiān)視器輸出是否成功訂閱主題以及訂閱的主題名稱

??if(mqttClient.subscribe(subTopic)){

????Serial.println("Subscribe Topic:");

????Serial.println(subTopic);

??} else {

????Serial.print("Subscribe Fail...");

??}??

}

?

// 收到信息后的回調(diào)函數(shù)

void receiveCallback(char* topic, byte* payload, unsigned int length) {

??Serial.print("Message Received [");

??Serial.print(topic);

??Serial.print("] ");

??for (int i = 0; i < length; i++) {

????Serial.print((char)payload[i]);

??}

??Serial.println("");

??Serial.print("Message Length(Bytes) ");

??Serial.println(length);

?

??if ((char)payload[0] == '1') {???? // 如果收到的信息以“1”為開始

????digitalWrite(BUILTIN_LED, LOW);??// 則點亮LED。

??} else {??????????????????????????

????digitalWrite(BUILTIN_LED, HIGH); // 否則熄滅LED。

??}

}

?

// ESP8266連接wifi

void connectWifi(){

?

??WiFi.begin(ssid, password);

??//等待WiFi連接,成功連接后輸出成功信息

??while (WiFi.status() != WL_CONNECTED) {

????delay(1000);

????Serial.print(".");

??}

??Serial.println("");

??Serial.println("WiFi Connected!");??

??Serial.println("");

}

假如您也喜歡太極創(chuàng)客,希望您將本文“分享”給更多的人,讓更多朋友認識我們。您的每一份點贊與投幣,都是對我們最溫暖的鼓勵與支持。

本文編輯制作:CYNO朔 (https://space.bilibili.com/415252426/)

【零基礎學物聯(lián)網(wǎng)】MQTT篇 1-9 自我測試的評論 (共 條)

分享到微博請遵守國家法律
准格尔旗| 南华县| 胶州市| 大渡口区| 山东| 登封市| 江油市| 赫章县| 易门县| 泰兴市| 靖边县| 元江| 西华县| 灵武市| 富阳市| 沂水县| 偏关县| 镇巴县| 随州市| 固原市| 漾濞| 多伦县| 东辽县| 霍城县| 北川| 鸡西市| 甘南县| 新津县| 丽水市| 海兴县| 镶黄旗| 富锦市| 全州县| 张掖市| 汽车| 江阴市| 淄博市| 博野县| 绥滨县| 鄢陵县| 许昌县|