LoginSignup
9
4

More than 5 years have passed since last update.

HUISでHueを操作してみた。

Last updated at Posted at 2017-03-08

sonyで販売されているHUIS(学習リモコン)で、philipsのHueを操作してみました。

動画を後ほど上げる予定です・・・。

使ったもの

HUIS REMOTE CONTROLLER

以降 HUISと略して説明します。

HUIS BLUETOOTH® CRADLE
以降 CRADLEと略して説明します。

Raspberry Pi 3 MODEL B
※Raspberry Pi 2 MODEL Bなどでも、bluetoothドングルを挿せば動くと思います。

Philips Hue(ヒュー) スターターセット
※利用したのはv1ですが、今買うならv2のほうがいいかも。

簡単なシステム

HUISとCRADLEをペアリング後、raspberryPiとCRADLEをペアリングします。
node-redと、node-red Libraryの中にある、node-red-contrib-keypressをインストールし、HUISのキー入力を取得します。
node-redのLibraryである、node-red-contrib-hueplusを利用して、hueを操作します。

やり方

Raspberry Piのセットアップなどは、Qiitaにある別の記事などを参考にしてください。
RaspbianがインストールしてあればOKです。

raspberryPi側

まずは、raspberryPiにnodeをインストールしましょう。
Qiitaにある、Ubuntuに最新のNode.jsを難なくインストールするを参考にしました。

コマンドの詳細はリンク先を見てください。

sudo apt-get install -y nodejs npm
sudo npm cache clean
sudo npm install n -g
sudo n stable
sudo ln -sf /usr/local/bin/node /usr/bin/node
sudo apt-get purge -y nodejs npm

上記コマンドでnodeのインストールが完了しました。

次にnode-redをインストールしましょう。
Node-RED日本ユーザ会を参考にしています。
インストールは簡単で、以下のコマンド1行です。

sudo npm install -g --unsafe-perm node-red

これでインストールが完了しました。
試しに起動してみましょう。

node-red

で起動します。
raspberryPiのブラウザからアクセスする場合には
http://localhost:1880.

同一ネットワーク内の、別の端末からアクセスするには
http://[raspberryPiのipアドレス]:1880

でアクセス可能です。

以下のようなwebページが表示されれば成功です。
Screenshot from 2017-03-08 13-48-18.png

終了するには、[Ctrl]+[C]を押してプログラムを停止させましょう。

次に、node-red-contrib-keypressと、node-red-contrib-hueplusをインストールします。

node-red-contrib-keypressと、node-red-contrib-hueplusをインストールする前に、必ず1度node-redを起動させてください。

cd ~/.node-red/
npm install node-red-contrib-keypress
npm install node-red-contrib-hueplus

上記コマンドでインストール完了です。

node-redを起動してみましょう。

以下のように、keypress,hue set ,hue stateが左側に表示されていればokです。

hueplusの使い方は、Node-REDからPhilips hueを操作する方法を参考にしています。

Screenshot from 2017-03-08 13-49-45.png

node-redで配線

Screenshot from 2017-03-08 14-24-44.png

上の画像のようにnode-redのブロックを設置していきましょう。

まずは、splitの設定をしましょう。
splitをダブルクリックし、

