Philips Hue Lighting Systemを使用すると、モバイルアプリや、インターネットに接続できるアプリケーションから自宅の照明を制御できます。システムの中心は、Zigbee HAラジオプロトコルを介して互換性のあるランプと通信するイーサネット接続デバイスであるHue Bridgeです。フィリップスは、さまざまな色合いに互いに互換性のあるランプを作成し、多くのサードパーティランプが同じプロトコルで動作します。 Iconnecthueは、色相に互いに互換性のあるランプの徹底的なリストを維持しています。ほとんどがユーロ市場中心ですが、それでも非常に便利です。
各Hue Bridgeは独自のHTTP Webサーバーであり、Hue Rest APIを使用して制御できます。多くのプログラミング言語で利用可能な色相を制御するライブラリがあります。ここのチュートリアルはすべて、P5.JS、プレーンJavaScript、またはnode.jsを使用してサーバー側を使用してクライアント側のJavaScriptにあります。
Hue API V2が最近リリースされ、最終的にV1に取って代わります。これらのメモは現在、V1(2021年1月19日)を参照しており、それでも機能しています。 Hue API V2には、httpsとV1からのいくつかの壊れた変更があります。
Hueアプリのプログラミングを開始するには、Hue Bridgeにアクセスする必要があります。あなたも色相アカウントが必要です。開発者アカウントは無料です。 Hue Developersサイトリンクを便利に保ちます。
AndroidまたはiOS用のHueアプリは、プロジェクトがまだないときに機能するため、開発時に役立ちます。 Hue Essentialsアプリは、非常に役立つ代替品でもあります。
すべてのHueには$ADDR
http://$ADDR/debug/clip.html
で入手できるデバッグインターフェイスがあります。開発中は、これを使用してAPIコマンドをブリッジに送信して、物事をテストすることができます。
node.js用のPeter MurrayのNode-Hue-APIライブラリは、色相を制御するためにテストしたさまざまなnode.js JavaScriptライブラリの中で最高です。
ブラウザのクライアントから色相を制御するために、P5.JSは簡単なHTTPリクエストAPIがあるため、良い仕事をします。もちろん、Plane JavaScriptも使用できます。
ArduinohttpclientライブラリとArduino_jsonライブラリは、Hue Bridgeに接続するためにArduino wifi対応ボードを使用している場合に役立ちます。 (注:同じ名前のアンダースコアのない別のJSONライブラリがあります。それはここで使用されていません)。
コマンドラインツールCurlは、POSIX(Linux/Unix)コマンドラインに精通している場合は、HTTPリクエストをブリッジにテストするのに役立ちます。 CurlはWindowsコマンドインターフェイスでは使用できませんが、Windows 10のLinux用のWindowsサブシステムまたはWindows用のLinuxシェルを提供するアプリケーションを介して取得できます。 Curlを使用して色相ブリッジにアクセスすることの詳細を以下に示します。
これら以外に、いくつかのHTMLとJavaScript、テキストエディター、コマンドラインインターフェイス、およびこのサイトの例を試すためのブラウザを知る必要があります。ここに示すコマンドラインの例はすべてLinuxまたはUnix用ですが、Windows 10のLinuxのWindowsサブシステムを使用してWindows 10で動作します。
一意のユーザー名を使用して、アプリをブリッジに識別する必要があります。この例は、ブリッジのIPアドレスがわかっている場合、それを簡素化します。このページをリモートサーバーから実行することはできません。それをダウンロードして、ファイルシステムからブラウザでindex.html
ファイルを開きます。これは、Hue APIバージョン1がHTTPではなくHTTPを使用しているためです。
また、Hue開発者サイトの入門手順をフォローすることもできます。
あなたがそれを正しく行うとき、あなたは次のような応答を得る必要があります:
[
{
"success": {
"username": "newusername"
}
}
]
これで、橋のコードを書く準備ができました。プログラミング中の環境に関係なく、ここで確立したユーザー名を使用します。
デバッグクリップインターフェイスは、ブリッジで機能をテストするために使用できるページです。そのアドレスは次のとおりです。
http://your.bridge.ip.address/debug/clip.html
APIコマンドをブリッジに送信するために使用できます。一般的なクエリ文字列は次のとおりです。
/api/$HUE_USER/command
一般に、デバイスの状態をクエリすることはGETコマンドを使用して実行され、それらを変更するとPutを使用します。たとえば、すべてのライトの状態を照会するには、URLフィールドに以下を入力してください。
/api/$HUE_USER/lights
[取得]をクリックします。構成を照会するには、次のように入力します。
/api/$HUE_USER/config
[取得]をクリックします。ライト1をオンにするには、URLフィールドに次のように入力します。
/api/$HUE_USER/lights/1/state
メッセージボディフィールドに以下を入力してください。
{"on":true}
[put]をクリックします。ライトが点灯するはずで、橋は次のように返信する必要があります。
[
{
"success": {
"/lights/1/state/on": true
}
}
]
Hue APIの詳細については、Hue Getting Guide、Hue APIコアの概念、およびHue APIの完全なドキュメントを参照してください。無料のアカウントを作成して、開発者ポータルを使用するためにログインする必要があります。
ネットワークにブリッジを追加すると、HueアプリまたはHue Essentialsアプリを使用してIPアドレスを取得できるはずです。しかし、学校ネットワークのような複雑なネットワークでは、それは機能しないかもしれません。これが機能するためには、モバイルデバイスと色相ブリッジが同じローカルネットワーク上にある必要があります。たとえば、WiFiネットワークが有線イーサネットネットワーク(ブリッジが生きている場所)と同じローカルネットでない場合、アドレスを取得できない場合があります。ただし、ブリッジのMACアドレスを取得できれば、ネットワークで検索できます。これが方法です
すべての橋にはユニークなものがあり、橋の底にMACアドレスを見つけることができます。 SOのように、16進表の6バイトの数です:
00:17:88:0B:14:48
一部のブリッジは、最後の3バイトのみを表示します。たとえば、上の橋には0B1448のみが表示される場合があります。古い色相ブリッジを使用すると、最初の3バイトは常に00:17:88
になります。新しいものを使用すると、代わりにEC:B5:FA
も表示される場合があります。
ネットワーク上のブリッジを探すには、ローカルネットワークの最初の3桁を持っていること、そしてそれにアクセスできることを確認してから、コマンドラインインターフェイスを開いて入力してください。
$ ping -c 5 xxx.xxx.xxx.255
ここで、 xxx.xxx.xxx
ネットワークの最初の3つの番号です。たとえば、ルーターが172.16.130.1であるネットワークでは、172.16.130.255を入力します。大規模な機関は、有線ネットワークとワイヤレスネットワークに2つの異なるサブネットを使用する場合がありますが、それらはまだ同じローカルネットワークにあります。
ネットワーク上のデバイスがPingリクエストに応答するため、応答のリストが表示されます。それが完了したら、タイプ:
$ arp -a
コンピューターが表示できるのと同じネットワーク上のすべてのデバイスのリストを取得できます。ブリッジのMACアドレスに一致するものを探してください。その隣のIPアドレスは、ブリッジのIPアドレスになります。下部のラベルからのMACアドレスの最後の3バイト。上記のように、最初の3つは00:17:88またはEC:B5:FAのいずれかです。典型的な例は次のとおりです。
$ arp -a
? (192.168.0.1) at ac:b7:16:61:e3:77 on en0 ifscope [ethernet]
? (192.168.0.3) at 00:17:88:0B:14:48 on en0 ifscope [ethernet]
? (192.168.0.255) at ff:ff:ff:ff:ff:ff on en0 ifscope [ethernet]
この場合、HueのIPアドレスは192.168.0.3です。
通常のモバイルHueアプリを使用して、ブリッジで新しいランプを検索できます。また、次のURLのPOSTリクエストを使用して、デバッグクリップインターフェイスからそれを行うこともできます。
/api/$HUE_USER/lights/
$ addrの橋のアドレスと$ hue_userのHueユーザー名を入力します。このような返信を取得する必要があります:
[[ { "success": { "/lights": "Searching for new devices" } }]
90秒後、そのように追加された新しいランプをスキャンできます。
/api/$HUE_USER/lights/new
カールで:
$ curl -X GET http://$ADDR/api/$HUE_USER/lights/new
これにより、新しいランプのスキャン後に追加された新しいランプのみがリストされます。
以前に別のブリッジに接続されていたランプを追加しようとしている場合は、別のアプローチを使用する必要があります。ランプを制御したい橋の近くに置きます(他のどのランプよりも近く、理想的には1メートル未満)。橋に接続されている他のすべてのランプをオフにするか、それらがあなたが望むものよりもずっと離れていることを確認してください。
プットリクエストを使用して、次のデバッグクリップインターフェイスを送信します。
/api/$HUE_USER/config/
あなたのリクエストの本文で:
{"touchlink": true}
カールでそれは次のとおりです。
$ curl -X PUT -d '{"touchlink": true}' http://$ADDR/api/$HUE_USER/config
ランプは数回点滅するはずで、サーバーは成功メッセージで応答します。これで、上記の検索新しいランプリクエストを使用してランプを追加できます。
TouchLinkがランプのリセットに成功しない場合は、手動でリセットする必要がある場合があります。メーカーごとに異なりますが、一般的なパターンは、ランプを3〜5回オンとオフにし、その後、リセットされていることを示すために少し点滅または薄暗くなることです。たとえば、GEリンク電球を使用すると、パターンは次のとおりです。
Cree ConnectやINNR電球など、一部のサードパーティの電球の場合、2秒間隔で行うことができます。疑わしい場合は、3秒で行きます。
Hueリモートコントロールのいずれかがある場合は、ランプも使用してリセットできます。これを行うには、ランプをオンにして、リモコンをランプの6インチ以内に配置します。電源をオンにして、ボタンをオフにする(または電源オンとシーンの最新モデルでボタンを選択します)、電球が点滅するまで保持します。これにより、ランプはデフォルトの工場状態になり、新しい橋とペアリングする準備が整います。
次のURLの削除要求を使用して、デバッグクリップインターフェイスからブリッジからランプを削除できます。
/api/$HUE_USER/lights/1
カールで:
$ curl -X DELETE http://$ADDR/api/$HUE_USER/lights/1
1を削除する光の数を1に置き換えます。
接続されたすべてのライトのステータスを取得するには、GETリクエストを使用してデバッグクリップインターフェイスから以下を送信します。
/api/$HUE_USER/lights/
カールでは、それは次のとおりです。
$ curl http://$ADDR/api/$HUE_USER/lights/
これにより、利用可能なライトのリストが返されます。
{"1":{"state":{"on":true,"bri":254,"hue":14314,"sat":172,"effect":"none","xy":[0.4791,0.4139],"ct":405,"alert":"none","colormode":"ct","reachable":true},"type":"Extended color light","name":"Hue color light 1","modelid":"LCT001","manufacturername":"Philips","uniqueid":"00:17:88:01:00:ff:9a:28-0b","swversion":"5.127.1.26581"}}
ライトをオンにするには、それがどの数であるかを知る必要があります。その後、あなたはそのように状態を変えます:
プットリクエストを使用して、デバッグクリップインターフェイスから以下を送信します。
/api/$HUE_USER/lights/4/state
あなたのリクエストの本文で:
{"on": true}
カールでは、それは次のとおりです。
$ curl -X PUT -d '{"on":true}' http://$ADDR/api/$HUE_USER/lights/4/state
それをオフにするには、リクエストの本体をに変更します
{"on": false}
この方法で、ライトの状態のプロパティを変更できます。たとえば、上記のすべてのライトセクションの状態を取得することから、Light 1をご覧ください。
{"1":{"state":{"on":true,"bri":254,"hue":14314,"sat":172,"effect":"none","xy":[0.4791,0.4139],"ct":405,"alert":"none","colormode":"ct","reachable":true},
reachable
プロパティが真である限り、橋がランプに到達しようとして応答を得ようとしたことを意味する限り、他のプロパティを変更できます。これはカラーランプであり、HS(色相、飽和の場合)、CT(色の温度)、およびXY(CIE1931カラー空間のXおよびYディメンション用)の3つのモードがあります。色相または彩度のいずれかを変更すると、ランプのコロモードがHSに変化し、色温度を変更すると、コロモードがCTに変わります。 XY値を送信すると、ColormodeがXYモードに変更されます。
ライトが異なると、状態変数に異なるプロパティがあり、変更できます。 P5.JSスケッチは、各ランプのすべてのプロパティをスキャンします
MKR1000、MKR1010、およびNANO 33 IoT Arduinoモデルも、HTTPリクエストを介して色相ブリッジを制御できます。このリポジトリにも、メモが掲載されたArduino Hueの例がいくつかあります。