欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

微信小程序+mqtt,esp8266溫濕度讀取的實現(xiàn)方法

 更新時間:2021年04月02日 11:05:51   作者:巴法云  
這篇文章主要介紹了微信小程序+mqtt,esp8266溫濕度讀取的實現(xiàn)方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

在這里插入圖片描述

第一、原理講解

esp8266 通過mqtt發(fā)布消息,微信小程序通過mqtt 訂閱消息,小程序訂閱后,就可以實時收到esp8266 傳輸來的消息。

第二、溫濕度測試

在這里插入圖片描述

這里使用的是D4口。

本demo 是利用arduino IDE開發(fā),關(guān)于arduino IDE 的ESP8266環(huán)境配置可參考:環(huán)境配置: 點擊跳轉(zhuǎn)

安裝庫

本案例使用一個非常簡單易用且與ESP8266配合使用的是Simple DHT傳感器庫??梢酝ㄟ^Arduino IDE Library Manager輕松安裝該庫。
在 arduino IDE上方選項處----> 工具—>管理庫,然后直接搜索dht11即可。點擊安裝庫,如下圖:

在這里插入圖片描述

測試程序:

#include <SimpleDHT.h>

// for DHT11, 
//  VCC: 5V or 3V
//  GND: GND
//  DATA: 2
int pinDHT11 = D4;
SimpleDHT11 dht11(pinDHT11);

void setup() {
 Serial.begin(115200);
}

void loop() {
 // start working...
 Serial.println("=================================");
 Serial.println("Sample DHT11...");
 
 // read without samples.
 byte temperature = 0;
 byte humidity = 0;
 int err = SimpleDHTErrSuccess;
 if ((err = dht11.read(&temperature, &humidity, NULL)) != SimpleDHTErrSuccess) {
 Serial.print("Read DHT11 failed, err="); Serial.println(err);delay(1000);
 return;
 }
 
 Serial.print("Sample OK: ");
 Serial.print((int)temperature); Serial.print(" *C, "); 
 Serial.print((int)humidity); Serial.println(" H");
 
 // DHT11 sampling rate is 1HZ.
 delay(1500);
}

正常工作的話,串口會正常輸出的,如下圖所示:

在這里插入圖片描述

第三、溫濕度推送到云端

如果上一步的溫濕度可以讀取輸出,那么就可以在上版的基礎(chǔ)上,把數(shù)據(jù)上傳到云端。

增加了按鈕控制,數(shù)據(jù)用#號包裹,以便app采用字符串切割,分割出來數(shù)據(jù),#23#80#on,即#溫度#濕度#按鈕狀態(tài),小程序端會根據(jù)#號分割字符串進(jìn)行取值,以便顯示。

如果上傳的數(shù)據(jù)不止溫濕度,可在#號后面繼續(xù)添加&msg=#23#80#data1#data2#data3#data4#\r\n,app字符串分割的時候,要根據(jù)上傳的數(shù)據(jù)進(jìn)行分割

升級版程序下載:

點擊下載 https://cloud.bemfa.com/zip/mqtt/dht11_led.zip

需要修改的地方

const char* ssid = "newhtc";     //修改,修改為你的路由的WIFI名字
const char* password = "qq123456";   //修改為你的WIFI密碼
const char* mqtt_server = "bemfa.com";  //默認(rèn),MQTT服務(wù)器地址
const int mqtt_server_port = 9501;   //默認(rèn),MQTT服務(wù)器端口
#define ID_MQTT "4d9ec352e0376f2110a0c601a2857225" //mqtt客戶端ID,修改為你的開發(fā)者密鑰
const char* topic = "led002";      //Led主題名字,可在巴法云控制臺自行創(chuàng)建,名稱隨意
const char * dhttopic = "temp004";     //溫濕度主題名字,可在巴法云mqtt控制臺創(chuàng)建
int pinDHT11 = D4;       //dht11傳感器引腳輸入
int B_led = D5;       //控制的led引腳
long timeval = 3*1000;     //上傳的傳感器時間間隔,默認(rèn)3秒

在巴法mqtt設(shè)備云控制臺 新建兩個主題,主題名字隨意,例如temp004 用于傳輸溫濕度,led002用于控制led,本實例用用temp004和led002使用示例代碼時應(yīng)修改為自己的主題名字,字母或數(shù)字或字母加數(shù)字組合。UID為用戶私鑰,在 巴法創(chuàng)客云控制臺 注冊登陸后可獲得。

注意:在mqtt設(shè)備云創(chuàng)建主題。

登陸完成后,可在控制臺看到自己的私鑰UID,如圖所示:

在這里插入圖片描述

WIFI名稱為自己的路由器WIFI名稱,區(qū)分大小寫,寫錯會導(dǎo)致連接不上網(wǎng)絡(luò)的。

例程中,每三秒上傳一次數(shù)據(jù):

long now = millis();//獲取當(dāng)前時間戳
 if (now - lastMsg > timeval) {//如果達(dá)到3s,進(jìn)行數(shù)據(jù)上傳
 lastMsg = now;
 // read without samples.
 byte temperature = 0;
 byte humidity = 0;
 int err = SimpleDHTErrSuccess;
 if ((err = dht11.read(&temperature, &humidity, NULL)) != SimpleDHTErrSuccess) {
  Serial.print("Read DHT11 failed, err="); Serial.println(err); delay(1000);
  return;
 }
 String msg = "#" + (String)temperature + "#" + (String)humidity + "#" + ledstatus; //數(shù)據(jù)封裝#溫度#濕度#開關(guān)狀態(tài)#
 client.publish(dhttopic, msg.c_str());//數(shù)據(jù)上傳
 }

如果路由器有網(wǎng)絡(luò)的話,數(shù)據(jù)會自動上傳,可在巴法mqtt設(shè)備云 刷新網(wǎng)頁,即可看到上傳的數(shù)據(jù)。如下圖所示:

在這里插入圖片描述
在這里插入圖片描述

數(shù)據(jù)上傳時用#號進(jìn)行了封裝,27是溫度,24是濕度,off是上傳的燈的狀態(tài)。

第四、微信小程序開發(fā)

在 微信公眾平臺注冊小程序賬號,拿到小程序 appid,右側(cè)點擊 -開發(fā)–> 開發(fā)管理–>開發(fā)設(shè)置---->開發(fā)者ID,里面可以看到,長的大概是這樣:wx34a2063de5cec04b,下面導(dǎo)入項目的時候會用到。

右側(cè)點擊 -開發(fā)–> 開發(fā)管理–>開發(fā)設(shè)置---->服務(wù)器域名。下方服務(wù)器域名處,點擊修改,在request合法域名處,和 socket合法域名處 ,分別添加域名https://api.bemfa.com 和wss://bemfa.com 保存提交即可。如下圖。

在這里插入圖片描述

下載安裝微信開發(fā)者工具,可百度下載。

下載demo示例程序。下載地址: 點擊下載

打開微信開發(fā)者工具,小程序項目,導(dǎo)入項目。在目錄處選擇剛剛下載解壓的demo示例程序,AppID處填入你的小程序AppID,然后點擊下方導(dǎo)入即可。如下圖。

在這里插入圖片描述

本示例程序非常簡單,各位大神可以繼續(xù)開發(fā)添加各種功能,添加背景,優(yōu)化色彩等等,如果只是簡單使用,只需修改/pages/index/index.js 文件中uid 和topic 信息為自己的即可,這里的uid和topic需要和esp8266填入的uid和topic相同,這里有兩個主題,一個用于傳輸溫度和濕度,一個用于控制LED。如下圖。

data: {
 uid:"4d9ec352e0376f2110a0c601a2857225",//用戶密鑰,巴法云控制臺獲取
 ledtopic:"led002",//控制led的主題,mqtt控制臺創(chuàng)建
 dhttopic:"temp004",//傳輸溫濕度的主題,控制臺創(chuàng)建
 device_status:"離線",// 顯示led是否在線的字符串,默認(rèn)離線
 ledOnOff:"關(guān)閉",
 checked: false,//led的狀態(tài)。默認(rèn)led關(guān)閉
 wendu:"",//溫度值,默認(rèn)為空
 shidu:"",//濕度值,默認(rèn)為空
 ledicon:"/utils/img/lightoff.png",//顯示led圖標(biāo)的狀態(tài)。默認(rèn)是關(guān)閉狀態(tài)圖標(biāo)
 client: null,//mqtt客戶端,默認(rèn)為空
 },

修改完畢后,ctrl+s 保存修改??梢渣c擊左邊屏幕上的按鈕進(jìn)行調(diào)試,如下圖。

在這里插入圖片描述

console控制臺可以查看小程序的調(diào)試信息。默認(rèn)每3秒會自動請求一下服務(wù)器上的數(shù)據(jù),查看esp8266的狀態(tài)信息。點擊打開或者關(guān)閉按鈕,打開esp8266串口調(diào)試助手,可查看esp8266是否收到指令,如果第一步esp8266已聯(lián)網(wǎng),都是可以收到信息的。

如果界面和其他功能都開發(fā)完畢??梢渣c擊微信開發(fā)者工具的上面的上傳按鈕,如下圖。

在這里插入圖片描述

上傳成功后,再登陸剛剛注冊的微信公眾平臺,在版本管理處,可以看到自己剛剛上傳的小程序,提交審核即可,等一天左右,一般都會通過,通過后登陸微信公眾平臺,提交發(fā)布即可。如果是自己使用的,做好加上登陸驗證功能,比如驗證匹配一下某個字符串是否正確等等,不然小程序上線后別人也可以隨意控制了。

在這里插入圖片描述

到此這篇關(guān)于微信小程序+mqtt,esp8266溫濕度讀取的文章就介紹到這了,更多相關(guān)微信小程序esp8266溫濕度讀取內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論