Sisällysluettelo:

IoT -kouluprojekti Philips Hue: 19 vaihetta
IoT -kouluprojekti Philips Hue: 19 vaihetta

Video: IoT -kouluprojekti Philips Hue: 19 vaihetta

Video: IoT -kouluprojekti Philips Hue: 19 vaihetta
Video: What you need to know about Philips Hue 2024, Marraskuu
Anonim
IoT -kouluprojekti Philips Hue
IoT -kouluprojekti Philips Hue

Tämä on opas, joka minun piti kirjoittaa kouluun. Se ei ole täydellinen, enkä ole varma, voitko edes käyttää sitä. Tietoni sovellusliittymistä ovat vähimmäisvaatimukset. Halusimme tehdä interaktiivisen peilin, jonka takana oli valoja, jotka reagoivat säähän, ulkopuolelta tulevaan valoon jne.

Katsoin, kuinka voisin ohjelmoida Philips Hue -lampun Arduinolla. Tässä selitän kaikki askeleeni ja kuinka pitkälle olen tullut. En ole onnistunut ohjelmoimaan sävyä Arduinolla, mutta mielestäni se on hyvä alku.

Olen tarvinnut tätä: Arduino hue -lamppu sillan Philips Hue -kehittäjätili

Lähteet: 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-…

Vaihe 1: Aloita

Ennen kuin pääset API -dokumentaatioon, sinun on rekisteröidyttävä kehittäjäksi. Se on ilmainen, mutta sinun on hyväksyttävä käyttöehdot. Voit tehdä sellaisen täällä>

Vaihe 2: Hue -sovellus

Lataa virallinen Philips Hue -sovellus. Liitä puhelin verkkoon, johon haluat Hue -sillan olevan päällä.

Vaihe 3: Yhdistä silta

Yhdistä silta verkkoon ja se toimii oikein. Testaa, että älypuhelinsovellus voi ohjata saman verkon valoja. Sen on oltava samassa Wi-Fi-verkossa.

Vaihe 4: IP -osoite

Sitten sinun on löydettävä verkon sillan IP -osoite. Paina linkkiä muodostaaksesi yhteyden sovelluksen siltaan ja yritä ohjata valoja.

Vaihe 5:

Jos kaikki toimii, siirry sovelluksen asetusvalikkoon. Siirry sitten "Oma silta" -kohtaan "Verkkoasetukset". Kytke DHCP -kytkin pois päältä ja näet sillan IP -osoitteen. Huomaa IP -osoite ja kytke sitten DHCP takaisin päälle.

Vaihe 6: Virheiden korjaus

Debug Your Hue
Debug Your Hue

Kun kirjoitit sen muistiin, sinun on korjattava värisävyäsi. Tarvitset IP-osoitteen tähän vaiheeseen. Sinun täytyy käydä seuraavalla sivustolla.

/debug/clip.html

Käyttöliittymä näyttää tältä kuvassa. Tämä on kaiken verkkoliikenteen ja hue RESTful -käyttöliittymän perusta.

Sain nämä tiedot Philips Hue -sivuston Restful -käyttöliittymästä.

URL: tämä on itse asiassa tietyn resurssin (asian) paikallinen osoite sävyjärjestelmässä. Se voi olla valo, ryhmä valoja tai paljon muuta. Tämä on objekti, jonka kanssa käytät tätä komentoa.

Runko: tämä on viestin osa, joka kuvaa, mitä haluat muuttaa ja miten. Syötä tähän JSON -muodossa sen resurssin nimi ja arvo, jonka haluat muuttaa/lisätä.

Menetelmä: tässä voit valita 4 HTTP -menetelmää, joita hue -puhelu voi käyttää.

GET: Tämä on komento hakea kaikki tiedot osoitetusta resurssista

PUT: tämä on komento muokata osoitettua resurssia

POST: Tämä on komento luoda uusi resurssi osoitetun resurssin sisälle

POISTA: tämä on komento poistaa osoitettu resurssi Vastaus: Tällä alueella näet vastauksen komentoosi. Myös JSON -muodossa.

Vaihe 7: Aloitetaan

Aloitetaan
Aloitetaan

Nyt tarvitsemme satunnaisesti generoidun käyttäjänimen, jonka silta luo sinulle. Saat yhden täyttämällä tämän.

Kirjoita URL -osoite:

/api/

Laita BODY sisään:

ja paina GET

Tämä komento sanoo pohjimmiltaan "Luo uusi resurssi /api -tiedostoon" (jossa käyttäjätunnukset sijaitsevat), jolla on seuraavat ominaisuudet. Saat aluksi virheen, ja tämä johtuu siitä, että se on Philips Hue -suojausaskel. Painiketta painamalla he osoittavat, että sinulla on fyysinen pääsy sillalle.

Vaihe 8:

Kuva
Kuva

Paina nyt Bridge -painiketta ja napsauta POST uudelleen.

Nyt saat käyttäjänimen, jonka silta loi sinulle.

Vaihe 9: Tehdään jotain valojen kanssa

Tehdään jotain valojen kanssa
Tehdään jotain valojen kanssa

Kopioi käyttäjätunnuksesi ja kirjoita se seuraavalle riville.

Laita tämä URL -osoitteeseesi

/api//valot

Paina GET

Sinun pitäisi saada JSON -vastaus, jossa on kaikki järjestelmän valot ja niiden nimet.

Vaihe 10:

Kuva
Kuva

Lainasin koulusta joitain Hue -valoja, jota käytän tunnuksella 3. Haluan tarkkoja tietoja tästä valosta.

Laita tämä jo käytössäsi olevan URL -osoitteen viereen:

/api//lights/3

Paina GET

Nyt saat kaikki tiedot Led 3: sta (jos sinulla on toinen numero, kuten 1, näet tietoja siitä).

Vaihe 11: Hallitaan valoa

Hallitsemme valoa
Hallitsemme valoa

Näet "tilassa", että ledini on "päällä". Haluamme ohjata valoa "tilassa".

Lisää tämä URL -osoitteen viereen, joka sinulla jo oli: https:/// api// lights/ 3/ state

Laita seuraava rivi BODY -kohtaan

Paina PUT

Nyt valosi sammuu! Muuta rungon arvoksi tosi ja valo syttyy uudelleen.

Vaihe 12:

Nyt kaikki toimii, haluan tehdä tämän Arduinollani. Katsoin linkkiä, jonka Philips Hue antoi valon värin muuttamiseksi. Mutta tarvitset Pythonia tähän, en ole koskaan työskennellyt Pythonin kanssa, joten etsin jotain muuta.

Jos haluat katsoa tätä koodia, minulla on Github -linkki täällä:

github.com/bsalinas/ArduinoHue

Vaihe 13:

Katsoin, miten voisin saada tietoja tältä kehittäjäsivustolta arduinooni. Useimmiten en ymmärtänyt kieltä. Mutta löysin koodin James Brucen verkkosivustolta.

Tämä on linkki verkkosivulle.

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

Vaihe 14:

Ensin näin, että hän käytti Ethernet -kaapelia. Minulla oli vain Hue -lamppu ja Bridge Arduino, ja vähän ymmärrystä koodista. Kesti hetken ennen kuin ymmärsin hänen koodinsa, mutta en silti oikein ymmärrä sitä.

Lisäsin tämän kirjaston ensin Internetiin.

#sisältää

Tämä koskee verkkoa (sen on oltava sama kuin Hue -lamppu)

const char* ssid = ""; // laita tähän WiFi -verkon SSIDconst char* password = ""; // laita tähän WiFi -verkon salasanasi

Nämä ovat Bridgesi tunnus ja sillan sinulle antama käyttäjätunnus. (En tiedä, missä 80 tarkoittaa, mutta kun tein tutkimusta, huomasin, että sitä käytettiin verkkoihin).

// Värisävyt Const char hueHubIP = ""; // Värisävyn keskitin IP Const char hueUsername = ""; // Värisävyn käyttäjätunnus const int hueHubPort = 80;

// Värisävyt bool hueOn; // päälle/pois int hueBri; // kirkkausarvo pitkä hueHue; // sävyn arvo Merkkijono hueCmd; // Hue -komento

allekirjoittamaton pitkä puskuri = 0; // puskuri vastaanotetulle tallennukselle unsigned long addr;

Vaihe 15:

Tyhjiön asennuksessa tein eniten Internet -yhteyden puolesta. Tässä koodissa Arduino etsii, voiko hän muodostaa yhteyden verkkoon.

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

Sarja.println ();

Serial.printf ("Yhdistäminen kohteeseen %s", ssid);

WiFi.begin (ssid, salasana);

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

viive (500);

Serial.print ("."); }

Serial.println ("kytketty"); }

Vaihe 16:

Jamesin silmukassa näin, että hänellä oli If ja else -lausunto. Mutta se koski ethernet -kaapelia, joten yritin jättää tämän pois. Olen myös joskus yrittänyt säätää sitä, mutta en tiennyt vielä paljon tietoja. Jotkut asiat koodissa, jonka ymmärsin, merkkijonossa on Hue -valolle annetut tiedot.

void loop () {

// Neljä näytekomentoa, joiden väri häivyttää kaksi valoa punaisen ja vaaleanpunaisen välillä. Lue tarkemmin käytettävistä komennoista Hue API // -dokumentaatiosta, mutta huomaa, että lainausmerkit on poistettava.

String command = "{" on / ": true, \" hue / ": 50100, \" sat / ": 255, \" bri / ": 255, \" siirtymisaika / ":"+Jono (satunnainen (15, 25))+"}"; setHue (1, komento);

command = "{" on / ": true, \" hue / ": 65280, \" sat / ": 255, \" bri / ": 255, \" siirtymisaika / ":"+Jono (satunnainen (15, 25))+"}"; setHue (2, komento);

command = "{" hue / ": 65280, \" sat / ": 255, \" bri / ": 255, \" siirtymisaika / ":"+Jono (satunnainen (15, 25))+"}"; setHue (1, komento);

command = "{" hue / ": 50100, \" sat / ": 255, \" bri / ": 255, \" siirtymisaika / ":"+Jono (satunnainen (15, 25))+"}"; setHue (2, komento);

}

Vaihe 17:

Seuraava koodi oli Boolean, mutta Arduinossa sinun on kirjoitettava Bool. Aluksi sain paljon virheitä sanan client takia. Joten katsoin sitä ja huomasin, että jokin koodi käytti riviä "WifiClient client;". Joten käytin sitä ja se toimi.

If -lauseessa näkyy usein client.print. Jos tarkastelet koodia, huomaat, että aiemmin antamasi URL -osoite on jaettu osiin. Kirjoita nyt oma koodi. Minun piti valita kolmas LED -valoni.

/ * setHue () on tärkein komentotoimintomme, joka on välitettävä valonumerolla ja * oikein muotoillulla komentojonolla JSON -muodossa (pohjimmiltaan Javascript -tyylinen muuttujien * ja arvojen ryhmä. Se tekee sitten yksinkertaisen HTTP PUT -pyynnön silta alussa määritetyllä IP -osoitteella. */

bool setHue (int lightNum, String -komento) {

WiFiClient -asiakas;

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

while (client.connected ()) {

client.print ("PUT /api /"); client.print (hueUsername); client.print ("/valot/"); client.print (lightNum); // hueLight nollapohjainen, lisää 1 client.println ("3/state"); // tässä muutin värisävyn nimen ja stateclient.print ("Host:"); client.println (hueHubIP); client.print ("Content-Length:"); client.println (command.length ()); client.println ("Sisältötyyppi: teksti/tavallinen; merkistö = UTF-8"); client.println (); // tyhjä rivi ennen asiakasta. println (komento); // Hue -komento

} client.stop (); palaa tosi; // komento suoritettu}

muuten palauta epätosi; // komento epäonnistui}

Vaihe 18:

Toisessa Booleanissa tein saman asian muuttamalla joitain sanoja. Latasin sen nähdäkseni toimiiko.

/* Aputoiminto, jos logiikka riippuu valon nykyisestä tilasta. * Tämä asettaa useita globaaleja muuttujia, joiden avulla voit tarkistaa, palaako valo vai ei * ja sävy jne. Ei tarvita vain komentojen lähettämiseen */

bool getHue (int lightNum) {

WiFiClient -asiakas;

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

client.print ("GET /api /"); client.print (hueUsername); client.print ("/valot/"); client.print (lightNum); client.println ("3/tila"); client.print ("Isäntä:"); client.println (hueHubIP); client.println ("Sisältötyyppi: application/json"); client.println ("pidä hengissä"); client.println ();

while (client.connected ()) {if (client.available ()) {client.findUntil ("\" päällä / ":", "\ 0"); hueOn = (client.readStringUntil (',') == "tosi"); // jos valo palaa, aseta muuttuja arvoon true client.findUntil ("\" bri / ":", "\ 0"); hueBri = client.readStringUntil (',').toInt (); // aseta muuttuja kirkkausarvoon client.findUntil ("\" hue / ":", "\ 0"); hueHue = client.readStringUntil (',').toInt (); // aseta muuttuja hue -arvon taukoon; // muita vanhoja attribuutteja ei vielä kaapata}} client.stop (); palaa tosi; // kaapattu, bri, hue} else return false; // virhe lukemassa, bri, hue}

Vaihe 19:

Kuva
Kuva

Luulen, että voin muodostaa yhteyden Philips Hueen. Saan tietoja, mutta niitä on edelleen käytettävä.

Valitettavasti tämä ylittää sen, mitä voin koodata. Jos tiedät vastauksen tai jos on todellisia virheitä, jotka on korjattava, haluaisin kuulla sen.:-)

Suositeltava: