小米智能家居之使用JS API 开发控制Yeelight智能灯

我家里的小米智能电器有米家、yeelight、aqara等品牌,米家有小米电视、米家空调等,yeelight有各个房间的吸顶灯,aqara有智能开关。由于米家开发者文档显示目前当前仅面向企业开放,暂未面向个人开发者开放。而aqara智能开关可玩性一般(文档可访问这里),而yeelight智能灯可以调节灯光开关、光暗、与传感器联动,可玩性更高,于是我就把魔爪伸向了yeelight智能灯了。

先来看一下效果:视频地址

​由于百度谷歌都没有JS实现相关的教程,于是我只能从头开始摸索了。yeelight的开发文档比较简陋,而且是全英文的,社区更是提问题的多,解答问题的少,真是不太友好。

晦涩难懂的开发文档

对可行性存在怀疑的我决定先​尝试运行一下网站提供的mac版demo代码,看看是不是能跑通的。为此我还安装了xcode。结果直接运行会报如下错误:
error: No account for team "S4JD8QVPVY". Add a new account in the Accounts ...
解决办法是,这儿需要换上自己的开发者账号所在的team。

换上自己的开发者账号所在的team

运行成功后发现找不到灯设备,fine,那我暂时也没办法了。

本着快速实现的想法,我逆转了一下思路,到github上看看有没有相关的轮子。筛选一下语言、高赞、文档详细的项目后,最后选择了几个项目尝试跑一下,但都没有找到灯设备。百思不得其解地吃了一个下午茶,以及抢了一轮小米有品的口罩结果被耍猴之后,不得不感叹整个下午都被小米耍了。

此刻作为一个逆转裁判粉丝,我也逆转一下思路,既然这么多demo都找不到设备,但他们既然存在,存在就是合理,那是不是其实demo是能跑通的,只是我缺了哪些步骤呢?把yeelight的论坛以及官网翻了个片后,我注意到官网的“局域网控制”入口,那是否我要给这些灯打开局域网控制才能够被发现呢?于是我被逼按照提示下载了他们的app来打开控制。再运行一遍mac版的demo,果然找到灯泡设备了!github上的项目也能顺利运行了。

允许局域网控制灯

找到设备了

没想到要运行成功一个demo,还需要经历探索、推理、逆转思路的过程,yeelight灯的开发入门真是趣味满满!建议官方出一个文档,让人按着步骤去做吧。这方面aqara的文档就做得好多了。

对比试用几个github库后,我最终选择了jamesblanksby的库来开发,虽然现在已经不再维护了。

实现如下:

先安装库:
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();

以上代码实现的是两个灯轮流变光变暗,即开始的视频效果。

接着我搭配可编程的门窗传感器,总算实现了门开灯开的效果了。这个下午也没白呆了。可惜的是这个是局域网控制,就是要时刻开着服务器来控制,有点不太方便了,如果能提供云控制的办法就好了。

至此总算把功能实现了。在遇到新的技术难题时,我们要尝试从多个角度去分析应对,一条路走不通就换个思路走,在解决的过程中逐渐理解问题所在。另外还要懂得用轮子,弯路会少走很多,效率也会提高很多。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,911评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,014评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 142,129评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,283评论 1 264
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,159评论 4 357
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,161评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,565评论 3 382
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,251评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,531评论 1 292
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,619评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,383评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,255评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,624评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,916评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,199评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,553评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,756评论 2 335

推荐阅读更多精彩内容

  • 没有赶上2020的第一日,没有等待新年的到来,却是24岁的最后一天,来好好沉下心来回顾或者期许。时间一定是不停留的...
    ChenBling阅读 208评论 0 0
  • 偏偏现在一岁一个月。 这两年真真切切体会只有四字:小儿难养。 你能预言的是,唠叨的偏妈又要开始没完没了的感慨了。 ...
    李晓欣阅读 671评论 6 3
  • 我相信有很多人会和我一样说着自己很勇敢,但是当你真正遇到事情时你会真的不慌吗? 他们说当你迷茫的时候就去多读书...
    蜕尽铅华阅读 205评论 0 1
  • 实在是课上太过无聊,打不起一点精神听课,只能翻手机。有点无奈太多年养成的习惯,还是那么喜欢看小说,只不过从之前...
    LeeJS_Z阅读 497评论 0 0