Kazalo:
- 1. korak: Začnite
- 2. korak: aplikacija Hue
- 3. korak: Povežite most
- 4. korak: Naslov IP
- 5. korak:
- 6. korak: Odpravite napake v svojem odtenku
- 7. korak: Začnimo
- 8. korak:
- 9. korak: Naredimo nekaj z lučmi
- 10. korak:
- 11. korak: Nadzirajmo svetlobo
- 12. korak:
- 13. korak:
- 14. korak:
- 15. korak:
- 16. korak:
- 17. korak:
- 18. korak:
- 19. korak:
Video: Šolski projekt IoT Philips Hue: 19 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:03
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
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
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:
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
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:
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
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:
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:
Šolski zvon za študente na daljavo: 6 korakov
Šolski zvonec za študente na daljavo: S pandemijo COVID-19 so številne otroške šole prešle na daljavo. Ta domači šolski zvonec je zabaven način, da se držite urnika, ki uporablja Raspberry Pi in zvočnik USB. To lahko storite s svojim otrokom in on se lahko nauči programiranja
Odličen šolski pripomoček za vohunjenje! Nevidno pisalo s črnilom: 6 korakov
Odličen šolski vohunski pripomoček! Invisible Ink Pen Hack: S tem čudovitim krampom lahko nekomu pošljete skrivna sporočila ali celo goljufate pri razrednih testih
Žalostna mačka za fiksiranje, Igra za mačke Catch -Me - šolski projekt: 3 koraki
Sad Cat Fixer, Cat Catch-Me Cat Toy-šolski projekt: Tukaj je naš izdelek, to je interaktivna miška: Catch-Me Cat Toy. Tu je seznam težav, s katerimi se srečujejo številne mačke v naši družbi: Mačke v teh dneh postajajo neaktivne in depresivne, nimajo kaj početi.Večina lastnikov je zaposlena s službo ali šolo in vašim
LED škatla za šolski simpozij Delta: 7 korakov
LED škatla za šolski simpozij Delta:
Vlečna roka, ki jo nadzira zvok - šolski projekt Arduino: 4 koraki (s slikami)
Risanje roke, ki jo nadzira zvok - šolski projekt Arduino: Prvič delam z Arduinom in delam s kaj takega doslej, oprostite, če sem naredil kakšno napako! To idejo sem dobil, ko sem razmišljal o svojih hobijih, ki sta risanje in glasba. Zato sem skušal oboje združiti v to! Sel