[\n]
と書かれているところを、
["]
に書き換えてください。

次にswitchの設定をしましょう。
switchをダブルクリックし、設定画面を開きます。

Screenshot from 2017-03-08 14-51-45.png

左下にある、追加をクリックし、要素を1つ追加しましょう。
今回は、[a] と [s] キーを押したときにon offが制御できるようにします。

下の画像のように、 [==]
の隣に、[a]と[s]を入力してください。

Screenshot from 2017-03-08 14-52-58.png

Hue setの部分と、その前のTemplateのブロックにいくつか設定が必要なので書いていきましょう。

Hue setをダブルクリックすると、以下の画面が出てきます。
Screenshot from 2017-03-08 14-27-57.png

新規にhueを追加の右隣りにある鉛筆をクリックしましょう。

Screenshot from 2017-03-08 14-29-35.png

Nameは何でもいいです。
Bridgeには、Hue Bridgeのipアドレスを入力してください。
API KEYには、Hue Bridgeのボタンを押したあと、右側の矢印を押すことで自動で入ります。
すべて入力が済んだら、右上の追加ボタンを押しましょう。

以下の画像の画面に戻ったら、
Screenshot from 2017-03-08 14-37-24.png

Lightの右側にある、虫眼鏡をクリックしましょう。
Lightの隣のをクリックすると、リストが出てきます。自分が操作したいhueを選択しましょう。
右上の完了を押して、hueplusブロックの設定は完了です。

次に、Templateの設定をしましょう。
Templateをダブルクリックして、以下の画面を開きます。

Screenshot from 2017-03-08 14-41-30.png

Syntax Highlight: の部分を、JSONにしましょう。

This is the payload: {{payload}} !

と書かれている部分を消し、

{"on":true}

となるようにしましょう。
Screenshot from 2017-03-08 14-44-10.png

画像のようになっていればOKです。

もう片方のTemplateには、

{"on":false}

を設定しましょう。

実行

ここまで設定できたら、右上のデプロイを押してみましょう。HUISのキーボードから設定したキーを押すことで、HueのON OFFができるはずです!

ここで注意です
キーボードの入力を取得する際、node-redを立ち上げた端末(コンソール)が選択状態でないと、入力が検知できないので、注意してください。

私の環境では、raspberryPiとCradleをペアリングし、raspberryPiにhdmiでモニタを繋いで、端末(コンソール)を立ち上げたあと、

node-red

コマンドを叩いて、実行させて放置しています。

Hueの色を変えたいなどの場合は、

{"on":false}

と書いていた部分に要素を追加してあげれば問題ないです。
Hueのweb apiで送っていたjsonと同じものを送ってください。

今回設定したnode-redの設定データを置いておきます。

[
    {
        "id": "d553ba35.3e6078",
        "type": "tab",
        "label": "フロー 1"
    },
    {
        "id": "4bda6413.26d48c",
        "type": "keypress",
        "z": "d553ba35.3e6078",
        "key": "",
        "x": 114,
        "y": 320,
        "wires": [
            [
                "28e10199.d4c59e"
            ]
        ]
    },
    {
        "id": "b9e9abcc.adf088",
        "type": "switch",
        "z": "d553ba35.3e6078",
        "name": "",
        "property": "payload",
        "propertyType": "msg",
        "rules": [
            {
                "t": "eq",
                "v": "a",
                "vt": "str"
            },
            {
                "t": "eq",
                "v": "s",
                "vt": "str"
            }
        ],
        "checkall": "true",
        "outputs": 2,
        "x": 112,
        "y": 454,
        "wires": [
            [
                "ffbd5c2.36d9ca"
            ],
            [
                "d677a402.3ce3b8"
            ]
        ]
    },
    {
        "id": "28e10199.d4c59e",
        "type": "split",
        "z": "d553ba35.3e6078",
        "name": "",
        "splt": "\"",
        "x": 112,
        "y": 389,
        "wires": [
            [
                "b9e9abcc.adf088"
            ]
        ]
    },
    {
        "id": "e54fd19b.d16fe",
        "type": "debug",
        "z": "d553ba35.3e6078",
        "name": "",
        "active": true,
        "console": "false",
        "complete": "false",
        "x": 688,
        "y": 404,
        "wires": []
    },
    {
        "id": "1616f13e.fe181f",
        "type": "hue-set",
        "z": "d553ba35.3e6078",
        "bridge": "",
        "light": "",
        "name": "",
        "x": 500,
        "y": 460,
        "wires": [
            [
                "e54fd19b.d16fe"
            ]
        ]
    },
    {
        "id": "d677a402.3ce3b8",
        "type": "template",
        "z": "d553ba35.3e6078",
        "name": "",
        "field": "payload",
        "fieldType": "msg",
        "format": "json",
        "syntax": "mustache",
        "template": "{\"on\": true}",
        "x": 325,
        "y": 461,
        "wires": [
            [
                "1616f13e.fe181f"
            ]
        ]
    },
    {
        "id": "91373653.554858",
        "type": "hue-set",
        "z": "d553ba35.3e6078",
        "bridge": "",
        "light": "",
        "name": "",
        "x": 497,
        "y": 332,
        "wires": [
            [
                "e54fd19b.d16fe"
            ]
        ]
    },
    {
        "id": "ffbd5c2.36d9ca",
        "type": "template",
        "z": "d553ba35.3e6078",
        "name": "",
        "field": "payload",
        "fieldType": "msg",
        "format": "json",
        "syntax": "mustache",
        "template": "{\"on\":false}",
        "x": 321,
        "y": 332,
        "wires": [
            [
                "91373653.554858"
            ]
        ]
    }
]
9
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
4