Talaan ng mga Nilalaman:

IoT School Project Philips Hue: 19 Mga Hakbang
IoT School Project Philips Hue: 19 Mga Hakbang

Video: IoT School Project Philips Hue: 19 Mga Hakbang

Video: IoT School Project Philips Hue: 19 Mga Hakbang
Video: REVAN - THE COMPLETE STORY 2024, Nobyembre
Anonim
IoT School Project Philips Hue
IoT School Project Philips Hue

Ito ay isang manwal na kailangan kong isulat para sa paaralan. Hindi ito kumpleto at hindi ako sigurado kung magagamit mo man ito. Ang aking kaalaman sa mga API ay ang pinakamaliit na minimum. Nais naming gumawa ng isang interactive na salamin na may mga ilaw sa likuran na tumutugon sa panahon, ilaw mula sa labas, atbp.

Tiningnan ko kung paano ako makakapagprogram ng isang lampara ng Philips Hue na may isang Arduino. Sa ito, ipinapaliwanag ko ang lahat ng aking mga hakbang at kung gaano ako kalayo. Hindi ako nagtagumpay sa pagprograma ng Hue kasama ang Arduino ngunit sa palagay ko ito ay isang magandang pagsisimula.

Kailangan ko ito: isang Arduino isang hue lampara isang tulay ng developer ng Philips Hue account

Mga Pinagmulan: 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-…

Hakbang 1: Magsimula

Bago mo ma-access ang dokumentasyon ng API, kakailanganin mong magparehistro bilang isang developer. Ito ay libre, ngunit kailangan mong tanggapin ang mga tuntunin at kundisyon. Maaari kang gumawa ng isa dito>

Hakbang 2: Hue App

I-download ang opisyal na Philips Hue App. Ikonekta ang iyong telepono sa network na nais mong i-on ang tulay ng Hue.

Hakbang 3: Ikonekta ang Bridge

Ikonekta ang iyong tulay sa iyong network at gumagana nang maayos. Subukan na maaaring makontrol ng smartphone app ang mga ilaw sa parehong network. Dapat itong nasa parehong Wi-Fi network.

Hakbang 4: IP Address

Pagkatapos ay kailangan mong tuklasin ang IP address ng tulay sa iyong network. Itulak ang link upang kumonekta sa tulay sa app at subukang kontrolin ang mga ilaw.

Hakbang 5:

Kung gumagana ang lahat pagkatapos ay pumunta sa menu ng mga setting sa app. Kaysa sa "My Bridge", pumunta sa "Mga setting ng network". Patayin ang toggle ng DHCP at makikita mo ang IP address ng tulay. Tandaan ang IP address, pagkatapos ay buksan muli ang DHCP.

Hakbang 6: I-debug ang Iyong Kulay

I-debug ang Iyong Kulay
I-debug ang Iyong Kulay

Kapag isinulat mo iyon kailangan mong i-debug ang iyong Hue. Kailangan mo ng IP-Address para sa hakbang na ito. Kailangan mong bisitahin ang susunod na site.

/debug/clip.html

Ang interface ay magiging ganito sa imahe. Ito ang batayan ng lahat ng trapiko sa web at ng kulay na RESTful interface.

Nakuha ko ang impormasyong ito tungkol sa Restful interface ng site ng Philips Hue.

URL: ito talaga ang lokal na address ng isang tukoy na mapagkukunan (bagay) sa loob ng sistema ng kulay. Maaari itong maging ilaw, isang pangkat ng mga ilaw o maraming bagay. Ito ang bagay na makikipag-ugnay ka sa loob ng utos na ito.

Isang katawan: ito ang bahagi ng mensahe na naglalarawan kung ano ang nais mong baguhin at kung paano. Dito ipinasok mo, sa format na JSON, ang pangalan ng mapagkukunan at halagang nais mong baguhin / idagdag.

Isang pamamaraan: dito mayroon kang pagpipilian ng 4 na mga pamamaraan ng HTTP na maaaring magamit ng hue call.

GET: ito ang utos na kunin ang lahat ng impormasyon tungkol sa tinukoy na mapagkukunan

PUT: ito ang utos na baguhin ang isang direktang mapagkukunan

POST: ito ang utos na lumikha ng isang bagong mapagkukunan sa loob ng direktang mapagkukunan

TANGGAL: ito ang utos na tanggalin ang tinugunan na mapagkukunan Tugon: Sa lugar na ito, makikita mo ang tugon sa iyong utos. Gayundin sa format na JSON.

Hakbang 7: Magsimula Na Tayo

Magsimula na tayo
Magsimula na tayo

Ngayon kailangan namin ng isang random na nabuong username na nilikha ng tulay para sa iyo. Makakakuha ka ng isa sa pamamagitan ng pagpuno nito.

Ilagay sa URL:

/ api /

Ilagay sa BODY:

at pindutin ang GET

