(30 gadget day 5) 那棵灯 - HueMyo party

Philips的hue灯泡算是智能灯泡的鼻祖了,这次就来玩玩这个哈。

meethue

meethue.com是hue的门户啦,有各种的使用说明。开发者的入口在哪呢...找了半天发现右边有竖着的developer...

图片描述

好吧,进去以后直奔Get started。大概扫一圈以后发现这个hue的bridge设计的还真不错,直接通过http就能访问到api的测试后台。

图片描述

  • 认证
    只要改url和body就能直接控制灯泡。然后发现都是unauthorized。于是回来看文档,发现需要按一下bridge的button,然后立刻发个下面的请求就能认证上。之后的所有请求就都ok了。以后就可以用/api/newdeveloper/lights/1/state来控制这个id为1的灯泡啦。很标准的JSON RESTful API,设计的不错!
    不过这个不意味着我跑到任何一家有hue的地方,按一下按钮执行一个程序以后就可以躲门口随便玩他家的灯泡了...
POST http:///api
{"devicetype":"test user","username":"newdeveloper"}
  • 修改灯泡状态
    每个灯泡都有一个url作为它的endpoint,可以对它肆意GET POST PUT。比如让它打开就curl一下。色温(sat)亮度(bri)和颜色(hue)控制起来超容易!
url -X PUT -H 'Content-Type: application/json' -d '{"on":false, "sat":255, "bri":255,"hue":10000}' http://192.168.31.xxx/api/newdeveloper/lights/1/state

MYO控制HUE

哈,MYO又出现了!上次只拿了pose的数据,这次我想让灯泡跟着挥手变换颜色,那就要获得当前手臂的角度啦。代码的区别只是多加个回调就好啦。能拿到一个4维的数据。xyzw。

        @Override
        public void onOrientationData(Myo myo, long timestamp, Quaternion rotation) {
            ((TextView) findViewById(R.id.hello)).setText(
                    "Z:" + rotation.z() + " W:" + rotation.w() + " X:" + rotation.x() + " Y:" + rotation.y());

        }

通过观察发现挥手的时候变换的很多的是w轴,而且右手挥动的过程正好是-0.5到0.5的过程。好啦,现在把这个数据随时记录下来,每秒钟发个PUT过去改灯泡的状态。咱就用OkHttp搞好啦,类似这样。

    String updateHue(int bright, int hue) throws IOException {
        OkHttpClient client = new OkHttpClient();
        RequestBody body = RequestBody.create(JSON,
                "{\"on\":true,\"bri\":150}");
        Request request = new Request.Builder()
                .url("http://192.168.31.xxx/api/newdeveloper/lights/1/state")
                .post(body)
                .build();
        Response response = client.newCall(request).execute();
        return response.body().string();
    }

Party!

好啦,就这样!

图片描述

Party呀

你可能感兴趣的:(30gadgetdays,hue,myo)