最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

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

【零基礎(chǔ)學(xué)物聯(lián)網(wǎng)】MQTT篇 1-6 MQTT服務(wù)端連接操作

2020-11-23 10:43 作者:太極創(chuàng)客  | 我要投稿

為了幫助您學(xué)習(xí),我們專門(mén)為本教程制作了視頻。

到目前為止,我們已經(jīng)學(xué)習(xí)了發(fā)布和訂閱MQTT消息的基本知識(shí),這節(jié)課我們來(lái)將目前所學(xué)的知識(shí)應(yīng)用到實(shí)際操作中。我們將要利用ESP8266來(lái)實(shí)現(xiàn)最基本的MQTT消息發(fā)布。

本節(jié)課的學(xué)習(xí)將需要您掌握ESP8266的基本操作,假如您對(duì)ESP8266的基本操作不太了解,您可以先完成《零基礎(chǔ)入門(mén)學(xué)用物聯(lián)網(wǎng)》系列教程的第一部分“基礎(chǔ)知識(shí)篇”。

假如您已經(jīng)完成以上教程,那么接下來(lái)您就可以繼續(xù)這節(jié)課的學(xué)習(xí)了。

ESP8266的Arduino開(kāi)發(fā)環(huán)境里有多個(gè)MQTT庫(kù),我們將使用最為流行的PubSubClient庫(kù)來(lái)作為本教程的主要介紹對(duì)象,我們將通過(guò)一系列課程教您如何使用ESP8266通過(guò)PubSubClient庫(kù)來(lái)實(shí)現(xiàn)MQTT物聯(lián)網(wǎng)應(yīng)用。關(guān)于PubSubClient庫(kù),以下是其基本信息:

作者名:Nick O’Leary
官網(wǎng)地址:https://pubsubclient.knolleary.net/
GitHub:https://github.com/knolleary/pubsubclient/
百度網(wǎng)盤(pán)下載: https://pan.baidu.com/s/12MHGbdfiOdwOGip5RMSSEQ 提取碼: sizy

當(dāng)您將PubSubClient庫(kù)安裝后,我們就可以使用該庫(kù)進(jìn)行開(kāi)發(fā)了。

發(fā)布MQTT消息示例程序

通過(guò)以下示例程序,我們將可以讓ESP8266向公用MQTT服務(wù)器發(fā)布消息。如果您需要了解此程序的詳細(xì)說(shuō)明,請(qǐng)點(diǎn)擊本文首部的視頻。

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

項(xiàng)目名稱/Project??????????: 零基礎(chǔ)入門(mén)學(xué)用物聯(lián)網(wǎng)

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

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

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

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

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

本程序旨在演示如何使用PubSubClient庫(kù)使用ESP8266向MQTT服務(wù)器發(fā)布信息。

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

本示例程序?yàn)樘珮O創(chuàng)客團(tuán)隊(duì)制作的《零基礎(chǔ)入門(mén)學(xué)用物聯(lián)網(wǎng)》中示例程序。

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

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>

?

// 設(shè)置wifi接入信息(請(qǐng)根據(jù)您的WiFi信息進(jìn)行修改)

const char* ssid = "taichi-maker";

const char* password = "12345678";

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

?

// 如以上MQTT服務(wù)器無(wú)法正常連接,請(qǐng)前往以下頁(yè)面尋找解決方案

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

?

Ticker ticker;

WiFiClient wifiClient;

PubSubClient mqttClient(wifiClient);

?

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

?

void setup() {

??Serial.begin(9600);

??

??//設(shè)置ESP8266工作模式為無(wú)線終端模式

??WiFi.mode(WIFI_STA);

??

??// 連接WiFi

??connectWifi();

??

??// 設(shè)置MQTT服務(wù)器和端口號(hào)

??mqttClient.setServer(mqttServer, 1883);

?

??// 連接MQTT服務(wù)器

??connectMQTTServer();

?

??// Ticker定時(shí)對(duì)象

??ticker.attach(1, tickerCount);??

}

?

void loop() {

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

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

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

??????pubMQTTmsg();

??????count = 0;

????}????

????// 保持心跳

????mqttClient.loop();

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

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

??}

}

?

void tickerCount(){

??count++;

}

?

void connectMQTTServer(){

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

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

?

??// 連接MQTT服務(wù)器

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

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

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

????Serial.println(mqttServer);

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

????Serial.println(clientId);

??} else {

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

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

????delay(3000);

??}??

}

?

// 發(fā)布信息

void pubMQTTmsg(){

??static int value; // 客戶端發(fā)布信息用數(shù)字

?

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

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

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

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

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

?

??// 建立發(fā)布信息。信息內(nèi)容以Hello World為起始,后面添加發(fā)布次數(shù)。

??String messageString = "Hello World " + String(value++);

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

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

??

??// 實(shí)現(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.");

??}

}

?

// 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)客,希望您將本文“分享”給更多的人,讓更多朋友認(rèn)識(shí)我們。您的每一份點(diǎn)贊與投幣,都是對(duì)我們最溫暖的鼓勵(lì)與支持

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



【零基礎(chǔ)學(xué)物聯(lián)網(wǎng)】MQTT篇 1-6 MQTT服務(wù)端連接操作的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
青龙| 彰武县| 深泽县| 阜南县| 香河县| 石台县| 东至县| 杭州市| 濮阳县| 工布江达县| 天等县| 衡东县| 博乐市| 化德县| 宁阳县| 阿城市| 霍州市| 三门县| 铜梁县| 丰台区| 上蔡县| 和硕县| 凯里市| 旺苍县| 海宁市| 根河市| 乌兰县| 平阳县| 商都县| 游戏| 随州市| 固原市| 来凤县| 靖江市| 章丘市| 大新县| 休宁县| 东兴市| 澎湖县| 南川市| 九龙城区|