Cum să controlați luminile luminoase Philips de la un arduino (și să adăugați un senzor de mișcare)
Gama de lumini Philips Hue nu este cu siguranță ieftină (există și alte alternative Philips Hue Alternative care sunt în realitate meritate) Philips Hue Alternative care sunt în realitate merită Sistemul Philips Hue este liderul taxei atunci când vine vorba de iluminarea inteligentă, dar există unele am ales trei care toate oferă același set de caracteristici de bază și hackability.Citește mai mult), dar un lucru pe care îl apreciez foarte bine este API-ul bine documentat Care sunt API-urile și cum sunt API-urile deschise Schimbarea Internetului Ce sunt API-urile , Și cum sunt API-urile deschise Schimbarea Internetului V-ați întrebat vreodată cum programele de pe computerul dvs. și site-urile pe care le vizitați "vorbesc" unul cu celălalt? Citiți mai multe pentru a vă crea propriile aplicații Hue. Azi vă voi arăta cum să vă controlați lumina Hue de la un Arduino - apoi adăugați un senzor simplu de mișcare.
De ce facem asta? Deoarece sistemele de automatizare acasă pot fi destul de rigide și costisitoare. Învățând cum să controlați Hue de la Arduino, deschideți ușile pentru o varietate de proiecte personalizate de automatizare a locuințelor, care pur și simplu nu pot fi bate de componentele de pe raft. În cazul în care hacking lucrurile împreună nu este lucrul dvs., încercați aceste 8 aplicații fabuloase Hue 8 Aplicații fabuloase pentru Philips Hue Lights 8 Aplicații fabuloase pentru Philips Hue Lights Sistemul Philips Hue are propria aplicație, dar de ce să se stabilească implicit atunci când există atât de multe opțiuni cooler acolo? Aceste 8 aplicații vă oferă opțiuni fabuloase pentru unele efecte foarte reci. Citește mai mult.
Sistemul Hue
Să facem ceva tehnic, așa că veți cunoaște sistemele de bază cu care lucrați. Hue luminile creeaza o retea de ochiurilor de plasa Mesh Networks: Viitorul retelelor de retele de comunicatii: Viitorul comunicarii Retelele de retea sunt aproape invulnerabile. Într-o rețea cu ochiuri de plasă, nu există puncte de presiune prin care trece tot traficul. În schimb, informațiile sunt transmise de la un dispozitiv la altul până când ajunge la destinație. Citiți mai multe, utilizând un protocol wireless de scurtă durată numit ZigBee - în special, acestea sunt certificate ZigBee Light Link, ceea ce înseamnă că alte produse ZLL ar trebui să funcționeze, de asemenea, alături de Hue (teoretic).
Deși tehnic este un interval scurt de timp, caracteristica rețelei rețelei ZigBee înseamnă că fiecare bec nou extinde rețeaua, transmiterea mesajelor către alte becuri. Aceasta înseamnă că, dacă aveți probleme cu controlul unei lumini pe cealaltă parte a casei, încercați să plasați o altă lumină între cele două.
Zigbee este un protocol excelent, dar este destul de diferit de Wi-Fi sau o rețea de calculatoare prin cablu, de aceea avem nevoie de Philips Hue Bridge pentru a se alătura celor doi împreună. Hue Bridge rulează un firmware modificat open source linux, care transmite un server web de bază.
Se interacționează cu acest server web local, pentru a afla starea actuală a luminilor și pentru a le controla.
Este un sistem minunat de simplu și coaptă pentru proiecte DIY. Kudos către Philips pentru a face acest lucru atât de hackable.
Început
Înainte de a putea accesa documentația API, va trebui să vă înregistrați ca dezvoltator. Este gratuit, dar trebuie să acceptați termenii și condițiile. Faceți asta acum.
Oricine este familiarizat cu serviciile web standard sau cu Javascript ar trebui să poată lucra cu Hue: toate datele sunt transmise și primite ca pachete JSON Ce este JSON? Privire de ansamblu - Layman Overview Ce este JSON? Prezentare generală a Laymanului Fie că intenționați să deveniți un dezvoltator de web sau nu, este o idee bună să știți cel puțin ce este JSON, de ce este important și de ce este folosit pe tot globul. Citeste mai mult .
Pentru a arunca o privire la acest lucru în acțiune, va trebui să cunoașteți adresa IP a podului dvs. Hue. Există câteva moduri de a face acest lucru:
- Uitați-vă la tabelul de alocare a adreselor DHCP din interfața de administrare a routerului
- Rulați un program de mapare a rețelei, cum ar fi IP Scanner Home
- Încercați instrumentul de broker Philips UPnP
- Ping “philips-hue.home”
Când ați terminat, continuați și tastați-l în bara de adrese a browserului dvs. depanare / clip.html atașat la adresa URL. În cazul meu, a fost:
http://192.168.1.216/debug/clip.html
Acesta este un instrument de depanare care vă permite să trimiteți și să primiți pachetele JSON printr-o interfață web simplă. Primul pas este să activezi profilul dezvoltatorului pe Hue Bridge - care este dezactivat în mod implicit din motive de securitate. Inserați următoarele în câmpul BODY, lăsați URL-ul ca / Api /, și trimiteți o solicitare POST dând clic pe butonul post:
"devicetype": "utilizator de test", "nume utilizator": "newdeveloper"
Prima dată când faceți acest lucru, veți vedea o “butonul de legătură nu a fost apăsat” undeva în răspuns. Aceasta este o caracteristică de securitate care impune ca fiecare aplicație nouă pe care o utilizați să fie autorizată fizic. Mergeți și găsiți podul, apăsați butonul și trimiteți din nou aceeași solicitare în 30 de secunde. De data aceasta veți primi un răspuns diferit și utilizatorul va fi autorizat. Dacă doriți să utilizați un nume de utilizator diferit, citiți documentele API despre crearea utilizatorilor. Deocamdată, acest lucru va fi suficient.
Odată ce utilizatorul dvs. este setat, adresa URL de bază cu care ar trebui să interacționați devine / Api / newdeveloper / . Puteți trimite o solicitare GET pentru a afla tot ce cunoaște Bridge în prezent despre luminile conectate, alarmele, scenele și un jurnal scurt de aplicații care au fost utilizate. Iată un exemplu de informații despre starea conținutului pentru un singur bec.
"stare": "pe": adevărat, "bri": 254, "nuanță": 14910, "sat": 144, "efect" : 369, "alert": "none", "colormode": "ct", "reachable": false, "type" LCT001",
Rețineți că “pe”:Adevărat statul nu vă arată de fapt dacă becul este pornit sau nu; numai că, în conformitate cu setările Bridge, acesta ar trebui să fie pe. “accesibil”:fals poate indica atât un bec prea departe sau pur și simplu oprit la comutatorul de alimentare.
Un ultim exemplu înainte de a integra acest lucru în Arduino: asigurați-vă că una dintre luminile dvs. este vizibilă și aprinsă și că știți care este numărul. Modificați adresa URL la / Api / newdevelopers / lumini / 1 / stare (schimbarea numărului la lumină) și trimiteți o solicitare PUT cu următoarele date:
"hue": 50100, "sat": 255, "bri": 255
Ar trebui să vedeți că lumina ta reacționează astfel:
Ceea ce ați făcut este să împingeți un bec nou. De asemenea, puteți adăuga “transitiontime”, care este o metodă de animație primitivă indicând câte secunde doriți să se schimbe statul.
Culoarea poate fi setată într-o serie de moduri diferite, dar, din nefericire, nu există o modalitate simplă de trimitere a unei valori RGB. În exemplul de mai sus, am trimis nuanţă, SATuration și brightness. Încercați să modificați valoarea nuanței și să trimiteți din nou solicitarea PUT.
De lucru de la Arduino
Există o bibliotecă Hue / Arduino, numită ArduinoHue, la care Philips se leagă în documentația API, dar problema cu această bibliotecă este aceea că comunică prin conexiunea USB cu PC-ul dvs., care trebuie să ruleze constant o aplicație Python. Eugh. Puteți lăsa computerul să ruleze totul la acel punct și să taie complet arduinul.
În schimb, vă voi arăta cum să controlați Hue de la Arduino folosind un scut Ethernet. Arduino dvs. nu trebuie să fie conectat la un computer, astfel încât acesta poate funcționa independent oriunde puteți pune un cablu Ethernet. De fapt, ar trebui să funcționeze și cu un scut Wi-Fi, dar nu am de jucat.
Dacă doriți să treceți înainte, întregul exemplu de cod este încorporat mai jos sau este disponibil aici. L-am adaptat dintr-un exemplu postat de Gilson Oguime. Dacă nu ați mai jucat niciodată cu scutul dvs. Ethernet, poate doriți să aveți o scurtă trecere prin tutorialul clientului web - voi presupune un anumit grad de familiarizare cu acest lucru și nu va acoperi codul utilizat pentru a stabili o rețea IP etc. V-am arătat și cum să creați un mini web-server cu ecranul Ethernet Oferiți-vă Proiectului Arduino propriul Mini-Webserver, cu un scut Ethernet Oferiți-vă Proiectului Arduino propriul Mini-Webserver, cu un ecran Ethernet A in timp ce te-am aratat cum sa instalezi un sistem de control al internetului pentru Arduino - dar a trebuit sa ramana conectat la un computer prin USB pentru a mentine conexiunea la internet ... Citeste mai mult .
Crearea schimbărilor de stat
Crearea unei noi stări pentru a împinge la becuri este un caz simplu de a crea un nou Şir variabilă și scăpând din toate citatele duble. Am adăugat o întâmplător() funcția de acolo, precum și pentru a crea o animație oarecum dinamică. Încercați să faceți aleator variabila aleatorie pentru diferite culori.
Comanda șirului = "\" pe ": true, \" hue \ ": 50100, \" sat \ ": 255, \" 25)) + "";
Trimiterea comenzii
Pentru a trimite într-adevăr comanda, aveți o funcție helper numită setHue () care ia numărul de lumină și șirul de comandă ca argument, după cum urmează:
setHue (1, comanda);
Tot ce face este atunci când se conectează la pod, scuipă comanda ca cerere PUT, împreună cu toate celelalte nonsensuri care creează o cerere HTTP implică.
client.print ("PUT / api /"); client.print (hueUsername); client.print ( "/ lumini /"); client.print (lightNum); client.println ("/ state HTTP / 1.1"); client.println ( "keep-alive"); client.print ("gazdă:"); client.println (hueHubIP); client.print ("Content-Length:"); client.println (command.length ()); client.println ("Content-Type: text / plain; charset = UTF-8"); client.println (); // gol înainte de client.println (comandă); // Comanda Hue
Adăugarea unui senzor de mișcare
În cele din urmă, am conectat un senzor simplu de mișcare HC-SR501 la pinul I / O digital 2. Când mișcarea este detectată, o serie de stări sunt împinse la pod pentru 2 becuri pentru a crea o animație lentă și dinamică. Când senzorul de mișcare se dezactivează, o singură comandă este trimisă ambelor. În mod ideal, s-ar întoarce la starea în care se aflau înainte ca mișcarea să fie detectată, dar logica nu este atât de inteligentă - o să le pornim și să o oprim.
limitări
Deși codul este neoptimizat, este nevoie de aproape o secundă pentru ca interfața de rețea a lui Arduino să trimită o singură comandă. Am testat aceeași comandă de la un Mac, utilizând aceeași conexiune Ethernet și a fost capabil de zece până la douăzeci de ori această viteză (aici este AppleScript, în cazul în care doriți să încercați). În consecință, orice fel de animație rapidă (am încercat să creez un efect de lumânare pâlpâitoare) nu este posibilă de la un Arduino. Acest lucru nu ar trebui să fie o problemă pentru majoritatea proiectelor, doar pentru animațiile de lumină de mare viteză, dar este bine să fim conștienți de limitare.
Este, de asemenea, dificil să analizați complet orice răspuns JSON pe care îl primiți din pod; acolo nu este suficientă RAM pe Arduino pentru a stoca toate datele brute. Din acest motiv, poate doriți să vă limitați mai mult la trimiterea.
Hack Hue
Acum că sunteți înarmat cu cunoștințele despre cum să controlați Hue complet independent, acesta deschide o lume a hacurilor de automatizare acasă Hue. Întrebarea adevărată este: ce vei face?
Explorați mai multe despre: Arduino, Philips Hue, Smart Lighting.