Skelbimas

„Philips Hue“ žibintų asortimentas tikrai nėra pigus (yra keletas alternatyvų „Philips“ atspalvio alternatyvos, kurios iš tikrųjų yra to vertos„Philips Hue“ sistema vadovauja išmaniajam apšvietimui, tačiau yra keletas vertų alternatyvų. Mes pasirinkome tris, kurie visi siūlo tą patį pagrindinių funkcijų rinkinį ir pakenčiamą vietą. Skaityti daugiau ), tačiau vienas dalykas, kurį labai vertinu, yra gerai dokumentuotas API Kas yra API ir kaip atviros API keičia internetąAr kada susimąstėte, kaip jūsų kompiuteryje ir jūsų lankomose svetainėse esančios programos „kalbasi“ viena su kita? Skaityti daugiau kurti savo „Hue“ programas. Šiandien aš jums parodysiu, kaip valdyti savo „Hue“ žibintus iš Arduino - tada pridėsiu paprastą judesio jutiklį.

Kodėl mes tai darome? Kadangi namų automatikos sistemos gali būti gana griežtos ir brangios. Išmokę valdyti atspalvį iš „Arduino“, atveriate duris įvairiems pagal užsakymą sukurtiems namų automatikos projektams, kurių paprasčiausiai negalima įveikti dėl nenešiojamų komponentų. Jei įsilaužimas į dalykus kartu nėra jūsų dalykas, išbandykite tai

instagram viewer
8 puikios „Hue“ programos 7 geriausios „Philips“ atspalvio programos, skirtos „Android“ ir „iPhone“Ieškote geriausių „Philips Hue“ programų, kurias galėtumėte naudoti kartu su savo išmaniaisiais žibintais? Čia yra keletas puikių programų, skirtų „iPhone“ ir „Android“. Skaityti daugiau vietoj to.

Atspalvių sistema

Kurkime šiek tiek techninio, kad žinotumėte pagrindines sistemas, su kuriomis dirbate. Atspalvio atspalviai sukuria akių tinklas Tinklo tinklai: komunikacijos ateitisTinklo tinklai yra beveik neliečiami. Tinkliniame tinkle nėra jokių užspringimo taškų, pro kuriuos praeitų visas eismas. Vietoj to, informacija perduodama iš vieno įrenginio į kitą, kol ji pasiekia tikslą. Skaityti daugiau , naudojant mažojo nuotolio belaidį protokolą, vadinamą „ZigBee“ - būtent jie „ZigBee Light Link“ sertifikuota, o tai reiškia, kad kiti ZLL produktai taip pat turėtų veikti kartu su atspalviu (teoriškai).

Nors techniškai mažas atstumas, „ZigBee“ tinklo tinklo ypatybė reiškia, kad kiekviena nauja lemputė plečia tinklą ir perduoda pranešimus kitoms lemputėms. Tai reiškia, kad jei jums sunku kontroliuoti šviesą kitoje namo pusėje, pabandykite pastatyti kitą lemputę tarp jų.

„Zigbee“ yra puikus protokolas, tačiau jis visiškai skiriasi nuo „Wi-Fi“ ar laidinio kompiuterių tinklo, todėl norint sujungti juos kartu, reikia „Philips Hue Bridge“. „Hue“ tiltas vykdo modifikuotą atvirojo kodo „Linux“ programinę-aparatinę įrangą, kuri transliuoja pagrindinį interneto serverį.

Štai ką pamatysite, jei tiesiog naršyklėje įvesite „Hue“ tilto IP adresą. Vis dėlto iš čia negalima daug nuveikti.
Štai ką matysite, jei tiesiog naršyklėje įvesite „Hue“ tilto IP adresą. Vis dėlto čia negalima padaryti daug.

Bendraudami su šiuo vietiniu žiniatinklio serveriu galite sužinoti dabartinę lempučių būseną ir jas valdyti.

Tai gražiai paprasta sistema, pribrendusi „pasidaryk pats“ projektams. „Kudos“ „Philips“ už tai, kad šį dalyką padaro tokį hakerį.

Nuo pradžios

Kad galėtumėte pasiekti API dokumentus, turėsite tai padaryti užsiregistruoti kaip kūrėjas. Tai nemokama, tačiau turite sutikti su taisyklėmis ir nuostatomis. Daryk tai dabar.

Kiekvienas, susipažinęs su standartinėmis interneto paslaugomis ar „Javascript“, turėtų mokėti dirbti su „Hue“: visi duomenys perduodami ir gaunami kaip JSON paketai Kas yra JSON? Nesąžiningo žmogaus apžvalgaNesvarbu, ar ketinate būti žiniatinklio kūrėjas, ar ne, pravartu bent žinoti, kas yra JSON, kodėl jis svarbus ir kodėl jis naudojamas visame žiniatinklyje. Skaityti daugiau .

Norėdami pažvelgti į tai praktiškai, turėsite žinoti savo „Hue“ tilto IP adresą. Yra keli būdai, kaip tai padaryti:

  • Peržiūrėkite DHCP adreso priskyrimo lentelę maršrutizatoriaus administratoriaus sąsajoje
  • Vykdykite tinklo žemėlapių sudarymo programą kaip IP skaitytuvo pagrindinis puslapis
  • Išbandykite „Philips“ UPnP brokerio įrankis
  • Ping „philips-hue.home“
tinklo žemėlapis tiltui surasti

Baigę eikite į priekį ir įveskite jį į savo naršyklės adreso juostą derinimo / clip.html pridedamas prie URL. Mano atveju tai buvo:

http://192.168.1.216/debug/clip.html

Tai derinimo įrankis, leidžiantis siųsti ir gauti JSON paketus per paprastą žiniatinklio sąsają. Pirmasis žingsnis yra įgalinti patį „Hue Bridge“ kūrėjo profilį - kuris pagal saugumo sumetimus yra išjungtas pagal numatytuosius nustatymus. Įklijuokite šiuos duomenis į lauką KŪNAS, palikite URL kaip /api/ir nusiųskite POST užklausą spustelėdami paskelbimo mygtukas:

{"devicetype": "bandomasis vartotojas", "vartotojo vardas": "newdeveloper"}

Pirmą kartą tai padarius, atsakyme pamatysite „nespaudžiamas saito mygtukas“. Tai yra saugos funkcija, kuriai reikia, kad kiekviena nauja jūsų naudojama programa būtų fiziškai įgaliota. Eikite ir raskite savo „Bridge“, paspauskite mygtuką ir vėl siųskite tą pačią užklausą per 30 sekundžių. Šį kartą gausite kitokį atsakymą, o vartotojui bus suteikta teisė. Jei norėtumėte naudoti kitą vartotojo vardą, perskaitykite API dokumentus apie kuriant vartotojus. Kol kas to pakaks.

Kai vartotojas sukonfigūruojamas, pagrindinis URL, su kuriuo turėtumėte bendrauti, tampa /api/newdeveloper/. Galite atsiųsti GET užklausą, kad sužinotumėte viską, ką jūsų tiltas šiuo metu žino apie pasveikusius žibintus, aliarmus, scenas ir trumpą naudotų programų žurnalą. Čia pateiktas tam tikros informacijos apie vienos lemputės būsenos informaciją pavyzdys.


„būsena“: {„įjungta": tiesa, "bri": 254, "atspalvis": 14910, "sėdėjo": 144, "efektas": "nėra", "xy": [0.4596, 0.4105], "ct": 369, "perspėjimas": "nė vienas", "spalvotas režimas": "ct", "pasiekiamas": klaidingas}, "tipas": "išplėstinė spalvų šviesa", "pavadinimas": "miegamasis 1", "modelis": „LCT001“, 

Atminkite, kad „Įjungta“: tiesa valstija iš tikrųjų neparodo, ar lemputė įjungta, ar ne; tik kad pagal tilto parametrus tai turėtų būti. „Pasiekiamas“: klaidingas gali nurodyti tiek per toli esančią lemputę, tiek tiesiog išjungtą per maitinimo jungiklį.

Paskutinis pavyzdys prieš tai, kai mes integruosime tai į Arduino: įsitikinkite, kad vienas iš jūsų žiburių yra matomas ir įjungtas, ir kad žinote, koks jis yra. Pakeiskite URL į /api/newdevelopers/lights/1/state (pakeisdami numerį į jūsų šviesą) ir nusiųskite PUT užklausą su šiais duomenimis:

{„atspalvis“: 50100, „šeštadienis“: 255, „bri“: 255}

Turėtumėte pamatyti, kaip jūsų šviesa reaguoja taip:

atspalvio demonstracija

Tai, ką padarėte, yra stumti naują lemputę į lemputę. Taip pat galite pridėti „pereinamąjį laiką“, kuris yra primityvus animacijos metodas, nurodantis, kiek sekundžių norite pakeisti būseną.

Spalvą galima nustatyti daugybė skirtingų būdų, bet, deja, nėra paprasčiausio būdo, kaip išsiųsti RGB vertę. Aukščiau pateiktame pavyzdyje mes išsiuntėme atspalvis, sėdėjošlapinimasis ir brightness. Pabandykite pakeisti atspalvio vertę ir dar kartą nusiųsti PUT užklausą.

Darbas iš Arduino

Yra jau esanti „Hue / Arduino“ biblioteka, vadinama „ArduinoHue“ kuriuos patys „Philips“ sieja API dokumentacijoje, tačiau šios bibliotekos problema yra ta palaiko ryšį per USB jungtį su asmeniniu kompiuteriu, kuriam taip pat reikia paleisti „Python“ programą nuolat. Eugh. Jūs taip pat galite leisti kompiuteriui paleisti visą reikalą tuo metu ir visiškai iškirsti „Arduino“.

Vietoje to aš jums parodysiu, kaip valdyti atspalvį iš Arduino naudojant eterneto skydą. Jūsų „Arduino“ nereikia prijungti prie kompiuterio, todėl jis gali veikti savarankiškai bet kur, kur galite įdėti Ethernet laidą. Tiesą sakant, jis taip pat turėtų veikti su „Wi-Fi“ skydu, bet aš neturiu su kuo žaisti.

Eternet-sheild-box

Jei norite praleisti į priekį, visas pavyzdžio kodas įterptas žemiau, arba galima rasti čia. Aš pritaikiau jį iš paskelbto pavyzdžio pateikė Gilson Oguime. Jei niekada anksčiau nežaidėte su savo Ethernet skydu, galbūt norėsite greitai paleisti žiniatinklio kliento mokymo programa - Aš manau, kad tam tikra prasme tai suprantu, ir neapimsiu kodo, naudojamo tinklo IP nustatymui ir pan. Mes jums taip pat parodėme kaip sukurti mini interneto serverį su Ethernet skydu Padovanokite „Arduino“ projektui savo „Mini-Webserver“ su eterneto skyduPrieš kurį laiką aš jums parodiau, kaip sukonfigūruoti interneto valdymo sistemą savo „Arduino“ - bet ji turėjo išlikti prijungta prie kompiuterio per USB, kad galėtų išlaikyti interneto ryšį ... Skaityti daugiau .

Kurti valstybės pokyčius

Sukurti naują būseną, kurią reikia stumti į lemputes, yra paprastas atvejis, kai reikia sukurti naują Stygos kintamąjį ir išvengsite visų dvigubų kabučių. Aš pridėjau a atsitiktinis () ten taip pat sukurti šiek tiek dinamišką animaciją. Pabandykite padaryti spalvų kintamąjį atsitiktine tvarka ir skirtingoms spalvoms.

Styginių komanda = "{\" įjungta ": tiesa, \" atspalvis \ ": 50100, \" sat \ ": 255, \" bri \ ": 255, \" perėjimo laikas \ ":" + eilutė (atsitiktinė (15, 25)) + „}“;

Komandos siuntimas

Norėdami iš tikrųjų išsiųsti komandą, turite pagalbinę funkciją, vadinamą setHue (), kuri kaip argumentą laiko šviesos numerį ir komandos eilutę, pavyzdžiui:

„setHue“ (1, komanda);

Tada viskas, ką jis daro, prisijungia prie tilto, išspjauna komandą kaip PUT užklausą ir visas kitas nesąmones, kurias sukuria HTTP užklausa.


klientas.print („PUT / api /“); klientas.spausdinimas (hueUsername); kliento spausdinimas („/ lights /“); kliento spausdinimas („lightNum“); client.println („/ būsena HTTP / 1.1“); client.println („palaikyk gyvą“); klientas.spausdinimas („Host:“); klientas.println (hueHubIP); client.print („Turinio ilgis:“); klientas.println (komanda.length ()); client.println („Turinio tipas: tekstas / paprastas; korsetas = UTF-8 "); klientas.println (); // tuščia eilutė prieš kūną. klientas.println (komanda); // Hue komanda. 

Judesio jutiklio pridėjimas

Pagaliau aš sujungiau paprastą Judesio jutiklis HC-SR501 į skaitmeninį įvesties / išvesties 2 kaištį. Aptikus judesį, būsenų serija stumiama prie 2 lempučių tilto, kad būtų sukurta lėta, dinamiška animacija. Išjungus judesio jutiklį, abiem komandoms siunčiama vienkartinė komanda. Idealiu atveju jie būtų grąžinti į būseną, kurioje jie buvo prieš aptikdami judesį, tačiau logika nėra tokia protinga - mes tiesiog juos įjungsime ir išjungsime.

Apribojimai

Nors, žinoma, neoptimizuotas kodas, Arduino tinklo sąsajai prireikia beveik sekundės, kad būtų išsiųsta viena komandos užklausa. Aš išbandžiau tą pačią „Mac“ komandą, naudodamas tą patį „Ethernet“ ryšį, ir ji buvo pajėgi nuo dešimties iki dvidešimties kartų greičiau (čia yra „AppleScript“ jei norėtumėte išbandyti). Taigi bet kokia greita animacija (aš bandžiau sukurti mirgėjimo žvakės efektą) tiesiog neįmanoma iš Arduino. Tai neturėtų kelti problemų daugumai projektų, tik greitosios šviesos animacijai, tačiau verta žinoti apie apribojimą.

Taip pat sunku visiškai išanalizuoti bet kokį JSON atsakymą, kurį grįžote iš tilto; tiesiog nepakanka „Arduino“ atminties, kad būtų galima saugoti visus pirminius duomenis. Dėl šios priežasties galite apsiriboti siuntimu.

Nulaužk atspalvį

Dabar, kai esate apsiginklavę žiniomis, kaip visiškai savarankiškai valdyti Hue, tai atveria Hue namų automatikos įsilaužimų pasaulį. Tikrasis klausimas yra: ką padarysi?

Jamesas yra dirbtinio intelekto bakalauras ir yra CompTIA A + bei Network + sertifikuotas. Jis yra pagrindinis „MakeUseOf“ kūrėjas ir laisvalaikį praleidžia žaisdamas VR dažasvydį ir stalo žaidimus. Nuo mažens jis statė kompiuterius.