Kazalo:

Šolski projekt IoT Philips Hue: 19 korakov
Šolski projekt IoT Philips Hue: 19 korakov

Video: Šolski projekt IoT Philips Hue: 19 korakov

Video: Šolski projekt IoT Philips Hue: 19 korakov
Video: Моя работа наблюдать за лесом и здесь происходит что-то странное 2024, Julij
Anonim
Šolski projekt IoT Philips Hue
Šolski projekt IoT Philips Hue

To je priročnik, ki sem ga moral napisati za šolo. Ni popoln in nisem prepričan, ali ga sploh lahko uporabite. Moje znanje o API -jih je minimalno. Želeli smo narediti interaktivno ogledalo z lučmi na hrbtu, ki bi se odzivalo na vreme, svetlobo od zunaj itd.

Pogledala sem, kako lahko programiram svetilko Philips Hue z Arduinom. Pri tem razlagam vse svoje korake in kako daleč sem prišel. Nisem uspel programirati Hueja z Arduinom, vendar mislim, da je to dober začetek.

Potreboval sem to: svetilka Arduino z odtenkom, račun za razvijalce Philips Hue

Viri: 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. korak: Začnite

Preden dostopate do dokumentacije API, se morate registrirati kot razvijalec. Brezplačno je, vendar morate sprejeti določila in pogoje. To lahko naredite tukaj>

2. korak: aplikacija Hue

Prenesite uradno aplikacijo Philips Hue. Telefon povežite z omrežjem, na katerem želite, da je most Hue.

3. korak: Povežite most

Povežite svoj most z omrežjem in deluje pravilno. Preverite, ali lahko aplikacija za pametni telefon upravlja luči v istem omrežju. Mora biti v istem omrežju Wi-Fi.

4. korak: Naslov IP

Nato morate odkriti naslov IP mostu v svojem omrežju. Pritisnite povezavo, da se povežete z mostom v aplikaciji in poskusite upravljati luči.

5. korak:

Če vse deluje, pojdite v meni z nastavitvami v aplikaciji. Nato pojdite na »Moj most«, pojdite na »Omrežne nastavitve«. Izklopite preklop DHCP in videli boste naslov IP mostu. Zabeležite naslov IP, nato znova vklopite DHCP.

6. korak: Odpravite napake v svojem odtenku

Odpravite napake v svojem odtenku
Odpravite napake v svojem odtenku

Ko ste to zapisali, morate odpraviti napake v Hueju. Za ta korak potrebujete naslov IP. Morate obiskati naslednjo stran.

/debug/clip.html

Na sliki bo vmesnik videti tako. To je osnova vsega spletnega prometa in odtenka RESTful vmesnika.

Dobil sem te podatke o vmesniku Restful na spletnem mestu Philips Hue.

URL: to je dejansko lokalni naslov določenega vira (stvari) v sistemu hue. Lahko je svetloba, skupina luči ali še veliko več. To je predmet, s katerim boste sodelovali v tem ukazu.

Telo: to je del sporočila, ki opisuje, kaj želite spremeniti in kako. Tu vnesete ime vira in vrednost, ki jo želite spremeniti/dodati v obliki JSON.

Metoda: tukaj imate na izbiro 4 metode HTTP, ki jih lahko uporabi odtenek.

GET: to je ukaz za pridobivanje vseh informacij o naslovljenem viru

PUT: to je ukaz za spreminjanje naslovljenega vira

POST: to je ukaz za ustvarjanje novega vira v naslovljenem viru

DELETE: to je ukaz za brisanje naslovljenega vira Odgovor: Na tem področju boste videli odgovor na vaš ukaz. Tudi v formatu JSON.

7. korak: Začnimo

Začnimo
Začnimo

Zdaj potrebujemo naključno ustvarjeno uporabniško ime, ki ga most ustvari za vas. Če ga izpolnite, ga boste dobili.

Vnesite URL:

/api/

Vstavite v TELO:

in pritisnite GET

Ta ukaz v bistvu pravi "prosim ustvarite nov vir znotraj /api" (kjer so uporabniška imena) z naslednjimi lastnostmi. Sprva boste dobili napako, in to zato, ker je to varnostni korak Philips Hue. S pritiskom na gumb dokažejo, da imate fizičen dostop do mostu.

8. korak:

Slika
Slika

Zdaj pritisnite gumb na mostu in znova kliknite POST.

Zdaj boste dobili uporabniško ime, ki ga je most naredil za vas.

9. korak: Naredimo nekaj z lučmi

Naredimo nekaj z lučmi
Naredimo nekaj z lučmi

Vnesite svoje uporabniško ime in ga vnesite v naslednjo vrstico.

To vnesite v svoj URL

/api//luči

Pritisnite GET

Morali bi dobiti odgovor JSON z vsemi lučkami v sistemu in njihovimi imeni.

10. korak:

Slika
Slika

Nekaj Hue Lights sem si sposodil v šoli, tisto, ki jo uporabljam, je tista z id 3. Želim posebne informacije o tej luči.

To postavite poleg URL -ja, ki ste ga že imeli:

/api//lights/3

Pritisnite GET

Zdaj dobite vse informacije o Led 3 (če imate drugo številko, kot je 1, boste videli podatke o tem).

11. korak: Nadzirajmo svetlobo

Upravljajmo svetlobo
Upravljajmo svetlobo

Vidite v "stanju", da je moja lučka "vklopljena". Svetlobo želimo nadzirati v "stanju".

To postavite poleg URL -ja, ki ste ga že imeli: https:/// api// lights/ 3/ state

Naslednjo vrstico vnesite v TELO

Pritisnite PUT

Zdaj se bo vaša luč ugasnila! Spremenite vrednost v telesu na true in lučka se bo spet prižgala.

12. korak:

Zdaj vse deluje, želim to narediti s svojim Arduinom. Pogledala sem povezavo, ki jo je dal Philips Hue, da se je spremenila barva svetlobe. Toda za to potrebujete Python, nikoli nisem delal s Pythonom, zato sem iskal nekaj drugega.

Če želite pogledati to kodo, imam tukaj povezavo Github:

github.com/bsalinas/ArduinoHue

13. korak:

Pogledal sem, kako lahko dobim informacije s tega spletnega mesta za razvijalce na svoj arduino. Večino časa nisem razumel jezika. Na spletni strani pa sem našel kodo Jamesa Brucea.

To je povezava do spletne strani.

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

14. korak:

Najprej sem videl, da uporablja kabel Ethernet. Imel sem samo žarnico Hue in most Arduino ter malo razumel kodo. Nekaj časa je trajalo, da sem razumel njegovo kodo, vendar je še vedno ne razumem.

To knjižnico sem prvič dodal za internet.

#vključi

To je za vaše omrežje (mora biti enako kot žarnica Hue)

const char* ssid = ""; // vnesite svoje omrežje WiFi SSIDconst char* password = ""; // vnesite geslo za omrežje WiFi

To sta ID vašega mostu in uporabniško ime, ki vam ga je dal most. (Ne vem, kje stoji 80, toda ko sem opravil nekaj raziskav, sem videl, da se uporablja za omrežja).

// Odtenki odtenkov const char hueHubIP = ""; // Hue hub IP const char hueUsername = ""; // Hue uporabniško ime const int hueHubPort = 80;

// Hue spremenljivke bool hueOn; // vklop/izklop int hueBri; // vrednost svetlosti long hueHue; // vrednost odtenka Niz hueCmd; // Ukaz Hue

nepodpisani dolgi vmesni pomnilnik = 0; // medpomnilnik za shranjevanje prejetih podatkov unsigned long addr;

15. korak:

Za nastavitev praznine sem največ naredil za internetno povezavo. V tej kodi Arduino išče, ali se lahko poveže z omrežjem.

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

Serial.println ();

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

WiFi.begin (ssid, geslo);

medtem ko (WiFi.status ()! = WL_CONNECTED) {

zamuda (500);

Serial.print ("."); }

Serial.println ("povezan"); }

16. korak:

V zanki Jamesa sem videl, da ima izjavo If in else. Ampak to je bilo za ethernetni kabel, zato sem to poskušal izpustiti. Včasih sem ga tudi poskušal prilagoditi, vendar še nisem vedel z veliko podatkov. Nekatere stvari v kodi, ki sem jih razumel, v nizu so podatki, ki so podani svetlobi Hue.

void loop () {

// Serija štirih vzorčnih ukazov, ki obarvajo dve luči med rdečo in rožnato. Za podrobnosti o natančnih ukazih, ki jih želite uporabiti, preberite dokumentacijo Hue API //, vendar upoštevajte, da je treba narekovaje umakniti.

String command = "{" on / ": true, \" hue / ": 50100, \" sat / ": 255, \" bri / ": 255, \" tranzitionntime / ":"+niz (naključno (15, 25))+"}"; setHue (1, ukaz);

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

command = "{" hue / ": 65280, \" sat / ": 255, \" bri / ": 255, \" prehodni čas / ":"+niz (naključno (15, 25))+"}"; setHue (1, ukaz);

command = "{" hue / ": 50100, \" sat / ": 255, \" bri / ": 255, \" prehodni čas / ":"+niz (naključno (15, 25))+"}"; setHue (2, ukaz);

}

17. korak:

Naslednja koda je bila Booleova, v Arduinu pa morate napisati Bool. Sprva sem imel zaradi besede odjemalec veliko napak. Tako sem pogledal in videl, da neka koda uporablja vrstico "odjemalca WifiClient;". Tako sem ga uporabil in je delovalo.

V stavku if pogosto vidite client.print. Če pogledate kodo, boste videli, da je URL, ki ste ga vnesli prej, razdeljen na koščke. Zdaj vnesite svojo kodo. Moral sem izbrati svojo tretjo LED luč.

/ * setHue () je naša glavna ukazna funkcija, ki ji je treba posredovati svetlobno številko in * pravilno oblikovan ukazni niz v formatu JSON (v bistvu niz s spremenljivkami * in vrednostmi v slogu Javascript. Nato preprosto pošlje zahtevo HTTP PUT most na naslovu IP, ki je naveden na začetku. */

bool setHue (int lightNum, ukaz String) {

Odjemalec WiFiClient;

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

medtem ko (client.connected ()) {

client.print ("PUT /api /"); client.print (hueUsername); client.print ("/luči/"); client.print (lightNum); // hueLight nič temelji, dodaj 1 client.println ("3/stanje"); // tukaj sem spremenil ime odtenka in stateclient.print ("Host:"); client.println (hueHubIP); client.print ("Content-Length:"); client.println (command.length ()); client.println ("Vrsta vsebine: besedilo/navaden; charset = UTF-8"); client.println (); // prazna vrstica pred body client.println (ukaz); // Ukaz Hue

} client.stop (); vrni true; // ukaz izveden}

else vrni false; // ukaz ni uspel}

18. korak:

Pri drugem Booleanu sem enako naredil s spreminjanjem nekaterih besed. Naložil sem, da vidim, če deluje.

/* Pomožna funkcija, če je vaša logika odvisna od trenutnega stanja svetlobe. * To določa številne globalne spremenljivke, ki jih lahko preverite, če želite preveriti, ali lučka trenutno gori ali ne * in odtenek itd. Ni potrebno samo za pošiljanje ukazov */

bool getHue (int lightNum) {

Odjemalec WiFiClient;

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

client.print ("GET /api /"); client.print (hueUsername); client.print ("/luči/"); client.print (lightNum); client.println ("3/stanje"); client.print ("Gostitelj:"); client.println (hueHubIP); client.println ("Vrsta vsebine: aplikacija/json"); client.println ("ohrani pri življenju"); client.println ();

while (client.connected ()) {if (client.available ()) {client.findUntil ("\" v / ":", "\ 0"); hueOn = (client.readStringUntil (',') == "true"); // če sveti luč, nastavite spremenljivko na true client.findUntil ("\" bri / ":", "\ 0"); hueBri = client.readStringUntil (',').toInt (); // nastavimo spremenljivko na vrednost svetlosti client.findUntil ("\" hue / ":", "\ 0"); hueHue = client.readStringUntil (',').toInt (); // nastavimo spremenljivko na prelom vrednosti odtenka; // še ne zajemamo drugih svetlobnih lastnosti}} client.stop (); vrni true; // zajeto, bri, hue} else return false; // napaka pri branju, bri, hue}

19. korak:

Slika
Slika

Mislim, da bi lahko vzpostavil povezavo s Philips Hue. Prejemam informacije, vendar jih je še vedno treba uporabiti.

Na žalost to presega tisto, kar lahko kodiram. Če poznate odgovor ali če obstajajo resnične napake, ki jih je treba popraviti, bi ga rad slišal.:-)

Priporočena: