Taula de continguts:

Projecte IoT School Philips Hue: 19 passos
Projecte IoT School Philips Hue: 19 passos

Vídeo: Projecte IoT School Philips Hue: 19 passos

Vídeo: Projecte IoT School Philips Hue: 19 passos
Vídeo: Denmark official faints during Covid-19 conference 2024, Desembre
Anonim
Projecte IoT School Philips Hue
Projecte IoT School Philips Hue

Aquest és un manual que vaig haver d’escriure per a l’escola. No està complet i no estic segur de si fins i tot el podeu utilitzar. El meu coneixement de les API és mínim. Volíem fer un mirall interactiu amb llums a la part posterior que reaccionessin a la intempèrie, llum de fora, etc.

Vaig mirar com podia programar un llum Philips Hue amb un Arduino. En això, explico tots els meus passos i fins on he arribat. No he aconseguit programar el Hue amb l'Arduino, però crec que és un bon començament.

Ho he necessitat: un llum Arduino a Hue, un pont de compte de desenvolupador de Philips Hue

Fonts: https://www.developers.meethue.com/documentation/g…https://github.com/bsalinas/ArduinoHuehttps://arduino-esp8266.readthedocs.io/en/latest/e…https:// www.makeuseof.com/tag/control-philips-hue-…

Pas 1: Comenceu

Abans d’accedir a la documentació de l’API, us heu de registrar com a desenvolupador. És gratuït, però heu d’acceptar els termes i condicions. Podeu fer-ne un aquí>

Pas 2: aplicació Hue

Descarregueu l'aplicació oficial Philips Hue. Connecteu el telèfon a la xarxa que vulgueu que estigui activat el pont Hue.

Pas 3: connecteu el pont

Connecteu el vostre pont amb la vostra xarxa i funcioni correctament. Comproveu que l'aplicació per a telèfons intel·ligents pugui controlar els llums de la mateixa xarxa. Ha de ser a la mateixa xarxa Wi-Fi.

Pas 4: adreça IP

A continuació, haureu de descobrir l'adreça IP del pont a la vostra xarxa. Premeu l'enllaç per connectar-vos al pont de l'aplicació i proveu de controlar els llums.

Pas 5:

Si tot funciona, aneu al menú de configuració de l'aplicació. Més que anar a "El meu pont", anar a "Configuració de xarxa". Apagueu el commutador DHCP i veureu l'adreça IP del pont. Tingueu en compte l'adreça IP i torneu a activar DHCP.

Pas 6: depureu la vostra tonalitat

Depureu la vostra tonalitat
Depureu la vostra tonalitat

Quan ho vau escriure, heu de depurar el vostre Hue. Necessiteu l'adreça IP per a aquest pas. Heu de visitar el següent lloc.

/debug/clip.html

La interfície es veurà així a la imatge. Aquesta és la base de tot el trànsit web i de la interfície RESTful de tonalitat.

He obtingut aquesta informació sobre la interfície Restful del lloc de Philips Hue.

URL: en realitat és l'adreça local d'un recurs (cosa) específic dins del sistema de tonalitats. Podria ser llum, un grup de llums o moltes coses més. Aquest és l'objecte que interactuareu amb aquesta ordre.

Un cos: és la part del missatge que descriu què voleu canviar i com. Aquí introduïu, en format JSON, el nom i el valor del recurs que voleu canviar / afegir.

Un mètode: aquí podeu triar els 4 mètodes HTTP que pot utilitzar la trucada Hue.

GET: és l'ordre per obtenir tota la informació sobre el recurs adreçat

PUT: és l'ordre per modificar un recurs adreçat

POST: aquesta és l'ordre per crear un recurs nou dins del recurs adreçat

ELIMINA: aquesta és l'ordre per suprimir el recurs adreçat Resposta: en aquesta àrea, veureu la resposta al vostre comandament. També en format JSON.

Pas 7: Comencem

Comencem
Comencem

Ara necessitem un nom d'usuari generat aleatòriament que el pont us creï. N’obtindreu un omplint aquest.

Introduïu l'URL:

/ api /

Posa al cos:

i premeu GET

Aquesta ordre diu bàsicament "si us plau, creeu un recurs nou dins / api" (on es troben els noms d'usuari) amb les propietats següents. Al principi, obtindreu un error, i això és perquè és el pas de seguretat de Philips Hue. Prement el botó demostren que teniu accés físic al pont.

Pas 8:

Imatge
Imatge

Ara premeu el botó del pont i torneu a fer clic a POST.

Ara obtindreu un nom d’usuari que el pont us ha creat.

Pas 9: fem alguna cosa amb les llums

Fem alguna cosa amb les llums
Fem alguna cosa amb les llums

Copieu el vostre nom d'usuari i poseu-lo a la línia següent.

Introduïu-ho al vostre URL

/ api / / lights

Premeu GET

Hauríeu d'obtenir una resposta JSON amb totes les llums del vostre sistema i els seus noms.

Pas 10:

Imatge
Imatge

Vaig agafar prestades algunes llums Hue Lights de l’escola, la que faig servir és la que té l’identificador 3. Vull informació específica sobre aquesta llum.

Poseu-lo al costat de l'URL que ja teníeu:

/ api / / lights / 3

Premeu GET

Ara obtindreu tota la informació sobre Led 3 (si teniu un altre número com 1, en veureu informació).

Pas 11: controlem la llum

Controlem la llum
Controlem la llum

Veu en "estat" que el meu led està "activat". Volem controlar la llum en "estat".

Poseu-lo al costat de l'URL que ja teníeu: https:// / api / / lights / 3 / state

Posa la següent línia al cos

Premeu PUT

Ara la llum s’apagarà. Canvieu el valor del cos a true i la llum es tornarà a encendre.

Pas 12:

Ara tot funciona. Vull fer-ho amb el meu Arduino. Vaig mirar l'enllaç que Philips Hue va donar per canviar el color de la llum. Però necessiteu Python per a això, mai he treballat amb Python, així que he buscat una altra cosa.

Si voleu veure aquest codi, tinc l'enllaç Github aquí:

github.com/bsalinas/ArduinoHue

Pas 13:

Vaig mirar com podia obtenir informació d’aquest lloc de desenvolupadors al meu arduino. La majoria de les vegades no entenia l’idioma. Però vaig trobar algun codi en un lloc web de James Bruce.

Aquest és l’enllaç al lloc web.

www.makeuseof.com/tag/control-philips-hue-lights-arduino-and-motion-sensor/

Pas 14:

Primer vaig veure que feia servir un cable Ethernet. Només tenia una bombeta Hue i un Bridge Arduino i poca comprensió del codi. Vaig trigar una estona a entendre el seu codi, però encara no ho entenc realment.

Primer vaig afegir aquesta biblioteca per Internet.

#incloure

Això és per a la vostra xarxa (ha de ser el mateix que la bombeta Hue)

const char * ssid = ""; // posa aquí la teva xarxa WiFi SSIDconst char * password = ""; // posa aquí la contrasenya de la teva xarxa WiFi

Aquests són l’identificador del vostre pont i el nom d’usuari que us va donar el vostre pont. (No sé on volen representar els 80, però quan vaig investigar vaig veure que s'utilitzava per a xarxes).

// Constants de tonalitat const char hueHubIP = ""; // Hue hub IP const char hueUsername = ""; // Hue nom d’usuari const int hueHubPort = 80;

// Variables de tonalitat bool hueOn; // on / off int hueBri; // valor de brillantor llarg matís; // hue value String hueCmd; // Ordre Hue

buffer llarg sense signar = 0; // memòria intermèdia per a emmagatzematge de dades rebudes sense signar addr llarg;

Pas 15:

Per a la configuració del buit, he fet el màxim per la connexió a Internet. En aquest codi, l'Arduino busca si pot connectar-se amb la xarxa.

configuració nul·la () {Serial.begin (9600);

Serial.println ();

Serial.printf ("Connexió a% s", ssid);

WiFi.begin (ssid, contrasenya);

while (WiFi.status ()! = WL_CONNECTED) {

retard (500);

Serial.print ("."); }

Serial.println ("connectat"); }

Pas 16:

Al bucle de James, vaig veure que tenia una declaració If and else. Però això era pel cable ethernet, així que vaig intentar deixar això fora. De vegades també intentava ajustar-lo, però encara no ho sabia amb moltes dades. Algunes coses del codi que he entès, a la cadena hi ha les dades que es donen a la llum Hue.

bucle buit () {

// Una sèrie de quatre ordres de mostra, que el color difuminen dues llums entre el vermell i el rosa. Llegiu la documentació de l’API Hue // per obtenir més informació sobre les ordres exactes que s’utilitzaran, però tingueu en compte que s’han d’escapar les cometes.

String command = "{" on / ": true, \" hue / ": 50100, \" sat / ": 255, \" bri / ": 255, \" transitiontime / ":" + String (random (15, 25)) + "}"; setHue (1, ordre);

command = "{" on / ": true, \" hue / ": 65280, \" sat / ": 255, \" bri / ": 255, \" transitiontime / ":" + String (random (15, 25)) + "}"; setHue (2, ordre);

command = "{" tonalitat / ": 65280, \" sat / ": 255, \" bri / ": 255, \" transitiontime / ":" + Cadena (aleatòria (15, 25)) + "}"; setHue (1, ordre);

command = "{" hue / ": 50100, \" sat / ": 255, \" bri / ": 255, \" transitiontime / ":" + String (random (15, 25)) + "}"; setHue (2, ordre);

}

Pas 17:

El següent codi era un booleà, però a Arduino heu d’escriure Bool. Al principi, vaig tenir molts errors a causa de la paraula client. Així que el vaig mirar i vaig veure que algun codi feia servir la línia "client WifiClient;". Així que ho vaig fer servir i va funcionar.

A la declaració if, sovint veieu client.print. Si mireu el codi, veureu que l’URL que heu introduït anteriorment es divideix en trossos. Ara introduïu el vostre propi codi. Vaig haver de triar la meva tercera llum LED.

/ * setHue () és la nostra funció d’ordres principal, que necessita passar un número clar i una cadena d’ordres * formatada correctament en format JSON (bàsicament una matriu d’estil Javascript de variables * i valors. A continuació, fa una senzilla sol·licitud HTTP PUT a el pont a la IP especificada a l'inici. * /

bool setHue (int lightNum, ordre de cadena) {

Client WiFiClient;

if (client.connect (hueHubIP, hueHubPort)) {

while (client.connected ()) {

client.print ("PUT / api /"); client.print (hueUsername); client.print ("/ lights /"); client.print (lightNum); // hueLight zero based, afegir 1 client.println ("3 / state"); // aquí he canviat el nom de tonalitat i stateclient.print ("Amfitrió:"); client.println (hueHubIP); client.print ("Longitud del contingut:"); client.println (command.length ()); client.println ("Tipus de contingut: text / normal; conjunt de caràcters = UTF-8"); client.println (); // línia en blanc abans del cos client.println (ordre); // Ordre Hue

} client.stop (); tornar cert; // ordre executat}

en cas contrari, torneu a fals; // l'ordre ha fallat}

Pas 18:

Al segon booleà, vaig fer el mateix amb canviar algunes paraules. El vaig penjar per veure si funcionava.

/ * Una funció d’ajuda per si la vostra lògica depèn de l’estat actual de la llum. * Això estableix una sèrie de variables globals que podeu comprovar per esbrinar si una llum està encesa o no * i el to, etc. No cal només per enviar ordres * /

bool getHue (int lightNum) {

Client WiFiClient;

if (client.connect (hueHubIP, hueHubPort)) {

client.print ("GET / api /"); client.print (hueUsername); client.print ("/ lights /"); client.print (lightNum); client.println ("3 / estat"); client.print ("Amfitrió:"); client.println (hueHubIP); client.println ("Tipus de contingut: aplicació / json"); client.println ("keep-alive"); client.println ();

while (client.connected ()) {if (client.available ()) {client.findUntil ("\" on / ":", "\ 0"); hueOn = (client.readStringUntil (',') == "true"); // si la llum està activada, configureu la variable com a true client.findUntil ("\" bri / ":", "\ 0"); hueBri = client.readStringUntil (',').toInt (); // estableix la variable al valor de brillantor client.findUntil ("\" tonalitat / ":", "\ 0"); hueHue = client.readStringUntil (',').toInt (); // estableix la variable a la ruptura del valor de tonalitat; // encara no es capturen altres atributs lleugers}} client.stop (); tornar cert; // capturat el, bri, tonalitat} else return false; // error en llegir, bri, matís}

Pas 19:

Imatge
Imatge

Crec que podria establir una connexió amb el Philips Hue. Rebo informació, però encara cal fer-la servir.

Malauradament, això va més enllà del que puc codificar. Si coneixeu la resposta o si hi ha errors reals que cal corregir, m'encantaria escoltar-la.:-)

Recomanat: