Reklaam
Philipsi Hue tulede sari pole kindlasti odav (on olemas mõned alternatiivid Philips Hue alternatiivid, mis tegelikult seda väärt onNutika valgustuse osas juhib Philips Hue-süsteem laadimist, kuid on ka mõned väärilised alternatiivid. Oleme valinud kolm, mis kõik pakuvad sama põhifunktsioonide komplekti ja häkkeritavust. Loe rohkem ), kuid üks asi, mida ma tõesti hindan, on hästi dokumenteeritud API Mis on API-d ja kuidas muutuvad avatud API-d InternettiKas olete kunagi mõelnud, kuidas teie arvutis ja külastatud veebisaitidel olevad programmid omavahel räägivad? Loe rohkem oma Hue-rakenduste loomiseks. Täna näitan teile, kuidas juhtida oma Hue tulesid Arduino juurest - seejärel lisan lihtsa liikumisanduri.
Miks me seda teeme? Kuna koduautomaatikasüsteemid võivad olla üsna jäigad ja kallid. Arduino Hue juhtimist õppides avate uksed paljudele eritellimusel valmistatud koduautomaatikaprojektidele, mida lihtsalt riiulil olevad komponendid ei saa. Kui asjade häkkimine lihtsalt pole teie asi, proovige neid
8 vapustavat Hue rakendust 7 parimat Philipsi Hue rakendust Androidile ja iPhone'ileKas otsite parimaid Philipsi Hue rakendusi, mida oma nutikate tuledega kasutada? Siin on mitu suurepärast rakendust iPhone'ile ja Androidile. Loe rohkem selle asemel.Toonisüsteem
Vaadakem natuke tehnilist lahendust, et saaksite teada süsteemid, millega töötate. Toonituled loovad a võrgusilma võrk Mesh Networks: kommunikatsiooni tulevikVõrgusilma võrgud on peaaegu haavatamatud. Võrgusilmaga võrgus pole ühtegi läbilõiget, mille kaudu kogu liiklus läbi saaks. Selle asemel edastatakse teave ühelt seadmelt teisele, kuni see jõuab sihtkohta. Loe rohkem , kasutades väikese leviala raadiosideprotokolli nimega ZigBee - konkreetselt nad on ZigBee kerge link sertifitseeritud, mis tähendab, et ka teised ZLL tooted peaksid tooni kõrval töötama (teoreetiliselt).
Ehkki tehniliselt on see väike, tähendab ZigBee võrgusilma funktsioon, et iga uus pirn laiendab võrku, edastades sõnumeid teistele pirnidele. See tähendab, et kui teil on probleeme maja teisel küljel oleva tule kontrollimisega, proovige asetada nende vahele teine valgus.
Zigbee on suurepärane protokoll, kuid see erineb üsna palju WiFi-st või traadiga arvutivõrgust, nii et nende kahe ühendamiseks on vaja Philipsi Hue silda. Hue sild käitab modifitseeritud avatud lähtekoodiga Linuxi püsivara, mis edastab tavalist veebiserverit.
Selle kohaliku veebiserveriga suheldes saate tulede hetkeseisu teada saada ja neid juhtida.
See on kaunilt lihtne süsteem ja küps meisterdamisprojektide jaoks. Kudos Philipsile selle asja nii häkkeriks tegemise eest.
Alustades
Enne API-dokumentidele juurdepääsu saamiseks peate seda tegema registreeruge arendajaks. See on tasuta, kuid peate nõustuma tingimustega. Tehke seda nüüd.
Kõigil, kes tunnevad tavalisi veebiteenuseid või Javascripti, peaks olema võimalik Hue-ga töötada: kõik andmed edastatakse ja võetakse vastu kujul JSON-paketid Mis on JSON? Kohandaja ülevaadeÜkskõik, kas plaanite olla veebiarendaja või mitte, on hea mõte vähemalt teada saada, mis on JSON, miks see on oluline ja miks seda kogu veebis kasutatakse. Loe rohkem .
Seda toimimises vaatamiseks peate teadma oma Hue-silla IP-aadressi. Selleks on mitu võimalust:
- Vaadake ruuteri administraatori liidese DHCP-aadresside määramise tabelit
- Käitage võrgu kaardistamise programmi nagu IP-skanneri kodu
- Proovige Philips UPnP maakleri tööriist
- Ping “philips-hue.home”
Kui olete lõpetanud, minge edasi ja tippige see brauseri aadressiribale silumine / clip.html lisatud URL-ile. Minu puhul oli see:
http://192.168.1.216/debug/clip.html
See on silumisriist, mis võimaldab teil JSON-pakette lihtsa veebiliidese kaudu saata ja vastu võtta. Esimene samm on lubada arendaja profiil Hue Bridge'il endal - see on turvalisuse huvides vaikimisi keelatud. Kleepige väljale KEHA järgmine teave, jätke URL kui /api/ja saatke POST-taotlus, klõpsates nuppu postitusnupp:
{"devicetype": "test kasutaja", "kasutajanimi": "newdeveloper"}
Esimest korda seda tehes näete vastuses kuskil linki nuppu ei vajutatud. See on turvafunktsioon, mis nõuab, et igal uuel kasutataval rakendusel oleks füüsiline luba. Minge ja leidke oma sild, vajutage nuppu ja saatke sama taotlus uuesti 30 sekundi jooksul. Seekord saate teistsuguse vastuse ja kasutaja saab loa. Kui soovite kasutada teist kasutajanime, lugege API-dokumente selle kohta kasutajate loomine. Praegu piisab sellest.
Kui teie kasutaja on seadistatud, muutub lähte-URL, kellega peaksite suhtlema /api/newdeveloper/. Saate saata GET-i päringu, et teada saada kõike, mida teie sild praegu teab kasutatud põnevate tulede, häirete, stseenide ja lühikese logi rakenduste kohta. Siin on näidis mõne üksiku pirni olekuinfo kohta.
"olek": {"sees": tõsi, "bri": 254, "toon": 14910, "laup": 144, "efekt": "puudub", "xy": [0,4596, 0,4105], "ct": 369, "hoiatus": "puudub", "värvimood": "ct", "saavutatav": vale}, "tüüp": "laiendatud värvivalgus", "nimi": "magamistuba 1", "mudelid": "LCT001",
Pange tähele, et “Sees”: tõsi olek ei näita teile tegelikult, kas pirn on sisse lülitatud või mitte; ainult et vastavalt Silla sätetele see peaks ole peal. „Saavutatav”: vale võib näidata nii liiga kaugel asuvat pirni kui ka lihtsalt toitelülitist välja lülitatud pirni.
Viimane näide enne selle integreerimist Arduinosse: veenduge, et üks teie tuledest oleks nähtav ja sisse lülitatud ning teaksite, mis number see on. Muutke URL-i aadressiks /api/newdevelopers/lights/1/state (numbri muutmine teie valgusele) ja saatke PUT-päring järgmiste andmetega:
{"toon": 50100, "laup": 255, "bri": 255}
Te peaksite nägema, et teie valgus reageerib nii:
See, mida olete teinud, on uue oleku surumine pirnile. Võite lisada ka „üleminekuaeg”, mis on primitiivne animatsioonimeetod, mis näitab, mitu sekundit soovite oleku muutust võtta.
Värvi saab sisse seada mitmel erineval viisil, kuid kahjuks pole RGB väärtuse saatmiseks lihtsat viisi. Ülaltoodud näites saatsime värvitoon, laupuratsioon ja brightness. Proovige muuta värvitooni väärtust ja saata uuesti PUT-päring.
Töötamine Arduinost
Seal on olemasolev Hue / Arduino raamatukogu nimega ArduinoHue mille Philips ise linkib API dokumentatsioonis, kuid selle teegi probleem on just see suhtleb USB-ühenduse kaudu arvutiga, millel peab olema ka Pythoni rakendus pidevalt. Eugh. Samuti võite lasta oma arvutil sel hetkel kogu asja käivitada ja lõigata Arduino täielikult välja.
Selle asemel näitan teile, kuidas juhtida Hue alates Arduino kasutades Etherneti kilpi. Teie Arduino ei pea olema arvutiga ühendatud, nii et see võib töötada iseseisvalt kõikjal, kuhu saate Etherneti kaabli panna. Tegelikult peaks see töötama ka WiFi-kilbiga, kuid mul pole sellist, millega mängida.
Kui soovite edasi minna, manustatakse täielik näidiskood allpool või saadaval siin. Olen seda postitatud näites kohandanud autor Gilson Oguime. Kui te pole kunagi varem oma Etherneti kilbiga mänginud, võiksite proovida kiiret läbimist veebikliendi õpetus - Ma eeldan, et olen sellega teatud määral kursis ega kata koodi, mida kasutatakse võrgu IP loomiseks jne. Oleme teile ka näidanud kuidas luua mini-veebiserverit Etherneti kilbi abil Andke oma Arduino projektile oma mini-veebiserver koos Etherneti kilbigaMõni aeg tagasi näitasin teile, kuidas seadistada oma Arduino jaoks Interneti-juhtimissüsteem - kuid Interneti-ühenduse säilitamiseks pidi see USB-ühenduse kaudu arvutiga ühenduses olema ... Loe rohkem .
Riigimuutuste loomine
Uue oleku loomine sibulatele surumiseks on uue loomise lihtne juhtum Keel muutuja ja pääseb kõikidest jutumärkidest. Lisasin a juhuslik () funktsiooni ka seal, et luua mõnevõrra dünaamiline animatsioon. Proovige muuta tooni muutuja juhuslikuks ka erinevate värvide jaoks.
Stringi käsk = "{\" sees ": tõene, \" toon \ ": 50100, \" laup \ ": 255, \" bri \ ": 255, \" üleminekuaeg \ ":" + string (juhuslik (15, 25)) + "}";
Käsu saatmine
Käsu tegelikuks saatmiseks on teil abistajafunktsioon nimega setHue (), mis võtab argumendiks tule numbri ja käsuringi, näiteks:
setHue (1, käsk);
Kõik, mis ta teeb, on vaid siis, kui ta ühendub sillaga, sülitab käsu välja PUT-päringuna koos kõigi muude jamadega, mis HTTP-päringu koostamisega kaasnevad.
klient.print ("PUT / api /"); klient.print (hueUsername); klient.print ("/ tuled /"); klient.print (lightNum); klient.println ("/ olek HTTP / 1.1"); klient.println ("hoia elus"); klient.print ("Host:"); klient.println (hueHubIP); klient.print ("Sisu-pikkus:"); klient.println (käsk.pikkus ()); klient.println ("Sisu tüüp: tekst / tavaline; kooditabel = UTF-8 "); klient.println (); // tühi rida enne keha. klient.println (käsk); // Hue käsk.
Liikumisanduri lisamine
Lõpuks juhtisin lihtsa juhtme HC-SR501 liikumisandur digitaalsele I / O-pin 2-le. Kui liikumine tuvastatakse, lükatakse aegriigilise dünaamilise animatsiooni loomiseks seeria 2 sibula jaoks sillale. Kui liikumisandur desaktiveerub, saadetakse mõlemale ühekordne käsk. Ideaalis tuleks need tagasi olekusse, kus nad olid enne liikumise tuvastamist, kuid loogika pole nii nutikas - me lihtsalt lülitame need sisse ja välja.
Piirangud
Ehkki kood on küll optimeerimata, kulub Arduino võrguliidesele peaaegu ühe sekundi jooksul ühe käsu päringu saatmine. Testisin sama käsku Macist, kasutades sama Etherneti ühendust ja see oli võimeline kiirust kümme kuni kakskümmend korda (siin on AppleScript kui soovite testida). Järelikult pole igasugust kiiret animatsiooni (üritasin luua virvendava küünla efekti) lihtsalt Arduinost. See ei tohiks enamiku projektide jaoks probleemiks olla, vaid ainult kiirete kiirete animatsioonide puhul, kuid hea on olla sellest piirangust teadlik.
Samuti on keeruline sillalt tagasi saadud JSON-vastust täielikult sõeluda; lihtsalt pole Arduinos RAM-i piisavalt, et kogu töötlemata andmeid talletada. Sel põhjusel võiksite piirduda enamasti saatmisega.
Haki varjund
Nüüd, kui olete relvastatud teadmistega, kuidas Hue-t täiesti iseseisvalt juhtida, avab see Hue koduautomaatika häkkide maailma. Tegelik küsimus on järgmine: mida sa teed?
Jamesil on tehisintellekti BSc ning ta on CompTIA A + ja Network + sertifikaadiga. Ta on MakeUseOfi juhtiv arendaja ja veedab oma vaba aega VR-i paintballi ja lauamänge mängides. Ta on lapsest peale arvutit ehitanud.