\r\n\r\n
音声で照明のオン・オフができるのは、スマートホームの醍醐味のひとつです。Amazon EchoやGoogle Homeは持っていないけど、あるいはキーボードショートカットが好きな人は、自動ホットキースクリプトを使って、パソコンからPhilips hueライトをコントロールすることができます。
関連:初心者のための自動ホットキースクリプト活用ガイド
このガイドでは、カスタムオートメーションスクリプトを作成し、キーボードのキーをリマップすることもできる素晴らしい小さなプログラムであるAutoHotkeyを使用することにします。AutoHotkeyに慣れていない方、Windowsマシンにダウンロードする必要がある方は、こちらのビギナーズガイドをご覧ください。
ここでは、照明のグループをオン・オフするための基本的なスクリプトを紹介します(後でカスタマイズ可能です)。その前に、いくつか必要なものがあります。
ブリッジのIPアドレスとAPIのユーザー名が既に分かっている場合は、省略可能です。
ブリッジのIPアドレスは比較的簡単に見つけることができます。このリンクにアクセスし、Philipsアカウントにログインしてください。
ページ上部の「Bridges」をクリックします。
Show more bridge details "ボタンをクリックします。
内部IPアドレスをメモしておいてください、後で必要になります。
次節では、このことをぜひ覚えておいてください。
まだ開発者アカウントをお持ちでない方、またはAPIユーザー名をお忘れの方は、今すぐ取得する必要があります。この部分は少し複雑ですが、いくつかのテキストコマンドに慣れていれば、簡単にできるはずです。まずは、Hueの開発者アカウントを新規に作成するところから始めましょう。
アカウントの確認とパスワードの作成をお願いするメールが届きます。一度、下記のURLにアクセスし、前項で取得したIPアドレスに置き換えてください。
http://<bridge ip address>/debug/clip.htmlここには、Tone Bridgeに手動でコマンドを送信するためのツールがあります。このページに書かれていることがすべて理解できなくても、大丈夫です。このツールを使って、APIユーザー名を取得するだけです。そのためには、URLボックスに「/api/」を入力します。Message Body に {"devicetype": "my#hue#app#iphone peter"} と入力し、iphone peter を好きな記述子に置き換えます(推奨)。は、使用するデバイスを記述したディスクリプタです。
すべての情報を入力したら、Tone Bridgeのリンクボタンをクリックします。これは、照明を制御するためのアプリケーションを、自分自身または自宅の誰かだけが作成できるようにするためのセキュリティ措置です。ブリッジのリンクボタンを押したら、「POST」をクリックします。
コマンドレスポンスボックスに、以下のような結果が表示されるはずです(当然、検閲のぼかしは除かれています)。長いランダムなユーザー名が与えられます。これをコピーして保存してください。スクリプトの後半で必要になります。
この2つの情報を手に入れたら、スクリプトの設定を始めましょう!
先に述べたように、このガイドでは、redditor tarrosionのこのスクリプトを修正したものを使用しています。家中の照明を一括でON/OFFできるように、ショートカットを追加するなどのチューニングを施しています。このスクリプトでは、以下のホットキーが使用できます。
照明のグループは、必要に応じていくつでも作成・変更することができます。この例では、オフィス用とリビング用の2つの照明グループを作成し、各グループに2つずつ照明をつけています。これらの名称は、お好みで変更することができます。また、照明の数によっては、各グループの値を変更する必要があります。
まず、以下のスクリプトをメモ帳にコピーし、Mr.huelights.ahkという名前で保存します。.txtという拡張子を.ahkに置き換えないと、メモ帳が.txtファイルとして保存し、AutoHotkeyが実行できなくなるので、注意してください。
WinHTTP := ComObjCreate("WinHTTP.WinHttpRequest.5.1") lightsOn := 1 office := [1,2] livingroom := [3,4] curgroup := office lightoff(light, ByRef WinHTTP) { WinHTTP.Open("PUT", "http://<your-bridge-IP-address>/api/<your-api-username>/lights/" . light . "/state", 0) bodytext = {"on" : false} WinHTTP.Send(bodytext) return } lighton(light, ByRef WinHTTP) { WinHTTP.Open("PUT", "http://<your-bridge-IP-address>/api/<your-api-username>/lights/" . light . "/state", 0) bodytext = {"on" : true} WinHTTP.Send(bodytext) return } setlightct(light, newct, ByRef WinHTTP) { WinHTTP.Open("PUT", "http://<your-bridge-IP-address>/api/<your-api-username>/lights/" . light . "/state", 0) bodytext = {"ct" : %newct%} WinHTTP.Send(bodytext) } modifylightct(light, amount, ByRef WinHTTP) { WinHTTP.Open("PUT", "http://<your-bridge-IP-address>/api/<your-api-username>/lights/" . light . "/state", 0) bodytext = {"ct_inc" : %amount%, "transitiontime" : 2} WinHTTP.Send(bodytext) } modifylightbrightness(light, amount, ByRef WinHTTP) { WinHTTP.Open("PUT", "http://<your-bridge-IP-address>/api/<your-api-username>/lights/" . light . "/state", 0) bodytext = {"bri_inc" : %amount%, "transitiontime" : 2} WinHTTP.Send(bodytext) } ;ctrl-alt-1: change to group 1 ^!1:: curgroup := office return ;ctrl-alt-2: change to group 2 ^!2:: curgroup := livingroom return ;ctrl-alt-o: turn group lights on ^!o:: for _, light in curgroup lighton(light, WinHTTP) return ;ctrl-alt-i: turn group lights off ^!i:: for _, light in curgroup lightoff(light, WinHTTP) return ;ctrl-alt-l: toggle all lights ^!l:: WinHTTP.Open("PUT", "http://<your-bridge-IP-address>/api/<your-api-username>/groups/0/action", 0) if lightsOn > 0 bodytext = {"on" : false} else bodytext = {"on" : true} WinHTTP.Send(bodytext) lightsOn := 1 - lightsOn return ; ctrl-alt-k : all lights off ^!k:: WinHTTP.Open("PUT", "http://<your-bridge-IP-address>/api/<your-api-username>/groups/0/action", 0) bodytext = {"on" : false} WinHTTP.Send(bodytext) lightsOn := 0 return ;ctrl-alt-Up: increase warmth of current light group ^!Up:: for _, light in curgroup modifylightct(light, 43, WinHTTP) return ;ctrl-alt-Down: decrease warmth of current light group ^!Down:: for _, light in curgroup modifylightct(light, -43, WinHTTP) return ;ctrl-alt-Left: increase brightness of light group ^!Left:: for _, light in curgroup modifylightbrightness(light, -32, WinHTTP) return ;ctrl-alt-Right: decrease brightness of light group ^!Right:: for _, light in curgroup modifylightbrightness(light, 32, WinHTTP) returnあとは、少し調整する必要があります。まず、スクリプト内で、< the bridge ip address>の各インスタンスを、以前ブリッジから取得したipアドレスに変更します。次に、< your api username> をあなたのapiユーザー名に置き換えます。 上記のスクリプトでは、それぞれのスクリプトのインスタンスが7つあるはずです。
次に、上部にコントロールできるグループを定義するセクションが表示されます。このセクションを以下に示します。
office := [1,2] livingroom := [3,4]最初の2行はライトグループを定義しています。各電球には番号が振られていますが、各電球に対応する番号は必ずしも明らかではありません。最も簡単な確認方法は、hueアプリを開き、「設定」をタップし、「ライト設定」をタップすることです。
ここで、すべての照明のリストが表示されます。ひとつひとつ数えて、光の数を調べます。例えば、オフィスの照明は一番上にあるので1と2、その下にリビングの照明があるので3と4となります。設定から照明を削除したり追加したりすると、この数字が少し変わることがあるので、スクリプトをテストして正しい照明を使用しているかどうか試行錯誤してください。
光に対応する数字がわかったら、上の2つの列で変更します。また、必要に応じて各グループの名前を変更することができます。スクリプトの中で、そのグループ名の各インスタンスを変更することを確認してください。3つ目のグループ(またはそれ以上のグループ)を追加するには、最初の2つのグループの下に次の形式で新しい行を作成し、X、Yをそのグループに追加するライトの番号に置き換えます。
roomname := [X, Y]また、3つ目のグループに切り替えるには、別のショートカットを追加する必要があります。上のスクリプトで次のテキストブロックを選択し、このテキストブロックの下にコピーします。2の部分をすべて3に変更し、「リビングルーム」(または2番目のグループに付けた名前)を3番目のグループの名前に変更します。
;ctrl-alt-2: change to group 2 ^!2:: curgroup := livingroom returnAuto Hotkeysに慣れている方は、このスクリプトをさらにアレンジして、新しいショートカットを追加したり、別の方法でライトを制御することができます。ヘルプが必要な場合は、Auto Hotkeysのドキュメントを参照してください。また、スクリプトに統合可能な他のコマンドについては、こちらの philipshueapi を参照してください。