贝壳物联API基于Tasker实现智能LED

作者:DDDear | 更新时间:2017-11-01

嗯,这是一个不错的想法...

想必很多朋友在实现无线控制LED后,便对自家的各种灯进行了改造。因为住公司宿舍,无所谓就把宿舍的灯改了。走到宿舍楼下就提前控制灯开了,一开始感觉爽爽的,但还是需打开APP,点击“开灯”,然后就想到用Tasker实现智能开灯。

Tasker这款安卓神器感觉这辈子折腾不完,还没接触到的小伙伴们赶快百度吧。

可是一开始贝壳是websocket登录的,水平有限苦恼了很长一段时间也没在Tasker上实现websocket,最终不了了之。但如今贝壳有了APIlaughlaugh

“当时间在17:30-23:00且手机连上宿舍WiFi的时候,Post开灯命令”

软件:

1.Tasker  各大商店有下载

2.RESTask--Tasker的一款插件,实现RESTful API。 链接:http://pan.baidu.com/s/1bBulps 密码:z702   (Tasker有特别多的插件,各种实用)

核心(Tasker任务设置):

1.打开Tasker——任务选项卡——新建一个任务,名称比如“开灯”;单击“+”添加操作——插件——RESTask——点击配置后面的“笔”图标,就进入RESTask了,按贝壳API文档https://www.bigiot.net/help/34.html

1.1首先获取access_token,Setting选项卡下设置Request Type为POST,Host设置为 https://www.bigiot.net/oauth/token,然后想左划到Parameters选项卡下,点击Add more分别添加 client_id:"应用ID",client_secret:"应用密码",username:"用户ID",password:"用户apikey",grant_type:"password"   冒号前是Name,冒号后是Value. 然后点击右上角的►,成功后会弹出一串含有token的json数据,然后点击保存,一直返回到Tasker的任务编辑界面,就出现了  1. RESTask   

2.单击“+”添加操作——代码——JavaScript let——在代码选项下面填入以下代码

var user =eval("( "+ rtres +")") ;
var token = user.access_token;
var str1 = "access_token=";
var dataL = "&id=D+你的设备ID&c=你的开灯命令";
var dataH = str1.concat(token);
var data = dataH.concat(dataL);
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === 4) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://www.bigiot.net/oauth/say");
xhr.setRequestHeader("content-type", "application/x-www-form-urlencoded");
xhr.setRequestHeader("cache-control", "no-cache");
xhr.setRequestHeader("postman-token", "9f98d747-7919-c466-2e3c-fd474090d934");

xhr.send(data);

代码是我在postman 自动生成的,有些无关紧要的语句,js我也不会。。。见谅!

然后返回到任务编辑界面,这时候就可以点击左下角的►测试了,看你的LED灯亮没亮laugh

综合运用还是很不稳定!!!手机还是要亮屏,不然连WiFi很不及时,RESTask也要保证后台运行,然而无法保证。。。emmmmmmm,实际应用还需要更多改进,这里就当给大家一个思路吧


评论:共3条

贝壳物联 评论于:2017-11-01 21:16:30
很不错的分享。
DDDear 回复于:2017-11-01 23:05:51
回复 @贝壳物联:哈哈,感谢群主一直的耐心解惑!
ericsma 评论于:2018-03-16 17:40:58
刷个分?
评论支持使用[code][/code]标签添加代码
返回顶部