Sadržaj:

Školski projekt IoT Philips Hue: 19 koraka
Školski projekt IoT Philips Hue: 19 koraka

Video: Školski projekt IoT Philips Hue: 19 koraka

Video: Školski projekt IoT Philips Hue: 19 koraka
Video: REVAN - THE COMPLETE STORY 2024, Studeni
Anonim
Školski projekt IoT Philips Hue
Školski projekt IoT Philips Hue

Ovo je priručnik koji sam morao napisati za školu. Nije potpun i nisam siguran možete li ga uopće koristiti. Moje znanje o API -ima je minimum. Htjeli smo napraviti interaktivno ogledalo sa svjetlima na stražnjoj strani koja bi reagirala na vremenske uvjete, svjetlost izvana itd.

Pogledao sam kako mogu programirati svjetiljku Philips Hue s Arduinom. U ovome objašnjavam sve svoje korake i dokle sam stigao. Nisam uspio programirati Hue s Arduinom, ali mislim da je to dobar početak.

Trebalo mi je ovo: Arduino hue lampa most Bridge Philips Hue račun programera

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

Korak 1: Započnite

Prije nego što pristupite API dokumentaciji, morate se registrirati kao programer. Besplatno je, ali morate prihvatiti uvjete i odredbe. Ovdje možete napraviti jedan>

2. korak: aplikacija Hue

Preuzmite službenu aplikaciju Philips Hue. Povežite telefon s mrežom na kojoj želite da je Hue bridge.

Korak 3: Spojite most

Povežite svoj most s mrežom i radi ispravno. Testirajte da li aplikacija za pametni telefon može upravljati svjetlima na istoj mreži. Mora biti na istoj Wi-Fi mreži.

Korak 4: IP adresa

Zatim morate otkriti IP adresu mosta na svojoj mreži. Pritisnite vezu za povezivanje s mostom u aplikaciji i pokušajte kontrolirati svjetla.

5. korak:

Ako sve radi, idite na izbornik postavki u aplikaciji. Zatim idite na "Moj most", idite na "Mrežne postavke". Isključite DHCP prekidač i vidjet ćete IP adresu mosta. Zabilježite IP adresu, a zatim ponovo uključite DHCP.

Korak 6: Otklonite pogreške u boji

Otklonite pogreške u vašoj nijansi
Otklonite pogreške u vašoj nijansi

Kad ste to zapisali, morate otkloniti pogreške u Hueu. Za ovaj korak potrebna vam je IP adresa. Morate posjetiti sljedeće mjesto.

/debug/clip.html

Sučelje će na slici izgledati ovako. To je osnova cijelog web prometa i nijanse RESTful sučelja.

Dobio sam ove podatke o sučelju Restful web stranice Philips Hue.

URL: ovo je zapravo lokalna adresa određenog resursa (stvari) unutar hue sustava. To može biti svjetlo, grupa svjetala ili mnogo više stvari. Ovo je objekt s kojim ćete komunicirati unutar ove naredbe.

Tijelo: ovo je dio poruke koji opisuje što želite promijeniti i kako. Ovdje unosite, u JSON formatu, naziv resursa i vrijednost koju želite promijeniti/dodati.

Metoda: ovdje imate izbor od 4 HTTP metode koje ton ton može koristiti.

GET: ovo je naredba za dohvaćanje svih informacija o adresiranom resursu

PUT: ovo je naredba za izmjenu adresiranog resursa

POST: ovo je naredba za stvaranje novog resursa unutar adresiranog resursa

DELETE: ovo je naredba za brisanje adresiranog resursa Odgovor: U ovom području ćete vidjeti odgovor na svoju naredbu. Također u JSON formatu.

Korak 7: Počnimo

Započnimo
Započnimo

Sada nam treba nasumično generirano korisničko ime koje most stvara za vas. Ispunivši ovo, dobit ćete jedan.

Unesite URL:

/api/

Stavite u TIJELO:

i pritisnite GET

Ova naredba u osnovi kaže "molim vas stvorite novi resurs unutar /api" (gdje se nalaze korisnička imena) sa sljedećim svojstvima. U početku ćete dobiti pogrešku, a to je zato što je to sigurnosni korak Philips Hue. Pritiskom na gumb dokazuju da imate fizički pristup mostu.

Korak 8:

Slika
Slika

Sada pritisnite gumb na mostu i ponovno kliknite POST.

Sada ćete dobiti korisničko ime koje je most napravio za vas.

Korak 9: Učinimo nešto sa svjetlima

Učinimo nešto sa svjetlima
Učinimo nešto sa svjetlima

Upišite svoje korisničko ime i stavite ga u sljedeći redak.

Stavite ovo u svoj URL

/api//svjetla

Pritisnite GET

Trebali biste dobiti JSON odgovor sa svim svjetlima u vašem sustavu i njihovim nazivima.

10. korak:

Slika
Slika

Posudio sam neke Hue Lights iz škole, onu koju koristim je ona s id 3. Želim konkretne informacije o ovom svjetlu.

Stavite ovo pored URL -a koji ste već imali:

/api//lights/3

Pritisnite GET

Sada dobivate sve informacije o Ledu 3 (ako imate drugi broj poput 1 vidjet ćete podatke o tom).

Korak 11: Upravljajmo svjetlom

Upravljajmo Svjetlom
Upravljajmo Svjetlom

Vidite u "stanju" da je moj LED indikator "uključen". Želimo kontrolirati svjetlo u "stanju".

Stavite ovo pored URL -a koji ste već imali: https:/// api// lights/ 3/ state

Stavite sljedeći redak u TIJELO

Pritisnite PUT

Sada će se vaše svjetlo ugasiti! Promijenite vrijednost u tijelu na true i svjetlo će se ponovno uključiti.

Korak 12:

Sada sve radi, želim to učiniti sa svojim Arduinom. Pogledao sam vezu koju je Philips Hue dao da promijeni boju svjetla. Ali za ovo vam treba Python, nikad nisam radio s Pythonom pa sam tražio nešto drugo.

Ako želite pogledati ovaj kod, ovdje imam vezu na Github:

github.com/bsalinas/ArduinoHue

Korak 13:

Pogledao sam kako mogu doći do informacija s ove web stranice za razvojne programere na svoj arduino. Većinu vremena nisam razumio jezik. Ali našao sam neki kod na web stranici od Jamesa Brucea.

Ovo je veza na web stranicu.

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

Korak 14:

Prvo sam vidio da koristi Ethernet kabel. Imao sam samo Hue žarulju i Bridge Arduino, a slabo razumijevanje koda. Trebalo mi je neko vrijeme da shvatim njegov kôd, ali još uvijek ga zapravo ne razumijem.

Ja sam ovu knjižnicu prvi put dodao za internet.

#uključi

Ovo je za vašu mrežu (mora biti isto što i žarulja Hue)

const char* ssid = ""; // ovdje stavite svoju WiFi mrežu SSIDconst char* password = ""; // ovdje stavite svoju lozinku za WiFi mrežu

Ovo su ID vašeg mosta i korisničko ime koje vam je most dao. (Ne znam gdje stoji 80, ali kad sam malo istražio, vidio sam da se koristi za mreže).

// Hue konstante const char hueHubIP = ""; // Hue hub IP const char hueUsername = ""; // Hue korisničko ime const int hueHubPort = 80;

// Hue varijable bool hueOn; // uključivanje/isključivanje int hueBri; // vrijednost svjetline long hueHue; // vrijednost nijanse Niz hueCmd; // Naredba Hue

bezznačni dugi međuspremnik = 0; // međuspremnik za pohranu primljenih podataka unsigned long addr;

Korak 15:

Za postavljanje praznine najviše sam učinio za internetsku vezu. U ovom kodu Arduino traži može li se povezati s mrežom.

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

Serial.println ();

Serial.printf ("Povezivanje s %s", ssid);

WiFi.započni (ssid, lozinka);

while (WiFi.status ()! = WL_CONNECTED) {{100} {101}

kašnjenje (500);

Serial.print ("."); }

Serial.println ("povezan"); }

Korak 16:

U petlji Jamesa vidio sam da ima izjavu If i else. Ali to je bilo za ethernet kabel, pa sam ovo pokušao izostaviti. Također sam ga ponekad pokušavao prilagoditi, ali još nisam znao s puno podataka. Neke stvari u kodu koje sam razumio, u nizu su podaci koji se daju svjetlu Hue.

void loop () {{100} {101}

// Niz od četiri uzorka naredbi, čija boja gasi dva svjetla između crvene i ružičaste. Pročitajte dokumentaciju Hue API // za više pojedinosti o točnim naredbama koje ćete koristiti, ali imajte na umu da se navodnici moraju izbjeći.

Naredba niza = "{" on / ": true, \" hue / ": 50100, \" sat / ": 255, \" bri / ": 255, \" tranzitionntime / ":"+String (nasumično (15, 25))+"}"; setHue (1, naredba);

command = "{" on / ": true, \" hue / ": 65280, \" sat / ": 255, \" bri / ": 255, \" tranzitionntime / ":"+niz (nasumično (15, 25))+"}"; setHue (2, naredba);

naredba = "{" nijansa / ": 65280, \" sat / ": 255, \" bri / ": 255, \" prijelazno vrijeme / ":"+niz (nasumično (15, 25))+"}"; setHue (1, naredba);

naredba = "{" nijansa / ": 50100, \" sat / ": 255, \" bri / ": 255, \" prijelazno vrijeme / ":"+niz (nasumično (15, 25))+"}"; setHue (2, naredba);

}

Korak 17:

Sljedeći je kod bio Boolean, ali u Arduinu morate napisati Bool. U početku sam imao mnogo grešaka zbog riječi klijent. Pa sam pogledao i vidio da neki kod koristi liniju "WifiClient client;". Tako sam navikao i upalilo je.

U if naredbi često vidite client.print. Ako pogledate kôd, vidjet ćete da je URL koji ste ranije unijeli podijeljen na dijelove. Sada unesite vlastiti kôd. Morao sam izabrati svoje treće LED svjetlo.

/ * setHue () je naša glavna naredbena funkcija kojoj je potrebno proslijediti lagani broj i * pravilno oblikovan naredbeni niz u JSON formatu (u osnovi niz varijabli * i vrijednosti u stilu Javascripta. Zatim šalje jednostavan HTTP PUT zahtjev za most na IP adresi navedenoj na početku. */

bool setHue (int lightNum, naredba String) {

WiFiClient klijent;

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

while (client.connected ()) {

client.print ("PUT /api /"); client.print (hueUsername); client.print ("/svjetla/"); client.print (lightNum); // hueLight temeljen na nuli, dodaj 1 client.println ("3/stanje"); // ovdje sam promijenio naziv nijanse i stateclient.print ("Domaćin:"); client.println (hueHubIP); client.print ("Content-Length:"); client.println (command.length ()); client.println ("Content-Type: text/plain; charset = UTF-8"); client.println (); // prazan redak prije body client.println (naredba); // Naredba Hue

} client.stop (); return true; // naredba izvršena}

else return false; // naredba nije uspjela}

Korak 18:

Na drugom Booleanu učinio sam istu stvar promijenivši neke riječi. Postavio sam ga da vidim radi li.

/* Pomoćna funkcija u slučaju da vaša logika ovisi o trenutnom stanju svjetla. * Ovo postavlja brojne globalne varijable koje možete provjeriti da biste saznali je li svjetlo trenutno uključeno ili ne * i nijansu itd. Nije potrebno samo za slanje naredbi */

bool getHue (int lightNum) {

WiFiClient klijent;

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

client.print ("GET /api /"); client.print (hueUsername); client.print ("/svjetla/"); client.print (lightNum); client.println ("3/stanje"); client.print ("Domaćin:"); client.println (hueHubIP); client.println ("Vrsta sadržaja: aplikacija/json"); client.println ("održati na životu"); client.println ();

while (client.connected ()) {if (client.available ()) {client.findUntil ("\" na / ":", "\ 0"); hueOn = (client.readStringUntil (',') == "true"); // ako je svjetlo uključeno, postavite varijablu na true client.findUntil ("\" bri / ":", "\ 0"); hueBri = client.readStringUntil (',').toInt (); // postavljanje varijable na vrijednost svjetline client.findUntil ("\" hue / ":", "\ 0"); hueHue = client.readStringUntil (',').toInt (); // postavljanje varijable na vrijednost nijanse break; // još ne bilježimo druge svjetlosne atribute}} client.stop (); return true; // zarobljeno, bri, hue} else return false; // pogreška pri čitanju, bri, hue}

Korak 19:

Slika
Slika

Mislim da bih se mogao povezati s Philips Hueom. Primam informacije, ali ih ipak treba iskoristiti.

Nažalost, ovo nadilazi ono što mogu kodirati. Ako znate odgovor ili postoje stvarne pogreške koje treba ispraviti, volio bih to čuti.:-)

Preporučeni: