ระบบแสงไฟของ Philips Hue ช่วยให้คุณสามารถควบคุมแสงสว่างในบ้านของคุณจากแอพมือถือหรือจากแอปพลิเคชันใด ๆ ที่คุณเขียนด้วยตัวเองที่สามารถเชื่อมต่ออินเทอร์เน็ตได้ ศูนย์กลางของระบบคือ Hue Bridge ซึ่งเป็นอุปกรณ์ที่เชื่อมต่อกับอีเธอร์เน็ตซึ่งสื่อสารกับหลอดไฟที่เข้ากันได้ผ่านโปรโตคอลวิทยุ Zigbee HA ฟิลิปส์สร้างโคมไฟที่เข้ากันได้กับสีสันและโคมไฟของบุคคลที่สามจำนวนมากทำงานร่วมกับโปรโตคอลเดียวกัน Iconnecthue เก็บรักษารายการโคมไฟที่เข้ากันได้อย่างละเอียด ส่วนใหญ่เป็นตลาดยูโรเป็นศูนย์กลาง แต่ก็ยังมีประโยชน์มาก
แต่ละสะพาน Hue เป็นเว็บเซิร์ฟเวอร์ HTTP ของตัวเองและสามารถควบคุมได้โดยใช้ Hue REST API มีห้องสมุดเพื่อควบคุมสีที่มีอยู่ในภาษาการเขียนโปรแกรมหลายภาษา บทช่วยสอนที่นี่ทั้งหมดอยู่ใน JavaScript ฝั่งไคลเอ็นต์โดยใช้ P5.JS, JavaScript ธรรมดาหรือฝั่งเซิร์ฟเวอร์โดยใช้ Node.js หรือ Microntroller สำหรับ Arduino
Hue API V2 เพิ่งเปิดตัวและในที่สุดจะแทนที่ V1 หมายเหตุเหล่านี้อ้างถึง V1 (19 ม.ค. 2021) และยังคงทำงานอยู่ Hue API V2 มีคุณสมบัติ HTTPS รวมถึงการเปลี่ยนแปลงบางอย่างจาก V1
ในการเริ่มต้นการเขียนโปรแกรมแอพ Hue คุณจะต้องเข้าถึงสะพาน Hue คุณจะต้องการบัญชี Hue ด้วย บัญชีนักพัฒนาฟรี ทำให้เว็บไซต์ของนักพัฒนาเช็นลิงค์มีประโยชน์
แอป Hue สำหรับ Android หรือ iOS นั้นมีประโยชน์เมื่อพัฒนาเพราะมันใช้งานได้เมื่อโครงการของคุณยังไม่ได้ แอพ Hue Essentials เป็นทางเลือกที่มีประโยชน์เช่นกัน
ทุกสีมีอินเทอร์เฟซดีบั๊กที่มีอยู่ที่ http://$ADDR/debug/clip.html
แทนที่ $ADDR
ด้วยที่อยู่ IP ของสะพานของคุณ เมื่อคุณกำลังพัฒนาคุณสามารถใช้สิ่งนี้เพื่อส่งคำสั่ง API ไปยังสะพานเพื่อทดสอบสิ่งต่าง ๆ
ไลบรารี Node-Hue-API ของ Peter Murray สำหรับ Node.js เป็นไลบรารี JavaScript ที่ดีที่สุดของ Node.js ที่ฉันได้ทดสอบเพื่อควบคุมสี
สำหรับการควบคุมสีจากไคลเอนต์เบราว์เซอร์ P5.JS ทำงานได้ดีเนื่องจากมี API คำขอ HTTP อย่างง่าย คุณสามารถใช้จาวาสคริปต์ธรรมดาได้เช่นกัน
ห้องสมุด ArduinohttpClient และไลบรารี Arduino_Json มีประโยชน์หากคุณใช้บอร์ดที่เปิดใช้งาน Arduino Wifi ใด ๆ เพื่อเชื่อมต่อกับสะพาน Hue ของคุณ (หมายเหตุ: มีห้องสมุด JSON อีกชื่อหนึ่งที่ไม่มีชื่อเดียวกันโดยไม่มีขีดล่างนั่นไม่ใช่ห้องที่ใช้ที่นี่)
เครื่องมือบรรทัดคำสั่ง Curl มีประโยชน์ในการทดสอบคำขอ HTTP ไปยังสะพานของคุณหากคุณคุ้นเคยกับบรรทัดคำสั่ง POSIX (Linux/UNIX) Curl ไม่สามารถใช้งานได้ในอินเทอร์เฟซคำสั่ง Windows แต่คุณสามารถรับผ่านระบบย่อย Windows สำหรับ Linux ใน Windows 10 หรือผ่าน Cygwin ซึ่งเป็นแอปพลิเคชันที่ให้เชลล์ Linux สำหรับ Windows นี่คือรายละเอียดบางอย่างเกี่ยวกับการใช้ Curl เพื่อเข้าถึงสะพาน Hue
นอกเหนือจากนี้คุณจะต้องรู้ HTML และ JavaScript และตัวแก้ไขข้อความอินเทอร์เฟซบรรทัดคำสั่งและเบราว์เซอร์เพื่อลองตัวอย่างในเว็บไซต์นี้ ตัวอย่างบรรทัดคำสั่งที่แสดงที่นี่มีไว้สำหรับ Linux หรือ UNIX แต่จะทำงานบน Windows 10 โดยใช้ระบบย่อย Windows สำหรับ Linux ใน Windows 10
แอพของคุณจะต้องระบุไว้ในสะพานของคุณโดยใช้ชื่อผู้ใช้ที่ไม่ซ้ำกัน หน้าตัวอย่างนี้จะทำให้ง่ายขึ้นหากคุณรู้จักที่อยู่ IP ของสะพานของคุณ คุณไม่สามารถเรียกใช้หน้านี้จากเซิร์ฟเวอร์ระยะไกลได้ ดาวน์โหลดและเปิดไฟล์ index.html
ในเบราว์เซอร์จากระบบไฟล์ของคุณ นี่เป็นเพราะ Hue API เวอร์ชัน 1 ใช้ HTTP ไม่ใช่ HTTPS
นอกจากนี้คุณยังสามารถทำตามคำแนะนำในการเริ่มต้นของไซต์นักพัฒนาของ Hue
เมื่อคุณทำถูกต้องคุณควรได้รับการตอบกลับเช่นนี้:
[
{
"success": {
"username": "newusername"
}
}
]
ตอนนี้คุณพร้อมที่จะเขียนรหัสสำหรับสะพานของคุณ ไม่ว่าคุณจะเขียนโปรแกรมสภาพแวดล้อมใดคุณจะใช้ชื่อผู้ใช้ที่คุณสร้างขึ้นที่นี่
อินเทอร์เฟซ Debug Clip เป็นหน้าเว็บที่คุณสามารถใช้เพื่อทดสอบฟังก์ชั่นบนสะพานของคุณ ที่อยู่คือ:
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
และป้อนข้อมูลต่อไปนี้ในฟิลด์ Body Message:
{"on":true}
และคลิกใส่ แสงควรจะมาและสะพานควรตอบกลับ:
[
{
"success": {
"/lights/1/state/on": true
}
}
]
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ Hue API ดูที่คู่มือการเริ่มต้นใช้งาน Hue แนวคิดหลักของ Hue API และเอกสาร Hue API เต็มรูปแบบ คุณจะต้องสร้างบัญชีฟรีและเข้าสู่ระบบเพื่อใช้พอร์ทัลนักพัฒนา
เมื่อคุณเพิ่มบริดจ์ลงในเครือข่ายของคุณคุณควรใช้แอพ Hue หรือแอพ Hue Essentials เพื่อรับที่อยู่ IP แต่ในเครือข่ายที่ซับซ้อนเช่นเครือข่ายโรงเรียนซึ่งอาจไม่ได้ผล อุปกรณ์มือถือของคุณและสะพาน Hue ของคุณจะต้องอยู่ในเครือข่ายท้องถิ่นเดียวกันเพื่อให้การทำงานนี้ใช้งานได้ ตัวอย่างเช่นหากเครือข่าย wifi ของคุณไม่ได้เป็นเน็ตท้องถิ่นเดียวกับเครือข่ายอีเธอร์เน็ตแบบมีสายของคุณ (ที่สะพานมีชีวิตอยู่) คุณอาจไม่สามารถรับที่อยู่ได้ แต่ถ้าคุณสามารถรับที่อยู่ MAC ของสะพานได้คุณสามารถค้นหาได้ในเครือข่ายของคุณ นี่คือวิธีการ
ทุกสะพานมีที่ไม่ซ้ำกันคุณสามารถค้นหาที่อยู่ MAC ที่ด้านล่างของสะพาน มันเป็นหมายเลขหกไบต์ในสัญกรณ์เลขฐานสิบหกเช่น So:
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 ของ Hue คือ 192.168.0.3
คุณสามารถค้นหาโคมไฟใหม่บนสะพานโดยใช้แอพมือถือ Hue ปกติ คุณสามารถทำได้จากอินเทอร์เฟซคลิปดีบั๊กโดยใช้คำขอโพสต์บน URL ต่อไปนี้:
/api/$HUE_USER/lights/
กรอกที่อยู่สะพานของคุณสำหรับ $ addr และชื่อผู้ใช้ Hue ของคุณสำหรับ $ hue_user คุณควรได้รับคำตอบเช่นนี้:
[[ { "success": { "/lights": "Searching for new devices" } }]
หลังจาก 90 วินาทีคุณสามารถสแกนหลอดไฟใหม่ที่เพิ่มเข้ามาได้เช่น:
/api/$HUE_USER/lights/new
ใน Curl:
$ curl -X GET http://$ADDR/api/$HUE_USER/lights/new
สิ่งนี้จะแสดงเฉพาะหลอดไฟใหม่ที่เพิ่มหลังจากการสแกนสำหรับหลอดใหม่
หากคุณกำลังพยายามเพิ่มหลอดไฟที่เชื่อมต่อกับสะพานอื่นก่อนหน้านี้คุณจะต้องใช้วิธีการอื่น วางหลอดไฟไว้ใกล้กับสะพานที่คุณต้องการควบคุม (ใกล้กว่าหลอดไฟอื่น ๆ น้อยกว่า 1 เมตร) ปิดหลอดไฟอื่น ๆ ทั้งหมดที่เชื่อมต่อกับสะพานหรือตรวจสอบให้แน่ใจว่ามันไกลออกไปมากกว่าที่คุณต้องการ
ส่งอินเทอร์เฟซคลิปดีบั๊กต่อไปนี้โดยใช้คำขอใส่:
/api/$HUE_USER/config/
ในร่างกายของคำขอของคุณใส่:
{"touchlink": true}
ใน curl นั่นคือ:
$ curl -X PUT -d '{"touchlink": true}' http://$ADDR/api/$HUE_USER/config
หลอดไฟควรกะพริบสองสามครั้งและเซิร์ฟเวอร์จะตอบกลับด้วยข้อความความสำเร็จ ตอนนี้คุณสามารถเพิ่มหลอดไฟโดยใช้คำขอ LAMPS ใหม่ที่อธิบายไว้ข้างต้น
หาก TouchLink ไม่ประสบความสำเร็จในการรีเซ็ตโคมไฟคุณอาจต้องรีเซ็ตด้วยตนเอง มันแตกต่างกันสำหรับผู้ผลิตแต่ละราย แต่รูปแบบทั่วไปคือการเปิดและปิดหลอดไฟสามถึงห้าครั้งหลังจากนั้นมันจะกระพริบหรือสลัวเล็กน้อยเพื่อระบุว่ามันถูกรีเซ็ต ตัวอย่างเช่นด้วยหลอดลิงค์ GE รูปแบบคือ:
สำหรับหลอดไฟของบุคคลที่สามเช่น Cree Connect หรือ Innr Bulbs คุณสามารถทำได้ด้วยช่วงเวลา 2 วินาที แม้ว่าจะมีข้อสงสัยให้ไปสามวินาที
หากคุณมีหนึ่งในรีโมทคอนโทรลสีคุณสามารถรีเซ็ตหลอดโดยใช้มันได้เช่นกัน ในการทำเช่นนี้ให้เปิดหลอดไฟและวางรีโมทคอนโทรลภายในหกนิ้วของหลอดไฟ กดปุ่มเปิดเครื่องและปิดไฟ (หรือปุ่มเปิดและปุ่มเลือกฉากในรุ่นล่าสุด) อย่างจำลองและถือไว้จนกว่าหลอดไฟจะกะพริบ สิ่งนี้จะทำให้หลอดไฟอยู่ในสถานะเริ่มต้นของโรงงานพร้อมที่จะจับคู่กับสะพานใหม่
คุณสามารถลบหลอดไฟจากสะพานจากอินเทอร์เฟซคลิปดีบั๊กโดยใช้คำขอลบบน URL ต่อไปนี้:
/api/$HUE_USER/lights/1
ใน Curl:
$ curl -X DELETE http://$ADDR/api/$HUE_USER/lights/1
แทนที่ 1 ด้วยจำนวนแสงที่คุณต้องการลบ
หากต้องการรับสถานะของไฟที่เชื่อมต่อทั้งหมดให้ส่งสิ่งต่อไปนี้จากอินเทอร์เฟซ Debug Clip โดยใช้คำขอ GET:
/api/$HUE_USER/lights/
ใน Curl นั่นคือ:
$ 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 นั่นคือ:
$ 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 (สำหรับขนาด X และ Y ในพื้นที่สี CIE1931) หากคุณเปลี่ยนสีหรือความอิ่มตัวของโคมไฟของโคมไฟจะเปลี่ยนเป็น HS และหากคุณเปลี่ยนอุณหภูมิสี colormode จะเปลี่ยนเป็น CT หากคุณส่งค่า XY Colormode จะเปลี่ยนเป็นโหมด XY
ไฟที่แตกต่างกันจะมีคุณสมบัติที่แตกต่างกันในตัวแปรสถานะของพวกเขาที่คุณสามารถเปลี่ยนแปลงได้ ภาพร่าง P5.JS จะสแกนคุณสมบัติทั้งหมดของแต่ละหลอดบน
รุ่น MKR1000, MKR1010 และ Nano 33 IoT Arduino สามารถควบคุม Hue Bridge ผ่านคำขอ HTTP ได้เช่นกัน มีตัวอย่างของ Arduino Hue พร้อมโน้ตในที่เก็บนี้เช่นกัน