飛利浦色調照明系統使您可以通過移動應用程序或您編寫的任何可以連接到Internet的應用程序來控制房屋中的照明。系統的中心是Hue Bridge,這是一種通過Zigbee HA無線電協議與兼容燈通信的以太網連接的設備。飛利浦製作了一系列兼容色調的燈,許多第三方燈可以使用相同的協議使用。 Iconnecthue保留了與色相兼容的燈的全面列表。主要以歐元市場為中心,但仍然非常有用。
每個色調橋是其自己的HTTP Web服務器,可以使用色調REST API控制。有許多編程語言中可用的色調的庫。這裡的教程全部使用p5.js,普通JavaScript或使用Node.js或基於Arduino的MicroController的服務器端的JavaScript。
色相API V2最近發行,最終將取代V1。這些註釋目前是指V1(2021年1月19日),並且仍然有效。色調API V2具有HTTPS,以及V1的一些破壞變化。
為了開始編程色調應用程序,您需要訪問色調橋。您也需要一個色調帳戶。開發人員帳戶是免費的。保持色相開發人員網站鏈接方便。
開發時,適用於Android或iOS的HUE應用程序很有幫助,因為它在您的項目還沒有時起作用。色調Essentials應用程序也是一個非常有用的選擇。
每種色調都有一個調試接口,可在http://$ADDR/debug/clip.html替換為橋樑的IP地址替換$ADDR 。當您開發時,您可以使用它將API命令發送到橋樑以測試內容。
Peter Murray的Node.js的節點含量-API庫是我測試過用於控制色調的各種node.js javascript庫中最好的。
為了控制瀏覽器客戶端的色相,P5.JS做得很好,因為它具有簡單的HTTP請求API。當然,您也可以使用普通的JavaScript。
如果您使用任何Arduino Wifi-nable-abled板連接到您的Hue Bridge,則ArduinohttpClient庫和Arduino_json庫將很有用。 (注意:還有另一個以相同名稱的JSON庫,沒有下劃線。那不是這裡使用的)。
如果您熟悉POSIX(linux/unix)命令行,則命令行工具捲曲有助於測試HTTP請求到您的橋樑。 curl在Windows命令接口中不可用,但是您可以通過Windows 10中的Linux或Cygwin將其獲取,該應用程序是為Windows提供Linux Shell的應用程序。以下是有關使用捲曲來訪問色調橋的一些詳細信息。
除此之外,您還需要了解一些HTML和JavaScript,以及文本編輯器,命令行界面以及瀏覽器來嘗試此站點上的示例。此處顯示的命令行示例全部用於Linux或Unix,但使用Windows 10中的Linux的Windows子系統在Windows 10上工作。
您的應用需要使用唯一的用戶名將您的應用程序識別到您的橋樑。如果您知道橋樑的IP地址,則此示例頁面將簡化這一點。您無法從遠程服務器運行此頁面;下載並從您的文件系統中瀏覽器中打開index.html文件。這是因為色相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}
然後單擊放置。燈應該亮起,橋應該回答:
[
{
"success": {
"/lights/1/state/on": true
}
}
]
有關色調API的更多信息,請參閱《色調入門指南》,《色調API核心概念》和完整的色調API文檔。您需要創建一個免費帳戶並登錄以使用開發人員門戶。
當您將橋式添加到網絡中時,您應該能夠使用HUE應用程序或Hue Essentials應用程序獲取IP地址。但是,在像學校網絡這樣的複雜網絡上,這可能行不通。您的移動設備和色調橋必須在同一本地網絡上才能正常工作。例如,如果您的WiFi網絡與有線以太網網絡(橋樑壽命)不同,則您可能無法獲得地址。但是,如果您可以獲取橋樑的MAC地址,則可以在網絡上搜索它。這就是方法
每個橋都有一個獨特的您可以在橋底部找到MAC地址。在十六進制符號中,這是一個六字節的數字:
00:17:88:0B:14:48
一些橋樑只會顯示最後三個字節。例如,上面的橋樑可能僅顯示0B1448。有了較舊的色調橋,前三個字節將始終為00:17:88 。有了較新的,您可能還會看到EC:B5:FA 。
要在網絡上查找橋樑,請確保您擁有本地網絡的前三位數字,並且可以訪問它,然後打開命令行接口並輸入:
$ ping -c 5 xxx.xxx.xxx.255
其中xxx.xxx.xxx是您網絡的前三個數字。例如,在路由器為172.16.130.1的網絡上,您要輸入172.16.130.255。有時,大型機構將使用兩個不同的子網進行有線與無線網絡,但它們仍將位於同一較大的本地網絡上。
當網絡上的設備響應您的PING請求時,您將獲得響應列表。完成後,輸入:
$ arp -a
您將在計算機可以看到的同一網絡上獲取所有設備的列表。尋找與橋樑的MAC地址匹配的一個,旁邊的IP地址將是您的橋樑的IP地址。 MAC地址的最後三個字節從底部的標籤中。如上所述,前三個可能是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]
在這種情況下,色相的IP地址為192.168.0.3。
您可以使用常規的移動色調應用程序在橋上搜索新燈。您也可以使用以下URL上的帖子請求從調試夾接口進行操作:
/api/$HUE_USER/lights/
填寫$ addr的橋地址和$ hue_user的色相用戶名。您應該得到這樣的答复:
[[ { "success": { "/lights": "Searching for new devices" } }]
90秒後,您可以掃描像這樣添加的新燈:
/api/$HUE_USER/lights/new
在捲髮中:
$ curl -X GET http://$ADDR/api/$HUE_USER/lights/new
這將僅列出在掃描新燈後添加的新燈。
如果您想添加以前連接到其他橋樑的燈,則需要使用其他方法。將燈靠近您要控制的橋(比其他任何燈都更近,理想情況下,小於1米)。關閉連接到橋樑的所有其他燈,或確保它們比您想要的燈更遠。
使用PUT請求發送以下調試夾接口:
/api/$HUE_USER/config/
在您的請求正文中:
{"touchlink": true}
在捲髮中:
$ curl -X PUT -d '{"touchlink": true}' http://$ADDR/api/$HUE_USER/config
燈應眨眼幾次,服務器將通過成功消息做出響應。現在,您可以使用上面描述的查找新燈請求添加燈。
如果TouchLink無法成功重置燈,則可能需要手動重置它。每個製造商都不同,但是一般的模式是打開和關閉三到五次的燈,然後將燈閃爍或略微昏暗,以表明其已重置。例如,使用GE鏈接燈泡,模式是:
對於一些第三方燈泡,例如CREE Connect或INTR燈泡,您可以以2秒的間隔進行操作。如有疑問,請三秒鐘。
如果您有一個色調遙控器,則也可以使用它重置燈。為此,打開燈並將遙控器放置在燈的六英寸之內。按下電源並關閉按鈕(或電源上的電源,場景在更近期的型號上選擇按鈕),並將其固定為直到燈泡閃爍。這將使燈置於其默認的工廠狀態,並準備與新橋配對。
您可以在以下URL上使用刪除請求從調試夾接口從橋樑刪除燈:
/api/$HUE_USER/lights/1
在捲髮中:
$ curl -X DELETE http://$ADDR/api/$HUE_USER/lights/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"}}
要打開燈,您需要知道它是哪個數字。然後,您像這樣更改其狀態:
使用PUT請求從調試夾接口發送以下內容:
/api/$HUE_USER/lights/4/state
在您的請求正文中:
{"on": true}
在捲髮中,那是:
$ curl -X PUT -d '{"on":true}' http://$ADDR/api/$HUE_USER/lights/4/state
要將其關閉,請將請求的主體更改為
{"on": false}
您可以通過這種方式更改光的狀態的任何屬性。例如,從上面獲取所有燈的狀態下的狀態下,請在光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尺寸)。如果您更改色調或飽和度,則燈的菌落變為HS,如果更改色溫,則菌落將變為CT。如果發送XY值,則將菌落更改為XY模式。
不同的燈在其狀態變量中將具有不同的屬性,您可以更改。 P5.js草圖將掃描每個燈在
MKR1000,MKR1010和NANO 33 IoT Arduino型號也可以通過HTTP請求控制色調橋。在此存儲庫中也有一些Arduino Hue示例,並帶有註釋。