reklama
Řada světel Philips Hue rozhodně není levná (existují některé alternativy Philips Hue Alternativy, které to skutečně stojí za toSystém Philips Hue stojí v čele inteligentního osvětlení, ale existují i jiné užitečné alternativy. Vybrali jsme tři, které nabízejí stejnou základní sadu funkcí a hackovatelnost. Přečtěte si více ), ale jedna věc, kterou si vážím, je dobře zdokumentovaná API Co jsou API a jak otevřená API mění internetPřemýšleli jste někdy o tom, jak programy ve vašem počítači a na navštívených webech „spolu mluví“? Přečtěte si více pro vytváření vlastních aplikací Hue. Dnes vám ukážu, jak ovládat světla Hue z Arduina - poté přidám jednoduchý snímač pohybu.
Proč to děláme? Protože systémy domácí automatizace mohou být docela rigidní a drahé. Tím, že se naučíte, jak ovládat odstín od Arduina, otevíráte dveře řadě projektů domácí automatizace na míru, které jednoduše nelze porazit součástkami, které jsou přímo na trhu. Pokud hackování věcí dohromady není vaše věc, zkuste to
8 báječných aplikací Hue 7 nejlepších aplikací Philips Hue pro Android a iPhoneHledáte nejlepší aplikace Philips Hue, které můžete použít s chytrými světly? Zde je několik skvělých aplikací pro iPhone a Android. Přečtěte si více namísto.Systém odstínů
Pojďme se na chvíli trochu technické, takže budete znát základní systémy, se kterými pracujete. Hue světla vytvořit síť Mesh Networks: Budoucnost komunikaceSíťované sítě jsou téměř nezranitelné. V síťové síti neexistují žádné škrtící body, kterými prochází veškerý provoz. Místo toho jsou informace předávány z jednoho zařízení na další, dokud nedosáhnou svého cíle. Přečtěte si více , používající bezdrátový protokol krátkého dosahu zvaný ZigBee - konkrétně jsou ZigBee Light Link certifikováno, což znamená, že další produkty ZLL by měly fungovat také společně s odstínem (teoreticky).
Ačkoli je to technicky krátký dosah, funkce síťové sítě ZigBee znamená, že každá nová žárovka rozšiřuje síť a předává zprávy dalším žárovkám. To znamená, že pokud máte potíže s ovládáním světla na druhé straně domu, zkuste mezi ně umístit další světlo.
Zigbee je skvělý protokol, ale je docela odlišný od Wi-Fi nebo kabelové počítačové sítě, takže k propojení těchto dvou zařízení potřebujeme Philips Hue Bridge. Hue Bridge provozuje upravený linuxový firmware s otevřeným zdrojovým kódem, který vysílá základní webový server.
Právě díky interakci s tímto místním webovým serverem můžete zjistit aktuální stav světel a ovládat je.
Je to krásně jednoduchý systém a vyzrálý pro kutilské projekty. Kudos to Philips za to, že je tato věc tak hackerská.
Začínáme
Než budete mít přístup k dokumentaci API, musíte zaregistrujte se jako vývojář. Je to zdarma, ale musíte přijmout smluvní podmínky. Udělej to hned teď.
Každý, kdo zná standardní webové služby nebo Javascript, by měl být schopen pracovat s odstínem: všechna data jsou předávána a přijímána jako Pakety JSON Co je JSON? Přehled laikaAť už máte v úmyslu být webovým vývojářem nebo ne, je dobré alespoň vědět, co je JSON, proč je to důležité a proč se používá na celém webu. Přečtěte si více .
Chcete-li se na to podívat v akci, musíte znát adresu IP mostu Hue. Existuje několik způsobů, jak toho dosáhnout:
- Podívejte se na tabulku přiřazení adresy DHCP ve správcovském rozhraní routeru
- Spusťte program mapování sítě jako Domovská stránka skeneru IP
- Vyzkoušejte Philips UPnP brokerský nástroj
- Ping „philips-hue.home“
Až budete hotovi, pokračujte a napište jej do adresního řádku prohlížeče debug / clip.html připojeno k adrese URL. V mém případě to bylo:
http://192.168.1.216/debug/clip.html
Toto je nástroj pro ladění, který vám umožňuje odesílat a přijímat pakety JSON prostřednictvím jednoduchého webového rozhraní. Prvním krokem je povolení profilu vývojáře na samotném Hue Bridge - který je ve výchozím nastavení z bezpečnostních důvodů deaktivován. Vložte následující do pole BODY a ponechte URL jako /api/a pošlete požadavek POST kliknutím na ikonu tlačítko příspěvku:
{"devicetype": "test user", "username": "newdeveloper"}
Když to poprvé uděláte, zobrazí se v odpovědi někde „tlačítko odkazu není stisknuto“. Jedná se o bezpečnostní funkci, která vyžaduje, aby každá nová aplikace, kterou používáte, byla fyzicky autorizována. Jděte a najděte svůj most, stiskněte tlačítko a znovu pošlete stejnou žádost do 30 sekund. Tentokrát dostanete jinou odpověď a uživatel bude autorizován. Pokud chcete použít jiné uživatelské jméno, přečtěte si dokumenty API o vytváření uživatelů. Pro tuto chvíli to bude stačit.
Jakmile je váš uživatel nastaven, stane se základní URL, se kterým byste měli interagovat /api/newdeveloper/. Můžete poslat požadavek GET, abyste zjistili vše, co váš most v současné době ví o propojených světlech, poplachech, scénách a krátkém protokolu aplikací, které byly použity. Zde je ukázka některých stavových informací obsažených v jedné žárovce.
"state": {"on": true, "bri": 254, "hue": 14910, "sat": 144, "effect": "none", "xy": [0.4596, 0.4105], "ct": 369, "alert": "none", "colormode": "ct", "reachable": false}, "type": "Extended color light", "name": "Bedroom 1", "modelid": "LCT001",
Všimněte si, že „On“: true stav vám vlastně neukazuje, zda je žárovka zapnutá nebo ne; pouze to podle nastavení Bridge, to by měl být na. „Dosažitelný“: nepravdivý může označovat obě žárovky, které jsou příliš daleko, nebo jednoduše vypnuty vypínačem.
Jeden poslední příklad, než to začneme integrovat do Arduina: ujistěte se, že jedno z vašich světel je viditelné a rozsvícené a že víte, jaké číslo to je. Změňte adresu URL na /api/newdevelopers/lights/1/state (změna čísla na světlo) a odešlete požadavek PUT s následujícími údaji:
{"odstín": 50100, "sat": 255, "bri": 255}
Měli byste vidět, jak vaše světlo reaguje takto:
To, co jste udělali, je tlačit nový stav na žárovku. Můžete také přidat „přechodný čas“, což je primitivní metoda animace, která ukazuje, kolik sekund chcete, aby změna stavu trvala.
Barvu lze nastavit mnoha různými způsoby, ale bohužel neexistuje jednoduchý způsob, jak odeslat hodnotu RGB. Ve výše uvedeném příkladu jsme poslali odstín, seděluration, a brightness. Zkuste změnit hodnotu odstínu a odeslat požadavek PUT znovu.
Pracuje od Arduina
Existuje existující knihovna Hue / Arduino s názvem ArduinoHue ke kterému se Philips připojuje v dokumentaci API, ale problém s touto knihovnou je v tom komunikuje přes USB připojení k vašemu PC, které musí také spouštět aplikaci Python neustále. Eugh. Můžete také nechat počítač běžet v tuto chvíli celou věc a Arduino zcela vypnout.
Místo toho vám ukážu, jak ovládat odstín od Arduina pomocí štítu Ethernet. Vaše Arduino nemusí být připojeno k počítači, takže může pracovat nezávisle kdekoli, kam můžete připojit ethernetový kabel. Ve skutečnosti by to mělo také fungovat se štítem Wi-Fi, ale s ním si nemám hrát.
Pokud chcete přeskočit dopředu, celý ukázkový kód je vložen níže nebo k dispozici zde. Přizpůsobil jsem to z zveřejněného příkladu od Gilson Oguime. Pokud jste nikdy nehráli se svým ethernetovým štítem, možná budete chtít rychle projít kurz webového klienta - Předpokládám určitou úroveň obeznámenosti s tímto kódem a nebudu pokrývat kód používaný k vytvoření síťové IP atd. Také jsme vám ukázali jak vytvořit mini webový server s Ethernetovým štítem Dopřejte svému projektu Arduino vlastní mini-webový server s ethernetovým štítemPřed chvílí jsem vám ukázal, jak nastavit internetový řídicí systém pro Arduino - ale pro udržení internetového připojení musel zůstat připojen k počítači přes USB ... Přečtěte si více .
Vytváření změn stavu
Vytvoření nového stavu pro tlačení na žárovky je jednoduchým případem vytvoření nového Tětiva proměnné a unikají všechny uvozovky. Přidal jsem a náhodný() fungovat tam také k vytvoření poněkud dynamické animace. Zkuste také vytvořit proměnnou odstín náhodně pro různé barvy.
Příkaz String = "{\" on ": true, \" hue \ ": 50100, \" sat \ ": 255, \" bri \ ": 255, \" transitiontime \ ":" + String (random (15, 25)) + "}";
Odeslání příkazu
Chcete-li příkaz skutečně odeslat, máte pomocnou funkci nazvanou setHue (), která jako argument vezme číslo světla a příkazový řetězec:
setHue (1, příkaz);
Vše, co dělá, je to, že se připojí k mostu, vyplivne příkaz jako požadavek PUT, spolu se všemi ostatními nesmysly, které zahrnuje vytvoření požadavku HTTP.
client.print ("PUT / api /"); client.print (hueUsername); client.print ("/ lights /"); client.print (lightNum); client.println ("/ state HTTP / 1.1"); client.println ("keep-alive"); client.print ("Host:"); client.println (hueHubIP); client.print („Content-Length:“); 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 Odstín.
Přidání senzoru pohybu
Nakonec jsem zapojil jednoduchý Pohybový senzor HC-SR501 na digitální I / O pin 2. Když je detekován pohyb, řada stavů je tlačena na můstek pro 2 žárovky, aby se vytvořila pomalá, dynamická animace. Když se snímač pohybu deaktivuje, je vyslán povel k jednomu vypnutí. V ideálním případě by se vrátili do stavu, ve kterém byli, než byl detekován pohyb, ale logika není tak chytrá - prostě je zapneme a vypneme.
Omezení
Přestože je to sice neoficiální kód, je téměř na sekundu, než síťové rozhraní Arduina pošle požadavek na jediný příkaz. Stejný příkaz jsem testoval na počítači Mac pomocí stejného připojení Ethernet a byl schopen desetkrát až dvacetkrát vyšší rychlost (tady je AppleScript v případě, že byste chtěli vyzkoušet). V důsledku toho jakákoli rychlá animace (pokoušel jsem se vytvořit efekt blikající svíčky) z Arduina prostě není možný. To by neměl být problém pro většinu projektů, pouze pro vysokorychlostní světelné animace, ale je dobré vědět si toto omezení.
Je také obtížné plně analyzovat jakoukoli odpověď JSON, kterou dostanete zpět z mostu; v Arduinu není dostatek paměti RAM pro uložení všech nezpracovaných dat. Z tohoto důvodu se možná budete chtít většinou omezit na odesílání.
Hack the Hue
Nyní, když jste vyzbrojeni znalostmi, jak zcela ovládat Hue, otevírá se vám svět domácích hacků Hue. Skutečná otázka zní: co uděláš?
James má bakalářský titul v oboru umělé inteligence a je držitelem certifikátu CompTIA A + a Network +. Je hlavním vývojářem MakeUseOf a tráví svůj volný čas hraním VR paintballu a deskových her. Staví počítače od dětství.