文章目錄
- 前言
- 1.理論基礎
- 2.遠程控制led
- 2.1 實驗材料
- 2.2 實驗步驟
- 3.配置微信小程式
- 3.1理論基礎
- 3.2 實驗步驟
- 3.2.1 找到對應的api檔案
- 3.2.2 擼微信小程式代碼
- 3.2.3 代碼
- 3.2.4 真機除錯
- 坑點
前言
我先向大家推薦一個學習的博主吧!!
這就是博哥-------我入門esp8266的領頭人
很感謝他!!!
他的目錄里面沒有這一個帖子,我想給他補齊,供新手去學習
1.理論基礎
- esp8266mqtt庫
- 微信小程式初步了解
- 對onenet平臺有一定了解
2.遠程控制led
2.1 實驗材料
- node MCU
- 微信小程式開發者工具
- onenet平臺
2.2 實驗步驟
這是由onenet平臺控制的步驟具體請看博哥的
玩轉OneNET物聯網平臺之MQTT服務② —— 遠程控制LED
如果以上步驟你已經完成,并測驗好了.再看接下來的步驟
3.配置微信小程式
3.1理論基礎
- onenet平臺對mqtt的API的呼叫
- 注冊號微信小程式
3.2 實驗步驟
3.2.1 找到對應的api檔案
api檔案

發送命令看你的硬體是怎么設定的!!
3.2.2 擼微信小程式代碼
小程式代碼并不難,基本上如果不談頁面只談控制,基本上了解一部分就夠了!


這兩部分會了,基本上任務就完成一大半了.
3.2.3 代碼
demo.js
const app = getApp()
const apikey = 'TBDFy67p2H0GWIYnk4OjEjFk3gQ='
const deviceid = '646275345'
var temp=1;
var deviceConnected = false
const deviceInfoURL = "https://api.heclouds.com/devices/" + deviceid
const getDataStreamURL = "https://api.heclouds.com/devices/" + deviceid + "/datastreams"
const sendCommandURL = "https://api.heclouds.com/cmds"
var led = 0
function getDeviceInfo(that) {
//查看設備連接狀態,并重繪按鈕狀態
wx.request({
url: deviceInfoURL,
header: {
'content-type': 'application/json',
"api-key": apikey,
"topic":"esp8266led"
},
data: {
},
success(res) {
// console.log(res)
if (res.data.data.online) {
console.log("設備已經連接")
// deviceInit(that)//初始化按鈕
deviceConnected = true
} else {
console.log("設備還未連接")
deviceConnected = false
}
},
fail(res) {
console.log("請求失敗")
deviceConnected = false
},
complete() {
if (deviceConnected) {
that.setData({ deviceConnected: true })
} else {
that.setData({ deviceConnected: false })
}
}
})
}
function deviceInit(that) {
console.log("開始初始化按鈕")
//初始化各個硬體的狀態
wx.request({
url: getDataStreamURL,
header: {
'content-type': 'application/json',
"api-key": apikey,
},
data: {
},
success(res) {
for(var i=0; i<res.data.data.length; i++) {
var info = res.data.data[i]
if(info.current_value == 1) {
that.setData({ led_checked : true})
} else {
that.setData({ led_checked : false})
}
}
}
})
}
function controlLED(hardware_id ,switch_value) {
// console.log("發送命令:" + hardware_id + ":{" + switch_value + "}")
console.log("發送命令:" + hardware_id + ":" +switch_value )
//按鈕發送命令控制硬體
wx.request({
url: sendCommandURL + "?device_id=" + deviceid,
method: 'POST',
header: {
'content-type': 'application/json',
"api-key": apikey
},
// data: hardware_id + ":{" + switch_value + "}", //TODO 設計自定義語言 blueled:{V}, 預感這邊可能會有問題
data: switch_value ,
success(res) {
console.log("控制成功")
console.log(res)
console.log(res.data);
}
})
}
Page({
onl oad: function () {
//加載時完成1.檢查設備是否連接2.連接成功將資料顯示在界面
var that = this //將當前物件賦值
getDeviceInfo(that)
temp=1
},
onShow: function() {
//TODO依舊有問題
var that = this
var timer = setInterval(function(){
getDeviceInfo(that)
}, 3000)
},
change: function (event) {
var cmdData = event.detail.value == true ? 1 : 0 //修改為約定的資料
if(cmdData==1)
{
led=1;
controlLED("led",1);
}
else
{
led=0;
controlLED("led",0);
}
}
})
3.2.4 真機除錯
步驟
- 確認esp8266和onenet平臺連接上了
- 真機除錯(這里有個坑)
- 實作控制
寫完代碼后點擊這個

會彈出一個二維碼來,手機去掃那個二維碼,在手機端進行除錯

頁面簡單
接下來你就可以玩微信小程式去控制燈了
坑點
- 因為微信小程式的安全機制,導致你的api必須在他的白名單,不然你雖然能在開發者工具里能呼叫但是到了真機就不行
需要添加域名在白名單里

基本上以上你都能做到,那么恭喜你可以通過微信小程式控制esp8266了
大家好我是大一小菜雞,又菜癮還大
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/209697.html
標籤:java
