Sisukord:

IoT kooliprojekt Philips Hue: 19 sammu
IoT kooliprojekt Philips Hue: 19 sammu

Video: IoT kooliprojekt Philips Hue: 19 sammu

Video: IoT kooliprojekt Philips Hue: 19 sammu
Video: Kooliprojekt 2024, November
Anonim
IoT kooli projekt Philips Hue
IoT kooli projekt Philips Hue

See on käsiraamat, mille pidin kooli jaoks kirjutama. See pole täielik ja ma pole kindel, kas saate seda isegi kasutada. Minu teadmised API -dest on miinimum. Tahtsime teha interaktiivse peegli, mille tagaküljel oleksid ilmastikule reageerivad tuled, väljast tulev valgus jne.

Vaatasin, kuidas saaksin programmeerida Philips Hue lampi koos Arduinoga. Selles selgitan kõiki oma samme ja seda, kui kaugele olen jõudnud. Mul pole õnnestunud Arduinoga tooni programmeerida, kuid arvan, et see on hea algus.

Mul on seda vaja olnud: Arduino tooni lamp sild Philips Hue arendajakonto

Allikad: 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. samm. Alustage

Enne kui pääsete juurde API dokumentatsioonile, peate end arendajana registreerima. See on tasuta, kuid peate tingimustega nõustuma. Selle saate teha siin>

Samm: rakendus Hue

Laadige alla ametlik Philips Hue rakendus. Ühendage telefon võrguga, milles soovite, et Hue Bridge oleks sisse lülitatud.

Samm: ühendage sild

Ühendage oma sild võrguga ja see töötab korralikult. Kontrollige, kas nutitelefonirakendus suudab juhtida sama võrgu tulesid. See peab olema samas WiFi-võrgus.

Samm: IP -aadress

Siis peate avastama oma võrgu silla IP -aadressi. Rakenduses sillaga ühenduse loomiseks vajutage linki ja proovige tulesid juhtida.

5. samm:

Kui see kõik töötab, minge rakenduse seadete menüüsse. Minge jaotisse „Minu sild”, minge jaotisse „Võrguseaded”. Lülitage DHCP lüliti välja ja näete silla IP -aadressi. Pange tähele IP -aadress ja lülitage DHCP uuesti sisse.

6. samm: siluge oma tooni

Siluda oma tooni
Siluda oma tooni

Kui selle kirja panite, peate oma tooni siluma. Selle sammu jaoks vajate IP-aadressi. Peate külastama järgmist saiti.

/debug/clip.html

Liides näeb pildil välja selline. See on kogu veebiliikluse ja tooni RESTful liidese alus.

Sain selle teabe Philips Hue saidi Restful liidese kohta.

URL: see on tegelikult värvitoonisüsteemi konkreetse ressursi (asja) kohalik aadress. See võib olla valgus, tulede rühm või palju muud. See on objekt, millega selle käsu raames suhtlete.

Keha: see on sõnumi osa, mis kirjeldab, mida ja kuidas soovite muuta. Siin sisestate JSON -vormingus ressursi nime ja väärtuse, mida soovite muuta/lisada.

Meetod: siin saate valida 4 HTTP -meetodi vahel, mida tooni kõne saab kasutada.

GET: see on käsk hankida kogu teave adresseeritud ressursi kohta

PUT: see on käsk adresseeritud ressursi muutmiseks

POST: see on käsk luua uus ressurss adresseeritud ressursi sisse

KUSTUTA: see on käsk adresseeritud ressursi kustutamiseks. Vastus: selles piirkonnas näete vastust oma käsule. Samuti JSON -vormingus.

7. samm: alustame

Alustame
Alustame

Nüüd vajame juhuslikult loodud kasutajanime, mille sild teile loob. Selle täitmisel saate ühe.

Sisestage URL:

/api/

Pange keha:

ja vajutage GET

See käsk ütleb põhimõtteliselt "palun looge uus ressurss /api sees" (kus kasutajanimed asuvad), millel on järgmised omadused. Esialgu kuvatakse tõrge ja see on sellepärast, et see on Philips Hue turvaetapp. Nupule vajutades tõestavad nad, et teil on sillale füüsiline juurdepääs.

8. samm:

Pilt
Pilt

Nüüd vajutage sillal olevat nuppu ja klõpsake uuesti POST.

Nüüd saate kasutajanime, mille sild teile lõi.

9. samm: teeme tuledega midagi

Teeme midagi tuledega
Teeme midagi tuledega

Kopeerige oma kasutajanimi ja sisestage see järgmisele reale.

Sisestage see oma URL -i

/api//tuled

Vajutage GET

Peaksite saama JSON -vastuse koos kõigi teie süsteemi tulede ja nende nimedega.

10. samm:

Pilt
Pilt

Laenasin koolist mõned Hue Lightsid, kasutan seda, mille ID on 3. Soovin selle tule kohta konkreetset teavet.

Pange see juba olemasoleva URL -i juurde:

/api//lights/3

Vajutage GET

Nüüd saate kogu teabe Led 3 kohta (kui teil on teine number nagu 1, näete selle kohta teavet).

11. samm: kontrollime valgust

Kontrollime valgust
Kontrollime valgust

Näete "olekus", et minu led on sisse lülitatud. Me tahame juhtida valgust "olekus".

Pange see juba olemasoleva URL -i juurde: https:/// api// lights/ 3/ state

Pange järgmine rida kehale

Vajutage PUT

Nüüd lülitub teie valgus välja! Muutke keha väärtus väärtuseks Tõene ja valgus süttib uuesti.

12. samm:

Nüüd töötab kõik, ma tahan seda oma Arduinoga teha. Vaatasin linki, mille Philips Hue andis heledate värvide muutmiseks. Kuid selleks on teil vaja Pythoni, ma pole kunagi Pythoniga koostööd teinud, seega otsisin midagi muud.

Kui teile meeldib seda koodi vaadata, on mul siin Githubi link:

github.com/bsalinas/ArduinoHue

13. samm:

Vaatasin, kuidas saaksin sellelt arendaja saidilt oma arduinole teavet saada. Enamasti ei saanud ma keelest aru. Kuid leidsin James Bruce'i veebisaidilt koodi.

See on link veebisaidile.

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

14. samm:

Kõigepealt nägin, et ta kasutab Etherneti kaablit. Mul oli ainult Hue lambipirn ja sild Arduino ning koodist oli vähe arusaamist. Mul kulus tükk aega, enne kui ma tema koodist aru sain, aga ma ei saa sellest ikka päris aru.

Lisasin selle raamatukogu esmalt interneti jaoks.

#kaasake

See on teie võrgu jaoks (see peab olema sama mis Hue lambipirn)

const char* ssid = ""; // pane siia oma WiFi võrk SSIDconst char* password = ""; // pane siia oma WiFi võrgu parool

Need on teie silla ID ja silla teile antud kasutajanimi. (Ma ei tea, kus see 80 tähistab, aga kui ma uurisin, nägin, et seda kasutati võrkude jaoks).

// Toonikonstandid const char hueHubIP = ""; // Hue jaoturi IP const char hueUsername = ""; // Hue kasutajanimi const int hueHubPort = 80;

// Hue muutujad bool hueOn; // sisse/välja int hueBri; // heleduse väärtus pikk hueHue; // tooni väärtus String hueCmd; // Hue käsk

allkirjastamata pikk puhver = 0; // puhver vastuvõetud andmesalvestuse jaoks allkirjastamata pikk addr;

15. samm:

Tühjuse seadistamiseks tegin internetiühenduse jaoks kõige rohkem. Selles koodis otsib Arduino, kas ta saab võrguga ühenduse luua.

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

Serial.println ();

Serial.printf ("Ühendamine %s", ssid);

WiFi.begin (ssid, parool);

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

viivitus (500);

Seeria.print ("."); }

Serial.println ("ühendatud"); }

16. samm:

Jamesi silmusest nägin, et tal oli avaldus If ja else. Kuid see oli Etherneti kaabli jaoks, nii et proovisin selle välja jätta. Proovisin seda mõnikord ka kohandada, kuid ma ei teadnud veel paljude andmetega. Mõned asjad koodis, millest ma aru sain, on stringis andmed, mis antakse Hue -valgusele.

void loop () {

// Neljast näidiskäsust koosnev seeria, mille värv kustutab punase ja roosa vahel kaks tuld. Täpsete kasutatavate käskude kohta leiate lisateavet Hue API // dokumentatsioonist, kuid pidage meeles, et jutumärgid tuleb tühjendada.

Stringi käsk = "{" on / ": true, \" hue / ": 50100, \" sat / ": 255, \" bri / ": 255, \" transfertime / ":"+string (juhuslik (15, 25))+"}"; setHue (1, käsk);

käsk = "{" sisse / ": tõsi, \" toon / ": 65280, \" sat / ": 255, \" bri / ": 255, \" üleminekuaeg / ":"+string (juhuslik (15, 25))+"}"; setHue (2, käsk);

käsk = "{" toon / ": 65280, \" sat / ": 255, \" bri / ": 255, \" üleminekuaeg / ":"+String (juhuslik (15, 25))+"}"; setHue (1, käsk);

käsk = "{" toon / ": 50100, \" sat / ": 255, \" bri / ": 255, \" üleminekuaeg / ":"+String (juhuslik (15, 25))+"}"; setHue (2, käsk);

}

17. samm:

Järgmine kood oli Boolean, kuid Arduinos peate kirjutama Bool. Algul sain sõna klient tõttu palju vigu. Niisiis otsisin selle üles ja nägin, et mingis koodis kasutati rida "WifiClient client;". Nii et ma kasutasin seda ja see töötas.

Lauses if näete sageli klienti.print. Kui uurite koodi, näete, et varem sisestatud URL on jagatud osadeks. Nüüd sisestage oma kood. Pidin valima oma kolmanda LED -tule.

/ * setHue () on meie peamine käsufunktsioon, millele tuleb edastada kerge number ja * korralikult vormindatud käsustring JSON -vormingus (põhimõtteliselt Javascripti stiilis muutujate * ja väärtuste massiiv. Seejärel esitab see lihtsa HTTP PUT -päringu sild alguses määratud IP -l. */

bool setHue (int lightNum, String käsk) {

WiFiClient klient;

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

while (client.connected ()) {

client.print ("PUT /api /"); klient.print (hueUsername); client.print ("/lights/"); klient.print (lightNum); // hueLight nullpõhine, lisage 1 klient.println ("3/state"); // siin muutsin tooni nime ja olekuklienti.print ("Host:"); klient.println (hueHubIP); client.print ("Sisu-pikkus:"); klient.println (käsk.pikkus ()); client.println ("Sisu tüüp: tekst/tavaline; märgikomplekt = UTF-8"); klient.println (); // tühi rida enne keha klienti.println (käsk); // Hue käsk

} client.stop (); tagastama tõene; // käsk täidetud}

muidu tagasta vale; // käsk ebaõnnestus}

18. samm:

Teisel Booleanil tegin sama asja mõne sõna muutmisega. Laadisin selle üles, et näha, kas see töötab.

/* Abifunktsioon juhuks, kui teie loogika sõltub valguse hetkeseisust. * See määrab hulga globaalseid muutujaid, mida saate kontrollida, et teada saada, kas tuli põleb või mitte * ja toon jne. Pole vaja ainult käskude saatmiseks */

bool getHue (int lightNum) {

WiFiClient klient;

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

client.print ("GET /api /"); klient.print (hueUsername); klient.print ("/lights/"); klient.print (lightNum); client.println ("3/olek"); client.print ("Host:"); klient.println (hueHubIP); client.println ("Sisu tüüp: rakendus/json"); client.println ("hoia elus"); klient.println ();

while (client.connected ()) {if (client.available ()) {client.findUntil ("\" on / ":", "\ 0"); hueOn = (client.readStringUntil (',') == "true"); // kui tuli põleb, määrake muutuja väärtuseks true client.findUntil ("\" bri / ":", "\ 0"); hueBri = client.readStringUntil (','). toInt (); // määrake muutujale heledusväärtus client.findUntil ("\" hue / ":", "\ 0"); hueHue = client.readStringUntil (',').toInt (); // seada muutuja tooni väärtusele break; // muid kergeid atribuute veel jäädvustamata}} client.stop (); tagastama tõene; // jäädvustatud, bri, toon} else return false; // viga lugemisel, bri, hue}

19. samm:

Pilt
Pilt

Ma arvan, et ma saaksin Philipsi tooniga ühenduse luua. Ma saan teavet, kuid seda tuleb veel kasutada.

Kahjuks läheb see kaugemale sellest, mida ma saan kodeerida. Kui teate vastust või on tõelisi vigu, mis tuleb parandada, oleks hea meel seda kuulda.:-)

Soovitan: