信譽(yù)好的龍崗網(wǎng)站制作黃岡網(wǎng)站推廣廠家
實(shí)現(xiàn)微信小程序控制單片機(jī)外設(shè)動(dòng)作
- 一、使用ONENET可視化組件控制單片機(jī)外設(shè)動(dòng)作
- 二、使用微信小程序控制單片機(jī)外設(shè)動(dòng)作
- 三、總結(jié)
本篇博客話接上文: https://blog.csdn.net/m0_71523511/article/details/135892908
上一篇博客實(shí)現(xiàn)了微信小程序接收單片機(jī)上傳的數(shù)據(jù),本篇博客實(shí)現(xiàn)微信小程序控制單片機(jī)外設(shè)動(dòng)作,這樣兩篇博客合起來(lái)就成了完整的最簡(jiǎn)單智能家居。項(xiàng)目源碼也在上一篇博客中。
一、使用ONENET可視化組件控制單片機(jī)外設(shè)動(dòng)作
首先進(jìn)入多協(xié)議接入界面,選擇之前創(chuàng)建好的產(chǎn)品
點(diǎn)擊添加數(shù)據(jù)流模板
添加成功之后點(diǎn)擊設(shè)備列表里的數(shù)據(jù)流,就可以看到多了一個(gè)數(shù)據(jù)流
接下來(lái)進(jìn)入可視化項(xiàng)目
然后點(diǎn)擊編輯進(jìn)入編輯界面
這里由于我的免費(fèi)體驗(yàn)時(shí)間到了,所以直接用b站up主的圖片:
保存之后點(diǎn)擊預(yù)覽,此時(shí)就可以點(diǎn)擊按鈕了,在設(shè)備管理中的數(shù)據(jù)流中可以看到ledbtn數(shù)據(jù)流變化:
這樣設(shè)置完成之后就可以進(jìn)入keil編輯代碼了,下面是主函數(shù)中接收指令的代碼:
ledbtn = esp8266_get_data("ledbtn");//不斷獲取云平臺(tái)下發(fā)打開(kāi)或關(guān)閉LED指令if(ledbtn == 1){LED0 = 0;}else{LED0 = 1;}
二、使用微信小程序控制單片機(jī)外設(shè)動(dòng)作
在上一節(jié)微信小程序代碼的基礎(chǔ)上添加按鍵來(lái)實(shí)現(xiàn)本節(jié)功能:
①index.wxss文件
將圖片和字體大小改小:
/**index.wxss**/
.userinfo {display: flex;flex-direction: column;align-items: center;color: rgb(141, 10, 10);font-size: 15px;
}.img {width: 100rpx;height: 100rpx;
}.usermotto {margin-top: 200px;
}
②index.wxml文件
最后加上這兩行代碼,添加按鍵:
<button type="primary" style="margin-top: 20px;" bindtap="kai">開(kāi)燈</button>
<button type="warn" bindtap="guan">關(guān)燈</button>
③index.js文件
onload函數(shù)前加上兩函數(shù):
kai:function(){let data={"datastreams": [ {"id": "ledbtn","datapoints":[{"value": 1}]},//led是數(shù)據(jù)流的名稱,value是要傳上去的數(shù)值] }//按鈕發(fā)送命令控制硬件wx.request({url:'https://api.heclouds.com/devices/1038269453/datapoints',header: {'content-type': 'application/json','api-key':'wfsF4bCGtQIQmW=3wTsPnrdjuFA='},method: 'POST',data: JSON.stringify(data),//data數(shù)據(jù)轉(zhuǎn)換成JSON格式success(res){console.log("成功",res.data)},fail(res){console.log("失敗",res)}})},guan:function(){let data={"datastreams": [
{"id": "ledbtn","datapoints":[{"value": 0}]},
//led是數(shù)據(jù)流的名稱,value是要傳上去的數(shù)值]
}//按鈕發(fā)送命令控制硬件wx.request({url:'https://api.heclouds.com/devices/1038269453/datapoints',header: {'content-type': 'application/json','api-key':'wfsF4bCGtQIQmW=3wTsPnrdjuFA='},method: 'POST',data: JSON.stringify(data),//data數(shù)據(jù)轉(zhuǎn)換成JSON格式success(res){console.log("成功",res.data)},fail(res){console.log("失敗",res)}})
},
這里注意設(shè)備id和api-key記得換。
三、總結(jié)
經(jīng)過(guò)實(shí)測(cè),這個(gè)發(fā)送數(shù)據(jù)給云平臺(tái)不知道什么原因總是發(fā)送失敗,這樣會(huì)導(dǎo)致小程序下發(fā)數(shù)據(jù)時(shí)無(wú)法收到,因?yàn)槌绦蚩ㄋ涝谥匕l(fā)數(shù)據(jù)給云平臺(tái)的邏輯里,這個(gè)項(xiàng)目的代碼實(shí)現(xiàn)比較雞肋,延遲太大,之后會(huì)繼續(xù)給出基于MQTT協(xié)議的智能家居和使用freertos的智能家居項(xiàng)目。
總的來(lái)說(shuō)這個(gè)項(xiàng)目用于環(huán)境監(jiān)測(cè)是沒(méi)問(wèn)題的,但是無(wú)法實(shí)時(shí)準(zhǔn)確的使用上位機(jī)控制下位機(jī)。