Satura rādītājs:

IoT skolas projekts Philips Hue: 19 soļi
IoT skolas projekts Philips Hue: 19 soļi

Video: IoT skolas projekts Philips Hue: 19 soļi

Video: IoT skolas projekts Philips Hue: 19 soļi
Video: Потрясающий заброшенный замок XVIII века во Франции | ПОЛНЫЙ СОКРОВИЩ 2024, Novembris
Anonim
IoT skolas projekts Philips Hue
IoT skolas projekts Philips Hue

Šī ir rokasgrāmata, kas man bija jāraksta skolai. Tas nav pilnīgs, un es neesmu pārliecināts, vai jūs to pat varat izmantot. Manas zināšanas par API ir minimums. Mēs vēlējāmies izveidot interaktīvu spoguli ar gaismām aizmugurē, kas reaģēja uz laika apstākļiem, gaismu no ārpuses utt.

Es paskatījos, kā es varētu programmēt Philips Hue lampu ar Arduino. Šajā es izskaidroju visus savus soļus un to, cik tālu esmu nonācis. Man nav izdevies programmēt Hue ar Arduino, bet es domāju, ka tas ir labs sākums.

Man ir vajadzīgs šis: Arduino hue lampa un tilta Philips Hue izstrādātāja konts

Avoti: 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. darbība. Sāciet darbu

Lai piekļūtu API dokumentācijai, jums jāreģistrējas kā izstrādātājam. Tas ir bez maksas, taču jums ir jāpiekrīt noteikumiem un nosacījumiem. To varat izveidot šeit>

2. darbība: lietotne Hue

Lejupielādējiet oficiālo Philips Hue lietotni. Pievienojiet tālruni tīklam, kurā vēlaties ieslēgt Hue Bridge.

3. solis: savienojiet tiltu

Savienojiet savu tiltu ar tīklu un tas darbojas pareizi. Pārbaudiet, vai viedtālruņa lietotne var kontrolēt gaismas tajā pašā tīklā. Tam jābūt vienā Wi-Fi tīklā.

4. darbība: IP adrese

Tad jums ir jāatklāj sava tīkla tilta IP adrese. Nospiediet saiti, lai lietotnē izveidotu savienojumu ar tiltu un mēģinātu kontrolēt gaismas.

5. darbība:

Ja viss darbojas, dodieties uz lietotnes iestatījumu izvēlni. Pēc tam dodieties uz sadaļu “Mans tilts”, dodieties uz sadaļu “Tīkla iestatījumi”. Izslēdziet DHCP slēdzi, un jūs redzat tilta IP adresi. Ievērojiet IP adresi un pēc tam atkal ieslēdziet DHCP.

6. darbība: atkļūdojiet savu nokrāsu

Atkļūdojiet savu nokrāsu
Atkļūdojiet savu nokrāsu

Kad jūs to pierakstījāt, jums ir jāatjauno jūsu nokrāsa. Lai to izdarītu, jums ir nepieciešama IP adrese. Jums jāapmeklē nākamā vietne.

/debug/clip.html

Interfeiss attēlā izskatīsies šādi. Tas ir visas tīmekļa trafika un nokrāsas RESTful saskarnes pamats.

Es saņēmu šo informāciju par Philips Hue vietnes mierīgo saskarni.

URL: šī faktiski ir konkrēta resursa (lietas) vietējā adrese nokrāsu sistēmā. Tas varētu būt gaisma, gaismas grupa vai daudzas citas lietas. Šis ir objekts, ar kuru jūs mijiedarbosities šīs komandas ietvaros.

Pamatteksts: šī ir ziņojuma daļa, kurā aprakstīts, ko un kā vēlaties mainīt. Šeit JSON formātā ievadiet resursa nosaukumu un vērtību, kuru vēlaties mainīt/pievienot.

Metode: šeit jūs varat izvēlēties 4 HTTP metodes, kuras var izmantot nokrāsas zvans.

GET: šī ir komanda, lai ielādētu visu informāciju par adresēto resursu

PUT: šī ir komanda, lai mainītu adresētu resursu

POST: šī ir komanda, lai adresētā resursā izveidotu jaunu resursu

DZĒST: šī ir komanda izdzēst adresēto resursu Atbilde: Šajā apgabalā redzēsit atbildi uz savu komandu. Arī JSON formātā.

7. darbība. Sāksim darbu

Sāksim
Sāksim

Tagad mums ir nepieciešams nejauši ģenerēts lietotājvārds, ko tilts jums izveido. Jūs to iegūsit, aizpildot šo.

Ievadiet URL:

/api/

Ielieciet BODY:

un nospiediet GET

Šī komanda būtībā saka "lūdzu, izveidojiet jaunu resursu iekšpusē /api" (kur atrodas lietotājvārdi) ar šādām īpašībām. Sākumā jūs saņemsit kļūdu, un tas ir tāpēc, ka tas ir Philips Hue drošības solis. Nospiežot pogu, viņi pierāda, ka jums ir fiziska piekļuve tiltam.

8. darbība

Attēls
Attēls

Tagad nospiediet pogu uz tilta un vēlreiz noklikšķiniet uz POST.

Tagad jūs saņemsiet lietotājvārdu, ko tilts jums izveidoja.

9. solis: darīsim kaut ko ar gaismām

Darīsim kaut ko ar gaismām
Darīsim kaut ko ar gaismām

Kopējiet savu lietotājvārdu un ievietojiet to nākamajā rindā.

Ievietojiet to savā URL

/api//gaismas

Nospiediet GET

Jums vajadzētu saņemt JSON atbildi ar visām jūsu sistēmas gaismām un to nosaukumiem.

10. darbība:

Attēls
Attēls

Es aizņēmos dažus Hue Lights no skolas, es izmantoju to, kura ID ir 3. Es gribu konkrētu informāciju par šo gaismu.

Ievietojiet to blakus jau esošajam URL:

/api//gaismas/3

Nospiediet GET

Tagad jūs saņemat visu informāciju par Led 3 (ja jums ir cits numurs, piemēram, 1, jūs redzēsit informāciju par to).

11. solis: kontrolēsim gaismu

Kontrolēsim gaismu
Kontrolēsim gaismu

Jūs redzat "stāvoklī", ka mans LED ir ieslēgts. Mēs vēlamies kontrolēt gaismu "stāvoklī".

Ievietojiet to blakus jau esošajam URL: https:/// api// lights/ 3/ state

Ievietojiet nākamo rindu BODY

Nospiediet PUT

Tagad jūsu gaisma izslēgsies! Mainiet ķermeņa vērtību uz patiesu, un gaisma atkal iedegsies.

12. solis:

Tagad viss darbojas, es vēlos to darīt ar savu Arduino. Es paskatījos saiti, ko deva Philips Hue, lai mainītu gaismas krāsu. Bet jums ir nepieciešams Python, es nekad neesmu strādājis ar Python, tāpēc es meklēju kaut ko citu.

Ja vēlaties apskatīt šo kodu, man ir Github saite šeit:

github.com/bsalinas/ArduinoHue

13. darbība

Es paskatījos, kā es varētu iegūt informāciju no šīs izstrādātāju vietnes savam arduino. Lielāko daļu laika es nesapratu valodu. Bet es atradu kādu kodu Džeimsa Brūsa vietnē.

Šī ir saite uz vietni.

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

14. darbība:

Vispirms es redzēju, ka viņš izmanto Ethernet kabeli. Man bija tikai Hue gaismas spuldze un tilts Arduino, un maz sapratu kodu. Pagāja kāds laiks, līdz es sapratu viņa kodu, bet es joprojām to īsti nesaprotu.

Es pirmo reizi pievienoju šo bibliotēku internetam.

#iekļaut

Tas attiecas uz jūsu tīklu (tam jābūt tādam pašam kā Hue Light spuldzei)

const char* ssid = ""; // ielieciet šeit savu WiFi tīklu SSIDconst char* password = ""; // ielieciet šeit savu WiFi tīkla paroli

Šie ir jūsu tilta ID un tilta lietotājvārds. (Es nezinu, kur ir 80, bet, veicot kādu pētījumu, es redzēju, ka tas tika izmantots tīkliem).

// Hue konstantes const char hueHubIP = ""; // Hue hub IP const char hueUsername = ""; // Hue lietotājvārds const int hueHubPort = 80;

// Hue mainīgie bool hueOn; // ieslēgts/izslēgts int hueBri; // spilgtuma vērtība long hueHue; // nokrāsas vērtība String hueCmd; // Hue komanda

neparakstīts garš buferis = 0; // buferis saņemtajai datu krātuvei neparakstīts garš addr;

15. darbība:

Tukšuma iestatīšanai es visvairāk darīju interneta savienojuma dēļ. Šajā kodā Arduino meklē, vai viņš var izveidot savienojumu ar tīklu.

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

Sērijas.println ();

Serial.printf ("Savienojuma izveide ar %s", ssid);

WiFi.begin (ssid, parole);

kamēr (WiFi.status ()! = WL_CONNECTED) {

kavēšanās (500);

Sērijas nospiedums ("."); }

Serial.println ("savienots"); }

16. darbība:

Džeimsa cilpā es redzēju, ka viņam ir paziņojums Ja un citādi. Bet tas bija par Ethernet kabeli, tāpēc es centos to atstāt. Es arī dažreiz mēģināju to pielāgot, bet es vēl nezināju ar daudziem datiem. Dažas lietas kodā, ko es sapratu, virknē ir dati, kas tiek piešķirti nokrāsas gaismai.

void loop () {

// Četru paraugu komandu sērija, kuras krāsa izgaismo divas gaismas starp sarkano un rozā. Izlasiet Hue API // dokumentāciju, lai iegūtu sīkāku informāciju par precīzām izmantojamām komandām, taču ņemiet vērā, ka pēdiņās ir jābūt atstarpēm.

String komanda = "{" on / ": true, \" hue / ": 50100, \" sat / ": 255, \" bri / ": 255, \" pārejas laiks / ":"+virkne (nejauša (15, 25))+"}"; setHue (1, komanda);

command = "{" on / ": true, \" nokrāsa / ": 65280, \" sat / ": 255, \" bri / ": 255, \" pārejas laiks / ":"+virkne (nejauša (15, 25))+"}"; setHue (2, komanda);

command = "{" nokrāsa / ": 65280, \" sat / ": 255, \" bri / ": 255, \" pārejas laiks / ":"+virkne (nejauša (15, 25))+"}"; setHue (1, komanda);

command = "{" nokrāsa / ": 50100, \" sat / ": 255, \" bri / ": 255, \" pārejas laiks / ":"+String (random (15, 25))+"}"; setHue (2, komanda);

}

17. darbība:

Nākamais kods bija Būla, bet Arduino ir jāraksta Bool. Sākumā es saņēmu daudz kļūdu vārda klients dēļ. Tāpēc es to uzmeklēju un redzēju, ka kāds kods izmanto rindu "WifiClient klients;". Tāpēc es to izmantoju, un tas strādāja.

Ja paziņojumā jūs bieži redzat client.print. Ja ieskatīsities kodā, redzēsit, ka iepriekš ievadītais URL ir sadalīts gabalos. Tagad ievadiet savu kodu. Man bija jāizvēlas trešā LED gaisma.

/ * setHue () ir mūsu galvenā komandu funkcija, kurai ir jānodod gaismas skaitlis un * pareizi formatēta komandu virkne JSON formātā (būtībā Javascript stila mainīgo * un vērtību masīvs. Pēc tam tiek nosūtīts vienkāršs HTTP PUT pieprasījums tilts sākumā norādītajā IP. */

bool setHue (int lightNum, String komanda) {

WiFiClient klients;

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

while (client.connected ()) {

client.print ("PUT /api /"); client.print (hueUsername); client.print ("/gaismas/"); client.print (lightNum); // hueLight nulles pamatā, pievienojiet 1 client.println ("3/state"); // šeit es mainīju nokrāsas nosaukumu un stateclient.print ("Host:"); client.println (hueHubIP); client.print ("Content-Length:"); client.println (command.length ()); client.println ("Satura tips: teksts/vienkāršs; rakstzīmju kopa = UTF-8"); klients.println (); // tukša rinda pirms ķermeņa klienta.println (komanda); // Hue komanda

} client.stop (); atgriezties patiesi; // komanda izpildīta}

cits atgriežas nepatiess; // komanda neizdevās}

18. darbība:

Otrajā Būla laikā es darīju to pašu, mainot dažus vārdus. Es to augšupielādēju, lai redzētu, vai tas darbojas.

/* Palīga funkcija gadījumā, ja jūsu loģika ir atkarīga no gaismas pašreizējā stāvokļa. * Tas nosaka vairākus globālos mainīgos, kurus varat pārbaudīt, lai noskaidrotu, vai pašlaik deg vai neiedegas lampiņa *, kā arī nokrāsu utt. Nav nepieciešams tikai komandu izsūtīšanai */

bool getHue (int lightNum) {

WiFiClient klients;

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

client.print ("GET /api /"); client.print (hueUsername); client.print ("/gaismas/"); client.print (lightNum); client.println ("3/valsts"); client.print ("Saimnieks:"); client.println (hueHubIP); client.println ("Satura tips: lietojumprogramma/json"); client.println ("uzturēt dzīvu"); klients.println ();

while (client.connected ()) {if (client.available ()) {client.findUntil ("\" on / ":", "\ 0"); hueOn = (client.readStringUntil (',') == "true"); // ja iedegas gaisma, iestatiet mainīgo uz true client.findUntil ("\" bri / ":", "\ 0"); hueBri = client.readStringUntil (',').toInt (); // iestatīt mainīgo uz spilgtuma vērtību client.findUntil ("\" hue / ":", "\ 0"); hueHue = client.readStringUntil (',').toInt (); // iestatīt mainīgo uz nokrāsas vērtības pārtraukumu; // vēl nefiksē citus gaismas atribūtus}} client.stop (); atgriezties patiesi; // notverts, bri, hue} else return false; // kļūda lasot, bri, nokrāsa}

19. darbība:

Attēls
Attēls

Es domāju, ka es varētu izveidot savienojumu ar Philips Hue. Es saņemu informāciju, bet tā joprojām ir jāizmanto.

Diemžēl tas pārsniedz to, ko es varu kodēt. Ja jūs zināt atbildi vai ja ir reālas kļūdas, kuras ir jālabo, es labprāt to uzzinātu.:-)

Ieteicams: