Cuprins:

Proiectul IoT School Philips Hue: 19 pași
Proiectul IoT School Philips Hue: 19 pași

Video: Proiectul IoT School Philips Hue: 19 pași

Video: Proiectul IoT School Philips Hue: 19 pași
Video: Omul păianjen al Marvel: Miles Morales (Filmul) 2024, Noiembrie
Anonim
Proiectul IoT School Philips Hue
Proiectul IoT School Philips Hue

Acesta este un manual pe care a trebuit să-l scriu pentru școală. Nu este complet și nu sunt sigur dacă îl puteți folosi. Cunoștințele mele despre API sunt minimul. Am vrut să realizăm o oglindă interactivă cu lumini pe spate care să reacționeze la vreme, lumină din exterior etc.

M-am uitat la modul în care aș putea programa o lampă Philips Hue cu un Arduino. În acest sens, vă explic toți pașii și cât de departe am ajuns. Nu am reușit să programez Hue cu Arduino, dar cred că este un început bun.

Am avut nevoie de acest lucru: o lampă Arduino a nuanță un cont de dezvoltator Philips Hue

Surse: 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-…

Pasul 1: Începeți

Înainte de a putea accesa documentația API, va trebui să vă înregistrați ca dezvoltator. Este gratuit, dar trebuie să acceptați termenii și condițiile. Puteți face unul aici>

Pasul 2: aplicația Hue

Descărcați aplicația oficială Philips Hue. Conectați-vă telefonul la rețeaua pe care doriți să o conecteze Hue Bridge.

Pasul 3: Conectați Podul

Conectați-vă bridge-ul la rețeaua dvs. și funcționează corect. Testați dacă aplicația smartphone poate controla luminile din aceeași rețea. Trebuie să fie pe aceeași rețea Wi-Fi.

Pasul 4: adresa IP

Apoi, trebuie să descoperiți adresa IP a podului din rețeaua dvs. Apăsați linkul pentru a vă conecta la podul din aplicație și încercați să controlați luminile.

Pasul 5:

Dacă totul funcționează, accesați meniul de setări din aplicație. Deci mergeți la „Podul meu”, accesați „Setări rețea”. Opriți comutatorul DHCP și vedeți adresa IP a podului. Rețineți adresa IP, apoi reporniți DHCP.

Pasul 6: Depanare Hue

Depanează nuanța ta
Depanează nuanța ta

Când ați notat acest lucru, trebuie să depanați Hue. Aveți nevoie de adresa IP pentru acest pas. Trebuie să vizitați următorul site.

/debug/clip.html

Interfața va arăta astfel în imagine. Aceasta este baza întregului trafic web și a interfeței RESTful Hue.

Am primit aceste informații despre interfața Restful a site-ului Philips Hue.

URL: aceasta este de fapt adresa locală a unei anumite resurse (lucru) din sistemul de nuanțe. Ar putea fi lumină, un grup de lumini sau multe alte lucruri. Acesta este obiectul pe care îl veți interacționa în cadrul acestei comenzi.

Un corp: aceasta este partea mesajului care descrie ce vrei să schimbi și cum. Aici introduceți, în format JSON, numele și valoarea resurselor pe care doriți să le modificați / adăugați.

O metodă: aici aveți de ales dintre cele 4 metode HTTP pe care apelul Hue le poate folosi.

OBȚINE: aceasta este comanda pentru a prelua toate informațiile despre resursa adresată

PUT: aceasta este comanda de modificare a unei resurse adresate

POST: aceasta este comanda pentru a crea o nouă resursă în interiorul resursei adresate

ȘTERGERE: aceasta este comanda pentru a șterge resursa adresată Răspuns: În această zonă, veți vedea răspunsul la comanda dvs. De asemenea, în format JSON.

Pasul 7: Să începem

Să începem
Să începem

Acum avem nevoie de un nume de utilizator generat aleatoriu, creat de pod pentru dvs. Veți obține unul completând acest lucru.

Introduceți adresa URL:

/ api /

Puneți în CORP:

și apăsați GET

Această comandă spune practic „vă rugăm să creați o resursă nouă în / api” (unde stau numele de utilizator) cu următoarele proprietăți. La început, veți primi o eroare și asta pentru că este pasul de securitate al Philips Hue. Prin apăsarea butonului, ei dovedesc că aveți acces fizic la pod.

Pasul 8:

Imagine
Imagine

Acum apăsați butonul de pe pod și faceți clic din nou pe POST.

Acum veți obține un nume de utilizator creat de pod pentru dvs.

Pasul 9: Să facem ceva cu luminile

Să facem ceva cu luminile
Să facem ceva cu luminile

Copiați numele de utilizator și puneți-l în rândul următor.

Puneți acest lucru în adresa URL

/ api / / lights

Apăsați GET

Ar trebui să primiți un răspuns JSON cu toate luminile din sistemul dvs. și numele acestora.

Pasul 10:

Imagine
Imagine

Am împrumutat niște Hue Lights de la școală, cel pe care îl folosesc este cel cu id 3. Vreau informații specifice despre această lumină.

Puneți acest lucru lângă adresa URL pe care o aveați deja:

/ api / / lights / 3

Apăsați GET

Acum primiți toate informațiile despre Led 3 (dacă aveți un alt număr ca 1, veți vedea informații despre acesta).

Pasul 11: Să controlăm lumina

Să Controlăm Lumina
Să Controlăm Lumina

Vedeți în „stare” că ledul meu este „pornit”. Vrem să controlăm lumina în „stare”.

Puneți acest lucru lângă adresa URL pe care o aveați deja: https:// / api / / lights / 3 / state

Puneți următoarea linie în CORP

Apăsați PUT

Acum lumina ta se va stinge! Schimbați valoarea din corp în adevărată și lumina se va aprinde din nou.

Pasul 12:

Acum totul funcționează. Vreau să fac asta cu Arduino. M-am uitat la link-ul dat de Philips Hue pentru a schimba culoarea luminii. Dar ai nevoie de Python pentru asta, nu am lucrat niciodată cu Python, așa că am căutat altceva.

Dacă doriți să vă uitați la acest cod, am link-ul Github aici:

github.com/bsalinas/ArduinoHue

Pasul 13:

Am căutat cum aș putea obține informații de pe acest site pentru dezvoltatori pe arduino. De cele mai multe ori nu înțelegeam limba. Dar am găsit un cod pe un site de la James Bruce.

Acesta este linkul către site.

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

Pasul 14:

Mai întâi am văzut că folosea un cablu Ethernet. Am avut doar un bec Hue și Bridge un Arduino și o mică înțelegere a codului. Mi-a luat ceva timp să-i înțeleg codul, dar încă nu-l înțeleg cu adevărat.

Am adăugat mai întâi această bibliotecă pentru internet.

#include

Aceasta este pentru rețeaua dvs. (trebuie să fie la fel ca becul Hue)

const char * ssid = ""; // pune aici rețeaua WiFi SSIDconst char * password = ""; // pune aici parola rețelei WiFi

Acestea sunt ID-ul podului dvs. și numele de utilizator pe care vi l-a dat podul. (Nu știu unde reprezintă 80, dar când am făcut unele cercetări am văzut că a fost folosit pentru rețele).

// Constantele de nuanță const char hueHubIP = ""; // Hue hub IP const char hueUsername = ""; // Hue nume de utilizator const int hueHubPort = 80;

// Variabile de nuanță bool hueOn; // on / off int hueBri; // luminozitate valoare lungă nuanță; // hue value String hueCmd; // Comanda Hue

tampon lung nesemnat = 0; // tampon pentru stocarea datelor primite nesemnate lung addr;

Pasul 15:

Pentru configurarea nulă, am făcut cel mai mult pentru conexiunea la internet. În acest cod, Arduino caută dacă se poate conecta la rețea.

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

Serial.println ();

Serial.printf ("Conectarea la% s", ssid);

WiFi.begin (ssid, parolă);

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

întârziere (500);

Serial.print ("."); }

Serial.println („conectat”); }

Pasul 16:

În bucla lui James, am văzut că avea o declarație If and else. Dar asta a fost pentru cablul ethernet, așa că am încercat să las asta. De asemenea, am încercat uneori să-l reglez, dar nu știam încă cu multe date. Unele lucruri din cod le-am înțeles, în șir sunt datele care sunt date luminii Hue.

bucla nulă () {

// O serie de patru exemple de comenzi, care culoare estompează două lumini între roșu și roz. Citiți în documentația Hue API // pentru mai multe detalii despre comenzile exacte care trebuie utilizate, dar rețineți că ghilimele trebuie evitate.

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

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

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

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

}

Pasul 17:

Următorul cod a fost un boolean, dar în Arduino trebuie să scrieți Bool. La început, am primit multe erori din cauza cuvântului client. Așa că am căutat-o și am văzut că un anumit cod folosea linia „client WifiClient;”. Așa că l-am obișnuit și a funcționat.

În declarația if vedeți adesea client.print. Dacă vă uitați în cod, veți vedea că adresa URL pe care ați introdus-o anterior este împărțită în bucăți. Acum introduceți propriul cod. A trebuit să-mi aleg a treia lumină LED.

/ * setHue () este funcția noastră principală de comandă, care trebuie să fie transmisă un număr ușor și un șir de comandă * formatat corespunzător în format JSON (practic o matrice în stil Javascript de variabile * și valori. Apoi face o solicitare simplă HTTP PUT către Podul la adresa IP specificată la început. * /

bool setHue (int lightNum, comanda String) {

Client WiFiClient;

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

while (client.connected ()) {

client.print ("PUT / api /"); client.print (hueUsername); client.print ("/ lights /"); client.print (lightNum); // hueLight zero based, add 1 client.println ("3 / state"); // aici am schimbat numele nuanței și stateclient.print ("Gazdă:"); client.println (hueHubIP); client.print („Lungime conținut:”); client.println (command.length ()); client.println ("Content-Type: text / plain; charset = UTF-8"); client.println (); // linie necompletată înaintea corpului client.println (comandă); // Comanda Hue

} client.stop (); întoarce-te adevărat; // comanda executată}

altfel returnează fals; // comanda a eșuat}

Pasul 18:

La al doilea Boolean, am făcut același lucru cu schimbarea unor cuvinte. L-am încărcat pentru a vedea dacă a funcționat.

/ * O funcție de ajutor în cazul în care logica dvs. depinde de starea curentă a luminii. * Aceasta setează un număr de variabile globale pe care le puteți verifica pentru a afla dacă o lumină este sau nu în prezent * și nuanța etc. Nu este necesar doar pentru a trimite comenzi * /

bool getHue (int lightNum) {

Client WiFiClient;

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

client.print ("GET / api /"); client.print (hueUsername); client.print ("/ lights /"); client.print (lightNum); client.println ("3 / state"); client.print ("Gazdă:"); client.println (hueHubIP); client.println ("Tipul conținutului: aplicație / json"); client.println ("păstrați-vii"); client.println ();

while (client.connected ()) {if (client.available ()) {client.findUntil ("\" on / ":", "\ 0"); hueOn = (client.readStringUntil (',') == "adevărat"); // dacă lumina este aprinsă, setați variabila la adevărat client.findUntil ("\" bri / ":", "\ 0"); hueBri = client.readStringUntil (',').toInt (); // setați variabila la valoarea de luminozitate client.findUntil ("\" nuanță / ":", "\ 0"); hueHue = client.readStringUntil (',').toInt (); // setați variabila la nuanță de valoare; // încă nu captează alte atribute ușoare}} client.stop (); întoarce-te adevărat; // capture on, bri, hue} else return false; // eroare la citire, bri, nuanță}

Pasul 19:

Imagine
Imagine

Cred că aș putea face o legătură cu Philips Hue. Primesc informații, dar totuși trebuie folosite.

Din păcate, acest lucru depășește ceea ce pot codifica. Dacă știți răspunsul sau dacă există erori reale care trebuie corectate, mi-ar plăcea să-l aud.:-)

Recomandat: