สารบัญ:
- ขั้นตอนที่ 1: เริ่มต้น
- ขั้นตอนที่ 2: Hue App
- ขั้นตอนที่ 3: เชื่อมต่อสะพาน
- ขั้นตอนที่ 4: ที่อยู่ IP
- ขั้นตอนที่ 5:
- ขั้นตอนที่ 6: ดีบัก Hue ของคุณ
- ขั้นตอนที่ 7: มาเริ่มกันเลย
- ขั้นตอนที่ 8:
- ขั้นตอนที่ 9: มาทำอะไรกับแสงไฟกันเถอะ
- ขั้นตอนที่ 10:
- ขั้นตอนที่ 11: มาควบคุมแสงกันเถอะ
- ขั้นตอนที่ 12:
- ขั้นตอนที่ 13:
- ขั้นตอนที่ 14:
- ขั้นตอนที่ 15:
- ขั้นตอนที่ 16:
- ขั้นตอนที่ 17:
- ขั้นตอนที่ 18:
- ขั้นตอนที่ 19:
วีดีโอ: โครงการโรงเรียน IoT Philips Hue: 19 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:04
นี่คือคู่มือที่ฉันต้องเขียนสำหรับโรงเรียน มันยังไม่สมบูรณ์และฉันไม่แน่ใจว่าคุณจะใช้งานได้หรือไม่ ความรู้ของฉันเกี่ยวกับ API เป็นขั้นต่ำเปล่า เราต้องการสร้างกระจกแบบโต้ตอบที่มีไฟที่ด้านหลังซึ่งตอบสนองต่อสภาพอากาศ แสงจากภายนอก ฯลฯ
ฉันดูว่าฉันจะตั้งโปรแกรมหลอดไฟ Philips Hue ด้วย Arduino ได้อย่างไร ในเรื่องนี้ ฉันอธิบายขั้นตอนทั้งหมดของฉันและมาไกลแค่ไหนแล้ว ฉันไม่ประสบความสำเร็จในการเขียนโปรแกรม Hue ด้วย Arduino แต่ฉันคิดว่ามันเป็นการเริ่มต้นที่ดี
ฉันต้องการสิ่งนี้: Arduino หลอดไฟสี สะพาน บัญชีผู้พัฒนาของ Philips Hue
ที่มา:https://www.developers.meethue.com/documentation/g…https://github.com/bsalinas/ArduinoHuehttps://arduino-esp8266.readthedocs.io/en/latest/e…https:// www.makeuseof.com/tag/control-philips-hue-…
ขั้นตอนที่ 1: เริ่มต้น
ก่อนที่คุณจะสามารถเข้าถึงเอกสาร API คุณจะต้องลงทะเบียนเป็นนักพัฒนา ฟรี แต่คุณต้องยอมรับข้อกำหนดและเงื่อนไข คุณสามารถสร้างได้ที่นี่ >
ขั้นตอนที่ 2: Hue App
ดาวน์โหลดแอปอย่างเป็นทางการของ Philips Hue เชื่อมต่อโทรศัพท์ของคุณกับเครือข่ายที่คุณต้องการให้ Hue Bridge เปิดอยู่
ขั้นตอนที่ 3: เชื่อมต่อสะพาน
เชื่อมต่อบริดจ์ของคุณกับเครือข่ายและทำงานอย่างถูกต้อง ทดสอบว่าแอพสมาร์ทโฟนสามารถควบคุมไฟในเครือข่ายเดียวกันได้ จะต้องอยู่ในเครือข่าย Wi-Fi เดียวกัน
ขั้นตอนที่ 4: ที่อยู่ IP
จากนั้นคุณต้องค้นหาที่อยู่ IP ของบริดจ์บนเครือข่ายของคุณ กดลิงค์เพื่อเชื่อมต่อกับบริดจ์ในแอพและลองควบคุมไฟ
ขั้นตอนที่ 5:
หากใช้งานได้ ให้ไปที่เมนูการตั้งค่าในแอป ไปที่ "My Bridge" ไปที่ "การตั้งค่าเครือข่าย" ปิดสวิตช์ DHCP แล้วคุณจะเห็นที่อยู่ IP ของบริดจ์ จดที่อยู่ IP จากนั้นเปิด DHCP อีกครั้ง
ขั้นตอนที่ 6: ดีบัก Hue ของคุณ
เมื่อคุณเขียนสิ่งนั้นลงไป คุณต้องดีบักเว้ของคุณ คุณต้องมีที่อยู่ IP สำหรับขั้นตอนนี้ คุณต้องไปที่ไซต์ถัดไป
/debug/clip.html
อินเทอร์เฟซจะมีลักษณะเช่นนี้ในภาพ นี่เป็นพื้นฐานของการเข้าชมเว็บทั้งหมดและอินเทอร์เฟซ RESTful ที่มีสีสัน
ฉันได้รับข้อมูลนี้เกี่ยวกับอินเทอร์เฟซ Restful ของไซต์ Philips Hue
URL: นี่คือที่อยู่จริงของทรัพยากร (สิ่งของ) เฉพาะภายในระบบฮิว อาจเป็นแสง กลุ่มของแสง หรืออะไรหลายๆ อย่าง นี่คือวัตถุที่คุณจะโต้ตอบภายในคำสั่งนี้
เนื้อหา: นี่คือส่วนหนึ่งของข้อความที่อธิบายสิ่งที่คุณต้องการเปลี่ยนแปลงและวิธี ที่นี่คุณป้อนชื่อทรัพยากรและค่าที่ต้องการเปลี่ยน/เพิ่มในรูปแบบ JSON
เมธอด: คุณสามารถเลือกวิธี HTTP 4 แบบที่การโทรฮิวสามารถใช้ได้ที่นี่
GET: นี่คือคำสั่งเพื่อดึงข้อมูลทั้งหมดเกี่ยวกับรีซอร์สที่ระบุ
PUT: นี่คือคำสั่งในการแก้ไขทรัพยากรที่อยู่
POST: นี่คือคำสั่งเพื่อสร้างทรัพยากรใหม่ภายในทรัพยากรที่ระบุ
ลบ: นี่คือคำสั่งเพื่อลบการตอบกลับของทรัพยากรที่อยู่: ในพื้นที่นี้ คุณจะเห็นการตอบสนองต่อคำสั่งของคุณ ในรูปแบบ JSON ด้วย
ขั้นตอนที่ 7: มาเริ่มกันเลย
ตอนนี้เราต้องการชื่อผู้ใช้ที่สร้างขึ้นแบบสุ่มที่บริดจ์สร้างให้คุณ คุณจะได้รับหนึ่งโดยการกรอกนี้
ใส่ URL:
/api/
ใส่ในร่างกาย:
แล้วกด GET
คำสั่งนี้โดยพื้นฐานแล้วพูดว่า "โปรดสร้างทรัพยากรใหม่ภายใน /api "(โดยที่ชื่อผู้ใช้นั่ง) ด้วยคุณสมบัติดังต่อไปนี้ ในตอนแรก คุณจะได้รับข้อผิดพลาด และนั่นเป็นเพราะเป็นขั้นตอนการรักษาความปลอดภัยของ Philips Hue การกดปุ่มจะเป็นการพิสูจน์ว่าคุณสามารถเข้าถึงสะพานได้
ขั้นตอนที่ 8:
ตอนนี้ กดปุ่มบน Bridge แล้วคลิก POST อีกครั้ง
ตอนนี้คุณจะได้รับชื่อผู้ใช้ที่บริดจ์สร้างขึ้นเพื่อคุณ
ขั้นตอนที่ 9: มาทำอะไรกับแสงไฟกันเถอะ
คัดลอกชื่อผู้ใช้ของคุณและใส่ในบรรทัดต่อไปนี้
ใส่สิ่งนี้ใน URL ของคุณ
/api/ /lights
กด GET
คุณควรได้รับการตอบสนอง JSON พร้อมไฟทั้งหมดในระบบของคุณและชื่อไฟเหล่านั้น
ขั้นตอนที่ 10:
ฉันยืม Hue Lights จากโรงเรียน อันที่ฉันใช้คืออันที่มี id 3 ฉันต้องการข้อมูลเฉพาะเกี่ยวกับไฟนี้
วางไว้ข้าง URL ที่คุณมีอยู่แล้ว:
/api/ /lights/3
กด GET
ตอนนี้คุณได้รับข้อมูลเกี่ยวกับ Led 3 ทั้งหมด (ถ้าคุณมีหมายเลขอื่นเช่น 1 คุณจะเห็นข้อมูลเกี่ยวกับหมายเลขนั้น)
ขั้นตอนที่ 11: มาควบคุมแสงกันเถอะ
คุณเห็นใน "สถานะ" ที่ผู้นำของฉันคือ "เปิด" เราต้องการควบคุมแสงใน "สถานะ"
วางไว้ข้าง URL ที่คุณมีอยู่แล้ว:https:// /api/ /lights/ 3/ state
ใส่บรรทัดถัดไปใน BODY
กด PUT
ตอนนี้ไฟของคุณจะดับลง! เปลี่ยนค่าในตัวให้เป็น true แล้วไฟจะเปิดขึ้นอีกครั้ง
ขั้นตอนที่ 12:
ตอนนี้ทุกอย่างทำงานได้ ฉันต้องการทำสิ่งนี้กับ Arduino ของฉัน ฉันดูลิงก์ที่ฟิลิปส์เว้ให้เพื่อทำการเปลี่ยนสีของแสง แต่คุณต้องการ Python สำหรับสิ่งนี้ ฉันไม่เคยทำงานกับ Python ดังนั้นฉันจึงมองหาอย่างอื่น
หากคุณต้องการดูรหัสนี้ ฉันมีลิงก์ Github ที่นี่:
github.com/bsalinas/ArduinoHue
ขั้นตอนที่ 13:
ฉันดูว่าฉันจะรับข้อมูลจากเว็บไซต์สำหรับนักพัฒนานี้ไปยัง Arduino ได้อย่างไร ส่วนใหญ่ฉันไม่เข้าใจภาษา แต่ฉันพบรหัสบนเว็บไซต์ของ James Bruce
นี่คือลิงค์ไปยังเว็บไซต์
www.makeuseof.com/tag/control-philips-hue-lights-arduino-and-motion-sensor/
ขั้นตอนที่ 14:
ตอนแรกฉันเห็นว่าเขาใช้สายอีเทอร์เน็ต ฉันมีหลอดไฟ Hue Light และบริดจ์ Arduino และเข้าใจโค้ดเพียงเล็กน้อย ฉันต้องใช้เวลาสักพักกว่าจะเข้าใจโค้ดของเขา แต่ฉันก็ยังไม่เข้าใจจริงๆ
ครั้งแรกที่ฉันเพิ่มห้องสมุดนี้สำหรับอินเทอร์เน็ต
#รวม
นี่สำหรับเครือข่ายของคุณ (จะต้องเหมือนกับหลอดไฟ Hue)
const ถ่าน* ssid = " "; // ใส่รหัสผ่าน SSIDconst char* เครือข่าย WiFi ของคุณที่นี่ = " "; // ใส่รหัสผ่านเครือข่าย WiFi ของคุณที่นี่
นี่คือ ID ของบริดจ์ของคุณและชื่อผู้ใช้ที่บริดจ์ของคุณมอบให้คุณ (ฉันไม่รู้ว่า 80 ย่อมาจากอะไร แต่เมื่อฉันทำวิจัยบางอย่าง ฉันเห็นว่ามันถูกใช้สำหรับเครือข่าย)
// ค่าคงที่ฮิว const ถ่าน hueHubIP = ""; // Hue hub IP const char hueUsername = ""; // ชื่อผู้ใช้ Hue const int hueHubPort = 80;
// ตัวแปร Hue bool hueOn; // เปิด/ปิด int hueBri; // ค่าความสว่างยาว hueHue; // ค่าฮิว สตริง hueCmd; // คำสั่งเว้
บัฟเฟอร์ยาวที่ไม่ได้ลงนาม=0; //บัฟเฟอร์สำหรับการจัดเก็บข้อมูลที่ได้รับ unsigned ยาว addr;
ขั้นตอนที่ 15:
สำหรับการตั้งค่าเป็นโมฆะ ฉันใช้การเชื่อมต่ออินเทอร์เน็ตให้เกิดประโยชน์สูงสุด ในรหัสนี้ Arduino กำลังมองหาว่าเขาสามารถเชื่อมต่อกับเครือข่ายได้หรือไม่
การตั้งค่าเป็นโมฆะ () { Serial.begin (9600);
Serial.println();
Serial.printf("กำลังเชื่อมต่อกับ %s ", ssid);
WiFi.begin(ssid, รหัสผ่าน);
ในขณะที่ (WiFi.status () != WL_CONNECTED) {
ล่าช้า (500);
Serial.print("."); }
Serial.println("เชื่อมต่อ"); }
ขั้นตอนที่ 16:
ในวงของเจมส์ ผมเห็นว่าเขามีคำสั่ง if และ else แต่นั่นเป็นสำหรับสายอีเทอร์เน็ต ดังนั้นฉันจึงพยายามละทิ้งสิ่งนี้ บางครั้งฉันก็พยายามปรับมัน แต่ฉันยังไม่รู้ด้วยข้อมูลมากมาย บางสิ่งในรหัสที่ฉันเข้าใจในสตริงคือข้อมูลที่ให้กับแสงเว้
วงเป็นโมฆะ (){
// ชุดคำสั่งตัวอย่างสี่ชุด ซึ่งสีจะหรี่ไฟสองดวงระหว่างสีแดงและสีชมพู อ่านเอกสาร Hue API // สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับคำสั่งที่แน่นอนที่จะใช้ แต่โปรดทราบว่าเครื่องหมายคำพูดต้องหลีกเลี่ยง
คำสั่งสตริง = "{"on\": true, \"hue\": 50100, \"sat\":255, \"bri\":255, \"transitiontime\":"+String(random(15), 25))+"}";setHue(1, คำสั่ง);
command = "{"on\": true, \"hue\": 65280, \"sat\":255, \"bri\":255, \"transitiontime\":"+String(random(15, 25))+"}"; setHue(2, คำสั่ง);
command = "{"hue\": 65280, \"sat\":255, \"bri\":255, \"transitiontime\":"+String(random(15, 25))+"}"; setHue(1, คำสั่ง);
command = "{"hue\": 50100, \"sat\":255, \"bri\":255, \"transitiontime\":"+String(random(15, 25))+"}"; setHue(2, คำสั่ง);
}
ขั้นตอนที่ 17:
รหัสต่อไปคือบูลีน แต่ใน Arduino คุณต้องเขียนบูล ตอนแรก ฉันได้รับข้อผิดพลาดมากมายเนื่องจากคำว่าไคลเอนต์ ดังนั้นฉันจึงค้นหาและเห็นว่าโค้ดบางตัวใช้บรรทัด "ไคลเอนต์ Wifi" ดังนั้นฉันจึงใช้มันและได้ผล
ในคำสั่ง if คุณมักจะเห็น client.print หากคุณดูรหัส คุณจะเห็นว่า URL ที่คุณป้อนก่อนหน้านี้แบ่งออกเป็นส่วนๆ ตอนนี้ป้อนรหัสของคุณเอง ฉันต้องเลือกไฟ LED ดวงที่ 3
/* setHue() คือฟังก์ชันคำสั่งหลักของเรา ซึ่งจำเป็นต้องส่งผ่านตัวเลข light และ * สตริงคำสั่งที่จัดรูปแบบอย่างถูกต้องในรูปแบบ JSON (โดยทั่วไปจะเป็นอาร์เรย์สไตล์ Javascript ของตัวแปร * และค่าต่างๆ จากนั้นจึงส่งคำขอ HTTP PUT อย่างง่ายไปยัง สะพานที่ IP ที่ระบุตอนเริ่มต้น */
bool setHue (int lightNum คำสั่ง String) {
ไคลเอนต์ WiFiClient;
ถ้า (client.connect (hueHubIP, hueHubPort)){
ในขณะที่ (client.connected()){
client.print("PUT /api/"); client.print(hueUsername); client.print("/ไฟ/"); client.print(lightNum); // hueLight เป็นศูนย์ตาม เพิ่ม 1 client.println("3/state"); // ที่นี่ฉันเปลี่ยนชื่อฮิวและ stateclient.print("Host: "); client.println(hueHubIP); client.print("เนื้อหา-ความยาว: "); client.println(command.length()); client.println("Content-Type: text/plain;charset=UTF-8"); client.println(); // บรรทัดว่างก่อนร่างกาย client.println (คำสั่ง); // คำสั่งเว้
} client.stop(); คืนค่าจริง; // คำสั่งดำเนินการ }
มิฉะนั้นจะคืนค่าเท็จ // คำสั่งล้มเหลว }
ขั้นตอนที่ 18:
ที่บูลีนที่สอง ฉันทำสิ่งเดียวกันกับการเปลี่ยนคำบางคำ ฉันอัปโหลดเพื่อดูว่ามันทำงานหรือไม่
/* ฟังก์ชันตัวช่วยในกรณีที่ตรรกะของคุณขึ้นอยู่กับสถานะปัจจุบันของแสง * สิ่งนี้กำหนดตัวแปรทั่วโลกจำนวนหนึ่งซึ่งคุณสามารถตรวจสอบเพื่อดูว่าไฟเปิดอยู่หรือไม่ * และสีสัน ฯลฯ ไม่จำเป็นเพียงแค่ส่งคำสั่ง */
bool getHue (int lightNum) {
ไคลเอนต์ WiFiClient;
ถ้า (client.connect (hueHubIP, hueHubPort)) {
client.print("GET /api/"); client.print(hueUsername); client.print("/ไฟ/"); client.print(lightNum); client.println("3/สถานะ"); client.print("โฮสต์:"); client.println(hueHubIP); client.println("ประเภทเนื้อหา: แอปพลิเคชัน/json"); client.println("รักษาชีวิตไว้"); client.println();
while (client.connected()) { if (client.available()) { client.findUntil("\"on\":", "\0"); hueOn = (client.readStringUntil(', ') == "จริง"); // หากไฟสว่างขึ้น ให้ตั้งค่าตัวแปรเป็น true client.findUntil("\"bri\":", "\0"); hueBri = client.readStringUntil(', ').toInt(); // ตั้งค่าตัวแปรเป็นค่าความสว่าง client.findUntil("\"hue\":", "\0"); hueHue = client.readStringUntil(', ').toInt(); // ตั้งค่าตัวแปรให้แบ่งค่าฮิว; // ยังไม่จับแอตทริบิวต์แสงอื่น ๆ } } client.stop(); คืนค่าจริง; // จับ, bri, hue } else คืนค่าเท็จ; // เกิดข้อผิดพลาดในการอ่าน bri, hue }
ขั้นตอนที่ 19:
ฉันคิดว่าฉันสามารถเชื่อมต่อกับ Philips Hue ได้ ได้รับข้อมูลแล้วแต่ยังจำเป็นต้องใช้
น่าเสียดายที่สิ่งนี้มีมากกว่าที่ฉันสามารถเขียนโค้ดได้ หากคุณรู้คำตอบหรือมีข้อผิดพลาดจริงที่ต้องแก้ไข ฉันชอบที่จะได้ยินมัน:-)
แนะนำ:
แยกและขยายแถบไฟ Philips Hue: 8 ขั้นตอน (พร้อมรูปภาพ)
แยกและขยาย Philips Hue Lightstrip: ฉันได้เพิ่ม "บ้านอัจฉริยะ" พิมพ์แกดเจ็ตที่บ้านของฉัน และสิ่งหนึ่งที่ฉันเคยเล่นด้วยคือแถบไฟ Philips Hue เป็นแถบไฟ LED ที่สามารถควบคุมได้จากแอพหรือจากผู้ช่วยอัจฉริยะ เช่น Alexa หรือ
Sad Cat Fixer, Catch-Me Cat Toy - โครงการโรงเรียน: 3 ขั้นตอน
Sad Cat Fixer, Catch-Me Cat Toy - โครงการโรงเรียน: นี่คือผลิตภัณฑ์ของเรา มันเป็นเมาส์ของเล่นแบบโต้ตอบ: Catch-Me Cat Toy นี่คือรายการปัญหาที่แมวจำนวนมากในสังคมของเรากำลังเผชิญอยู่: แมวในปัจจุบันเริ่มไม่เคลื่อนไหวและหดหู่โดยที่ไม่มีอะไรทำ เจ้าของส่วนใหญ่ยุ่งกับงานหรือโรงเรียนและสัตว์เลี้ยงของคุณ
Gledopto: ทางเลือกรางไฟ Philips Hue ราคาถูก: 3 ขั้นตอน
Gledopto: ทางเลือกรางไฟ Philips Hue ราคาถูก: ปัจจุบัน Philips Hue กำลังขายแถบไฟ Philips Hue Light ในราคาเพียง 71-90 ดอลลาร์ในเวลาเพียง 2 เมตร ฉันพบว่านี่เป็นราคาที่ไร้สาระมาก ดังนั้นฉันจึงเริ่มมองหาทางเลือกอื่น ฉันเจอแบรนด์ที่ชื่อว่า Gledopto ซึ่งทำให้ตัวควบคุมแถบ LED ซึ่ง
DIY Philips Hue Panel Light: 4 ขั้นตอน (พร้อมรูปภาพ)
DIY Philips Hue Panel Light: ฉันเพิ่งซื้อไฟ Philips Hue สำหรับห้องนอนของฉัน พวกเขายอดเยี่ยมมาก! ฉันสามารถควบคุมมันด้วยเสียงของฉันโดยใช้ Alexa และควบคุมผ่านโทรศัพท์ของฉันด้วย ฉันพยายามหาไฟแผงเปลี่ยนสี แต่อย่างที่คุณอาจทราบ Philips Hue ไม่เห็น
Mood Projector (แฮ็ก Philips Hue Light พร้อม GSR) TfCD: 7 ขั้นตอน (พร้อมรูปภาพ)
Mood Projector (แฮ็ก Philips Hue Light พร้อม GSR) TfCD: โดย Laura Ahsmann & Maaike Weber วัตถุประสงค์: อารมณ์ต่ำและความเครียดเป็นส่วนสำคัญของชีวิตที่เร่งรีบสมัยใหม่ นอกจากนี้ยังเป็นสิ่งที่มองไม่เห็นจากภายนอก จะเกิดอะไรขึ้นถ้าเราสามารถคาดการณ์ระดับความเครียดของเราได้ทั้งทางสายตาและทางเสียงด้วย