Turinys:

„IoT School“projektas „Philips Hue“: 19 žingsnių
„IoT School“projektas „Philips Hue“: 19 žingsnių

Video: „IoT School“projektas „Philips Hue“: 19 žingsnių

Video: „IoT School“projektas „Philips Hue“: 19 žingsnių
Video: 6 COZY HOME TIPS THAT WORK WITH ANY DECOR STYLE 🥧 Easy ideas for making your home warm and inviting! 2024, Lapkritis
Anonim
„IoT School“projektas „Philips Hue“
„IoT School“projektas „Philips Hue“

Tai vadovas, kurį turėjau parašyti mokyklai. Jis nėra baigtas ir aš nesu tikras, ar jūs netgi galite jį naudoti. Mano žinios apie API yra minimalios. Norėjome sukurti interaktyvų veidrodį su šviesomis, kurios reaguotų į orą, šviesą iš lauko ir kt.

Pažiūrėjau, kaip galėčiau užprogramuoti „Philips Hue“lempą su „Arduino“. Čia aš paaiškinu visus savo veiksmus ir tai, kaip toli nuėjau. Man nepavyko užprogramuoti atspalvio su „Arduino“, bet manau, kad tai gera pradžia.

Man reikėjo šito: „Arduino“atspalvio lempos ir „Philips Hue“kūrėjo paskyros

Šaltiniai: 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 žingsnis: pradėkite

Kad galėtumėte pasiekti API dokumentus, turėsite užsiregistruoti kaip kūrėjas. Tai nemokama, tačiau jūs turite sutikti su sąlygomis. Tai padaryti galite čia>

2 žingsnis: „Hue“programa

Atsisiųskite oficialią „Philips Hue“programą. Prijunkite telefoną prie tinklo, kuriame norite įjungti „Hue bridge“.

3 žingsnis: prijunkite tiltą

Prijunkite tiltą prie tinklo ir jis tinkamai veikia. Patikrinkite, ar išmaniojo telefono programa gali valdyti to paties tinklo lemputes. Jis turi būti tame pačiame „Wi-Fi“tinkle.

4 žingsnis: IP adresas

Tada turėsite rasti savo tinklo tilto IP adresą. Paspauskite nuorodą, kad programoje prisijungtumėte prie tilto ir pabandytumėte valdyti šviesas.

5 veiksmas:

Jei viskas veikia, eikite į programos nustatymų meniu. Eikite į „Mano tiltas“, eikite į „Tinklo nustatymai“. Išjunkite DHCP jungiklį ir pamatysite tilto IP adresą. Atkreipkite dėmesį į IP adresą, tada vėl įjunkite DHCP.

6 veiksmas: derinkite savo atspalvį

Derinkite savo atspalvį
Derinkite savo atspalvį

Kai tai užrašėte, turite derinti savo atspalvį. Šiam žingsniui jums reikia IP adreso. Turite aplankyti kitą svetainę.

/debug/clip.html

Sąsaja paveikslėlyje atrodys taip. Tai yra viso žiniatinklio srauto ir „Hue RESTful“sąsajos pagrindas.

Šią informaciją gavau apie „Philips Hue“svetainės „Restful“sąsają.

URL: tai iš tikrųjų yra konkretaus šaltinio (daikto) vietinis adresas atspalvių sistemoje. Tai gali būti šviesa, žibintų grupė ar daug kitų dalykų. Tai yra objektas, su kuriuo bendrausite vykdydami šią komandą.

Turinys: tai yra pranešimo dalis, kurioje aprašoma, ką ir kaip norite pakeisti. Čia JSON formatu įvedate ištekliaus pavadinimą ir vertę, kurią norite pakeisti/pridėti.

Metodas: čia galite pasirinkti iš 4 HTTP metodų, kuriuos gali naudoti atspalvio skambutis.

GET: tai komanda gauti visą informaciją apie adresuotą išteklių

PUT: tai komanda pakeisti adresuotą išteklių

POST: tai komanda sukurti naują išteklių adresuoto ištekliaus viduje

Ištrinti: tai komanda ištrinti adresuotą išteklių Atsakymas: šioje srityje pamatysite atsakymą į savo komandą. Taip pat JSON formatu.

7 žingsnis: pradėkime

Pradėkime
Pradėkime

Dabar mums reikia atsitiktinai sugeneruoto vartotojo vardo, kurį tiltas sukuria jums. Užpildę gausite vieną.

Įveskite URL:

/api/

Įdėkite kūną:

ir paspauskite GET

Ši komanda iš esmės sako „sukurkite naują šaltinį /api“(kur yra vartotojo vardai) su šiomis savybėmis. Iš pradžių gausite klaidą, nes tai yra „Philips Hue“saugumo žingsnis. Paspaudę mygtuką jie įrodo, kad turite fizinį priėjimą prie tilto.

8 žingsnis:

Vaizdas
Vaizdas

Dabar paspauskite tiltelio mygtuką ir dar kartą spustelėkite POST.

Dabar gausite naudotojo vardą, kurį tiltas sukūrė jums.

9 žingsnis: Padarykime ką nors su šviesomis

Padarykime ką nors su šviesomis
Padarykime ką nors su šviesomis

Nukopijuokite savo vartotojo vardą ir įrašykite jį į šią eilutę.

Įdėkite tai į savo URL

/api//žibintai

Paspauskite GET

Turėtumėte gauti JSON atsakymą su visais jūsų sistemos žibintais ir jų pavadinimais.

10 veiksmas:

Vaizdas
Vaizdas

Aš pasiskolinau keletą „Hue Lights“iš mokyklos, aš naudoju tą, kurio ID yra 3. Noriu konkrečios informacijos apie šią lemputę.

Įdėkite tai šalia jau turimo URL:

/api//lights/3

Paspauskite GET

Dabar jūs gaunate visą informaciją apie „Led 3“(jei turite kitą numerį, pvz., 1, pamatysite informaciją apie tą).

11 žingsnis: valdykime šviesą

Valdykime šviesą
Valdykime šviesą

Matote „būsenoje“, kad mano indikatorius yra „įjungtas“. Mes norime valdyti šviesą „būsenoje“.

Įdėkite tai šalia jau turėto URL: https:/// api// lights/ 3/ state

Įdėkite kitą eilutę į BODY

Paspauskite PUT

Dabar jūsų šviesa užges! Pakeiskite kūno vertę į teisingą ir šviesa vėl įsijungs.

12 žingsnis:

Dabar viskas veikia, noriu tai padaryti su savo „Arduino“. Pažvelgiau į „Philips Hue“pateiktą nuorodą, kad pasikeistų šviesos spalva. Bet jums reikia „Python“, aš niekada nedirbau su „Python“, todėl ieškojau ko nors kito.

Jei norite pažvelgti į šį kodą, turiu „Github“nuorodą čia:

github.com/bsalinas/ArduinoHue

13 žingsnis:

Pažiūrėjau, kaip galėčiau gauti informacijos iš šios kūrėjų svetainės į savo arduino. Dažniausiai nesupratau kalbos. Bet aš radau tam tikrą kodą svetainėje iš Jameso Bruce'o.

Tai yra nuoroda į svetainę.

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

14 žingsnis:

Pirmiausia pamačiau, kad jis naudoja Ethernet kabelį. Aš turėjau tik „Hue“lemputę ir „Bridge Arduino“ir mažai supratau kodą. Prireikė šiek tiek laiko, kol supratau jo kodą, bet vis tiek to nesuprantu.

Pirmą kartą šią biblioteką pridėjau internete.

#įtraukti

Tai skirta jūsų tinklui (jis turi būti toks pat kaip „Hue Light“lemputė)

const char* ssid = ""; // įdėk čia savo WiFi tinklą SSIDconst char* password = ""; // įdėkite čia savo „WiFi“tinklo slaptažodį

Tai yra jūsų tilto ID ir jūsų tilto naudotojo vardas. (Aš nežinau, kur reiškia 80, bet kai aš padariau keletą tyrimų, pamačiau, kad jis buvo naudojamas tinklams).

// Atspalvio konstantos const char hueHubIP = ""; // Hue hub IP const char hueUsername = ""; // „Hue“vartotojo vardas const int hueHubPort = 80;

// Atspalvio kintamieji bool hueOn; // įjungti/išjungti int hueBri; // ryškumo reikšmė ilgas atspalvisHue; // atspalvio reikšmė String hueCmd; // Hue komanda

nepasirašytas ilgas buferis = 0; // buferis gautam duomenų saugojimui unsigned long addr;

15 žingsnis:

Dėl tuštumos sąrankos aš daugiausiai padariau dėl interneto ryšio. Šiame kode „Arduino“ieško, ar gali prisijungti prie tinklo.

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

Serial.println ();

Serial.printf ("Prisijungimas prie %s", ssid);

WiFi.begin (ssid, slaptažodis);

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

vėlavimas (500);

Serijinis atspaudas ("."); }

Serial.println ("prijungtas"); }

16 žingsnis:

Džeimso kilpoje pamačiau, kad jis turi pareiškimą „Jei ir kitaip“. Bet tai buvo eterneto kabelis, todėl bandžiau to neatsižvelgti. Aš taip pat kartais bandžiau jį koreguoti, bet dar nežinojau, turėdamas daug duomenų. Kai kurie kodo dalykai, kuriuos aš supratau, eilutėje yra duomenys, kurie pateikiami atspalvio šviesai.

void loop () {

// Keturių komandų pavyzdžių serija, kurios spalva išblukina dvi šviesas tarp raudonos ir rožinės spalvos. Perskaitykite „Hue API //“dokumentaciją, kad gautumėte daugiau informacijos apie tikslias komandas, kurios turi būti naudojamos, tačiau atkreipkite dėmesį, kad kabutės turi būti pašalintos.

Styginių komanda = "{" on / ": tiesa, \" atspalvis / ": 50100, \" sat / ": 255, \" bri / ": 255, \" pereinamojo laiko / ":"+eilutė (atsitiktinė (15, 25))+"}"; setHue (1, komanda);

command = "{" on / ": tiesa, \" atspalvis / ": 65280, \" sat / ": 255, \" bri / ": 255, \" pereinamojo laiko / ":"+eilutė (atsitiktinė (15, 25))+„}“; setHue (2, komanda);

command = "{" atspalvis / ": 65280, \" sat / ": 255, \" bri / ": 255, \" pereinamojo laiko / ":"+Styga (atsitiktinė (15, 25))+"}"; setHue (1, komanda);

command = "{" atspalvis / ": 50100, \" sat / ": 255, \" bri / ": 255, \" pereinamojo laiko / ":"+Eilutė (atsitiktinė (15, 25))+"}"; setHue (2, komanda);

}

17 žingsnis:

Kitas kodas buvo „Boolean“, tačiau „Arduino“turite parašyti „Bool“. Iš pradžių dėl žodžio klientas gavau daug klaidų. Taigi aš pažvelgiau į jį ir pamačiau, kad kai kurie kodai naudoja eilutę „WifiClient client;“. Taigi aš jį naudojau ir tai veikė.

Jei teiginyje dažnai matote client.print. Jei pažvelgsite į kodą, pamatysite, kad anksčiau įvestas URL yra padalintas į dalis. Dabar įveskite savo kodą. Turėjau pasirinkti trečią LED lemputę.

/ * setHue () yra mūsų pagrindinė komandų funkcija, kuriai reikia perduoti šviesos skaičių ir * tinkamai suformatuotą komandų eilutę JSON formatu (iš esmės „Javascript“stiliaus kintamųjų masyvas * ir reikšmės. Tada ji pateikia paprastą HTTP PUT užklausą tiltas pradžioje nurodytu IP. */

bool setHue (int lightNum, String komanda) {

„WiFiClient“klientas;

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

while (client.connected ()) {

client.print („PUT /api /“); client.print (hueUsername); client.print ("/žibintai/"); client.print („lightNum“); // hueLight nulinis, pridėkite 1 klientą.println ("3/state"); // čia pakeičiau atspalvio pavadinimą ir būsenos klientą.print ("Host:"); client.println (hueHubIP); client.print ("Turinio ilgis:"); client.println (command.length ()); client.println ("Turinio tipas: tekstas/paprastas; simbolių rinkinys = UTF-8"); klientas.println (); // tuščia eilutė prieš kūno klientą.println (komanda); // Hue komanda

} client.stop (); grįžti tiesa; // komanda įvykdyta}

else return false; // komanda nepavyko}

18 žingsnis:

Per antrąjį „Boolean“tą patį padariau pakeisdamas kai kuriuos žodžius. Įkėliau, kad pamatyčiau, ar veikia.

/* Pagalbinė funkcija tuo atveju, jei jūsų logika priklauso nuo esamos šviesos būsenos. * Tai nustato daugybę visuotinių kintamųjų, kuriuos galite patikrinti, norėdami sužinoti, ar lemputė šiuo metu dega, ar ne *, ir atspalvį ir tt. Nebūtina tik komandoms išsiųsti */

bool getHue (int lightNum) {

„WiFiClient“klientas;

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

client.print („GET /api /“); client.print (hueUsername); client.print ("/žibintai/"); client.print („lightNum“); client.println ("3/būsena"); client.print („Priegloba:“); client.println (hueHubIP); client.println ("Turinio tipas: programa/json"); client.println („išlaikyti gyvybę“); klientas.println ();

while (client.connected ()) {if (client.available ()) {client.findUntil ("\" on / ":", "\ 0"); hueOn = (client.readStringUntil (',') == "tiesa"); // jei šviečia lemputė, nustatykite kintamąjį į true client.findUntil ("\" bri / ":", "\ 0"); hueBri = client.readStringUntil (',').toInt (); // nustatyti kintamąjį į ryškumo vertę client.findUntil ("\" hue / ":", "\ 0"); hueHue = client.readStringUntil (',').toInt (); // nustatyti kintamąjį į atspalvio vertės pertrauką; // dar neužfiksavęs kitų šviesos atributų}} client.stop (); grįžti tiesa; // užfiksuotas, bri, hue} else return false; // klaida skaitant, bri, hue}

19 žingsnis:

Vaizdas
Vaizdas

Manau, kad galėčiau užmegzti ryšį su „Philips Hue“. Gaunu informacijos, bet ją vis tiek reikia panaudoti.

Deja, tai viršija tai, ką galiu koduoti. Jei žinote atsakymą arba jei yra tikrų klaidų, kurias reikia ištaisyti, norėčiau jį išgirsti.:-)

Rekomenduojamas: