飛利浦Hue燈的范圍肯定不便宜(有一些替代品),但是我真正欣賞的一件事是,用于編寫自己的Hue應(yīng)用程序的有據(jù)可查的API。今天,我將向您展示如何通過Arduino控制色相燈,然后添加一個簡單的運動傳感器。
我們?yōu)槭裁匆@樣做?因為家庭自動化系統(tǒng)可能相當僵化且昂貴。通過學(xué)習(xí)如何從Arduino控制色相,您可以打開各種定制的家庭自動化項目的大門,這些項目根本無法被現(xiàn)成的組件所擊敗。如果不是一起亂搞,請嘗試使用這8個出色的Hue應(yīng)用程序。
Hue系統(tǒng)
讓我們稍微了解一下技術(shù),以便您了解基礎(chǔ)系統(tǒng)正在合作。順化燈光使用稱為ZigBee的短程無線協(xié)議來創(chuàng)建amesh網(wǎng)絡(luò)-具體來說,它們已通過ZigBee Light Link認證,這意味著其他ZLL產(chǎn)品也應(yīng)與順化一起使用(理論上)。
盡管在技術(shù)上很短在ZigBee的范圍內(nèi),ZigBee的網(wǎng)狀網(wǎng)絡(luò)功能意味著每個新燈泡都會擴展網(wǎng)絡(luò),并將消息中繼到其他燈泡。這意味著,如果您在控制房子另一側(cè)的照明時遇到麻煩,請嘗試在兩者之間放置另一個照明。
Zigbee是一個很好的協(xié)議,但是與Wi-Fi完全不同或有線計算機網(wǎng)絡(luò),因此我們需要飛利浦色相橋?qū)烧呓Y(jié)合在一起。色相橋運行一個經(jīng)過修改的開放源代碼Linux固件,該固件廣播了基本的Web服務(wù)器。
《圖id =“ attachment_463163” aria- describeby =“ caption-attachment-463163” class =“ wp-caption aligncenter”》

如果您僅將Hue橋接器的IP地址輸入瀏覽器,就會看到此信息。但是,您不能從這里做很多事情。
通過與本地Web服務(wù)器進行交互,您可以找出照明燈的當前狀態(tài)并對其進行控制。/p》
這是一個非常簡單的系統(tǒng),已經(jīng)可以用于DIY項目。
開始
對于飛利浦使這件事變得易于黑客攻擊表示敬意。在訪問API文檔之前,您需要注冊為開發(fā)人員。它是免費的,但您需要接受條款和條件。立即執(zhí)行此操作。
任何熟悉標準Web服務(wù)或Javascript的人都應(yīng)該可以使用Hue:所有數(shù)據(jù)都以JSON數(shù)據(jù)包的形式發(fā)送和接收。
看看這個實際上,您需要知道Hue網(wǎng)橋的IP地址。有幾種方法可以做到這一點:
在路由器的管理界面中查看DHCP地址分配表
運行諸如IP Scanner Home之類的網(wǎng)絡(luò)映射程序
嘗試使用飛利浦UPnP代理工具
Ping“ philips-hue.home”

何時完成后,繼續(xù)并將其輸入到瀏覽器地址欄中,并在URL后面附加 debug/clip.html 。就我而言,這是:
http://192.168.1.216/debug/clip.html
這是一個調(diào)試工具,可讓您通過簡單的網(wǎng)絡(luò)界面發(fā)送和接收JSON數(shù)據(jù)包。第一步是在Hue Bridge本身上啟用開發(fā)人員配置文件-出于安全原因,默認情況下將其禁用。將以下內(nèi)容粘貼到BODY字段中,將URL保留為/api/,然后通過單擊 post按鈕發(fā)送POST請求:
{“devicetype”:“test user”,“username”:“newdeveloper”}
首次執(zhí)行此操作時,您會在響應(yīng)中的某處看到“未按下鏈接按鈕”。這是一項安全功能,要求您使用的每個新應(yīng)用程序都經(jīng)過物理授權(quán)。去找到您的網(wǎng)橋,按一下按鈕,然后在30秒內(nèi)再次發(fā)送相同的請求。這次您將獲得不同的響應(yīng),并且該用戶將得到授權(quán)。如果您想使用其他用戶名,請閱讀有關(guān)創(chuàng)建用戶的API文檔。到目前為止,就足夠了。
設(shè)置用戶后,您應(yīng)該與之互動的基本URL就會變?yōu)?api/newdeveloper/。您可以發(fā)送GETrequest來查找Bridge當前知道的有關(guān)連續(xù)的燈光,警報,場景以及已使用的應(yīng)用程序簡短日志的所有信息。這是單個燈泡包含的一些狀態(tài)信息的示例。
“state”: {
“on”: true,
“bri”: 254,
“hue”: 14910,
“sat”: 144,
“effect”: “none”,
“xy”: [
0.4596,
0.4105
],
“ct”: 369,
“alert”: “none”,
“colormode”: “ct”,
“reachable”: false
},
“type”: “Extended color light”,
“name”: “Bedroom 1”,
“modelid”: “LCT001”,
請注意,“ on”:true 狀態(tài)不會實際告訴您燈泡是否打開;僅根據(jù)網(wǎng)橋設(shè)置,應(yīng)該 處于啟用狀態(tài)。 “ reachable”:false 可以指示燈泡太遠,或者只是在電源開關(guān)處關(guān)閉了燈泡。
將其集成到Arduino中的最后一個示例:確保其中一個燈可見且亮著,并且知道它是哪個數(shù)字。將URL更改為/api/newdevelopers/lights/1/state (將數(shù)字更改為light),然后發(fā)送包含以下數(shù)據(jù)的PUT請求:
{“hue”: 50100,“sat”:255,“bri”:255}
您應(yīng)該看到燈的反應(yīng)如下:
您要做的是將新狀態(tài)推入燈泡。您還可以添加“過渡時間”,這是一種原始的動畫方法,指示您希望狀態(tài)更改花費多少秒。
顏色可以通過多種方式設(shè)置,但不幸的是沒有簡單的方法來發(fā)送RGB值。在上面的示例中,我們發(fā)送了色調(diào),飽和度和 bri ghtness。嘗試更改色相值并再次發(fā)送PUT請求。
從Arduino工作
有一個名為ArduinoHue的現(xiàn)有Hue/Arduino庫,Philips本身在API文檔中已鏈接到該庫。該庫的問題在于它通過USB連接與您的PC通信,這也需要不斷運行Python應(yīng)用程序。 Eugh 。到那時,您還可以讓計算機運行整個過程,然后完全切掉Arduino。
我將向您展示如何使用以太網(wǎng)屏蔽從Arduino 控制色相。 。您的Arduino無需連接到計算機,因此它可以在您可以插入以太網(wǎng)電纜的任何地方獨立運行。實際上,它也可以與Wi-Fi防護罩一起使用,但我沒有一個可以玩的。
如果您想跳過前面,完整的示例代碼嵌入在下面,或在此處提供。我改編自Gilson Oguime發(fā)布的示例。如果您以前從未玩過以太網(wǎng)屏蔽,則可能希望快速瀏覽一下Web客戶端教程-我假設(shè)對此有所了解,并且不會涉及用于建立網(wǎng)絡(luò)的代碼IP等。我們還向您展示了如何使用以太網(wǎng)屏蔽創(chuàng)建一個小型Web服務(wù)器。
創(chuàng)建狀態(tài)更改
創(chuàng)建新狀態(tài)以推送到燈泡創(chuàng)建新的 String 變量并轉(zhuǎn)義所有雙引號的簡單情況。我還在其中添加了 random()函數(shù),以創(chuàng)建具有一定動態(tài)性的動畫。嘗試對不同的顏色也隨機設(shè)置hue變量。
String command = “{”on“:true,”hue“:50100,”sat“:255,”bri“:255,”transitiontime“:”+String(random(15,25))+“}”; 發(fā)送命令
要實際發(fā)送命令,您需要使用一個名為setHue( ),它以燈號和命令字符串作為參數(shù),例如:
setHue(1,command);
然后,它所做的就是將其連接到網(wǎng)橋,將命令作為PUT請求以及創(chuàng)建HTTP請求涉及的所有其他廢話。
client.print(“PUT /api/”);
client.print(hueUsername);
client.print(“/lights/”);
client.print(lightNum);
client.println(“/state HTTP/1.1”);
client.println(“keep-alive”);
client.print(“Host: ”);
client.println(hueHubIP);
client.print(“Content-Length: ”);
client.println(command.length());
client.println(“Content-Type: text/plain;charset=UTF-8”);
client.println(); // blank line before body
client.println(command); // Hue command
添加運動傳感器
最后,我連接了一個簡單的HC -SR501運動傳感器到數(shù)字I/Opin2。檢測到運動時,將一系列狀態(tài)推入2個燈泡的橋以創(chuàng)建緩慢的動態(tài)動畫。當運動傳感器停用時,將向兩個發(fā)送單個關(guān)閉命令。理想情況下,它們會恢復(fù)為在檢測到運動之前所處的狀態(tài),但是邏輯并不是那么聰明-我們只是打開和關(guān)閉它們。
限制
盡管公認的未優(yōu)化代碼,但Arduino的網(wǎng)絡(luò)接口幾乎要花一秒鐘的時間發(fā)送單個命令請求。我在Mac上使用相同的以太網(wǎng)連接測試了相同的命令,它的速度是它的十到二十倍(如果要測試,這里是AppleScript)。因此,Arduino無法實現(xiàn)任何類型的快速動畫(我試圖創(chuàng)建閃爍的燭光效果)。對于大多數(shù)項目而言,這對高速光照動畫而言應(yīng)該不是問題,但要意識到這一限制是件好事。
要完全解析從網(wǎng)橋返回的任何JSON響應(yīng)也很困難; Arduino上沒有足夠的RAM來存儲所有原始數(shù)據(jù)。因此,您可能主要希望限制發(fā)送。
控制色相
現(xiàn)在,您已經(jīng)掌握了如何完全獨立地控制色相的知識,它將打開順化家庭自動化黑客世界。真正的問題是:你會做什么?
責(zé)任編輯:wv
-
飛利浦
+關(guān)注
關(guān)注
8文章
560瀏覽量
59443 -
Arduino
+關(guān)注
關(guān)注
190文章
6526瀏覽量
196950
發(fā)布評論請先 登錄
探索用于Arduino的TLE94112ES直流電機控制盾牌
LED觸摸控制PCBA方案開發(fā) | 燈控觸摸方案開發(fā)
飛利浦D8714收錄機說明書
如何在 NuMaker-IoT-M467 板上使用 Arduino IDE 控制 Wi-Fi 模塊?
1個APP控制千盞燈?拆解睿澤物聯(lián)單燈控制器的智能奧秘
汽車氛圍燈 PCBA 方案開發(fā):從技術(shù)底層解析車載光效的核心邏輯
Arduino與LabVIEW聯(lián)合編程指南
《ESP32S3 Arduino開發(fā)指南》第二章 Arduino基礎(chǔ)知識
物聯(lián)網(wǎng)單燈控制器產(chǎn)品簡介
如何從Arduino控制飛利浦Hue燈
評論