ESPduino-01上傳溫濕度數(shù)據(jù)到OneNet平臺(tái)(MQTT上傳模版)


一.概述

本文章主要講述利用ESPduino開發(fā)板(兼容NodeMcu)獲取DHT11采集的溫濕度信息涛酗,并且通過MQTT協(xié)議實(shí)時(shí)上傳到ONENET物聯(lián)網(wǎng)云平臺(tái)。開發(fā)過程采用ArduinoIDE開發(fā)埠巨,代碼我現(xiàn)在已經(jīng)整理成一個(gè)模版(只要是ONENET上傳數(shù)據(jù)巴粪,都可以基于這套模版代碼,代碼根據(jù)ESP8266 庫中實(shí)例修改而成)沛厨,分享在下方刚照,供各位小伙伴二次修改開發(fā)刑巧。

一.準(zhǔn)備

1.ESPduino(兼容NodeMcu等一些列ESP8266開發(fā)板)

????ESPDuino將Arduino和ESP8266有機(jī)地結(jié)合起來,使開發(fā)高效穩(wěn)定的物聯(lián)網(wǎng)變得容易无畔。

2.DHT11 溫濕度傳感器模塊

很常見且便宜的溫濕度傳感器啊楚,精度不是很準(zhǔn),但可以玩玩浑彰,后期可以更換其他高精度傳感器恭理。

3.面包板及其若干杜邦線

三.接線

VCC----------------------5v

GND---------------------GND

DATA---------------------D0

四.代碼(ONENET上傳模版)

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

*項(xiàng)目:Espduino采集DHT11溫濕度上傳ONENET云平臺(tái)

*作者:耿彬

*日期:2020-05-04

*版本:V1.O

?**********************************************************************************************/

#include <ESP8266WiFi.h>

#include <PubSubClient.h>

#include <dht11.h>


//定義LED燈:PIN_LED所對(duì)應(yīng)的引腳為16號(hào)

#define BUILTIN_LED 16

//定義DHT11數(shù)據(jù)引腳

#define DHT11PIN 0


//此處定義為你自己的路由器名稱(SSID)

const char* ssid = "此處定義為你自己的路由器名稱";

//此處定義為你自己的路由器密碼

const char* password = "此處定義為你自己的路由器密碼";

const char* mqtt_server = "183.230.40.39";//固定 ONENET云平臺(tái)IP地址


const char* DeviceID = "你自己onenet上的設(shè)備號(hào)"; //設(shè)備號(hào)

const char* ProductID = "你自己onenet上的產(chǎn)品號(hào)"; ?//產(chǎn)品號(hào)

const char* AuthInfo = "你自己onenet上的APIKey"; //鑒權(quán)信息


WiFiClient espClient;

PubSubClient client(espClient);

long lastMsg = 0;

char msg[50];

int value = 0;

char tmp[28];

char d[3];


dht11 DHT11;


/**

*連接WIFI

?*/

void setup_wifi() {


??delay(10);

??// We start by connecting to a WiFi network

??Serial.println();

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

??Serial.println(ssid);


??WiFi.begin(ssid, password);


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

????delay(500);

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

??}


??randomSeed(micros());


??Serial.println("");

??Serial.println("WiFi connected");

??Serial.println("IP address: ");

??Serial.println(WiFi.localIP());

}


/*

*訂閱主題后收到信息的回調(diào)函數(shù)(用于進(jìn)行遠(yuǎn)程控制)

?*/

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

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

??Serial.print(topic);

??Serial.print("] ");

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

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

??}

??Serial.println();


??// Switch on the LED if an 1 was received as first character

??if ((char)payload[0] == '1') {

????digitalWrite(BUILTIN_LED, LOW); ??// Turn the LED on (Note that LOW is the voltage level

????// but actually the LED is on; this is because

????// it is active low on the ESP-01)

??} else {

????digitalWrite(BUILTIN_LED, HIGH); ?// Turn the LED off by making the voltage HIGH

??}


}

/**

* MQTT連接ONENET

?*/

void reconnect() {

??// Loop until we're reconnected

??while (!client.connected()) {

????Serial.print("Attempting MQTT connection...");

//默認(rèn)創(chuàng)建一個(gè)隨機(jī)的 client ID

????String clientId = "ESP8266Client-";

????clientId += String(random(0xffff), HEX);

//嘗試連接

????if (client.connect(DeviceID, ProductID, AuthInfo)) {

??????Serial.println("connected");

//發(fā)布主題和內(nèi)容

??????client.publish("outTopic", "hello world");

//訂閱主題

??????client.subscribe("inTopic");

????} else {

??????Serial.print("failed, rc=");

??????Serial.print(client.state());

??????Serial.println(" try again in 5 seconds");

??????// Wait 5 seconds before retrying

??????delay(5000);

????}

??}

}

/**

*初始化函數(shù)

?*/

void setup() {

??pinMode(BUILTIN_LED, OUTPUT); ????// Initialize the BUILTIN_LED pin as an output

??Serial.begin(115200);

??setup_wifi();

??client.setServer(mqtt_server, 6002);

??client.setCallback(callback);

}


/**

*循環(huán)函數(shù)

?*/

void loop() {

//讀取溫濕度數(shù)據(jù)

??DHT11.read(DHT11PIN);

Serial.print("濕度:");

Serial.println(DHT11.humidity * 100); //濕度*100以辨別溫度

Serial.print("溫度:");

??int temperature = DHT11.temperature;

Serial.println(temperature);//輸出溫度


??if (!client.connected()) {

????reconnect();

??}

??client.loop();


??long now = millis();

??if (now - lastMsg > 2000) {

????lastMsg = now;

????++value;

????/*snprintf (msg, 50, "hello world #%ld", value);

??????Serial.print("Publish message: ");

??????Serial.println(msg);

??????client.publish("outTopic", msg);*/

//拼接所要發(fā)送的json串(重要,這里最終發(fā)送的數(shù)據(jù))

????snprintf(tmp, sizeof(tmp), "{\"temperature\":%d}", temperature);

????Serial.print("Publish message: ");

????Serial.println(tmp);

????uint16_t streamLen = strlen(tmp);

????d[0] = '\x03';

????d[1] = (streamLen >> 8);

????d[2] = (streamLen & 0xFF);

????snprintf(msg, sizeof(msg), "%c%c%c%s", d[0], d[1], d[2], tmp);

????client.publish("$dp", (uint8_t*)msg, streamLen + 3, false);

??}

}

五.修改方法

1. 修改成為自家的路由器名稱郭变,密碼


2. 修改自己的onenet設(shè)備ID颜价,產(chǎn)品ID,和鑒權(quán)信息(APIkey)


(1)設(shè)備ID:設(shè)備列表中


(2)產(chǎn)品ID:產(chǎn)品概況

(3)鑒權(quán)信息(APIKEY):產(chǎn)品概況


3. 修改JSON串

Json可以自行百度學(xué)習(xí)诉濒,這里就不說多少了.


格式為{“數(shù)據(jù)流1”:數(shù)據(jù)周伦,”數(shù)據(jù)流2”:數(shù)據(jù)}

六.資源分享

1. ArduinoIDE內(nèi)置ESP8266庫文件 可直接使用 以及 ESPduino相關(guān)說明

鏈接:https://pan.baidu.com/s/1MDBVi09Mc-TUWeZbiFh7-g

提取碼:840q

2. DHT11庫文件

鏈接:https://pan.baidu.com/s/1o2HifBpIMX95wmE4SetYLQ

提取碼:vrl8

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市未荒,隨后出現(xiàn)的幾起案子专挪,更是在濱河造成了極大的恐慌,老刑警劉巖茄猫,帶你破解...
    沈念sama閱讀 216,651評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件狈蚤,死亡現(xiàn)場離奇詭異困肩,居然都是意外死亡划纽,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門锌畸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來勇劣,“玉大人,你說我怎么就攤上這事”饶” “怎么了幻捏?”我有些...
    開封第一講書人閱讀 162,931評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長命咐。 經(jīng)常有香客問我篡九,道長,這世上最難降的妖魔是什么醋奠? 我笑而不...
    開封第一講書人閱讀 58,218評(píng)論 1 292
  • 正文 為了忘掉前任榛臼,我火速辦了婚禮,結(jié)果婚禮上窜司,老公的妹妹穿的比我還像新娘沛善。我一直安慰自己,他們只是感情好塞祈,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評(píng)論 6 388
  • 文/花漫 我一把揭開白布金刁。 她就那樣靜靜地躺著,像睡著了一般议薪。 火紅的嫁衣襯著肌膚如雪尤蛮。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,198評(píng)論 1 299
  • 那天斯议,我揣著相機(jī)與錄音抵屿,去河邊找鬼。 笑死捅位,一個(gè)胖子當(dāng)著我的面吹牛轧葛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播艇搀,決...
    沈念sama閱讀 40,084評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼尿扯,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了焰雕?” 一聲冷哼從身側(cè)響起衷笋,我...
    開封第一講書人閱讀 38,926評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎矩屁,沒想到半個(gè)月后辟宗,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,341評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡吝秕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評(píng)論 2 333
  • 正文 我和宋清朗相戀三年泊脐,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片烁峭。...
    茶點(diǎn)故事閱讀 39,731評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡容客,死狀恐怖秕铛,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情缩挑,我是刑警寧澤但两,帶...
    沈念sama閱讀 35,430評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站供置,受9級(jí)特大地震影響谨湘,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜芥丧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評(píng)論 3 326
  • 文/蒙蒙 一悲关、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧娄柳,春花似錦寓辱、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至挎挖,卻和暖如春这敬,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蕉朵。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評(píng)論 1 269
  • 我被黑心中介騙來泰國打工崔涂, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人始衅。 一個(gè)月前我還...
    沈念sama閱讀 47,743評(píng)論 2 368
  • 正文 我出身青樓冷蚂,卻偏偏與公主長得像,于是被迫代替她去往敵國和親汛闸。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蝙茶,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評(píng)論 2 354