Sadržaj:

IoT School Project Philips Hue: 19 koraka
IoT School Project Philips Hue: 19 koraka

Video: IoT School Project Philips Hue: 19 koraka

Video: IoT School Project Philips Hue: 19 koraka
Video: Denmark official faints during Covid-19 conference 2024, Juli
Anonim
IoT School Project Philips Hue
IoT School Project 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. Željeli smo napraviti interaktivno ogledalo sa svjetlima na stražnjoj strani koja bi reagirala na vremenske uvjete, svjetlo izvana itd.

Pogledao sam kako mogu programirati Philips Hue lampu sa Arduinom. U ovom tekstu 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 uslove i odredbe. Možete ih napraviti ovdje>

Korak 2: Aplikacija Hue

Preuzmite službenu aplikaciju Philips Hue. Povežite telefon sa mrežom na kojoj želite da Hue bridge bude uključen.

Korak 3: Povežite most

Povežite svoj most s mrežom i ispravno funkcionira. 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 vašoj mreži. Pritisnite vezu za povezivanje s mostom u aplikaciji i pokušajte kontrolirati svjetla.

Korak 5:

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. Zabelež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

Kada ste to zapisali, morate otkloniti greške u Hueu. Za ovaj korak vam je potrebna IP adresa. Morate posjetiti sljedeću web lokaciju.

/debug/clip.html

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

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

URL: ovo je zapravo lokalna adresa određenog resursa (stvari) unutar hue sistema. 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 šta želite promijeniti i kako. Ovdje unosite, u JSON formatu, ime resursa i vrijednost koju želite promijeniti/dodati.

Metoda: ovdje imate izbor od 4 HTTP metode koje hue poziv 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 kreiranje 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đe u JSON formatu.

Korak 7: Počnimo

Hajde da počnemo
Hajde da počnemo

Sada nam treba nasumično generirano korisničko ime koje most kreira za vas. Dobićete jedan popunjavajući ovo.

Unesite URL:

/api/

Stavite u TELO:

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 grešku, a to je zato što je to sigurnosni korak kompanije Philips Hue. Pritiskom na dugme dokazuju da imate fizički pristup mostu.

Korak 8:

Image
Image

Sada pritisnite dugme na mostu i ponovo 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 red.

Stavite ovo u svoj URL

/api//lights

Pritisnite GET

Trebali biste dobiti JSON odgovor sa svim svjetlima u vašem sistemu i njihovim imenima.

Korak 10:

Image
Image

Pozajmio sam neke Hue Lights iz škole, onu koju koristim je ona sa 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 još jedan broj poput 1 vidjet ćete podatke o tom).

Korak 11: Upravljajmo svjetlom

Kontrolirajmo svjetlost
Kontrolirajmo svjetlost

Vidite u "stanju" da je moja lampica "uključena". Želimo kontrolirati svjetlo u "stanju".

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

Stavite sljedeći red u BODY

Pritisnite PUT

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

Korak 12:

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

Ako želite pogledati ovaj kod, ovdje imam vezu do Githuba:

github.com/bsalinas/ArduinoHue

Korak 13:

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

Ovo je veza do web stranice.

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 kod, ali ga još uvijek ne razumijem.

Ja sam ovu biblioteku prvi put dodao za internet.

#include

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

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

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

// Konstante nijanse 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 hue String hueCmd; // Naredba Hue

nepotpisani dugi bafer = 0; // bafer 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 na %s", ssid);

WiFi.begin (ssid, lozinka);

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

kašnjenje (500);

Serial.print ("."); }

Serial.println ("povezano"); }

Korak 16:

U petlji Jamesa vidio sam da ima naredbu If i else. Ali to je bilo za ethernet kabel, pa sam pokušao ovo izostaviti. I ja sam ponekad pokušavao to 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 detalja o tačnim naredbama koje ćete koristiti, ali imajte na umu da se navodnici moraju izbjeći.

String command = "{" 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 / ":"+String (nasumično (15, 25))+"}"; setHue (2, naredba);

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

command = "{" hue / ": 50100, \" sat / ": 255, \" bri / ": 255, \" tranzicijsko 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 uspjelo 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 da izaberem svoje treće LED svetlo.

/ * setHue () je naša glavna naredbena funkcija, kojoj je potrebno proslijediti lagani broj i * pravilno formatiran niz naredbi u JSON formatu (u osnovi niz varijabli * i vrijednosti u stilu Javascript -a. 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 zasnovan na nuli, dodaj 1 client.println ("3/stanje"); // ovdje sam promijenio ime nijanse i stateclient.print ("Host:"); client.println (hueHubIP); client.print ("Content-Length:"); client.println (command.length ()); client.println ("Content-Type: text/plain; charset = UTF-8"); client.println (); // prazan red ispred tijela client.println (naredba); // Naredba Hue

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

else return false; // naredba nije uspjela}

Korak 18:

Na drugom Boolean -u uradio sam istu stvar promijenivši neke riječi. Postavio sam ga da vidim da li radi.

/* 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 ("nastavi da živiš"); 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 hue value break; // još ne bilježimo druge atribute svjetlosti}} client.stop (); return true; // snimljeno, bri, hue} else return false; // greška pri čitanju, bri, hue}

Korak 19:

Image
Image

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

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

Preporučuje se: