我家里的小米智能電器有米家、yeelight程梦、aqara等品牌又谋,米家有小米電視、米家空調(diào)等挎狸,yeelight有各個房間的吸頂燈,aqara有智能開關断楷。由于米家開發(fā)者文檔顯示目前當前僅面向企業(yè)開放锨匆,暫未面向個人開發(fā)者開放。而aqara智能開關可玩性一般(文檔可訪問這里),而yeelight智能燈可以調(diào)節(jié)燈光開關恐锣、光暗茅主、與傳感器聯(lián)動,可玩性更高土榴,于是我就把魔爪伸向了yeelight智能燈了诀姚。
先來看一下效果:視頻地址
?由于百度谷歌都沒有JS實現(xiàn)相關的教程,于是我只能從頭開始摸索了玷禽。yeelight的開發(fā)文檔比較簡陋赫段,而且是全英文的,社區(qū)更是提問題的多矢赁,解答問題的少糯笙,真是不太友好。
對可行性存在懷疑的我決定先?嘗試運行一下網(wǎng)站提供的mac版demo代碼撩银,看看是不是能跑通的给涕。為此我還安裝了xcode。結(jié)果直接運行會報如下錯誤:
error: No account for team "S4JD8QVPVY". Add a new account in the Accounts ...
解決辦法是额获,這兒需要換上自己的開發(fā)者賬號所在的team够庙。
運行成功后發(fā)現(xiàn)找不到燈設備,fine抄邀,那我暫時也沒辦法了耘眨。
本著快速實現(xiàn)的想法,我逆轉(zhuǎn)了一下思路撤摸,到github上看看有沒有相關的輪子毅桃。篩選一下語言、高贊准夷、文檔詳細的項目后钥飞,最后選擇了幾個項目嘗試跑一下,但都沒有找到燈設備衫嵌。百思不得其解地吃了一個下午茶读宙,以及搶了一輪小米有品的口罩結(jié)果被耍猴之后,不得不感嘆整個下午都被小米耍了楔绞。
此刻作為一個逆轉(zhuǎn)裁判粉絲结闸,我也逆轉(zhuǎn)一下思路,既然這么多demo都找不到設備酒朵,但他們既然存在桦锄,存在就是合理,那是不是其實demo是能跑通的蔫耽,只是我缺了哪些步驟呢结耀?把yeelight的論壇以及官網(wǎng)翻了個片后,我注意到官網(wǎng)的“局域網(wǎng)控制”入口,那是否我要給這些燈打開局域網(wǎng)控制才能夠被發(fā)現(xiàn)呢图甜?于是我被逼按照提示下載了他們的app來打開控制碍粥。再運行一遍mac版的demo,果然找到燈泡設備了黑毅!github上的項目也能順利運行了嚼摩。
沒想到要運行成功一個demo,還需要經(jīng)歷探索矿瘦、推理枕面、逆轉(zhuǎn)思路的過程,yeelight燈的開發(fā)入門真是趣味滿滿缚去!建議官方出一個文檔膊畴,讓人按著步驟去做吧。這方面aqara的文檔就做得好多了病游。
對比試用幾個github庫后,我最終選擇了jamesblanksby的庫來開發(fā)稠通,雖然現(xiàn)在已經(jīng)不再維護了衬衬。
實現(xiàn)如下:
先安裝庫:
npm i --save node-yeelight
再編寫代碼:
var Yeelight = require('node-yeelight');
var y = new Yeelight;
y.on('ready', function() {
console.log('ready');
y.discover();
});
y.on('deviceadded', function(device) {
console.log('device added');
y.connect(device);
});
var deviceList = [];
y.on('deviceconnected', function(device) {
console.log('device connected');
deviceList.push(device);
var state = true;
setTimeout(function(){
setInterval(function() {
// 設置燈泡開關及過度時間
// y.setPower(device, state, 2500);
state = state ? false : true;
// 設置燈泡亮度
y.setBrightness(
device, // device object
state?100:1, // brightness percentage (1-100)
800 // transition speed in ms
);
}, 1000);
},(deviceList.length-1)*1000);
});
y.listen();
以上代碼實現(xiàn)的是兩個燈輪流變光變暗,即開始的視頻效果改橘。
接著我搭配可編程的門窗傳感器滋尉,總算實現(xiàn)了門開燈開的效果了。這個下午也沒白呆了飞主∈ㄏВ可惜的是這個是局域網(wǎng)控制,就是要時刻開著服務器來控制碌识,有點不太方便了碾篡,如果能提供云控制的辦法就好了。
至此總算把功能實現(xiàn)了筏餐。在遇到新的技術難題時开泽,我們要嘗試從多個角度去分析應對,一條路走不通就換個思路走魁瞪,在解決的過程中逐漸理解問題所在穆律。另外還要懂得用輪子,彎路會少走很多导俘,效率也會提高很多峦耘。