Агуулгын хүснэгт:

IoT сургуулийн төсөл Philips Hue: 19 алхам
IoT сургуулийн төсөл Philips Hue: 19 алхам

Видео: IoT сургуулийн төсөл Philips Hue: 19 алхам

Видео: IoT сургуулийн төсөл Philips Hue: 19 алхам
Видео: Craft Room Tour, Sunburst & a Cable! Knitting Podcast 132 2024, Арваннэгдүгээр
Anonim
IoT сургуулийн төсөл Philips Hue
IoT сургуулийн төсөл Philips Hue

Энэ бол миний сургуульд бичих ёстой гарын авлага юм. Энэ нь бүрэн гүйцэд биш бөгөөд та үүнийг ашиглаж чадах эсэхээ мэдэхгүй байна. API -ийн талаархи миний мэдлэг бол хамгийн бага хэмжээ юм. Бид цаг агаар, гаднаас гэрэл гэх мэт хариу үйлдэл үзүүлдэг арын гэрэл бүхий интерактив толь хийхийг хүссэн.

Би Philips Hue чийдэнг Arduino -той хэрхэн програмчлах талаар авч үзсэн. Үүнд би бүх алхам, ямар алхам хийснээ тайлбарласан болно. Би Hue -ийг Arduino -той програмчилж чадаагүй ч энэ бол сайн эхлэл гэж бодож байна.

Надад энэ хэрэгтэй байсан: Philips Hue хөгжүүлэгчийн данс болох Arduino -ийн өнгөт гэрэл

Эх сурвалж: 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 програм

Албан ёсны Philips Hue програмыг татаж аваарай. Hue гүүрийг асаахыг хүссэн сүлжээгээ утсаа холбоно уу.

Алхам 3: Гүүрийг холбоно уу

Гүүрээ сүлжээнд холбож, зөв ажиллаж байна. Ухаалаг гар утасны аппликейшн нь нэг сүлжээнд байгаа гэрлийг хянах боломжтой эсэхийг шалгаарай. Энэ нь ижил Wi-Fi сүлжээнд байх ёстой.

Алхам 4: IP хаяг

Дараа нь та сүлжээнийхээ гүүрний IP хаягийг олж мэдэх хэрэгтэй. Апп дээрх гүүр рүү холбогдохын тулд холбоосыг дарж, гэрлийг хянаж үзээрэй.

Алхам 5:

Хэрэв бүх зүйл зөв хийгдсэн бол програмын тохиргооны цэс рүү очно уу. "Миний гүүр" рүү очоод "Сүлжээний тохиргоо" руу очно уу. DHCP шилжүүлэгчийг унтрааж, гүүрний IP хаягийг харах болно. IP хаягийг анхаарч, DHCP -ийг дахин асаана уу.

Алхам 6: Hue -ээ дибаг хийх

Өөрийн өнгийг дибаг хийх
Өөрийн өнгийг дибаг хийх

Та үүнийг бичихдээ Hue -ээ дибаг хийх хэрэгтэй. Энэ алхамыг хийхийн тулд танд IP хаяг хэрэгтэй болно. Та дараагийн сайт руу орох ёстой.

/debbug/clip.html

Зураг дээр интерфейс иймэрхүү харагдах болно. Энэ бол бүх вэб траффик болон hue RESTful интерфэйсийн үндэс юм.

Philips Hue сайтын Restful интерфэйсийн талаар энэ мэдээллийг олж авлаа.

URL: энэ нь үнэндээ hue системийн доторх тодорхой нөөцийн (зүйлийн) локал хаяг юм. Энэ нь гэрэл, бүлэг гэрэл эсвэл бусад олон зүйл байж болно. Энэ бол таны энэ командын хүрээнд харилцах объект юм.

Бие махбодь: энэ бол юу өөрчлөхийг хүсч байгаагаа тайлбарласан зурвасын хэсэг юм. Энд та JSON форматаар өөрчлөх/нэмэхийг хүсч буй нөөцийн нэр, утгыг оруулна уу.

Арга: энд өнгөт дуудлагын ашиглаж болох 4 HTTP аргыг сонгох боломжтой.

АВАХ: энэ бол хаяглагдсан нөөцийн талаархи бүх мэдээллийг авах тушаал юм

PUT: энэ бол хаяглагдсан нөөцийг өөрчлөх тушаал юм

POST: энэ нь хаяглагдсан эх сурвалж дотор шинэ нөөц үүсгэх тушаал юм

Устгах: энэ бол хаяглагдсан нөөцийг устгах тушаал юм Хариулт: Энэ хэсэгт та өөрийн тушаалын хариуг харах болно. Мөн JSON форматтай.

Алхам 7: Эхлээд үзье

Эхэлцгээе
Эхэлцгээе

Одоо бидэнд гүүр танд зориулж үүсгэсэн санамсаргүй байдлаар үүсгэсэн хэрэглэгчийн нэр хэрэгтэй байна. Үүнийг бөглөхөд та нэгийг авах болно.

URL -г оруулна уу:

/api/

БИЕД оруулах:

мөн GET дарна уу

Энэ тушаал нь үндсэндээ "api дотор шинэ нөөц үүсгэнэ үү" гэж хэлдэг (хэрэглэгчийн нэр суудаг) дараах шинж чанаруудтай. Эхэндээ танд алдаа гарах болно, энэ нь Philips Hue -ийн аюулгүй байдлын алхам юм. Товчлуур дээр дарснаар тэд таныг гүүр рүү нэвтрэх боломжтой гэдгээ батална.

Алхам 8:

Зураг
Зураг

Одоо гүүрэн дээрх товчлуурыг дараад POST дарна уу.

Одоо та гүүр танд зориулж хийсэн хэрэглэгчийн нэрийг авах болно.

Алхам 9: Гэрлээр ямар нэгэн зүйл хийцгээе

Гэрлээр ямар нэгэн зүйл хийцгээе
Гэрлээр ямар нэгэн зүйл хийцгээе

Хэрэглэгчийн нэрээ хуулж, дараах мөрөнд оруулна уу.

Үүнийг URL дээрээ оруулна уу

/api//гэрэл

GET дарна уу

Та системийнхээ бүх гэрэл, тэдгээрийн нэрийг агуулсан JSON хариулт авах ёстой.

Алхам 10:

Зураг
Зураг

Би Hue Lights -ийг сургуулиас зээлж авсан, миний ашигладаг ID 3 -тай. Би энэ гэрлийн талаар тодорхой мэдээлэл авахыг хүсч байна.

Үүнийг аль хэдийн байсан URL -ийн хажууд тавь.

/api//гэрэл/3

GET дарна уу

Одоо та Led 3 -ийн талаархи бүх мэдээллийг авах болно (хэрэв танд өөр 1 гэх мэт дугаар байгаа бол та түүний тухай мэдээллийг харах болно).

Алхам 11: Гэрлийг хянацгаая

Гэрлийг хянацгаая
Гэрлийг хянацгаая

Миний удирдамж "асаалттай" байгааг та "төлөвт" харж байна. Бид гэрлийг "төлөвт" хянахыг хүсч байна.

Үүнийг өмнө нь байсан URL -ийн хажууд байрлуулна уу: https:/// api// lights/ 3/ state

Дараагийн мөрийг BODY -д оруулна уу

PUT дарна уу

Одоо таны гэрэл унтрах болно! Бие дэх үнэ цэнийг үнэн болгож өөрчил, гэрэл дахин асах болно.

Алхам 12:

Одоо бүх зүйл ажиллаж байна, би үүнийг Arduino -тойгоо хийхийг хүсч байна. Цайвар өнгийг өөрчлөхийн тулд Philips Hue -ийн өгсөн линкийг харлаа. Гэхдээ танд Python хэрэгтэй байна, би Python -той хэзээ ч ажиллаагүй тул өөр зүйл хайж байсан.

Хэрэв та энэ кодыг харах дуртай бол Github линк энд байна:

github.com/bsalinas/ArduinoHue

Алхам 13:

Би энэ хөгжүүлэгчийн сайтаас arduino руугаа хэрхэн мэдээлэл авахыг харсан. Ихэнхдээ би хэлээ ойлгодоггүй байсан. Гэхдээ би Жеймс Брюсээс вэбсайтаас код олсон.

Энэ бол вэбсайтын холбоос юм.

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

Алхам 14:

Эхлээд би түүнийг Ethernet кабель ашиглаж байгааг харсан. Би зөвхөн Hue гэрлийн чийдэн, Arduino гүүртэй байсан, кодын талаар бага ойлголттой байсан. Надад түүний кодыг ойлгоход хэсэг хугацаа шаардагдсан боловч би одоо хүртэл ойлгохгүй байна.

Би энэ номын санг анх интернетэд нэмсэн.

#оруулах

Энэ нь таны сүлжээнд зориулагдсан болно (энэ нь Hue гэрлийн чийдэнтэй ижил байх ёстой)

const char* ssid = ""; // энд WiFi сүлжээгээ оруулна уу SSIDconst char* password = ""; // WiFi сүлжээний нууц үгээ энд оруулна уу

Эдгээр нь таны гүүрний ID бөгөөд таны гүүрний танд өгсөн хэрэглэгчийн нэр юм. (80 гэдэг нь хаана байдгийг би мэдэхгүй, гэхдээ судалгаа хийж үзэхэд үүнийг сүлжээнд ашигладаг болохыг олж харсан).

// Hue Constants const char hueHubIP = ""; // Hue hub IP const char hueUsername = ""; // Hue хэрэглэгчийн нэр const int hueHubPort = 80;

// Hue хувьсагчид bool hueOn; // on/off int hueBri; // тод байдлын утга урт hueHue; // өнгөний утга String hueCmd; // Hue тушаал

гарын үсэггүй урт буфер = 0; // хүлээн авсан өгөгдөл хадгалах гарын үсэг зураагүй урт addr;

Алхам 15:

Хоосон тохиргоог хийхийн тулд би интернет холболтыг хамгийн их хийсэн. Энэ кодонд Arduino сүлжээнд холбогдох боломжтой эсэхийг хайж байна.

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

Serial.println ();

Serial.printf (" %s руу холбогдож байна", ssid);

WiFi.begin (ssid, нууц үг);

байхад (WiFi.status ()! = WL_CONNECTED) {

саатал (500);

Serial.print ("."); }

Serial.println ("холбогдсон"); }

Алхам 16:

Жеймсийн гогцоонд түүнд If and else мэдэгдэл байгааг би харсан. Гэхдээ энэ нь ethernet кабельд зориулагдсан тул би үүнийг орхихыг хичээсэн. Би заримдаа үүнийг тохируулах гэж оролдсон боловч маш их мэдээлэлтэй байсан ч хараахан мэдээгүй байсан. Миний ойлгосон кодын зарим зүйлийг Hue гэрэлд өгдөг өгөгдөл байна.

void loop () {

// Улаан, ягаан хоёрын хооронд хоёр гэрлийг бүдгэрүүлдэг дөрвөн жишээ командын цуврал. Hue API // баримт бичгээс уншиж, яг ашиглах командуудын талаар илүү дэлгэрэнгүй мэдээлэл авах боломжтой боловч ишлэлийн тэмдгийг зайлуулах ёстойг анхаарна уу.

String command = "{" on / ": true, \" hue / ": 50100, \" sat / ": 255, \" bri / ": 255, \" shifttime / ":"+String (санамсаргүй (15, 25))+"}"; setHue (1, тушаал);

command = "{" on / ": true, \" hue / ": 65280, \" sat / ": 255, \" bri / ": 255, \" shifttime / ":"+String (санамсаргүй (15, 25))+"}"; setHue (2, тушаал);

command = "{" hue / ": 65280, \" sat / ": 255, \" bri / ": 255, \" switchtime / ":"+String (санамсаргүй (15, 25))+"}"; setHue (1, тушаал);

command = "{" hue / ": 50100, \" sat / ": 255, \" bri / ": 255, \" shifttime / ":"+String (санамсаргүй (15, 25))+"}"; setHue (2, тушаал);

}

Алхам 17:

Дараагийн код нь логик байсан боловч Arduino -д Bool гэж бичих ёстой. Анх үйлчлүүлэгч гэдэг үгнээс болж маш их алдаа гардаг байсан. Тиймээс би үүнийг хараад зарим код нь "WifiClient клиент;" гэсэн мөрийг ашигласан болохыг олж мэдэв. Тиймээс би үүнийг ашиглаж байсан бөгөөд энэ нь ажилласан.

If мэдэгдэлд та client.print -ийг ихэвчлэн хардаг. Хэрэв та кодыг судалж үзвэл өмнө нь оруулсан URL хэсэг хэсгүүдэд хуваагдсаныг харах болно. Одоо кодоо өөрөө оруулна уу. Би 3 дахь LED гэрлээ сонгох хэрэгтэй болсон.

/ * setHue () бол бидний үндсэн командын функц бөгөөд үүнийг гэрлийн дугаар болон JSON форматаар * зөв форматласан командын мөрийг (үндсэндээ Javascript загварын хувьсагч * ба утгуудын массив) дамжуулах шаардлагатай бөгөөд дараа нь энгийн HTTP PUT хүсэлт гаргадаг. эхэнд заасан IP дээрх гүүр. */

bool setHue (int lightNum, String тушаал) {

WiFiClient үйлчлүүлэгч;

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

while (client.connected ()) {

client.print ("PUT /api /"); client.print (hueUsername); client.print ("/гэрэл/"); client.print (lightNum); // hueLight тэг дээр суурилсан, 1 client.println ("3/төлөв") нэмнэ; // энд би өнгөний нэр болон stateclient.print -ийг өөрчилсөн ("Хост:"); client.println (hueHubIP); client.print ("Агуулга-Урт:"); client.println (command.length ()); client.println ("Агуулгын төрөл: текст/энгийн; charset = UTF-8"); client.println (); // body client өмнө хоосон мөр.println (тушаал); // Hue тушаал

} client.stop (); үнэн рүү буцах; // тушаал гүйцэтгэсэн}

өөрөөр худлаа буцаах; // тушаал амжилтгүй боллоо}

Алхам 18:

Хоёрдахь логик дээр би хэдэн үг солихдоо ижил зүйлийг хийсэн. Ажилласан эсэхийг харахын тулд би үүнийг байршуулсан.

/* Таны логик гэрлийн өнөөгийн байдлаас шалтгаалах тохиолдолд туслах функц. * Энэ нь хэд хэдэн дэлхийн хувьсагчийг тохируулдаг бөгөөд та одоогоор гэрэл асаж байгаа эсэх, * болон өнгө гэх мэтийг шалгаж болно. Зөвхөн командыг илгээхэд шаардлагагүй */

bool getHue (int lightNum) {

WiFiClient үйлчлүүлэгч;

if (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 ("Агуулгын төрөл: application/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 (); үнэн рүү буцах; // capapt on, bri, hue} else false false; // уншихад алдаа гарсан, bri, hue}

Алхам 19:

Зураг
Зураг

Би Philips Hue -тай холбоо тогтоож чадна гэж бодож байна. Би мэдээлэл авдаг боловч үүнийг ашиглах шаардлагатай хэвээр байна.

Харамсалтай нь энэ нь миний кодлож чадах хэмжээнээс давсан байна. Хэрэв та хариултыг мэдэж байгаа бол, эсвэл засч залруулах шаардлагатай бодит алдаанууд байвал үүнийг сонсоход таатай байна.:-)

Зөвлөмж болгож буй: