Obsah:

Školský projekt IoT Philips Hue: 19 krokov
Školský projekt IoT Philips Hue: 19 krokov

Video: Školský projekt IoT Philips Hue: 19 krokov

Video: Školský projekt IoT Philips Hue: 19 krokov
Video: Ambient LED панели с адресными светодиодами и музыкальным режимом, подключаем через Local Tuya 2024, Júl
Anonim
Školský projekt IoT Philips Hue
Školský projekt IoT Philips Hue

Toto je príručka, ktorú som musel napísať do školy. Nie je to úplné a nie som si istý, či to dokonca môžete použiť. Moje znalosti API sú úplné minimum. Chceli sme vytvoriť interaktívne zrkadlo so svetlami na zadnej strane, ktoré reagujú na počasie, svetlo zvonku atď.

Pozrel som sa na to, ako by som mohol naprogramovať lampu Philips Hue pomocou Arduina. V tomto vysvetľujem všetky svoje kroky a ako ďaleko som sa dostal. Programovanie Hue pomocou Arduina sa mi nepodarilo, ale myslím si, že je to dobrý začiatok.

Potreboval som to: lampa Arduino a odtieň a most vývojársky účet Philips Hue

Zdroje: 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-…

Krok 1: Začnite

Pred prístupom k dokumentácii API sa musíte zaregistrovať ako vývojár. Je to zadarmo, ale musíte prijať zmluvné podmienky. Môžete si ho vytvoriť tu>

Krok 2: Aplikácia Hue

Stiahnite si oficiálnu aplikáciu Philips Hue. Pripojte svoj telefón k sieti, v ktorej je most Hue zapnutý.

Krok 3: Pripojte most

Pripojte most k sieti a funguje správne. Otestujte, či aplikácia pre smartfóny môže ovládať svetlá v tej istej sieti. Musí byť v rovnakej sieti Wi-Fi.

Krok 4: IP adresa

Potom musíte zistiť IP adresu mosta vo vašej sieti. Stlačením odkazu sa pripojíte k mostu v aplikácii a vyskúšate ovládať svetlá.

Krok 5:

Ak to funguje, choďte v aplikácii do ponuky nastavení. Potom prejdite na „Môj most“a kliknite na „Nastavenia siete“. Vypnite prepínač DHCP a uvidíte IP adresu mosta. Poznačte si IP adresu a potom znova zapnite DHCP.

Krok 6: Ladte svoj odtieň

Odlaďte svoj odtieň
Odlaďte svoj odtieň

Keď ste to zapísali, musíte ladiť svoj Hue. Na tento krok potrebujete IP adresu. Musíte navštíviť nasledujúci web.

/debug/clip.html

Rozhranie bude na obrázku vyzerať takto. Toto je základ všetkej webovej návštevnosti a rozhrania RESTful odtieňa.

Získal som tieto informácie o rozhraní Restful webu Philips Hue.

URL: toto je vlastne miestna adresa konkrétneho zdroja (veci) v systéme odtieňov. Môže to byť svetlo, skupina svetiel alebo mnoho ďalších vecí. Toto je objekt, s ktorým budete interagovať v rámci tohto príkazu.

Telo: toto je časť správy, ktorá popisuje, čo a ako chcete zmeniť. Tu zadajte vo formáte JSON názov zdroja a hodnotu, ktoré chcete zmeniť/pridať.

Metóda: Tu máte na výber zo 4 metód HTTP, ktoré môže volanie odtieňa použiť.

GET: toto je príkaz na načítanie všetkých informácií o adresovanom zdroji

PUT: toto je príkaz na úpravu adresovaného zdroja

POST: toto je príkaz na vytvorenie nového zdroja v rámci adresovaného zdroja

ODSTRÁNIŤ: toto je príkaz na odstránenie adresovaného zdroja Odpoveď: V tejto oblasti uvidíte odpoveď na váš príkaz. Tiež vo formáte JSON.

Krok 7: Začnime

Začnime
Začnime

Teraz potrebujeme náhodne vygenerované používateľské meno, ktoré vám most vytvorí. Jednu z nich získate vyplnením tohto.

Zadajte URL:

/api/

Vložte do TELA:

a stlačte ZÍSKAŤ

Tento príkaz v zásade hovorí „vytvorte nový zdroj vo vnútri /api“(kde sú uložené používateľské mená) s nasledujúcimi vlastnosťami. Najprv sa zobrazí chyba, a to preto, že ide o krok zabezpečenia programu Philips Hue. Stlačením tlačidla sa preukáže, že máte fyzický prístup na most.

Krok 8:

Obrázok
Obrázok

Teraz stlačte tlačidlo na mostíku a znova kliknite na POST.

Teraz získate používateľské meno, ktoré vám most vyrobil.

Krok 9: Urobme niečo so svetlami

Urobme niečo so svetlami
Urobme niečo so svetlami

Skopírujte svoje používateľské meno a zadajte ho do nasledujúceho riadku.

Zadajte to do svojej adresy URL

/api//svetla

Stlačte ZÍSKAŤ

Mali by ste dostať odpoveď JSON so všetkými svetlami vo vašom systéme a ich názvami.

Krok 10:

Obrázok
Obrázok

Požičal som si zo školy niekoľko svetiel Hue, ktoré používam, je to s id 3. Chcem konkrétne informácie o tomto svetle.

Umiestnite to vedľa adresy URL, ktorú ste už mali:

/api//lights/3

Stlačte ZÍSKAŤ

Teraz získate všetky informácie o Led 3 (ak máte iné číslo ako 1, uvidíte informácie o ňom).

Krok 11: Ovládajme svetlo

Ovládajme svetlo
Ovládajme svetlo

Na „stave“vidíte, že moja LED dióda „svieti“. Chceme ovládať svetlo v „stave“.

Umiestnite to vedľa adresy URL, ktorú ste už mali: https:/// api// lights/ 3/ state

Vložte ďalší riadok do TELA

Stlačte PUT

Teraz vaše svetlo zhasne! Zmeňte hodnotu v tele na hodnotu true a svetlo sa znova rozsvieti.

Krok 12:

Teraz všetko funguje, chcem to urobiť so svojim Arduino. Pozrel som sa na odkaz, ktorý spoločnosť Philips Hue poskytla na zmenu farby svetla. Na to však potrebujete Python, s Pythonom som nikdy nepracoval, a tak som hľadal niečo iné.

Ak sa chcete pozrieť na tento kód, mám tu odkaz na Github:

github.com/bsalinas/ArduinoHue

Krok 13:

Pozrel som sa, ako môžem získať informácie z tejto stránky pre vývojárov do môjho arduina. Väčšinou som nerozumel jazyku. Ale našiel som nejaký kód na webovej stránke od Jamesa Brucea.

Toto je odkaz na webovú stránku.

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

Krok 14:

Najprv som videl, že používa ethernetový kábel. Mal som iba žiarovku Hue a Bridge a Arduino a málo som rozumel kódu. Chvíľu mi trvalo, kým som porozumel jeho kódu, ale aj tak mu nerozumiem.

Túto knižnicu som najskôr pridal pre internet.

#zahrnúť

Toto je pre vašu sieť (musí byť rovnaké ako žiarovka Hue)

const char* ssid = ""; // sem vložte svoju WiFi sieť SSIDconst char* heslo = ""; // sem zadajte heslo svojej siete WiFi

Toto sú ID vášho mosta a používateľské meno, ktoré vám most dal. (Neviem, kde je 80, ale keď som robil malý prieskum, zistil som, že sa používa na siete).

// Konštanty odtieňa const char hueHubIP = ""; // Hue IP hub const char hueUsername = ""; // Odtieň používateľského mena const int hueHubPort = 80;

// Premenné odtieňa bool hueOn; // zapnutie/vypnutie int hueBri; // hodnota jasu dlhý hueHue; // hodnota odtieňa Reťazec hueCmd; // Príkaz Hue

nepodpísaný dlhý buffer = 0; // buffer pre úložisko prijatých dát unsigned long addr;

Krok 15:

Pre nastavenie prázdnoty som urobil najviac pre internetové pripojenie. V tomto kóde Arduino hľadá, či sa môže pripojiť k sieti.

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

Serial.println ();

Serial.printf ("Pripojenie k %s", ssid);

WiFi.begin (ssid, heslo);

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

oneskorenie (500);

Serial.print ("."); }

Serial.println ("pripojený"); }

Krok 16:

V slučke Jamesa som videl, že mal vyhlásenie If a else. Ale to bolo pre ethernetový kábel, takže som to skúsil vynechať. Tiež som sa to niekedy pokúšal upraviť, ale s mnohými údajmi som ešte nevedel. Niektorým veciam v kóde som porozumel, v reťazci sú údaje, ktoré sú dané svetlu Hue.

prázdna slučka () {

// Séria štyroch ukážkových príkazov, ktorých farba zoslabuje dve svetlá medzi červenou a ružovou. Prečítajte si dokumentáciu k rozhraniu Hue API //, kde nájdete ďalšie podrobnosti o presných príkazoch, ktoré sa majú použiť, ale upozorňujeme, že úvodzovkám je potrebné uniknúť.

Reťazcový príkaz = "{" on / ": true, \" hue / ": 50100, \" sat / ": 255, \" bri / ": 255, \" transitiontime / ":"+String (náhodný (15, 25))+"}"; setHue (1, príkaz);

command = "{" on / ": true, \" hue / ": 65280, \" sat / ": 255, \" bri / ": 255, \" transitiontime / ":"+String (random (15, 25))+"}"; setHue (2, príkaz);

príkaz = "{" odtieň / ": 65280, \" sat / ": 255, \" bri / ": 255, \" transitiontime / ":"+Reťazec (náhodný (15, 25))+"}"; setHue (1, príkaz);

príkaz = "{" odtieň / ": 50100, \" sat / ": 255, \" bri / ": 255, \" transitiontime / ":"+Reťazec (náhodný (15, 25))+"}"; setHue (2, príkaz);

}

Krok 17:

Ďalší kód bol Boolean, ale v Arduine musíte napísať Bool. Spočiatku som kvôli slovu klient dostal veľa chýb. Skúsil som to a zistil som, že nejaký kód používa riadok „klient WifiClient;“. Tak som si to zvykol a fungovalo to.

V príkaze if často vidíte client.print. Ak sa pozriete na kód, uvidíte, že adresa URL, ktorú ste zadali predtým, je rozdelená na časti. Teraz zadajte svoj vlastný kód. Musel som si vybrať svoje 3. LED svetlo.

/ * setHue () je naša hlavná príkazová funkcia, ktorej treba zadať ľahké číslo a * správne formátovaný príkazový reťazec vo formáte JSON (v zásade pole premenných * a hodnôt v štýle Javascript. Potom urobí jednoduchú požiadavku HTTP PUT na most na IP uvedenej na začiatku. */

bool setHue (int lightNum, príkaz String) {

Klient WiFiClient;

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

while (client.connected ()) {

client.print ("PUT /api /"); client.print (hueUsername); client.print ("/svetla/"); client.print (lightNum); // hueLight založené na nule, pridajte 1 client.println ("3/stav"); // tu som zmenil názov odtieňa a stateclient.print ("Host:"); client.println (hueHubIP); client.print („Dĺžka obsahu:“); client.println (command.length ()); client.println ("Content-Type: text/plain; charset = UTF-8"); client.println (); // prázdny riadok pred telom client.println (príkaz); // Príkaz Hue

} client.stop (); návrat true; // príkaz vykonaný}

else return false; // príkaz zlyhal}

Krok 18:

Pri druhom booleovskom jazyku som urobil to isté so zmenou niektorých slov. Nahral som to, aby som zistil, či to funguje.

/* Pomocná funkcia v prípade, že vaša logika závisí od aktuálneho stavu svetla. * Nastavuje sa tým niekoľko globálnych premenných, ktoré môžete skontrolovať a zistiť, či svetlo momentálne svieti alebo nie * a odtieň atď. Nie je potrebné iba na odosielanie príkazov */

bool getHue (int lightNum) {

Klient WiFiClient;

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

client.print („GET /api /“); client.print (hueUsername); client.print ("/svetla/"); client.print (lightNum); client.println ("3/štát"); client.print ("Host:"); client.println (hueHubIP); client.println ("Typ obsahu: aplikácia/json"); client.println („udržať nažive“); client.println ();

while (client.connected ()) {if (client.available ()) {client.findUntil ("\" on / ":", "\ 0"); hueOn = (client.readStringUntil (',') == "true"); // ak svetlo svieti, nastavte premennú na true client.findUntil ("\" bri / ":", "\ 0"); hueBri = client.readStringUntil (',').toInt (); // nastavenie premennej na hodnotu jasu client.findUntil ("\" hue / ":", "\ 0"); hueHue = client.readStringUntil (',').toInt (); // nastavenie premennej na hodnotu odtieňa break; // zatiaľ nezachytáva iné svetelné atribúty}} client.stop (); návrat true; // zachytené dňa, bri, odtieň} else return false; // chyba pri čítaní ďalej, bri, odtieň}

Krok 19:

Obrázok
Obrázok

Myslím, že by som mohol vytvoriť spojenie s Philips Hue. Dostávam informácie, ale tie je stále potrebné použiť.

Bohužiaľ to presahuje rámec toho, čo môžem kódovať. Ak poznáte odpoveď alebo ak existujú skutočné chyby, ktoré je potrebné opraviť, rád by som to počul.:-)

Odporúča: