Բովանդակություն:

IoT School Project Philips երանգ. 19 քայլ
IoT School Project Philips երանգ. 19 քայլ

Video: IoT School Project Philips երանգ. 19 քայլ

Video: IoT School Project Philips երանգ. 19 քայլ
Video: 15 Brilliant IoT Projects for Beginners in 2023! 2024, Նոյեմբեր
Anonim
IoT դպրոցական նախագիծ Philips Hue
IoT դպրոցական նախագիծ Philips Hue

Սա ձեռնարկ է, որը ես պետք է գրեի դպրոցի համար: Այն ամբողջական չէ և վստահ չեմ, որ կարող եք նույնիսկ օգտագործել այն: API- ի իմ իմացությունը նվազագույնն է: Մենք ցանկանում էինք ինտերակտիվ հայելի պատրաստել, որի մեջքին լուսարձակներ արձագանքում էին եղանակին, լույսը դրսից և այլն:

Ես նայեցի, թե ինչպես կարող եմ ծրագրավորել Philips Hue լամպը Arduino- ով: Սրանում ես բացատրում եմ իմ բոլոր քայլերը և որքան հեռու եմ հասել: Ինձ չի հաջողվել ծրագրավորել Hue- ն Arduino- ով, բայց կարծում եմ, որ դա լավ սկիզբ է:

Ինձ պետք էր սա. Arduino a hue լամպ կամուրջ Philips Hue ծրագրավորողի հաշիվ

Աղբյուրներ ՝ https://www.developers.meethue.com/documentation/g…https://github.com/bsalinas/ArduinoHuehttps://arduino-esp8266.readthedocs.io/hy/latest/e…https:// www.makeuseof.com/tag/control-philips-hue-…

Քայլ 1: Սկսեք

Նախքան API փաստաթղթերին մուտք գործելը, ձեզ հարկավոր է գրանցվել որպես մշակող: Անվճար է, բայց դուք պետք է ընդունեք պայմաններն ու պայմանները: Կարող եք պատրաստել այստեղ>

Քայլ 2: Hue հավելված

Ներբեռնեք պաշտոնական Philips Hue ծրագիրը: Միացրեք ձեր հեռախոսը այն ցանցին, որտեղ ցանկանում եք, որ միացված է Hue կամուրջը:

Քայլ 3: Միացրեք կամուրջը

Միացրեք ձեր կամուրջը ձեր ցանցի հետ և գործում է ճիշտ: Ստուգեք, որ սմարթֆոնների հավելվածը կարող է վերահսկել նույն ցանցի լույսերը: Այն պետք է լինի նույն Wi-Fi ցանցի վրա:

Քայլ 4: IP հասցե

Այնուհետեւ դուք պետք է բացահայտեք ձեր ցանցի կամրջի IP հասցեն: Ushրագրում կամրջին միանալու համար փորձեք հղումը և փորձեք վերահսկել լույսերը:

Քայլ 5:

Եթե ամեն ինչ աշխատում է, ապա գնացեք հավելվածի կարգավորումների ընտրացանկ: Գնացեք «Իմ կամուրջ», անցեք «Networkանցի կարգավորումներ»: Անջատեք DHCP անջատիչը և կտեսնեք կամրջի IP հասցեն: Նշեք IP հասցեն, ապա նորից միացրեք DHCP- ն:

Քայլ 6: Կարգավորեք ձեր երանգը

Վրիպազերծեք ձեր երանգը
Վրիպազերծեք ձեր երանգը

Երբ դա գրեցիր, պետք է կարգաբերել քո Երանգը: Այս քայլի համար ձեզ անհրաժեշտ է IP- հասցեն: Դուք պետք է այցելեք հաջորդ կայքը:

/debug/clip.html

Պատկերում ինտերֆեյսը այսպիսի տեսք կունենա: Սա ամբողջ վեբ տրաֆիկի և RESTful երանգի հիմքն է:

Այս տեղեկատվությունը ես ստացել եմ Philips Hue կայքի Restful ինտերֆեյսի մասին:

URL: սա իրականում երանգային համակարգի ներսում որոշակի ռեսուրսի (իրի) տեղական հասցեն է: Դա կարող է լինել լույս, լույսերի խումբ կամ շատ այլ բաներ: Սա այն օբյեկտն է, որի հետ դուք կշփվեք այս հրամանի շրջանակներում:

Մարմին. Սա հաղորդագրության այն հատվածն է, որը նկարագրում է, թե ինչ եք ուզում փոխել և ինչպես: Այստեղ մուտքագրում եք JSON ձևաչափով ռեսուրսի անունը և արժեքը, որը ցանկանում եք փոխել/ավելացնել:

Մեթոդ. Այստեղ դուք ունեք HTTP 4 մեթոդների ընտրություն, որոնք կարող են օգտագործել երանգի զանգը:

GET. Սա հրաման է հասցեագրված ռեսուրսի մասին ամբողջ տեղեկատվությունը վերցնելու համար

PUT. Սա հասցեագրված ռեսուրսը փոփոխելու հրաման է

ՓՈՍՏ. Սա հասցեագրված ռեսուրսի ներսում նոր ռեսուրս ստեղծելու հրաման է

LEԱՆTE. Սա հասցեագրված ռեսուրսի ջնջման հրահանգն է: Պատասխան. Այս ոլորտում դուք կտեսնեք ձեր հրամանի պատասխանը: Նաև JSON ձևաչափով:

Քայլ 7: Եկեք սկսենք

Եկեք սկսենք
Եկեք սկսենք

Այժմ մեզ պետք է պատահականորեն ստեղծված օգտանուն, որը կամուրջը ստեղծում է ձեզ համար: Դուք կստանաք մեկը ՝ լրացնելով սա:

Տեղադրեք URL- ը ՝

/api/

Մարմնի մեջ դնել.

և սեղմել GET

Այս հրամանը հիմնականում ասում է «խնդրում ենք ստեղծել նոր ռեսուրս ներսում /api» (որտեղ օգտվողների անունները նստած են) հետևյալ հատկություններով: Սկզբում դուք սխալ կստանաք, և դա այն պատճառով, որ դա Philips Hue- ի անվտանգության քայլն է: Կոճակը սեղմելով ՝ նրանք ապացուցում են, որ ֆիզիկական մուտք ունեք կամուրջ:

Քայլ 8:

Պատկեր
Պատկեր

Այժմ սեղմեք կամրջի կոճակը և կրկին կտտացրեք POST- ին:

Այժմ դուք կստանաք օգտվողի անուն, որը կամուրջը պատրաստել է ձեզ համար:

Քայլ 9: Եկեք ինչ -որ բան անենք լույսերի հետ

Եկեք ինչ -որ բան անենք լույսերի հետ
Եկեք ինչ -որ բան անենք լույսերի հետ

Պատճենեք ձեր օգտվողի անունը և դրեք այն հետևյալ տողում:

Տեղադրեք սա ձեր URL- ում

/api//լույսեր

Կտտացրեք GET

Դուք պետք է ստանաք JSON պատասխան ձեր համակարգի բոլոր լույսերով և դրանց անուններով:

Քայլ 10:

Պատկեր
Պատկեր

Ես որոշ փոխառություններ եմ վերցրել դպրոցից, այն, ինչ ես օգտագործում եմ, նույնն է ՝ 3 -ով: Ես ցանկանում եմ այս լույսի մասին կոնկրետ տեղեկատվություն:

Տեղադրեք սա արդեն ունեցած URL- ի կողքին.

/api//լույսեր/3

Կտտացրեք GET

Այժմ դուք ստանում եք Led 3 -ի մասին տեղեկությունները (եթե ունեք 1 -ի նման մեկ այլ թիվ, ապա կտեսնեք տվյալ մեկի մասին տեղեկատվություն):

Քայլ 11: Եկեք վերահսկենք լույսը

Եկեք վերահսկենք լույսը
Եկեք վերահսկենք լույսը

Դուք «նահանգում» տեսնում եք, որ իմ led- ը «միացված» է: Մենք ցանկանում ենք վերահսկել լույսը «վիճակում»:

Տեղադրեք սա այն URL- ի կողքին, որն արդեն ունեիք ՝ https:/// api// lights/ 3/ state

Հաջորդ տողը դրեք ՄԱՐՄԻՆ

Սեղմեք PUT

Այժմ ձեր լույսը կանհետանա: Մարմնի արժեքը փոխեք ճշմարիտի և լույսը նորից կվերածվի:

Քայլ 12:

Այժմ ամեն ինչ աշխատում է: Ես ուզում եմ դա անել իմ Arduino- ի հետ: Ես նայեցի այն հղմանը, որը տվել էր Philips Hue- ը `բաց գույնը փոխելու համար: Բայց դրա համար ձեզ հարկավոր է Python, ես երբեք չեմ աշխատել Python- ի հետ, ուստի ուրիշ բան եմ փնտրել:

Եթե ցանկանում եք նայել այս ծածկագրին, ես այստեղ Github- ի հղումն ունեմ.

github.com/bsalinas/ArduinoHue

Քայլ 13:

Ես նայեցի, թե ինչպես կարող եմ տեղեկատվություն ստանալ այս մշակողի կայքից իմ arduino- ին: Շատ ժամանակ ես լեզուն չէի հասկանում: Բայց ես որոշ կոդեր գտա Jamesեյմս Բրյուսի կայքում:

Սա կայքի հղումն է:

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

Քայլ 14:

Նախ տեսա, որ նա օգտագործում է Ethernet մալուխ: Ես ունեի միայն Hue Light էլեկտրական լամպ և Bridge a Arduino, և կոդի քիչ ըմբռնում: Որոշ ժամանակ պահանջվեց, որ ես հասկանայի նրա ծածկագիրը, բայց ես դեռ այն իսկապես չեմ հասկանում:

Ես առաջին անգամ ավելացրի այս գրադարանը ինտերնետի համար:

#ներառում

Սա ձեր ցանցի համար է (այն պետք է լինի նույնը, ինչ Hue լամպը)

const char* ssid = ""; // տեղադրել այստեղ ձեր WiFi ցանցի SSIDconst char* password = ""; // տեղադրեք այստեղ ձեր WiFi ցանցի գաղտնաբառը

Սրանք են ձեր կամրջի ID- ն և օգտվողի անունը, որը ձեզ տվել է ձեր կամուրջը: (Չգիտեմ, թե որտեղ է 80 -ը, բայց երբ որոշ հետազոտություններ կատարեցի, տեսա, որ այն օգտագործվում է ցանցերի համար):

// Երանգ հաստատունները const char hueHubIP = ""; // Hue hub IP const char hueUsername = ""; // Hue օգտվողի անունը const int hueHubPort = 80;

// Hue փոփոխականներ bool hueOn; // միացնել/անջատել int hueBri; // պայծառության արժեքը long hueHue; // երանգի արժեք String hueCmd; // Hue հրաման

անստորագիր երկար բուֆեր = 0; // բուֆեր ստացված տվյալների պահպանման համար unsigned long addr;

Քայլ 15:

Անվավեր կարգավորման համար ես ամենից շատն արել եմ ինտերնետ կապի համար: Այս ծածկագրում Arduino- ն փնտրում է, արդյոք կարող է միանալ ցանցին:

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

Serial.println ();

Serial.printf ("Միացում %s- ին", ssid);

WiFi.begin (ssid, գաղտնաբառ);

while (WiFi.status ()! = WL_CONNECTED) {

ուշացում (500);

Serial.print ("."); }

Serial.println («կապված»); }

Քայլ 16:

Jamesեյմսի օղակում ես տեսա, որ նա ուներ և այլ հայտարարություն: Բայց դա վերաբերում էր ethernet մալուխին, ուստի ես փորձեցի դա բաց թողնել: Ես նույնպես երբեմն փորձում էի հարմարեցնել այն, բայց դեռ չգիտեի շատ տվյալների հետ: Որոշ բաներ, որոնք ես հասկացա ծածկագրում, տողում այն տվյալներն են, որոնք տրվում են Hue լույսի ներքո:

դատարկ շրջան () {

// Չորս օրինակելի հրամանների շարք, որոնց գույնը մարում է երկու լույս կարմիրի և վարդագույնի միջև: Կարդացեք Hue API // փաստաթղթերը `օգտագործվող ճշգրիտ հրամանների վերաբերյալ ավելի մանրամասն տեղեկությունների համար, սակայն նշեք, որ գնանշման նշաններից պետք է խուսափել:

String command = "{" on / ": true, \" hue / ": 50100, \" sat / ": 255, \" bri / ": 255, \" transfertime / ":"+String (պատահական (15, 25))+"}"; setHue (1, հրաման);

command = "{" on / ": true, \" hue / ": 65280, \" sat / ": 255, \" bri / ": 255, \" tranzitime / ":"+String (պատահական (15, 25))+"}"; setHue (2, հրաման);

հրաման = "{" երանգ / ": 65280, \" նստել / ": 255, \" bri / ": 255, \" անցման ժամանակ / ":"+Լար (պատահական (15, 25))+"}"; setHue (1, հրաման);

հրաման = "{" երանգ / ": 50100, \" նստել / ": 255, \" bri / ": 255, \" անցման ժամանակ / ":"+Լար (պատահական (15, 25))+"}"; setHue (2, հրաման);

}

Քայլ 17:

Հաջորդ ծածկագիրը բուլյան էր, բայց Արդուինոյում պետք է գրել Bool: Սկզբում ես շատ սխալներ ստացա հաճախորդ բառի պատճառով: Այսպիսով, ես նայեցի այն և տեսա, որ ինչ -որ ծածկագիր օգտագործում է «WifiClient client;» տողը: Այսպիսով, ես դա օգտագործում էի և աշխատում էր:

If հայտարարության մեջ դուք հաճախ տեսնում եք client.print: Եթե նայեք ծածկագրին, կտեսնեք, որ ավելի վաղ մուտքագրած URL- ը բաժանված է կտորների: Այժմ մուտքագրեք ձեր սեփական կոդը: Ես ստիպված էի ընտրել իմ 3 -րդ LED լույսը:

/ * setHue () - ը մեր հիմնական հրամանատարական գործառույթն է, որին անհրաժեշտ է փոխանցել թեթև թիվ և * ճիշտ ձևաչափված հրամանի տող JSON ձևաչափով (հիմնականում ՝ փոփոխականների * և արժեքների Javascript ոճի զանգված): Այնուհետև կատարում է HTTP PUT- ի պարզ պահանջ կամուրջը սկզբում նշված IP- ով: */

bool setHue (int lightNum, լարային հրաման) {

WiFiClient հաճախորդ;

եթե (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 հաճախորդ;

եթե (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 (',') == "ճշմարիտ"); // եթե լույսը միացված է, փոփոխականը սահմանեք ճշմարիտ client.findUntil ("\" bri / ":", "\ 0"); hueBri = client.readStringUntil (',').toInt (); // փոփոխականը սահմանել պայծառության արժեքի client.findUntil ("\" երանգ / ":", "\ 0"); hueHue = client.readStringUntil (',').toInt (); // փոփոխականը սահմանել hue արժեքի ընդմիջման համար; // այլ լուսավոր հատկանիշներ դեռ չգրավելը}} client.stop (); վերադարձնել ճշմարիտ; // գրավված է, bri, hue} else return false; // սխալ կարդալիս, bri, hue}

Քայլ 19:

Պատկեր
Պատկեր

Կարծում եմ, որ կարող էի կապ հաստատել Philips Hue- ի հետ: Ես ստանում եմ տեղեկատվություն, բայց այն դեռ պետք է օգտագործվի:

Unfortunatelyավոք, սա դուրս է գալիս այն բանից, ինչ ես կարող եմ կոդավորել: Եթե դուք գիտեք պատասխանը, կամ եթե կան իրական սխալներ, որոնք շտկման կարիք ունեն, ես շատ կցանկանայի լսել այն::-)

Խորհուրդ ենք տալիս: