HUISとAndroidを連携し、Hueを操作

自宅で眠っているAndroidスマホがたくさんあるので、HUISでHueを、Androidを通して操作してみました。


Androidにアプリをインストールし、サーバーとして利用します。


[HUIS Key Converter.apk](https://1drv.ms/u/s!Ao_XybtXsfEPiV9Xogai7-8QTV5E)で配布しています。

# 使ったもの
[HUIS REMOTE CONTROLLER](http://huis.jp/remote-controller/)


[HUIS BLUETOOTH® CRADLE](http://huis.jp/remote-controller/cradle/)

[Philips Hue(ヒュー) スターターセット](https://www.amazon.co.jp/dp/B01C6S7DDU/ref=cm_sw_r_tw_dp_x_Nq4VybMQH1KND)
※利用したのはv1ですが、今買うならv2のほうがいいかも。

Android端末
Android 4.1以上であれば動くと思います。たぶん。

[kedecotアプリ](https://play.google.com/store/apps/details?id=com.sonycsl.Kadecot)


#使い方
利用するAndroidとHueは同一ネットワークに接続しておいてください。

このアプリを利用するためには、kadecotが必要です。
googlePlayから[kedecot](https://play.google.com/store/apps/details?id=com.sonycsl.Kadecot)をインストールしてください。

インストール後、kadecotを起動します。
<img src=https://qiita-image-store.s3.amazonaws.com/0/43598/c9a98e93-9336-c186-aed1-3b145adb7063.png width=400px>


このような画面が出てくると思うので、下までスクロールし、同意ボタンを押しましょう。

チュートリアルも出てきますが、そのまま閉じてしまって構いません。

ユーザー設定画面が以下のように出てくるので設定しましょう。
<img src=https://qiita-image-store.s3.amazonaws.com/0/43598/dd0d90a2-7c64-6933-60f0-e3e26dd44f15.png width=400px>

今回は
ユーザー名:test
パスワード:test
で設定しました。

パスワードは忘れないようにしてください。

設定が完了すると、一番下にSERVER OFFと書いてある、ボタンがあると思います。
ボタンをタップし、SERVER ONになればOKです。
<img src=https://qiita-image-store.s3.amazonaws.com/0/43598/452d474f-b08e-5dfa-0605-1f888019014d.png width=400px>




**ここで、操作したいHueの番号を覚えておいてください。デバイス一覧の画像の右下にあります。後ほど使います。**
この画像の場合、Hue Lampを操作したい場合は3を覚えておいてください。

上記画像のように、設定したいHueやBridgeが出てくればkadecot側の設定は完了です。




##HUIS Key Converterの設定
まずはbluetooth設定を開き、CradleとAndroidをペアリングしてください。


HUIS Key Converterを起動すると、ブラウザを開こうとします。
ここではchromeなどのブラウザを指定してください。

ブラウザが開くと以下の画面が出てくると思います。
<img src=https://qiita-image-store.s3.amazonaws.com/0/43598/64bee23f-349f-ce10-1a0d-e3bc16d464f3.png width=400px>



一番下までスクロールし、先程設定したkadecotのパスワードを入力して送信を押します。

入力すると以下の画面が立ち上がるはずです。
<img src=https://qiita-image-store.s3.amazonaws.com/0/43598/60322ef2-38e9-9d57-81cb-0bde7abe70d2.png width=400px>



この画面で、HUISのキー入力を取り、操作を行うことができます。


それでは早速操作を登録しましょう。

KEYを追加をタップしてください。

以下の画面が出てきたら、[HUISのKEYを入力]を押してください。
<img src=https://qiita-image-store.s3.amazonaws.com/0/43598/e199acb1-0025-0332-0286-2ebb639b3ac7.png width=400px>



以下の画面が表示されたら、HUISで操作したいKEYを入力し、戻るをタップしてください。
<img src=https://qiita-image-store.s3.amazonaws.com/0/43598/22a92648-a81a-8a69-e5ee-9d308e954d01.png width=400px>



戻ってきたら、設定項目を設定していきましょう。

ON OFFはそのままで、Hueの電源を入れたいか、消したいか。

lightIDでは、操作したいHueの番号を入力します。kadecotの設定で覚えていてもらったものです。

色ボタンを押すと、色を選択する画面が出てきます。光らせたい色を選択してください。

明るさをバーで指定してください。右に行くほど明るくなります。



**OFFの設定をする際は、lightIDだけ入力すればOKです。**
すべての要素を設定したら、登録ボタンを押しましょう。

以下の画面に戻ってきたら、HUISのキーを入力してみましょう。
<img src=https://qiita-image-store.s3.amazonaws.com/0/43598/440ec8bb-1f89-b05f-39d0-e5709dcf218e.png width=400px>



設定した色に光るはずです！

どのkeyに何が設定されているかは現状確認できないので、忘れてしまった場合は新しく設定してください。
上書きされます。


#技術的な説明
今回はHUIS Key ConverterでHUISのキー入力を取得し、それをkadecotに送ることで、Hueを操作しています。
HUISはCradleとペアリングすることでキーボードとして認識するので、非常に簡単にペアリングすることができました。

kadecotを使用した理由としては、プラグインで拡張できる作りになっていたため、機能を追加したい場合も拡張して使えるのでは？と思い、利用してみました。

```java
@Override
    public boolean dispatchKeyEvent(KeyEvent e) {
           return super.dispatchKeyEvent(e);
    }
```
を利用することで、キーの値が取得できるので、その値を使って分岐などを行っています。

kadecotとの通信部分は、WAMPを使用しています。
kadecotに関しては以下のURLなどを参考にしました。
https://kadecot.net/
https://github.com/SonyCSL/KadecotOAuthAndroidSample

カラーピッカーは以下のURLのものを少しだけ改良しています。
http://y-anz-m.blogspot.jp/2010/05/androidcolorpickerdialog.html


##諸注意
テストが完全ではないため、エラーが出た場合などは報告していただけると嬉しいです。
設定したkeyを押しても操作できない場合は、kadecotが動いているか確認してください。

常に入力を受け付けるには、Androidの設定で、ロックをしない設定を行い、HUIS Key Converterを開いたままにしておいてください。