Karaniwang sinasabi ng utos na ito na "mangyaring lumikha ng isang bagong mapagkukunan sa loob / api" (kung saan nakaupo ang mga username) kasama ang mga sumusunod na katangian. Sa una, makakakuha ka ng isang error, at iyon ay dahil ito ang hakbang sa seguridad ng Philips Hue. Sa pamamagitan ng pagpindot sa pindutan napatunayan nila na mayroon kang pisikal na pag-access sa tulay.

Hakbang 8:

Larawan
Larawan

Ngayon Pindutin ang pindutan sa Bridge at i-click muli ang POST.

Ngayon makakakuha ka ng isang username na ginawa ng tulay para sa iyo.

Hakbang 9: Gumawa Tayo ng Isang bagay Sa Mga Ilaw

Gumawa Tayo ng Isang bagay Sa Mga Ilaw
Gumawa Tayo ng Isang bagay Sa Mga Ilaw

Kopyahin ang iyong username at ilagay ito sa sumusunod na linya.

Ilagay ito sa iyong URL

/ api / / ilaw

Pindutin ang GET

Dapat kang makakuha ng isang tugon sa JSON sa lahat ng mga ilaw sa iyong system at kanilang mga pangalan.

Hakbang 10:

Larawan
Larawan

Nanghiram ako ng ilang Hue Lights mula sa paaralan, ang ginagamit ko ay ang may id 3. Nais kong tiyak na impormasyon tungkol sa ilaw na ito.

Ilagay ito sa tabi ng URL na mayroon ka:

/ api / / ilaw / 3

Pindutin ang GET

Ngayon makukuha mo ang impormasyon tungkol sa Led 3 (kung mayroon kang ibang numero tulad ng 1 makikita mo ang impormasyon tungkol sa isang iyon).

Hakbang 11: Kontrolin Natin ang Liwanag

Kontrolin Natin ang Liwanag
Kontrolin Natin ang Liwanag

Kita mo sa "estado" na ang aking pinuno ay "on". Nais naming kontrolin ang ilaw sa "estado".

Ilagay ito sa tabi ng URL na mayroon ka na: https:// / api / / ilaw / 3 / estado

Ilagay ang susunod na linya sa BODY

Pindutin ang PUT

Ngayon ang iyong ilaw ay papatayin! Baguhin ang halaga sa katawan sa totoo at ang ilaw ay muling magbubukas.

Hakbang 12:

Ngayon gumagana ang lahat nais kong gawin ito sa aking Arduino. Tiningnan ko ang link na ibinigay ng Philips Hue upang mabago ang kulay ng ilaw. Ngunit kailangan mo ng Python para dito, hindi ako nakipagtulungan sa Python kaya't naghanap ako ng iba pa.

Kung nais mong tingnan ang code na ito mayroon akong link na Github dito:

github.com/bsalinas/ArduinoHue

Hakbang 13:

Tiningnan ko kung paano ako makakakuha ng impormasyon mula sa developer site na ito patungo sa aking arduino. Karamihan sa mga oras na hindi ko maintindihan ang wika. Ngunit nakakita ako ng ilang code sa isang website mula kay James Bruce.

Ito ang link sa website.

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

Hakbang 14:

Una kong nakita na gumagamit siya ng isang Ethernet cable. Mayroon lamang akong isang bombilya na Hue Light at Bridge ang isang Arduino, at kaunting pag-unawa sa code. Medyo natagalan para maintindihan ko ang code niya, pero hindi ko pa talaga maintindihan.

Una kong idinagdag ang library na ito para sa internet.

# isama

Ito ay para sa iyong network (dapat itong kapareho ng Hue Light bombilya)

const char * ssid = ""; // ilagay dito ang iyong WiFi network SSIDconst char * password = ""; // ilagay dito ang iyong password sa WiFi network

Ito ang ID ng iyong Bridge at ang username na ibinigay sa iyo ng iyong tulay. (Hindi ko alam kung saan nangangahulugang ang 80 ngunit nang gumawa ako ng ilang pagsasaliksik nakita ko na ginamit ito para sa mga network).

// Hue Constants const char hueHubIP = ""; // Hue hub IP const char hueUsername = ""; // Hue username const int hueHubPort = 80;

// variable ng Hue bool hueOn; // on / off int hueBri; // ang halaga ng ningning hueHue; // hue halaga String hueCmd; // utos ng Hue

unsigned mahabang buffer = 0; // buffer para sa natanggap na imbakan ng data na hindi naka-sign na mahabang addr;

Hakbang 15:

Para sa void setup, ginawa ko ang pinaka para sa koneksyon sa internet. Sa code na ito, tinitingnan ng Arduino kung makakonekta siya sa network.

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

Serial.println ();

Serial.printf ("Kumokonekta sa% s", ssid);

WiFi.begin (ssid, password);

habang (WiFi.status ()! = WL_CONNected) {

pagkaantala (500);

Serial.print ("."); }

Serial.println ("konektado"); }

Hakbang 16:

Sa loop ni James, nakita ko na mayroon siyang pahayag na Kung at iba pa. Ngunit iyon ay para sa ethernet cable, kaya't sinubukan kong iwanan ito. Sinubukan ko din minsan na ayusin ito, ngunit hindi ko pa alam na may maraming data. Ang ilang mga bagay sa code na naintindihan ko, sa string ay ang data na ibinibigay sa ilaw ng Hue.

void loop () {

// Isang serye ng apat na sample na utos, kung aling kulay ang kumukupas sa dalawang ilaw sa pagitan ng pula at rosas. Basahin ang dokumentasyon sa Hue API // para sa higit pang mga detalye sa eksaktong mga utos na gagamitin, ngunit tandaan na ang mga marka ng quote ay dapat na makatakas.

String command = "{" on / ": true, \" hue / ": 50100, \" sat / ": 255, \" bri / ": 255, \" transitiontime / ":" + String (random (15, 25)) + "}"; setHue (1, utos);

command = "{" on / ": true, \" hue / ": 65280, \" sat / ": 255, \" bri / ": 255, \" transitiontime / ":" + String (random (15, 25)) + "}"; setHue (2, utos);

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

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

}

Hakbang 17:

Ang susunod na code ay isang Boolean, ngunit sa Arduino kailangan mong isulat ang Bool. Sa una, marami akong nakuhang mga error dahil sa salitang kliyente. Kaya't tiningnan ko ito at nakita kong may ilang code na gumamit ng linyang "WifiClient client;". Kaya ginamit ko ito at gumana ito.

Sa pahayag na kung madalas mong makita ang client.print. Kung titingnan mo ang code, makikita mo na ang URL na inilagay mo kanina ay nahahati sa mga piraso. Ipasok ngayon ang iyong sariling code. Kailangan kong pumili ng aking ika-3 LED light.

/ * setHue () ang aming pangunahing pagpapaandar ng utos, na kailangang maipasa sa isang light number at isang * maayos na naka-format na command string sa format na JSON (karaniwang isang Javascript style array ng mga variable * at halaga. Gumagawa ito pagkatapos ng isang simpleng kahilingan sa HTTP PUT na ang Bridge sa IP na tinukoy sa simula. * /

bool setHue (int lightNum, String command) {

Client ng WiFiClient;

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

habang (client.connected ()) {

client.print ("PUT / api /"); client.print (hueUsername); client.print ("/ ilaw /"); client.print (lightNum); // hueLight zero based, magdagdag ng 1 client.println ("3 / estado"); // dito binago ko ang pangalan ng kulay at stateclient.print ("Host:"); client.println (hueHubIP); client.print ("Haba ng Nilalaman:"); client.println (command.length ()); client.println ("Uri ng Nilalaman: teksto / payak; charset = UTF-8"); client.println (); // blank line bago ang body client.println (utos); // utos ng Hue

} client.stop (); bumalik totoo; // command pinaandar}

kung hindi man ay bumalik nang hindi totoo; // fail failed}

Hakbang 18:

Sa pangalawang Boolean, ginawa ko ang parehong bagay sa pagbabago ng ilang mga salita. In-upload ko ito upang makita kung ito ay gumagana.

/ * Isang pagpapaandar ng katulong kung sakaling ang iyong lohika ay nakasalalay sa kasalukuyang estado ng ilaw. * Nagtatakda ito ng isang bilang ng mga pandaigdigang variable na maaari mong suriin upang malaman kung ang isang ilaw ay kasalukuyang nakabukas o hindi * at ang kulay atbp. Hindi kinakailangan upang magpadala lamang ng mga utos * /

bool getHue (int lightNum) {

Client ng WiFiClient;

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

client.print ("GET / api /"); client.print (hueUsername); client.print ("/ ilaw /"); client.print (lightNum); client.println ("3 / estado"); client.print ("Host:"); client.println (hueHubIP); client.println ("Uri ng nilalaman: application / json"); client.println ("panatilihing buhay"); client.println ();

habang (client.connected ()) {if (client.available ()) {client.findUntil ("\" on / ":", "\ 0"); hueOn = (client.readStringUntil (',') == "totoo"); // kung ang ilaw ay nakabukas, itakda ang variable sa totoong client.findUntil ("\" bri / ":", "\ 0"); hueBri = client.readStringUntil (',').toInt (); // set variable to brightness value client.findUntil ("\" hue / ":", "\ 0"); hueHue = client.readStringUntil (',').toInt (); // itakda ang variable sa hue break ng halaga; // hindi nakakakuha ng iba pang mga ilaw na katangian}} client.stop (); bumalik totoo; // capture on, bri, hue} iba pa ay bumalik nang hindi totoo; // error reading on, bri, hue}

Hakbang 19:

Larawan
Larawan

Sa palagay ko maaari akong gumawa ng isang koneksyon sa Philips Hue. Nakatanggap ako ng impormasyon ngunit kailangan pa ring gamitin.

Sa kasamaang palad, lumalagpas ito sa maaari kong i-code. Kung alam mo ang sagot, o kung may totoong mga pagkakamali na kailangang maitama, gusto kong marinig ito.:-)

Inirerekumendang: