Mục lục:

Dự án trường học IoT Philips Hue: 19 bước
Dự án trường học IoT Philips Hue: 19 bước

Video: Dự án trường học IoT Philips Hue: 19 bước

Video: Dự án trường học IoT Philips Hue: 19 bước
Video: Tage - Lớp 13 (Official Lyric Video) 2024, Tháng bảy
Anonim
Dự án trường học IoT Philips Hue
Dự án trường học IoT Philips Hue

Đây là sách hướng dẫn tôi phải viết cho trường học. Nó không hoàn chỉnh và tôi không chắc liệu bạn có thể sử dụng nó hay không. Kiến thức của tôi về API là mức tối thiểu. Chúng tôi muốn tạo ra một chiếc gương tương tác với đèn ở mặt sau phản ứng với thời tiết, ánh sáng từ bên ngoài, v.v.

Tôi đã tìm hiểu cách lập trình đèn Philips Hue với Arduino. Trong phần này, tôi giải thích tất cả các bước của tôi và tôi đã đi được bao xa. Tôi đã không thành công trong việc lập trình Hue với Arduino nhưng tôi nghĩ đó là một khởi đầu tốt.

Tôi cần cái này: Arduino a hue light a bridge Tài khoản nhà phát triển Philips Hue

Nguồn: 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-…

Bước 1: Bắt đầu

Trước khi có thể truy cập tài liệu API, bạn cần đăng ký làm nhà phát triển. Nó miễn phí, nhưng bạn cần phải chấp nhận các điều khoản và điều kiện. Bạn có thể tạo một tài khoản tại đây>

Bước 2: Ứng dụng Hue

Tải xuống Ứng dụng Philips Hue chính thức. Kết nối điện thoại của bạn với mạng mà bạn muốn cầu Huế đang bật.

Bước 3: Kết nối cây cầu

Kết nối cầu nối của bạn với mạng của bạn và đang hoạt động bình thường. Kiểm tra xem ứng dụng trên điện thoại thông minh có thể điều khiển đèn trên cùng một mạng hay không. Nó phải trên cùng một mạng Wi-Fi.

Bước 4: Địa chỉ IP

Sau đó, bạn cần phải khám phá địa chỉ IP của cầu nối trên mạng của bạn. Nhấn liên kết để kết nối với cây cầu trong ứng dụng và thử điều khiển đèn.

Bước 5:

Nếu tất cả đều hoạt động, hãy chuyển đến menu cài đặt trong ứng dụng. Ngoài chuyển đến “Cầu của tôi”, hãy chuyển đến “Cài đặt mạng”. Tắt công tắc DHCP và bạn sẽ thấy địa chỉ IP của cầu nối. Lưu ý địa chỉ IP, sau đó bật lại DHCP.

Bước 6: Gỡ lỗi Hue của bạn

Gỡ lỗi Hue của bạn
Gỡ lỗi Hue của bạn

Khi bạn viết ra điều đó, bạn cần gỡ lỗi Hue của mình. Bạn cần Địa chỉ IP cho bước này. Bạn phải truy cập trang web tiếp theo.

/debug/clip.html

Giao diện sẽ như thế này trong hình. Đây là cơ sở của tất cả lưu lượng truy cập web và giao diện Hue RESTful.

Tôi nhận được thông tin này về giao diện Restful của trang Philips Hue.

URL: đây thực sự là địa chỉ cục bộ của một tài nguyên cụ thể (thứ) bên trong hệ thống màu sắc. Nó có thể là ánh sáng, một nhóm đèn hoặc nhiều thứ khác. Đây là đối tượng bạn sẽ tương tác trong lệnh này.

Phần nội dung: đây là phần của thông báo mô tả những gì bạn muốn thay đổi và cách thực hiện. Tại đây, bạn nhập, ở định dạng JSON, tên và giá trị tài nguyên bạn muốn thay đổi / thêm.

Phương thức: ở đây bạn có một lựa chọn trong số 4 phương thức HTTP mà lệnh gọi hue có thể sử dụng.

GET: đây là lệnh tìm nạp tất cả thông tin về tài nguyên đã được định địa chỉ

PUT: đây là lệnh để sửa đổi một tài nguyên có địa chỉ

POST: đây là lệnh tạo một tài nguyên mới bên trong tài nguyên đã được định địa chỉ

DELETE: đây là lệnh xóa tài nguyên đã được định địa chỉ Phản hồi: Trong khu vực này, bạn sẽ thấy phản hồi cho lệnh của mình. Cũng ở định dạng JSON.

Bước 7: Bắt đầu

Bắt đầu nào
Bắt đầu nào

Bây giờ chúng tôi cần một tên người dùng được tạo ngẫu nhiên mà cầu nối tạo cho bạn. Bạn sẽ nhận được một bằng cách điền vào này.

Đặt vào URL:

/ api /

Đưa vào CƠ THỂ:

và nhấn GET

Lệnh này về cơ bản nói rằng "vui lòng tạo một tài nguyên mới bên trong / api" (nơi đặt tên người dùng) với các thuộc tính sau. Lúc đầu, bạn sẽ gặp lỗi, và đó là vì đó là bước bảo mật của Philips Hue. Bằng cách nhấn nút, họ chứng minh rằng bạn có quyền truy cập thực tế vào cây cầu.

Bước 8:

Hình ảnh
Hình ảnh

Bây giờ Nhấn nút trên Cầu và nhấp vào ĐĂNG một lần nữa.

Bây giờ bạn sẽ nhận được tên người dùng mà cây cầu đã tạo cho bạn.

Bước 9: Hãy làm điều gì đó với đèn

Hãy làm điều gì đó với đèn
Hãy làm điều gì đó với đèn

Sao chép tên người dùng của bạn và đặt nó vào dòng sau.

Đặt cái này vào URL của bạn

/ api / / đèn

Nhấn GET

Bạn sẽ nhận được phản hồi JSON với tất cả các đèn trong hệ thống của bạn và tên của chúng.

Bước 10:

Hình ảnh
Hình ảnh

Em có mượn ở trường mấy cái đèn Hue, cái em dùng là cái có id 3. Em muốn thông tin cụ thể về cái đèn này.

Đặt cái này bên cạnh URL bạn đã có:

/ api / / lights / 3

Nhấn GET

Bây giờ bạn nhận được thông tin về Led 3 (nếu bạn có số khác như 1 bạn sẽ thấy thông tin về Led đó).

Bước 11: Hãy kiểm soát ánh sáng

Hãy kiểm soát ánh sáng
Hãy kiểm soát ánh sáng

Bạn thấy ở "trạng thái" rằng đèn led của tôi đang "bật". Chúng tôi muốn kiểm soát ánh sáng ở "trạng thái".

Đặt cái này bên cạnh URL bạn đã có: https:// / api / / lights / 3 / state

Đặt dòng tiếp theo trong BODY

Nhấn PUT

Bây giờ đèn của bạn sẽ tắt! Thay đổi giá trị trong phần thân thành true và đèn sẽ sáng trở lại.

Bước 12:

Bây giờ mọi thứ đang hoạt động, tôi muốn làm điều này với Arduino của mình. Tôi đã xem liên kết mà Philips Hue đưa ra để làm cho màu ánh sáng thay đổi. Nhưng bạn cần Python cho việc này, tôi chưa bao giờ làm việc với Python nên tôi đã tìm kiếm thứ khác.

Nếu bạn muốn xem mã này, tôi có liên kết Github ở đây:

github.com/bsalinas/ArduinoHue

Bước 13:

Tôi đã xem cách tôi có thể lấy thông tin từ trang web của nhà phát triển này đến arduino của mình. Hầu hết thời gian tôi không hiểu ngôn ngữ. Nhưng tôi đã tìm thấy một số mã trên một trang web của James Bruce.

Đây là liên kết đến trang web.

www.makeuseof.com/tag/control-philips-hue-lights-arduino-and-motion-sensor/

Bước 14:

Đầu tiên tôi thấy rằng anh ấy đang sử dụng cáp Ethernet. Tôi chỉ có một bóng đèn Hue và cầu nối Arduino, và ít hiểu biết về mã. Phải mất một lúc để tôi hiểu được mã của anh ấy, nhưng tôi vẫn không thực sự hiểu nó.

Lần đầu tiên tôi thêm thư viện này cho Internet.

#bao gồm

Cái này dành cho mạng của bạn (nó phải giống với bóng đèn Hue)

const char * ssid = ""; // đặt ở đây mạng WiFi của bạn SSIDconst char * password = ""; // đặt mật khẩu mạng WiFi của bạn ở đây

Đây là ID của Bridge của bạn và tên người dùng mà Bridge của bạn đã cấp cho bạn. (Tôi không biết 80 là viết tắt của từ đâu nhưng khi tôi thực hiện một số nghiên cứu, tôi thấy rằng nó được sử dụng cho các mạng).

// Hằng số Hue const char hueHubIP = ""; // Hue hub IP const char hueUsername = ""; // Tên người dùng Hue const int hueHubPort = 80;

// Các biến Hue bool hueOn; // bật / tắt int hueBri; // giá trị độ sáng long hueHue; // giá trị hue String hueCmd; // Lệnh Hue

bộ đệm dài không dấu = 0; // bộ đệm cho lưu trữ dữ liệu nhận được unsigned long addr;

Bước 15:

Đối với thiết lập void, tôi đã làm nhiều nhất cho kết nối internet. Trong đoạn mã này, Arduino đang xem liệu anh ta có thể kết nối với mạng hay không.

void setup () {Serial.begin (9600);

Serial.println ();

Serial.printf ("Đang kết nối với% s", ssid);

WiFi.begin (ssid, mật khẩu);

trong khi (WiFi.status ()! = WL_CONNECTED) {

chậm trễ (500);

Serial.print ("."); }

Serial.println ("được kết nối"); }

Bước 16:

Trong vòng lặp của James, tôi thấy rằng anh ấy có câu lệnh If và else. Nhưng đó là đối với cáp ethernet, vì vậy tôi đã cố gắng loại bỏ điều này. Tôi cũng đã đôi khi cố gắng điều chỉnh nó, nhưng tôi chưa biết với rất nhiều dữ liệu. Một số điều trong mã tôi đã hiểu, trong chuỗi là dữ liệu được cung cấp cho ánh sáng Huế.

void loop () {

// Một loạt bốn lệnh mẫu, màu nào làm mờ hai đèn giữa đỏ và hồng. Đọc thêm tài liệu Hue API // để biết thêm chi tiết về các lệnh chính xác sẽ được sử dụng, nhưng lưu ý rằng dấu ngoặc kép phải được thoát ra.

Lệnh chuỗi = "{" on / ": true, \" hue / ": 50100, \" sat / ": 255, \" bri / ": 255, \" transitiontime / ":" + Chuỗi (ngẫu nhiên (15, 25)) + "}"; setHue (1, lệnh);

command = "{" on / ": true, \" hue / ": 65280, \" sat / ": 255, \" bri / ": 255, \" transitiontime / ":" + Chuỗi (ngẫu nhiên (15, 25)) + "}"; setHue (2, lệnh);

command = "{" hue / ": 65280, \" sat / ": 255, \" bri / ": 255, \" transitiontime / ":" + String (random (15, 25)) + "}"; setHue (1, lệnh);

command = "{" hue / ": 50100, \" sat / ": 255, \" bri / ": 255, \" transitiontime / ":" + String (random (15, 25)) + "}"; setHue (2, lệnh);

}

Bước 17:

Mã tiếp theo là Boolean, nhưng trong Arduino bạn phải viết Bool. Lúc đầu, tôi mắc rất nhiều lỗi vì từ khách hàng. Vì vậy, tôi đã tìm kiếm nó và thấy rằng một số mã sử dụng dòng "WifiClient client;". Vì vậy, tôi đã sử dụng nó và nó đã hoạt động.

Trong câu lệnh if, bạn thường thấy client.print. Nếu bạn nhìn vào mã, bạn sẽ thấy rằng URL bạn đã nhập trước đó được chia thành nhiều phần. Bây giờ hãy nhập mã của riêng bạn. Tôi đã phải chọn đèn LED thứ 3 của mình.

/ * setHue () là hàm lệnh chính của chúng ta, hàm này cần được chuyển vào một số nhẹ và một chuỗi lệnh * được định dạng đúng ở định dạng JSON (về cơ bản là một mảng kiểu Javascript gồm các biến * và giá trị. Sau đó, nó thực hiện một yêu cầu HTTP PUT đơn giản để Bridge tại IP được chỉ định lúc bắt đầu. * /

bool setHue (int lightNum, lệnh String) {

Máy khách WiFiClient;

if (client.connect (hueHubIP, hueHubPort)) {

while (client.connected ()) {

client.print ("PUT / api /"); client.print (hueUsername); client.print ("/ lights /"); client.print (lightNum); // hueLight dựa trên 0, thêm 1 client.println ("3 / state"); // ở đây tôi đã thay đổi tên hue và stateclient.print ("Máy chủ:"); client.println (hueHubIP); client.print ("Nội dung-Độ dài:"); client.println (command.length ()); client.println ("Loại-Nội dung: văn bản / trơn; bảng mã = UTF-8"); client.println (); // dòng trống trước body client.println (lệnh); // Lệnh Hue

} client.stop (); trả về true; // lệnh được thực thi}

khác trả về false; // Lệnh không thành công }

Bước 18:

Ở Boolean thứ hai, tôi cũng làm điều tương tự với việc thay đổi một số từ. Tôi đã tải nó lên để xem nó có hoạt động không.

/ * Một chức năng trợ giúp trong trường hợp logic của bạn phụ thuộc vào trạng thái hiện tại của ánh sáng. * Điều này đặt một số biến toàn cục mà bạn có thể kiểm tra để tìm hiểu xem đèn hiện có đang sáng hay không * và màu sắc, v.v. Không cần thiết chỉ để gửi lệnh * /

bool getHue (int lightNum) {

Máy khách WiFiClient;

if (client.connect (hueHubIP, hueHubPort)) {

client.print ("GET / api /"); client.print (hueUsername); client.print ("/ lights /"); client.print (lightNum); client.println ("3 / bang"); client.print ("Máy chủ:"); client.println (hueHubIP); client.println ("Kiểu nội dung: application / json"); client.println ("giữ nguyên"); client.println ();

while (client.connected ()) {if (client.available ()) {client.findUntil ("\" on / ":", "\ 0"); hueOn = (client.readStringUntil (',') == "true"); // nếu đèn sáng, hãy đặt biến thành true client.findUntil ("\" bri / ":", "\ 0"); hueBri = client.readStringUntil (',').toInt (); // đặt biến thành giá trị độ sáng client.findUntil ("\" hue / ":", "\ 0"); hueHue = client.readStringUntil (',').toInt (); // đặt biến thành giá trị hue break; // chưa nắm bắt được các thuộc tính ánh sáng khác}} client.stop (); trả về true; // capture on, bri, hue} else return false; // lỗi đọc on, bri, hue}

Bước 19:

Hình ảnh
Hình ảnh

Tôi nghĩ rằng tôi có thể kết nối với Philips Hue. Tôi nhận được thông tin nhưng nó vẫn cần được sử dụng.

Thật không may, điều này vượt quá những gì tôi có thể viết mã. Nếu bạn biết câu trả lời hoặc nếu có lỗi thực sự cần được sửa chữa, tôi rất muốn nghe.:-)

Đề xuất: