章節(jié)
本項(xiàng)目教程總共分為四節(jié)
1.創(chuàng)建OneNET新版MQTT設(shè)備:為微信小程序與單片機(jī)通信打基礎(chǔ)(微信小程序通信單片機(jī)前置任務(wù))
2.ESP8266-01s入門:燒錄AT固件與OneNET MQTT通信教程包含MQTT.fx1.7.1教程(微信小程序通信單片機(jī)前置任務(wù))
3.物聯(lián)網(wǎng)實(shí)踐教程:微信小程序結(jié)合OneNET平臺(tái)MQTT實(shí)現(xiàn)51/STM32單片機(jī)智能控制【單片機(jī)代碼篇】
4.(當(dāng)前文章)物聯(lián)網(wǎng)實(shí)踐教程(終章):微信小程序結(jié)合OneNET平臺(tái)MQTT實(shí)現(xiàn)51/STM32單片機(jī)智能控制【微信小程序篇】
前言
項(xiàng)目最終成品演示
ESP8266視頻演示
微信小程序簡(jiǎn)介
微信小程序是一種不需要下載安裝即可使用的應(yīng)用,它實(shí)現(xiàn)了應(yīng)用“觸手可及”的理念,用戶掃一掃或搜一下即可打開應(yīng)用。由于它具有使用門檻低、加載速度快等優(yōu)點(diǎn),微信小程序在物聯(lián)網(wǎng)(IoT)場(chǎng)景中扮演著越來越重要的角色,特別適合于智能設(shè)備的遠(yuǎn)程控制和數(shù)據(jù)監(jiān)測(cè)。
物聯(lián)網(wǎng)設(shè)備通常需要與用戶的手機(jī)或其他智能設(shè)備進(jìn)行交互,微信小程序就極大簡(jiǎn)化了這一過程。用戶無需下載復(fù)雜的應(yīng)用程序,只需在微信中搜索或掃碼即可實(shí)現(xiàn)對(duì)物聯(lián)網(wǎng)產(chǎn)品的控制,如智能家居設(shè)備的管理、實(shí)時(shí)數(shù)據(jù)監(jiān)控等。微信小程序的跨平臺(tái)特性也讓設(shè)備廠商無需針對(duì)不同操作系統(tǒng)開發(fā)多個(gè)應(yīng)用程序,從而大大節(jié)省了成本和時(shí)間。
OneNET API介紹
OneNET是中國(guó)移動(dòng)旗下的物聯(lián)網(wǎng)平臺(tái),它提供了強(qiáng)大的數(shù)據(jù)存儲(chǔ)和管理能力,支持各類物聯(lián)網(wǎng)設(shè)備的接入。通過OneNET,設(shè)備可以實(shí)現(xiàn)數(shù)據(jù)的上傳與存儲(chǔ),開發(fā)者也可以利用提供的API來獲取這些數(shù)據(jù)進(jìn)行分析或顯示,亦或是發(fā)送控制指令到遠(yuǎn)端設(shè)備。
OneNET的API基于RESTful架構(gòu),支持標(biāo)準(zhǔn)的HTTP/HTTPS協(xié)議,使得各種平臺(tái)和設(shè)備都能方便地集成和使用。通過API,開發(fā)者可以實(shí)現(xiàn)如下功能:
-
數(shù)據(jù)上傳:物聯(lián)網(wǎng)設(shè)備可以通過API將采集到的數(shù)據(jù)上傳到OneNET平臺(tái),例如溫度、濕度、光照強(qiáng)度等傳感器數(shù)據(jù)。
-
指令下發(fā):開發(fā)者可以使用API發(fā)送指令到設(shè)備,實(shí)現(xiàn)遠(yuǎn)程控制,如開關(guān)燈、調(diào)節(jié)溫度等。
對(duì)于微信小程序開發(fā)者而言,這意味著可以通過發(fā)送HTTPS請(qǐng)求來與OneNET平臺(tái)進(jìn)行交互,無需搭建獨(dú)立的服務(wù)器。小程序中的每一個(gè)用戶界面,都可以嵌入對(duì)API的調(diào)用,實(shí)現(xiàn)數(shù)據(jù)的動(dòng)態(tài)更新和設(shè)備的即時(shí)控制。
在本教程中,我們將詳細(xì)介紹如何在微信小程序中調(diào)用OneNET API,來達(dá)到獲取設(shè)備MQTT數(shù)據(jù)和下發(fā)控制指令至51單片機(jī)的目標(biāo)。
圖片
微信小程序中使用OneNET API的Token
這個(gè)不同于Token1.0使用
在此之前我一直找不到這個(gè)軟件,在網(wǎng)上搜免費(fèi)的東西別人還要收費(fèi),最后在OneNET官方技術(shù)支持找到了,我這里就免費(fèi)把連接放出來,順便給你們那個(gè)官方的網(wǎng)址
服務(wù)與技術(shù)支持
Token2.0計(jì)算
生成的Token就是微信小程序里面要用的了
例如 const authInfo = "version=2022-05-01&res=userid%2F341108&et=1733816371&method=sha1&sign=%2BVN%2BgKOork6IMDt4ZfaSrag%3D";
介紹如何在微信小程序調(diào)用OneNET的API(GET請(qǐng)求)
官方說明在
只要弄懂了這一個(gè)調(diào)用方法,其他的也都會(huì)了,所有調(diào)用幾乎都是這樣
這個(gè)是獲取最新物模型數(shù)據(jù),記得更改為你自己的信息
fetchDeviceStatus() {
// 這里應(yīng)替換為用戶的實(shí)際鑒權(quán)信息
const authInfo = "version=2022-05-01&res=userid%2F341108&et=1733816371&methodign=%2BVNoDSm%2BgKOork6IMDt4ZfaSrag%3D";
wx.request({
url: 'https://iot-api.heclouds.com/device/status-history?product_id=05Dy8U26rg&device_name=test&start_time=1701090060000&end_time=1703511540000&limit=1',
method: "GET",
header: {
'Authorization': authInfo
},
success: (res) => {
// 更新設(shè)備狀態(tài)信息數(shù)據(jù)
this.setData({
deviceStatus: res.data
});
},
fail: (err) => {
console.log("設(shè)備狀態(tài)信息請(qǐng)求失敗");
console.error(err); // 處理請(qǐng)求失敗的情況
}
});
}
這段 JavaScript 代碼是微信小程序中的一個(gè)函數(shù),它用于向OneNET平臺(tái)發(fā)送HTTP GET請(qǐng)求來獲取已連接設(shè)備的狀態(tài)歷史信息。下面分部分進(jìn)行詳細(xì)解釋:
-
fetchDeviceStatus 函數(shù):
- 這是在微信小程序頁面對(duì)象中定義的一個(gè)方法,其名稱為
fetchDeviceStatus
。 - 它被設(shè)計(jì)為調(diào)用 OneNET 的 RESTful API,獲取特定設(shè)備的狀態(tài)歷史數(shù)據(jù)。
- 這是在微信小程序頁面對(duì)象中定義的一個(gè)方法,其名稱為
-
鑒權(quán)信息(authInfo):
-
authInfo
是一個(gè)字符串,包含通過 HTTP 請(qǐng)求頭發(fā)送給 OneNET 的鑒權(quán)信息。 - 通常這里包含 API 版本、用戶標(biāo)識(shí)、過期時(shí)間、請(qǐng)求方法和簽名等信息。
- 鑒權(quán)信息用于驗(yàn)證請(qǐng)求的合法性,確保是有權(quán)訪問該API的用戶發(fā)起的請(qǐng)求。
- 出于教程示例的目的,這里的鑒權(quán)信息應(yīng)被讀者替換為他們自己的有效信息。
-
-
wx.request:
-
wx.request
是微信小程序提供的網(wǎng)絡(luò)請(qǐng)求API,用于發(fā)起網(wǎng)絡(luò)請(qǐng)求。 - 該函數(shù)接收一個(gè)對(duì)象,其中包含進(jìn)行HTTP請(qǐng)求所需的各種參數(shù),如URL、方法、頭部信息等。
-
-
請(qǐng)求配置:
-
url
指明了向哪個(gè)地址發(fā)送請(qǐng)求。這里是 OneNET 的API端點(diǎn),用于獲取設(shè)備狀態(tài)歷史信息。 -
method
設(shè)置請(qǐng)求的 HTTP 方法,這里為 “GET”。 -
header
包含發(fā)送到服務(wù)器的頭部信息,這里主要傳遞Authorization
來認(rèn)證請(qǐng)求。
-
-
發(fā)送請(qǐng)求并處理響應(yīng):
-
success
和fail
是請(qǐng)求成功或失敗時(shí)執(zhí)行的回調(diào)函數(shù)。 - 在
success
回調(diào)中,通過this.setData
更新小程序頁面的deviceStatus
數(shù)據(jù),即將服務(wù)器返回的數(shù)據(jù)設(shè)置到頁面數(shù)據(jù)上,從而可以在頁面上展示這些信息。 - 如果請(qǐng)求失敗,
fail
回調(diào)將執(zhí)行,通常這里會(huì)打印錯(cuò)誤信息到控制臺(tái),可以在這里處理錯(cuò)誤,比如更新UI提示用戶請(qǐng)求失敗。
-
-
請(qǐng)求參數(shù):
- 請(qǐng)求的URL中包含的查詢參數(shù)(
product_id
,device_name
,start_time
,end_time
,limit
)用于指定想要查詢的設(shè)備狀態(tài)信息。 -
product_id
和device_name
分別指定產(chǎn)品ID和設(shè)備名。 -
start_time
和end_time
定義了查詢狀態(tài)的時(shí)間范圍。 -
limit
表示返回結(jié)果的數(shù)量限制,這里設(shè)置為1
表示只獲取最新的一個(gè)狀態(tài)數(shù)據(jù)。
- 請(qǐng)求的URL中包含的查詢參數(shù)(
請(qǐng)注意,實(shí)際使用時(shí)需要確保所有參數(shù)都是正確的,尤其是鑒權(quán)信息,它需要替換為有效的憑據(jù)才能讓API請(qǐng)求成功。如果請(qǐng)求失敗,要檢查網(wǎng)絡(luò)狀態(tài)、URL地址、API端點(diǎn)參數(shù)和鑒權(quán)信息是否正確。
介紹如何在微信小程序調(diào)用OneNET的API(POST請(qǐng)求)
這里是類同與下發(fā)指令的代碼 記得更改為你自己的信息
setOnenetData(ledValue) {
// 以下數(shù)據(jù)和URL應(yīng)根據(jù)實(shí)際情況進(jìn)行修改
const authInfo = "version=2022-05-01&res=userid%2F341108&et=1733816371ha1&sign=%2BVNoDSm%2BgKOork6IMDt4ZfaSrag%3D"; // 替換為用戶的實(shí)際鑒權(quán)信息
wx.request({
url: 'https://iot-api.heclouds.com/thingmodel/set-device-property',
method: 'POST',
header: {
'Authorization': authInfo,
},
data: {
"product_id": "05Dy8U26rg",
"device_name": "test",
"params": {
"LED": ledValue // 使用傳入的ledValue設(shè)置LED的狀態(tài)
}
}
});
}
這段代碼是微信小程序中的一個(gè)方法,名為setOnenetData
,它用于發(fā)送HTTP POST請(qǐng)求到OneNET平臺(tái),以設(shè)置特定設(shè)備的屬性值。下面是對(duì)該方法的詳細(xì)解釋:
-
setOnenetData 方法:
- 此方法接受一個(gè)參數(shù)
ledValue
,這個(gè)參數(shù)代表需要設(shè)置給設(shè)備LED屬性的值。
- 此方法接受一個(gè)參數(shù)
-
鑒權(quán)信息(authInfo):
-
authInfo
是一個(gè)字符串,包含了API鑒權(quán)信息,一般包括API版本、資源標(biāo)識(shí)、過期時(shí)間、加密方法和簽名。 - 請(qǐng)求時(shí)使用HTTP頭
Authorization
傳遞鑒權(quán)信息進(jìn)行身份驗(yàn)證,保證請(qǐng)求安全性。 - 這個(gè)示例中的鑒權(quán)信息需要用實(shí)際有效的信息替換。
-
-
wx.request 方法:
-
wx.request
是微信小程序用來發(fā)起網(wǎng)絡(luò)請(qǐng)求的API。 - 通過傳入一組參數(shù)配置,定義了如何向服務(wù)器發(fā)送請(qǐng)求。
-
-
請(qǐng)求配置:
-
url
指明了向哪個(gè)地址發(fā)送請(qǐng)求,這里是OneNET的API端點(diǎn),用于設(shè)置設(shè)備屬性。 -
method
表明這是一個(gè)POST請(qǐng)求,用于向服務(wù)器提交數(shù)據(jù)。 -
header
設(shè)置HTTP頭部信息,在這種情況下是包含Authorization
的鑒權(quán)信息。
-
-
發(fā)送數(shù)據(jù):
-
data
對(duì)象中包含具體要發(fā)送的數(shù)據(jù)。 -
product_id
和device_name
指定了哪個(gè)產(chǎn)品下的哪個(gè)設(shè)備需要設(shè)置屬性。 -
params
是一個(gè)對(duì)象,其中的“LED”鍵對(duì)應(yīng)設(shè)備的屬性名,“LED”鍵的值就是傳入setOnenetData
方法的ledValue
參數(shù),它表示用來設(shè)置設(shè)備的LED屬性的值。
-
-
發(fā)送請(qǐng)求:
-
wx.request
發(fā)出請(qǐng)求,但在這段代碼里,沒有定義回調(diào)函數(shù)來處理響應(yīng)。 - 實(shí)際使用應(yīng)加上
success
和fail
回調(diào)函數(shù),用于處理請(qǐng)求成功時(shí)返回的數(shù)據(jù)或請(qǐng)求失敗時(shí)的錯(cuò)誤信息。
-
-
注意事項(xiàng):
- 在編寫實(shí)際代碼時(shí),除了替換示例中的
authInfo
,還需確保product_id
和device_name
與你要控制的設(shè)備相匹配。 - 同樣,傳給OneNET平臺(tái)的參數(shù)(如LED的狀態(tài)值)應(yīng)該滿足平臺(tái)及設(shè)備端的預(yù)定協(xié)議,以確保設(shè)備能正確理解和響應(yīng)。
- 在編寫實(shí)際代碼時(shí),除了替換示例中的
這個(gè)setOnenetData
方法允許微信小程序與OneNET平臺(tái)進(jìn)行交互,實(shí)現(xiàn)對(duì)物聯(lián)網(wǎng)設(shè)備的遠(yuǎn)程控制。
資源包下載
資源包下載
https://pan.baidu.com/s/15iw7kzn4GMUKP3g8809PUA?pwd=jq91
結(jié)束語
在這個(gè)教程的旅程中,我們一起跨越了從硬件的細(xì)節(jié)世界到云端的數(shù)據(jù)流,最終觸達(dá)了用戶手中的微信小程序界面,實(shí)現(xiàn)了一個(gè)物聯(lián)網(wǎng)系統(tǒng)的全棧開發(fā)。感謝您的陪伴和努力,希望通過這些章節(jié)的學(xué)習(xí),您能獲得寶貴的實(shí)戰(zhàn)經(jīng)驗(yàn)和深刻的理解。
物聯(lián)網(wǎng)技術(shù)是連接物理世界和數(shù)字世界的橋梁,通過您對(duì)單片機(jī)、ESP8266和傳感器技術(shù)的探索,我們已經(jīng)成功搭建起了這座橋梁。不僅如此,您現(xiàn)在還可以遠(yuǎn)程監(jiān)控?cái)?shù)據(jù),甚至向設(shè)備下發(fā)指令,例如控制LED的開關(guān)狀態(tài)等操作。我相信您已經(jīng)感受到了物聯(lián)網(wǎng)帶來的便利和魅力。
我們始終相信每個(gè)人都有創(chuàng)造奇跡的潛力,只要勇敢地邁出探索的第一步,并持續(xù)地提升自己。隨著您深入學(xué)習(xí)和實(shí)踐,這些知識(shí)和技能將成為您解決實(shí)際問題和實(shí)現(xiàn)自我創(chuàng)新的重要基石。無論是為了個(gè)人的知識(shí)增長(zhǎng),還是為了社會(huì)的技術(shù)進(jìn)步,您的每一次嘗試都是極有價(jià)值的。
如果您在學(xué)習(xí)過程中遭遇難題,請(qǐng)勿灰心,教程始終是您可靠的參考資源。此外,加入相關(guān)的在線社區(qū)、參加研討會(huì)或是小組討論也是獲取幫助和啟發(fā)的好方式。每一次的交流和討論都可能為您打開新的認(rèn)知視角,幫助您找到解答。
請(qǐng)記得,技術(shù)是為了讓生活更美好而服務(wù)的。您現(xiàn)在掌握的技能,未來在智能家居、自動(dòng)化工業(yè)、智慧城市等領(lǐng)域,都將大放異彩??纯粗車?,每一項(xiàng)技術(shù)的進(jìn)步都潛藏著您潛在的影響力。文章來源:http://www.zghlxwxcb.cn/news/detail-773143.html
最后,再次感謝您選擇了這個(gè)教程。相信未來的您定將在物聯(lián)網(wǎng)的領(lǐng)域里獲得更多成就。無論是在技術(shù)的深度,還是在項(xiàng)目的廣度上,都期待著您的卓越表現(xiàn)。繼續(xù)保持您對(duì)技術(shù)的熱愛,對(duì)未來的憧憬和對(duì)可能的探求吧!祝學(xué)習(xí)愉快,創(chuàng)造您想要的智能世界!文章來源地址http://www.zghlxwxcb.cn/news/detail-773143.html
到了這里,關(guān)于物聯(lián)網(wǎng)實(shí)踐教程(終章):微信小程序結(jié)合OneNET平臺(tái)MQTT實(shí)現(xiàn)51/STM32單片機(jī)智能控制與溫度等數(shù)據(jù)實(shí)時(shí)顯示【微信小程序篇】的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!