Obsah:
- Krok 1: Začínáme
- Krok 2: Aplikace Hue
- Krok 3: Připojte most
- Krok 4: IP adresa
- Krok 5:
- Krok 6: Ladění odstínu
- Krok 7: Začněme
- Krok 8:
- Krok 9: Pojďme něco udělat se světly
- Krok 10:
- Krok 11: Pojďme ovládat světlo
- Krok 12:
- Krok 13:
- Krok 14:
- Krok 15:
- Krok 16:
- Krok 17:
- Krok 18:
- Krok 19:
Video: Školní projekt IoT Philips Hue: 19 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:20
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
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
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:
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
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:
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
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:
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:
Školní zvonek pro distanční studenty: 6 kroků
Školní zvonek pro distanční studenty: S pandemií COVID-19 přešlo mnoho dětských škol na dálkové doručování. Tento domácí školní zvonek je zábavný způsob, jak zůstat podle plánu, a to pomocí Raspberry Pi a USB reproduktoru. Zvládnete to s dítětem a oni se mohou naučit programovat
Úžasná školní špionážní pomůcka! Hack Invisible Ink Pen: 6 kroků
Úžasná školní špionážní pomůcka! Hack pro neviditelné inkoustové pero: S tímto úžasným hackem můžete někomu posílat tajné zprávy nebo dokonce podvádět ve třídních testech
Sad Cat Fixer, Catch -Me Cat Toy - školní projekt: 3 kroky
Sad Cat Fixer, Catch-Me Cat Toy-školní projekt: Zde je náš produkt, Jedná se o interaktivní hračkovou myš: Catch-Me Cat Toy. Zde je seznam problémů, kterým mnoho koček v naší společnosti čelí: Kočky se v dnešní době stávají neaktivními a depresivními, protože nemají co dělat Většina majitelů je zaneprázdněna prací nebo školou a vaše
LED box pro školní sympozium Delta: 7 kroků
LED box pro školní sympozium Delta:
Komunikační trénink, školní aktivita nebo hra pro mládež: 3 kroky
Komunikační trénink, školní aktivita nebo hra pro mládež: Tuto aktivitu jsem mnohokrát využil u studentů středních škol. Probíhá to jako závod, s tolika týmy, kolik si přejete. Je založen na staré hře Telefon, kde se šeptá fráze od jedné osoby k druhé, obecně s tím, že konec svítí