Tartalomjegyzék:

IoT School Project Philips Hue: 19 lépés
IoT School Project Philips Hue: 19 lépés

Videó: IoT School Project Philips Hue: 19 lépés

Videó: IoT School Project Philips Hue: 19 lépés
Videó: The Internet of Things by James Whittaker of Microsoft 2024, Július
Anonim
IoT School Project Philips Hue
IoT School Project Philips Hue

Ez egy kézikönyv, amit az iskolába kellett írnom. Ez nem teljes, és nem vagyok benne biztos, hogy tudja -e használni. Az API ismereteim a minimum. Szerettünk volna egy interaktív tükröt készíteni, a hátlapján lévő fényekkel, amelyek reagáltak az időjárásra, kívülről érkező fényre stb.

Megnéztem, hogyan programozhatom be a Philips Hue lámpát egy Arduino -val. Ebben elmagyarázom minden lépésemet és azt, hogy milyen messzire jutottam. Nem sikerült programoznom a színárnyalatot az Arduino -val, de szerintem jó kezdet.

Szükségem volt erre: egy Arduino a hue lámpa és egy híd Philips Hue fejlesztői fiók

Források: 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. lépés: Kezdje el

Mielőtt hozzáférhet az API dokumentációjához, regisztrálnia kell fejlesztőként. Ingyenes, de el kell fogadnia a feltételeket. Itt készíthet egyet>

2. lépés: Hue App

Töltse le a hivatalos Philips Hue alkalmazást. Csatlakoztassa telefonját ahhoz a hálózathoz, amelyen a Hue bridge be van kapcsolva.

3. lépés: Csatlakoztassa a hidat

Csatlakoztassa a hidat a hálózatához, és megfelelően működik. Tesztelje, hogy az okostelefon -alkalmazás képes -e szabályozni a világítást ugyanazon a hálózaton. Ugyanazon a Wi-Fi hálózaton kell lennie.

4. lépés: IP -cím

Ezután meg kell találnia a hálózaton lévő híd IP -címét. Nyomja meg a linket az alkalmazás hídjához való csatlakozáshoz, és próbálja meg szabályozni a fényeket.

5. lépés:

Ha minden működik, menjen az alkalmazás beállítások menüjébe. Menjen a „My Bridge” menüpontra, és lépjen a „Hálózati beállítások” pontra. Kapcsolja ki a DHCP kapcsolót, és megjelenik a híd IP -címe. Jegyezze fel az IP -címet, majd kapcsolja be újra a DHCP -t.

6. lépés: Hibakeresés az árnyalatával

Hibakeresés az árnyalatával
Hibakeresés az árnyalatával

Amikor ezt leírta, hibakeresést kell végeznie a színárnyalattal. Ehhez a lépéshez szüksége van az IP-címre. Meg kell látogatnia a következő oldalt.

/debug/clip.html

A kezelőfelület így fog kinézni a képen. Ez az alapja minden webes forgalomnak és a Hue RESTful felületnek.

Ezt az információt a Philips Hue webhely Restful felületéről kaptam.

URL: ez valójában egy adott erőforrás (dolog) helyi címe a színárnyalat -rendszeren belül. Ez lehet fény, fénycsoport vagy még sok más. Ez az az objektum, amellyel interakcióba lép ezen a parancson belül.

Törzs: ez az üzenet azon része, amely leírja, mit és hogyan szeretne megváltoztatni. Itt adja meg JSON formátumban a módosítani/hozzáadni kívánt erőforrás nevét és értékét.

Egy módszer: itt választhat a 4 HTTP módszer közül, amelyeket a színárnyalat hívhat.

GET: ez a parancs a címzett erőforrással kapcsolatos összes információ lekérésére

PUT: ez a parancs egy címzett erőforrás módosítására

POST: ez a parancs új erőforrás létrehozására a címzett erőforráson belül

DELETE: ez a parancs a címzett erőforrás törlésére Válasz: Ezen a területen láthatja a parancsra adott választ. Szintén JSON formátumban.

7. lépés: Kezdjük el

Lássunk neki
Lássunk neki

Most szükségünk van egy véletlenszerűen generált felhasználónévre, amelyet a híd hoz létre az Ön számára. Ezt kitöltve kapsz egyet.

Írja be az URL -t:

/api/

Tedd bele a TESTET:

és nyomja meg a GET gombot

Ez a parancs alapvetően azt mondja, hogy "kérjük, hozzon létre egy új erőforrást az /api -n belül" (ahol a felhasználónevek találhatók) a következő tulajdonságokkal. Először hibaüzenetet kap, és ez azért van, mert ez a Philips Hue biztonsági lépése. A gomb megnyomásával bebizonyítják, hogy fizikai hozzáféréssel rendelkezik a hídhoz.

8. lépés:

Kép
Kép

Most nyomja meg a híd gombot, majd kattintson ismét a POST gombra.

Most kap egy felhasználónevet, amelyet a híd készített Önnek.

9. lépés: Tegyünk valamit a fényekkel

Csináljunk valamit a fényekkel
Csináljunk valamit a fényekkel

Másolja ki felhasználónevét, és írja be a következő sorba.

Írja be ezt az URL -be

/api//lights

Nyomja meg a GET gombot

JSON választ kell kapnia a rendszer összes lámpájával és nevével.

10. lépés:

Kép
Kép

Kölcsönkértem néhány színárnyalatú fényt az iskolából, ezt használom a 3. azonosítóval. Konkrét információkat szeretnék erről a lámpáról.

Tegye ezt a már meglévő URL mellé:

/api//lights/3

Nyomja meg a GET gombot

Most megkapja az összes információt a Led 3 -ról (ha van egy másik száma, mint az 1, akkor látni fogja az információt erről).

11. lépés: Irányítsuk a fényt

Irányítsuk a fényt
Irányítsuk a fényt

Látja "állapotban", hogy a led "be" van kapcsolva. A fényt "állapotban" akarjuk irányítani.

Tegye ezt a már meglévő URL mellé: https:/// api// lights/ 3/ state

Írja be a következő sort a BODY -ba

Nyomja meg a PUT gombot

Most a fényed kialszik! Módosítsa a testben lévő értéket igazra, és a lámpa újra felkapcsol.

12. lépés:

Most minden működik, ezt szeretném csinálni az Arduino -mmal. Megnéztem a linket, amelyet a Philips Hue adott a fény színének megváltoztatásához. De ehhez Python kell, én sosem dolgoztam Python -al, ezért mást kerestem.

Ha szeretné megnézni ezt a kódot, itt van a Github link:

github.com/bsalinas/ArduinoHue

13. lépés:

Megnéztem, hogyan juthatok információhoz erről a fejlesztői webhelyről az arduino -mhoz. Legtöbbször nem értettem a nyelvet. De találtam egy kódot James Bruce weboldalán.

Ez a link a weboldalra.

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

14. lépés:

Először azt láttam, hogy Ethernet -kábelt használ. Nekem csak egy Hue villanykörte volt, a Bridge pedig egy Arduino, és alig értettem a kódot. Eltartott egy ideig, amíg megértettem a kódját, de még mindig nem igazán értem.

Először hozzáadtam ezt a könyvtárat az internethez.

#befoglalni

Ez a hálózatra vonatkozik (meg kell egyeznie a Hue Light izzóval)

const char* ssid = ""; // tegye ide a WiFi hálózatát SSIDconst char* password = ""; // tegye ide a WiFi hálózati jelszavát

Ezek a Bridge azonosítója és a híd által adott felhasználónév. (Nem tudom, hol áll a 80, de amikor kutakodtam, láttam, hogy hálózatokhoz használták).

// Színezési állandók const char hueHubIP = ""; // Hue hub IP const char hueUsername = ""; // Hue felhasználónév const int hueHubPort = 80;

// Hue változók bool hueOn; // be/ki int hueBri; // fényerő érték hosszú színárnyalatHue; // színárnyalat érték String hueCmd; // Hue parancs

előjel nélküli hosszú puffer = 0; // puffer a fogadott adattároláshoz unsigned long addr;

15. lépés:

Az üresség beállításához a legtöbbet tettem az internetkapcsolatért. Ebben a kódban az Arduino azt vizsgálja, hogy tud -e csatlakozni a hálózathoz.

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

Sorozat.println ();

Serial.printf ("Csatlakozás a %s -hoz", ssid);

WiFi.begin (ssid, jelszó);

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

késleltetés (500);

Soros.nyomtatás ("."); }

Serial.println ("csatlakoztatva"); }

16. lépés:

James hurkában láttam, hogy van Ha és más állítása. De ez az ethernet kábelre vonatkozott, ezért megpróbáltam ezt kihagyni. Én is próbáltam néha beállítani, de sok adat mellett még nem tudtam. A kódban néhány dolgot megértettem, a karakterláncban vannak a Hue fénynek adott adatok.

void loop () {

// Négy mintaparancs, amelyek színe két fényt halványít a piros és a rózsaszín között. Olvassa el a Hue API // dokumentációját, ahol további részleteket talál a használandó parancsokról, de vegye figyelembe, hogy az idézőjeleket el kell hagyni.

String parancs = "{" on / ": true, \" hue / ": 50100, \" sat / ": 255, \" bri / ": 255, \" transittime / ":"+String (véletlen (15, 25))+"}"; setHue (1, parancs);

command = "{" on / ": true, \" hue / ": 65280, \" sat / ": 255, \" bri / ": 255, \" átmeneti idő / ":"+String (véletlen (15, 25))+"}"; setHue (2, parancs);

command = "{" színárnyalat ": 65280, \" sat / ": 255, \" bri / ": 255, \" átmeneti idő / ":"+Karakterlánc (véletlenszerű (15, 25))+"}"; setHue (1, parancs);

command = "{" színárnyalat ": 50100, \" sat / ": 255, \" bri / ": 255, \" átmeneti idő / ":"+Karakterlánc (véletlenszerű (15, 25))+"}"; setHue (2, parancs);

}

17. lépés:

A következő kód egy Boolean volt, de az Arduino -ban Bool -t kell írni. Eleinte sok hibát kaptam a kliens szó miatt. Így utánanéztem, és láttam, hogy néhány kód a "WifiClient kliens;" sort használja. Szóval szoktam és működött.

Az if utasításban gyakran megjelenik a client.print. Ha belenéz a kódba, látni fogja, hogy a korábban megadott URL darabokra van osztva. Most írja be saját kódját. A 3. LED -es lámpát kellett választanom.

A / * setHue () a fő parancsfunkciónk, amelyet át kell adni egy világos számnak és egy * megfelelően formázott parancssornak JSON formátumban (alapvetően Javascript stílusú változókból és értékekből álló tömb). Ezután egyszerű HTTP PUT kérést küld a a híd az elején megadott IP -címen. */

bool setHue (int lightNum, String parancs) {

WiFiClient kliens;

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

while (client.connected ()) {

client.print ("PUT /api /"); client.print (hueUsername); client.print ("/lights/"); client.print (lightNum); // hueLight nulla alapú, adjon hozzá 1 klienst.println ("3/state"); // itt megváltoztattam a színárnyalat nevét és az állapotkliens.print ("Host:"); client.println (hueHubIP); client.print ("Content-Length:"); kliens.println (parancs.hossz ()); client.println ("Content-Type: text/plain; charset = UTF-8"); client.println (); // üres sor a body client előtt. println (parancs); // Hue parancs

} client.stop (); return true; // parancs végrehajtva}

else hamis; // parancs sikertelen}

18. lépés:

A második Boolean -ban ugyanezt tettem néhány szó megváltoztatásával. Feltöltöttem, hátha működik.

/* Segédfunkció abban az esetben, ha logikája a fény aktuális állapotától függ. * Ez számos globális változót állít be, amelyekkel ellenőrizheti, hogy világít -e a lámpa, vagy nem *, valamint a színárnyalatot stb. Nem szükséges csak a parancsok küldéséhez */

bool getHue (int lightNum) {

WiFiClient kliens;

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

client.print ("GET /api /"); client.print (hueUsername); client.print ("/lights/"); client.print (lightNum); client.println ("3/állapot"); client.print ("Host:"); client.println (hueHubIP); client.println ("Tartalom-típus: application/json"); client.println ("életben tartani"); client.println ();

while (client.connected ()) {if (client.available ()) {client.findUntil ("\" on / ":", "\ 0"); hueOn = (client.readStringUntil (',') == "igaz"); // ha a fény világít, állítsa be a változót true client.findUntil ("\" bri / ":", "\ 0"); hueBri = kliens.readStringUntil (',').toInt (); // állítsa be a változót fényerő értékre client.findUntil ("\" hue / ":", "\ 0"); hueHue = kliens.readStringUntil (',').toInt (); // a változó beállítása színárnyalat -törésre; // más fényjellemzőket még nem rögzít}}} client.stop (); return true; // elfogva, bri, hue} else return false; // hiba a beolvasásnál, bri, hue}

19. lépés:

Kép
Kép

Azt hiszem, kapcsolatot létesíthetek a Philips Hue -val. Kapok információt, de még mindig fel kell használni.

Sajnos ez túlmutat azon, amit kódolni tudok. Ha tudja a választ, vagy ha valódi hibákat kell javítani, szívesen meghallgatom.:-)

Ajánlott: