Hirdetés
A Philips Hue lámpák sorozata természetesen nem olcsó (van néhány alternatíva A Philips Hue alternatívák, amelyek valóban megérdemlikA Philips Hue rendszer vezet az intelligens világítás terén, ám van néhány érdemes alternatíva. Hármat választottunk, amelyek mindegyikében ugyanaz az alapvető szolgáltatáskészlet és kivitelezhetőség található. Olvass tovább ), de egy dolog, amit igazán értékelnék, a jól dokumentált API Mik az API-k és hogyan változtatják meg az internetet a nyitott API-k?Gondolkozott már azon azon, hogy a számítógépen lévő programok és a meglátogatott webhelyek miként "beszélnek" egymással? Olvass tovább saját Hue alkalmazások készítéséhez. Ma megmutatom, hogyan vezérelheti a Hue fényét egy Arduino-ból - majd hozzáad egy egyszerű mozgásérzékelőt.
Miért csináljuk ezt? Mivel az otthoni automatizálási rendszerek meglehetősen merevek és drágák lehetnek. Megtanulva, hogyan kell irányítani a Hue-t az Arduino-tól, megnyitja az ajtót számos különféle, otthon készült automatizálási projekthez, amelyeket egyszerűen nem tud megbirkózni a polcra szerelt alkatrészekkel. Ha a dolgok összecsapása csak nem a te dolgod, próbáld ki ezeket
8 mesés Hue alkalmazás A 7 legjobb Philips Hue alkalmazás Androidra és iPhone-raA legjobb Philips Hue alkalmazásokat keresi intelligens lámpáival? Itt található néhány nagyszerű alkalmazás az iPhone és az Android számára. Olvass tovább helyette.A Hue System
Vigyázzunk egy kicsit a műszaki ismeretekre, hogy megismerjük a mögöttes rendszereket, amelyekkel dolgozik. A színárnyalatok a háló háló Mesh Networks: A kommunikáció jövőjeA háló hálózatok szinte sebezhetetlenek. A hálózati hálózatban nincs olyan fojtópont, amelyeken az összes forgalom áthalad. Ehelyett az információkat az egyik eszközről a másikra továbbítják, amíg el nem éri a rendeltetési helyét. Olvass tovább , egy rövid hatótávolságú vezeték nélküli protokollt, a ZigBee nevű protokollt használva - konkrétan ezek ZigBee Light Link tanúsítvánnyal, ami azt jelenti, hogy más ZLL termékeknek a Hue mellett (elméletileg) együtt kell működniük.
Bár technikailag kis hatótávolságú, a ZigBee hálózati funkciója azt jelenti, hogy minden új izzó kiterjeszti a hálózatot, és továbbítja az üzeneteket más izzóknak. Ez azt jelenti, hogy ha problémája van a ház másik oldalán található lámpák vezérlésével, akkor próbáljon másik fényt a kettő közé helyezni.
A Zigbee nagyszerű protokoll, de egészen más, mint a Wi-Fi vagy a vezetékes számítógépes hálózat, ezért szükségünk van a Philips Hue Bridge-re, hogy összekapcsoljuk a kettőt. A Hue híd módosított nyílt forrású linux firmware-t futtat, amely egy alapvető webszervert sugároz.
A helyi webszerverrel való kölcsönhatás révén megismerheti a lámpák aktuális állapotát, és vezérelheti azokat.
Ez egy szépen egyszerű rendszer, és érett barkácsolás projektjeire is képes. Kudos a Philipsnek, hogy ezt a dolgot annyira hackelhetővé tette.
Indulás
Mielőtt hozzáférne az API dokumentációjához, meg kell tennie regisztrálj fejlesztőként. Ingyenes, de el kell fogadnia a feltételeket. Csináld ezt most.
Bárki, aki ismeri a szokásos webszolgáltatásokat vagy a Javascriptet, képesnek kell lennie arra, hogy dolgozzon a Hue-vel: minden adat továbbításra és fogadásra kerül JSON csomagok Mi a JSON? A laikus áttekintéseAkár webfejlesztővé kíván válni, akár nem, jó ötlet legalább tudni, mi a JSON, miért fontos, és miért használják az egész weben. Olvass tovább .
Ha meg akarja nézni ezt a gyakorlatban, akkor tudnia kell a Hue-híd IP-címét. Ennek néhány módja van:
- Nézze meg a router adminisztrációs felületén található DHCP-cím kiosztási táblázatot
- Futtasson olyan hálózati leképező programot, mint a IP szkenner kezdőlap
- Próbálja ki a Philips UPnP bróker eszköz
- Ping “philips-hue.home”
Ha elkészült, menj tovább, és gépelje be a böngésző címsorába hibakereső / clip.html csatolva az URL-hez. Az én esetemben ez a következő volt:
http://192.168.1.216/debug/clip.html
Ez egy hibaelhárító eszköz, amely lehetővé teszi a JSON-csomagok elküldését és fogadását egy egyszerű webes felületen keresztül. Az első lépés a fejlesztőprofil engedélyezése a Hue Bridge-en - amelyet alapvetően biztonsági okokból letiltottunk. Illessze be a következőt a BODY mezőbe, hagyja az URL-t mint /api/, és küldjön POST kérést a feladás gombra:
{"devicetype": "tesztfelhasználó", "felhasználónév": "newdeveloper"}
Az első alkalommal, amikor ezt megteszi, a válaszban megjelenik a „link gomb nem nyomva” üzenet. Ez egy biztonsági szolgáltatás, amely megköveteli, hogy minden új alkalmazást fizikailag felhatalmaztasson. Keresse meg a Bridge-t, nyomja meg a gombot, és küldje el ugyanazt a kérést újra 30 másodpercen belül. Ezúttal más választ fog kapni, és a felhasználó felhatalmazást kap. Ha másik felhasználónevet szeretne használni, olvassa el az erről szóló API-dokumentumokat felhasználók létrehozása. Egyelőre ez elegendő lesz.
Miután a felhasználó beállította, az alap URL lesz, amellyel kapcsolatba kell lépnie /api/newdeveloper/. Küldhet egy GET-kérést, hogy megtudja mindazt, amelyet a Bridge jelenleg ismeri az összekapcsolt fényekről, riasztásokról, jelenetekről és a használt alkalmazások rövid naplójáról. Itt található egy minta az egyes izzók állapotinformációival kapcsolatban.
"állapot": {"be": igaz, "bri": 254, "árnyalat": 14910, "sat": 144, "effektus": "nincs", "xy": [0,4596, 0,4105], "ct": 369, "figyelmeztetés": "nincs", "színmód": "ct", "elérhető": hamis}, "típus": "kibővített színes fény", "név": "hálószoba 1", "modellid": „LCT001”
Vegye figyelembe, hogy a „A”: true az state valójában nem mutatja meg, hogy az izzó be van-e kapcsolva; csak hogy a Bridge beállításai szerint ez kellene lennie. „Elérhető”: false jelzi a túl távoli izzót, vagy egyszerűen csak a főkapcsolót.
Az utolsó példa, mielőtt ezt integrálnánk az Arduino-ba: győződjön meg arról, hogy az egyik lámpája látható és világít, és tudja, hogy melyik szám van. Változtassa meg az URL-t erre: /api/newdevelopers/lights/1/state (a szám megváltoztatása az Ön fényére), és küldjön PUT kérést a következő adatokkal:
{"árnyalat": 50100, "sat": 255, "bri": 255}
Látnia kell, hogy a fény így reagál:
Amit tettél, az az, hogy egy új állapotot helyezze az izzóra. Hozzáadhat „átmeneti időt” is, amely egy primitív animációs módszer, amely jelzi, hogy hány másodpercig szeretné az államváltozást eltartani.
A szín beállítható számos különböző módon, de sajnos nincs egyszerű módja az RGB-érték küldésére. A fenti példában elküldtük színárnyalat, ülturáció és brightness. Próbálja meg megváltoztatni a színárnyalatot, és küldje el újra a PUT kérést.
Arduino-tól dolgozik
Van egy létező Hue / Arduino könyvtár, az úgynevezett ArduinoHue amelyekre a Philips hivatkozik az API dokumentációjában, de ennek a könyvtárnak az a problémája, hogy az az USB-kapcsolaton keresztül kommunikál a számítógéppel, amelynek Python-alkalmazásnak is futnia kell állandóan. Eugh. Akkor is hagyhatja, hogy számítógépe futtassa az egész dolgot ezen a ponton, és teljesen kivágja az Arduino-t.
Ehelyett megmutatom neked, hogyan lehet az Arduinóból irányítani a Hue-t Ethernet pajzs használatával. Arduino-ját nem kell számítógéphez csatlakoztatni, így függetlenül működhet bárhol, ahol Ethernet-kábelt helyezhet. Valójában működnie kell egy Wi-Fi pajzsnak is, de nincs ilyen, amivel játszani lehet.
Ha szeretne átugorni, akkor a teljes mintakód beágyazva van, vagy elérhető itt. A feltett példából adaptáltam írta: Gilson Oguime. Ha még soha nem játszottál az Ethernet pajzsoddal, akkor érdemes gyors futtatást végeznie a webes kliens bemutatója - Feltételezem, hogy ez valamilyen szintű ismerete, és nem fogom lefedni a hálózati IP létrehozásához használt kódot stb. Megmutattuk neked is hogyan hozhat létre mini webszervert az Ethernet pajzs segítségével Adja meg Arduino Projektének saját mini-webszerverét, Ethernet pajzsgalEgy ideje megmutattam neked, hogyan állítson be internetes vezérlő rendszert Arduino készülékéhez - de ennek az USB-kapcsolaton keresztül fenn kellett maradnia a számítógéphez, hogy fenntartsák az internetkapcsolatot ... Olvass tovább .
Államváltozások létrehozása
Egy új állapot létrehozása az izzókhoz történő nyomáshoz egyszerű az új létrehozása Húr változó, és elkerül minden dupla idézőjelet. Hozzáadtam egy véletlen() ott is működni fog, hogy kissé dinamikus animációt hozzon létre. Próbálja meg a színárnyalatot véletlenszerűvé tenni a különböző színeknél is.
Karakterlánc-parancs = "{\" be ": igaz, \" árnyalat \ ": 50100, \" sat \ ": 255, \" bri \ ": 255, \" átmeneti idő \ ":" + karakterlánc (véletlenszerű (15, 25)) + "}";
Parancs küldése
A parancs tényleges elküldéséhez van egy helHell funkció, a setHue () nevű, amely argumentumként veszi a fényszámot és a parancssort, például:
setHue (1, parancs);
Csak annyit tesz, hogy csatlakozik a hídhoz, és PUT kérésként kiszabadítja a parancsot, valamint az összes többi ostobaság, amelyet a HTTP kérés létrehozása magában foglal.
client.print ("PUT / api /"); client.print (hueUsername); client.print ( "/ lámpák /"); kliens nyomtatás (lightNum); client.println ("/ HTTP / 1.1 állapot"); client.println ( "keep-alive"); client.print ("Host:"); client.println (hueHubIP); client.print ("Tartalom hossza:"); kliens.println (parancs.hossz ()); client.println ("Tartalomtípus: szöveg / sima; charset = UTF-8" ); client.println (); // üres sor a test előtt. client.println (parancs); // Hue parancs.
Mozgásérzékelő hozzáadása
Végül vezettem egy egyszerűt HC-SR501 mozgásérzékelő a digitális I / O érintkezőre 2. A mozgás észlelésekor egy állapot sorozatot helyeznek a hídra 2 izzó számára, hogy lassú, dinamikus animációt hozzon létre. Amikor a mozgásérzékelő kikapcsol, egyszeri parancsot küld mindkettőnek. Ideális esetben visszaállítanák azt az állapotot, amelyben vannak a mozgás észlelése előtt, de a logika nem olyan okos - mi csak be- és kikapcsoljuk őket.
korlátozások
Annak ellenére, hogy nem optimalizált kód, szinte egy másodpercbe telik az Arduino hálózati interfészén, hogy egyetlen parancskérést küldjön. Kipróbáltam ugyanazt a parancsot egy Mac számítógépről, ugyanazon Ethernet kapcsolat használatával, és képes volt tíz-húszszor nagyobb sebességre (itt az AppleScript arra az esetre, ha tesztelni szeretne). Következésképpen semmilyen gyors animáció (egy villogó gyertyahatást próbáltam létrehozni) egyszerűen nem lehetséges egy Arduinóból. Ez a legtöbb projekt esetében nem okozhat problémát, csak a nagysebességű könnyű animációk esetében, de jó, ha tisztában van a korlátozással.
Az is nehéz, hogy teljes mértékben elemezze a JSON-válaszokat, amelyeket visszatér a hídról; egyszerűen nincs elég RAM az Arduino-n az összes nyers adat tárolásához. Ezért érdemes korlátozni magát a küldésnél.
Hack the Hue
Most, hogy felfegyverkezve a Hue teljesen független irányításának tudásával felfedezte a Hue otthoni automatizálási hackeinek világát. Az igazi kérdés a következő: mit fogsz csinálni?
James rendelkezik mesterséges intelligencia BSc-vel, CompTIA A + és Network + tanúsítvánnyal rendelkezik. A MakeUseOf vezető fejlesztője, és szabadidejét VR paintballon és társasjátékokon játszik. Gyerekkora óta épít PC-ket.