sonyで販売されているHUIS(学習リモコン)で、philipsのHueを操作してみました。
動画を後ほど上げる予定です・・・。
使ったもの
以降 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
でアクセス可能です。
終了するには、[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を操作する方法を参考にしています。
node-redで配線
上の画像のようにnode-redのブロックを設置していきましょう。
まずは、splitの設定をしましょう。
splitをダブルクリックし、
[\n]
と書かれているところを、
["]
に書き換えてください。
次にswitchの設定をしましょう。
switchをダブルクリックし、設定画面を開きます。
左下にある、追加をクリックし、要素を1つ追加しましょう。
今回は、[a] と [s] キーを押したときにon offが制御できるようにします。
下の画像のように、 [==]
の隣に、[a]と[s]を入力してください。
Hue setの部分と、その前のTemplateのブロックにいくつか設定が必要なので書いていきましょう。
Hue setをダブルクリックすると、以下の画面が出てきます。
新規にhueを追加の右隣りにある鉛筆をクリックしましょう。
Nameは何でもいいです。
Bridgeには、Hue Bridgeのipアドレスを入力してください。
API KEYには、Hue Bridgeのボタンを押したあと、右側の矢印を押すことで自動で入ります。
すべて入力が済んだら、右上の追加ボタンを押しましょう。
Lightの右側にある、虫眼鏡をクリックしましょう。
Lightの隣のをクリックすると、リストが出てきます。自分が操作したいhueを選択しましょう。
右上の完了を押して、hueplusブロックの設定は完了です。
次に、Templateの設定をしましょう。
Templateをダブルクリックして、以下の画面を開きます。
Syntax Highlight: の部分を、JSONにしましょう。
This is the payload: {{payload}} !
と書かれている部分を消し、
{"on":true}
画像のようになっていれば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"
]
]
}
]