Obsah:

Školní projekt IoT Philips Hue: 19 kroků
Školní projekt IoT Philips Hue: 19 kroků

Video: Školní projekt IoT Philips Hue: 19 kroků

Video: Školní projekt IoT Philips Hue: 19 kroků
Video: Stropní svítidla: nesviťte žárovkou ❗️ Jak na správné stropní osvětlení? 💡Světlo a časté chyby doma 2024, Červenec
Anonim
Školní projekt IoT Philips Hue
Školní projekt IoT Philips Hue

Toto je příručka, kterou jsem musel napsat do školy. Není to úplné a nejsem si jistý, jestli to vůbec můžete použít. Moje znalost API je naprosté minimum. Chtěli jsme vytvořit interaktivní zrcadlo se světly na zadní straně, které reagovaly na počasí, světlo zvenčí atd.

Podíval jsem se, jak bych mohl naprogramovat lampu Philips Hue pomocí Arduina. V tomto vysvětluji všechny své kroky a jak daleko jsem se dostal. Nepodařilo se mi programovat Hue pomocí Arduina, ale myslím si, že je to dobrý začátek.

Potřeboval jsem toto: lampa Arduino a odstín a most vývojářský úč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čínáme

Než budete mít přístup k dokumentaci API, budete se muset zaregistrovat jako vývojář. Je to zdarma, ale musíte přijmout smluvní podmínky. Můžete si jej vyrobit zde>

Krok 2: Aplikace Hue

Stáhněte si oficiální aplikaci Philips Hue. Připojte telefon k síti, ve které chcete mít most Hue.

Krok 3: Připojte most

Připojte most k síti a funguje správně. Otestujte, zda aplikace pro chytré telefony může ovládat světla ve stejné síti. Musí být ve stejné síti Wi-Fi.

Krok 4: IP adresa

Poté musíte zjistit IP adresu mostu ve vaší síti. Stisknutím odkazu se připojíte k můstku v aplikaci a zkusíte ovládat světla.

Krok 5:

Pokud vše funguje, přejděte v aplikaci do nabídky nastavení. Poté přejděte na „Můj most“, přejděte na „Nastavení sítě“. Vypněte přepínač DHCP a uvidíte IP adresu mostu. Poznamenejte si IP adresu a poté DHCP znovu zapněte.

Krok 6: Ladění odstínu

Odlaďte svůj odstín
Odlaďte svůj odstín

Když jste si to zapsali, musíte svůj Hue odladit. K tomuto kroku potřebujete IP adresu. Musíte navštívit další web.

/debug/clip.html

Rozhraní bude na obrázku vypadat takto. Toto je základ veškerého webového provozu a odstínu RESTful rozhraní.

Získal jsem tyto informace o klidném rozhraní webu Philips Hue.

URL: toto je ve skutečnosti místní adresa konkrétního zdroje (věci) uvnitř systému odstínů. Může to být světlo, skupina světel nebo mnoho dalších věcí. Toto je objekt, se kterým budete v rámci tohoto příkazu interagovat.

Tělo: toto je část zprávy, která popisuje, co a jak chcete změnit. Zde ve formátu JSON zadáte název zdroje a hodnotu, kterou chcete změnit/přidat.

Metoda: Zde máte na výběr ze 4 metod HTTP, které může volání hue použít.

GET: toto je příkaz k načtení všech informací o adresovaném zdroji

PUT: toto je příkaz pro úpravu adresovaného zdroje

POST: toto je příkaz k vytvoření nového zdroje uvnitř adresovaného zdroje

DELETE: toto je příkaz k odstranění adresovaného zdroje Odpověď: V této oblasti uvidíte odpověď na váš příkaz. Také ve formátu JSON.

Krok 7: Začněme

Začněme
Začněme

Nyní potřebujeme náhodně vygenerované uživatelské jméno, které vám most vytvoří. Získáte jeden vyplněním tohoto.

Vložte URL:

/api/

Vložte do TĚLA:

a stiskněte ZÍSKAT

Tento příkaz v podstatě říká „vytvořte nový zdroj uvnitř /api“(kde sedí uživatelská jména) s následujícími vlastnostmi. Nejprve se zobrazí chyba, a to proto, že se jedná o bezpečnostní krok aplikace Philips Hue. Stisknutím tlačítka dokážou, že máte fyzický přístup k mostu.

Krok 8:

obraz
obraz

Nyní stiskněte tlačítko na můstku a znovu klikněte na POST.

Nyní získáte uživatelské jméno, které vám most vytvořil.

Krok 9: Pojďme něco udělat se světly

Pojďme něco udělat se světly
Pojďme něco udělat se světly

Zkopírujte své uživatelské jméno a vložte jej do následujícího řádku.

Zadejte to do své adresy URL

/api//světla

Stiskněte ZÍSKAT

Měli byste dostat odpověď JSON se všemi kontrolkami ve vašem systému a jejich názvy.

Krok 10:

obraz
obraz

Půjčil jsem si nějaké Hue Lights ze školy, používám ten s id 3. Chci konkrétní informace o tomto světle.

Umístěte to vedle adresy URL, kterou jste již měli:

/api//světla/3

Stiskněte ZÍSKAT

Nyní získáte všechny informace o Led 3 (pokud máte jiné číslo jako 1, uvidíte informace o tom).

Krok 11: Pojďme ovládat světlo

Pojďme ovládat světlo
Pojďme ovládat světlo

Ve „stavu“vidíte, že moje LED dioda „svítí“. Chceme ovládat světlo ve „stavu“.

Umístěte to vedle adresy URL, kterou jste již měli: https:/// api// lights/ 3/ state

Vložte další řádek do TĚLA

Stiskněte PUT

Nyní vaše světlo zhasne! Změňte hodnotu v těle na true a světlo se znovu rozsvítí.

Krok 12:

Nyní vše funguje, chci to udělat se svým Arduinem. Podíval jsem se na odkaz, který Philips Hue provedl, aby se změnila barva světla. Ale k tomu potřebujete Python, s Pythonem jsem nikdy nepracoval, takže jsem hledal něco jiného.

Pokud se chcete podívat na tento kód, mám zde odkaz na Github:

github.com/bsalinas/ArduinoHue

Krok 13:

Podíval jsem se, jak mohu získat informace z tohoto webu pro vývojáře do mého arduina. Většinou jsem jazyku nerozuměl. Ale našel jsem nějaký kód na webové stránce od Jamese Bruce.

Toto je odkaz na web.

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

Krok 14:

Nejprve jsem viděl, že používá ethernetový kabel. Měl jsem pouze žárovku Hue a Bridge a Arduino a málo rozuměl kódu. Chvíli mi trvalo, než jsem pochopil jeho kód, ale pořád tomu nerozumím.

Nejprve jsem přidal tuto knihovnu pro internet.

#zahrnout

Toto je pro vaši síť (musí být stejné jako žárovka Hue)

const char* ssid = ""; // sem vložte svoji WiFi síť SSIDconst char* heslo = ""; // sem vložte heslo k WiFi síti

Toto jsou ID vašeho mostu a uživatelské jméno, které vám most dal. (Nevím, kde je 80, ale když jsem provedl nějaký průzkum, viděl jsem, že byl použit pro sítě).

// Konstanty odstínu konstantní char hueHubIP = ""; // Hue Hub IP const char hueUsername = ""; // Hue uživatelské jméno const int hueHubPort = 80;

// Proměnné odstínu bool hueOn; // zapnuto/vypnuto int hueBri; // hodnota jasu dlouhý hueHue; // hodnota odstínu Řetězec hueCmd; // Příkaz Hue

nepodepsaný dlouhý buffer = 0; // vyrovnávací paměť pro přijatá úložiště dat unsigned long addr;

Krok 15:

Pro nastavení prázdnoty jsem udělal nejvíce pro připojení k internetu. V tomto kódu Arduino hledá, zda se může připojit k síti.

neplatné nastavení () {Serial.begin (9600);

Serial.println ();

Serial.printf ("Připojení k %s", ssid);

WiFi.begin (ssid, heslo);

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

zpoždění (500);

Serial.print ("."); }

Serial.println ("připojeno"); }

Krok 16:

Ve smyčce Jamese jsem viděl, že měl prohlášení If a else. Ale to bylo pro ethernetový kabel, takže jsem to zkusil vynechat. Také jsem to někdy zkoušel upravit, ale u spousty dat jsem to ještě nevěděl. Některé věci v kódu jsem pochopil, v řetězci jsou data, která jsou dána světlu Hue.

prázdná smyčka () {

// Série čtyř ukázkových příkazů, jejichž barva slábne mezi dvěma světly mezi červenou a růžovou. Přečtěte si dokumentaci Hue API //, kde najdete další podrobnosti o přesných příkazech, které se mají použít, ale mějte na paměti, že je třeba uvozovky uvozovat.

Řetězec příkaz = "{" on / ": true, \" hue / ": 50100, \" sat / ": 255, \" bri / ": 255, \" transitiontime / ":"+String (náhodný (15 (25))+"}"; setHue (1, příkaz);

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

příkaz = "{" odstín / ": 65280, \" sat / ": 255, \" bri / ": 255, \" transitiontime / ":"+String (random (15, 25))+"}"; setHue (1, příkaz);

příkaz = "{" odstín / ": 50100, \" sat / ": 255, \" bri / ": 255, \" transitiontime / ":"+String (random (15, 25))+"}"; setHue (2, příkaz);

}

Krok 17:

Další kód byl Boolean, ale v Arduinu musíte napsat Bool. Zpočátku jsem kvůli slovu klient dostal spoustu chyb. Tak jsem to vyhledal a zjistil, že nějaký kód používá řádek „WifiClient client;“. Tak jsem to použil a fungovalo to.

V příkazu if často vidíte client.print. Pokud se podíváte do kódu, uvidíte, že adresa URL, kterou jste zadali dříve, je rozdělena na kusy. Nyní zadejte svůj vlastní kód. Musel jsem si vybrat své 3. LED světlo.

/ * setHue () je naše hlavní příkazová funkce, které je třeba předat světelné číslo a * správně formátovaný příkazový řetězec ve formátu JSON (v podstatě pole proměnných * a hodnot ve stylu Javascriptu. Poté vytvoří jednoduchý požadavek HTTP PUT na most na IP specifikované na začátku. */

bool setHue (int lightNum, příkaz String) {

Klient WiFiClient;

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

while (client.connected ()) {

client.print ("PUT /api /"); client.print (hueUsername); client.print ("/světla/"); client.print (lightNum); // hueLight založené na nule, přidejte 1 client.println ("3/stav"); // zde jsem změnil název odstínu a stateclient.print ("Host:"); client.println (hueHubIP); client.print ("Délka obsahu:"); client.println (command.length ()); client.println ("Content-Type: text/plain; charset = UTF-8"); client.println (); // prázdný řádek před tělem client.println (příkaz); // Příkaz Hue

} client.stop (); return true; // příkaz proveden}

else return false; // příkaz selhal}

Krok 18:

U druhého booleanu jsem udělal to samé se změnou některých slov. Nahrál jsem to, abych zjistil, jestli to funguje.

/* Pomocná funkce v případě, že vaše logika závisí na aktuálním stavu světla. * Tím se nastaví řada globálních proměnných, které můžete zkontrolovat, abyste zjistili, zda kontrolka aktuálně svítí nebo ne * a odstín atd. Není potřeba pouze k odesílání příkazů */

bool getHue (int lightNum) {

Klient WiFiClient;

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

client.print ("GET /api /"); client.print (hueUsername); client.print ("/světla/"); client.print (lightNum); client.println ("3/stav"); client.print ("Host:"); client.println (hueHubIP); client.println ("Typ obsahu: aplikace/json"); client.println („udržovat naživu“); client.println ();

while (client.connected ()) {if (client.available ()) {client.findUntil ("\" on / ":", "\ 0"); hueOn = (client.readStringUntil (',') == "true"); // pokud světlo svítí, nastavte proměnnou na true client.findUntil ("\" bri / ":", "\ 0"); hueBri = client.readStringUntil (',').toInt (); // nastavení proměnné na hodnotu jasu client.findUntil ("\" hue / ":", "\ 0"); hueHue = client.readStringUntil (',').toInt (); // nastavení proměnné na hodnotu odstínu přerušení; // zatím nezachycuje jiné světelné atributy}} client.stop (); return true; // zachyceno na, bri, hue} else return false; // chyba čtení na, bri, odstín}

Krok 19:

obraz
obraz

Myslím, že bych mohl navázat spojení s Philips Hue. Dostávám informace, ale ty je stále třeba použít.

Bohužel to překračuje rámec toho, co mohu kódovat. Pokud znáte odpověď nebo existují skutečné chyby, které je třeba opravit, rád si to poslechnu.:-)

Doporučuje: