Sommario:

Progetto scuola IoT Philips Hue: 19 passaggi
Progetto scuola IoT Philips Hue: 19 passaggi

Video: Progetto scuola IoT Philips Hue: 19 passaggi

Video: Progetto scuola IoT Philips Hue: 19 passaggi
Video: Alex Mucci SIGMATA da Marra 2024, Luglio
Anonim
Progetto Scuola IoT Philips Hue
Progetto Scuola IoT Philips Hue

Questo è un manuale che dovevo scrivere per la scuola. Non è completo e non sono sicuro che tu possa usarlo. La mia conoscenza delle API è il minimo indispensabile. Volevamo realizzare uno specchio interattivo con luci sul retro che reagissero al tempo, alla luce dall'esterno, ecc.

Ho visto come programmare una lampada Philips Hue con un Arduino. In questo, spiego tutti i miei passi e fino a che punto sono arrivato. Non sono riuscito a programmare Hue con Arduino ma penso che sia un buon inizio.

Ho bisogno di questo: un Arduino una lampada hue un bridge Account sviluppatore Philips Hue

Fonti: 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-…

Passaggio 1: Inizia

Prima di poter accedere alla documentazione dell'API, devi registrarti come sviluppatore. È gratuito, ma devi accettare i termini e le condizioni. Puoi crearne uno qui >

Passaggio 2: app Hue

Scarica l'app Philips Hue ufficiale. Collega il telefono alla rete in cui desideri che il bridge Hue sia attivo.

Passaggio 3: collega il ponte

Collega il tuo bridge alla tua rete e funziona correttamente. Verifica che l'app per smartphone possa controllare le luci sulla stessa rete. Deve essere sulla stessa rete Wi-Fi.

Passaggio 4: indirizzo IP

Quindi devi scoprire l'indirizzo IP del bridge sulla tua rete. Premi il link per connetterti al bridge nell'app e prova a controllare le luci.

Passaggio 5:

Se funziona tutto, vai al menu delle impostazioni nell'app. Quindi vai su "My Bridge", vai su "Impostazioni di rete". Spegni l'interruttore DHCP e vedrai l'indirizzo IP del bridge. Prendere nota dell'indirizzo IP, quindi riattivare DHCP.

Passaggio 6: eseguire il debug di Hue

Esegui il debug della tua tonalità
Esegui il debug della tua tonalità

Quando lo hai scritto, devi eseguire il debug di Hue. È necessario l'indirizzo IP per questo passaggio. Devi visitare il prossimo sito.

/debug/clip.html

L'interfaccia sarà simile a questa nell'immagine. Questa è la base di tutto il traffico web e dell'interfaccia RESTful di hue.

Ho ricevuto queste informazioni sull'interfaccia Restful del sito Philips Hue.

URL: questo è in realtà l'indirizzo locale di una specifica risorsa (cosa) all'interno del sistema hue. Potrebbe essere la luce, un gruppo di luci o molte altre cose. Questo è l'oggetto con cui interagirai all'interno di questo comando.

Un corpo: questa è la parte del messaggio che descrive cosa vuoi cambiare e come. Qui inserisci, in formato JSON, il nome della risorsa e il valore che desideri modificare/aggiungere.

Un metodo: qui puoi scegliere tra i 4 metodi HTTP che la chiamata hue può utilizzare.

GET: questo è il comando per recuperare tutte le informazioni sulla risorsa indirizzata

PUT: questo è il comando per modificare una risorsa indirizzata

POST: questo è il comando per creare una nuova risorsa all'interno della risorsa indirizzata

DELETE: questo è il comando per eliminare la risorsa indirizzata Risposta: In quest'area vedrai la risposta al tuo comando. Anche in formato JSON.

Passaggio 7: iniziamo

Iniziamo
Iniziamo

Ora abbiamo bisogno di un nome utente generato casualmente che il bridge crea per te. Ne otterrai uno riempiendo questo.

Inserisci nell'URL:

/api/

Metti nel CORPO:

e premi OTTIENI

Questo comando sta fondamentalmente dicendo "crea una nuova risorsa all'interno di / api "(dove si trovano i nomi utente) con le seguenti proprietà. All'inizio, riceverai un errore, e questo perché è il passaggio di sicurezza di Philips Hue. Premendo il pulsante dimostrano che hai accesso fisico al ponte.

Passaggio 8:

Immagine
Immagine

Ora premi il pulsante sul Bridge e fai nuovamente clic su POST.

Ora otterrai un nome utente che il bridge ha creato per te.

Passaggio 9: facciamo qualcosa con le luci

Facciamo qualcosa con le luci
Facciamo qualcosa con le luci

Copia il tuo nome utente e inseriscilo nella riga seguente.

Inserisci questo nel tuo URL

/api/ /luci

Premi OTTIENI

Dovresti ottenere una risposta JSON con tutte le luci nel tuo sistema e i loro nomi.

Passaggio 10:

Immagine
Immagine

Ho preso in prestito alcune luci Hue dalla scuola, quella che uso è quella con ID 3. Voglio informazioni specifiche su questa luce.

Metti questo accanto all'URL che avevi già:

/api/ /luci/3

Premi OTTIENI

Ora ottieni tutte le informazioni sul Led 3 (se hai un altro numero come 1 vedrai le informazioni su quello).

Passaggio 11: controlliamo la luce

Controlliamo la luce
Controlliamo la luce

Vedi in "stato" che il mio led è "acceso". Vogliamo controllare la luce in "stato".

Metti questo accanto all'URL che hai già: https:// /api/ /lights/ 3/ state

Metti la riga successiva nel BODY

Premi PUT

Ora la tua luce si spegnerà! Cambia il valore nel corpo in vero e la luce si riaccenderà.

Passaggio 12:

Ora funziona tutto, voglio farlo con il mio Arduino. Ho guardato il link fornito da Philips Hue per cambiare il colore della luce. Ma hai bisogno di Python per questo, non ho mai lavorato con Python quindi ho cercato qualcos'altro.

Se ti piace guardare questo codice ho il link Github qui:

github.com/bsalinas/ArduinoHue

Passaggio 13:

Ho cercato di ottenere informazioni da questo sito per sviluppatori sul mio arduino. Il più delle volte non capivo la lingua. Ma ho trovato del codice su un sito web di James Bruce.

Questo è il link al sito.

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

Passaggio 14:

Per prima cosa ho visto che stava usando un cavo Ethernet. Avevo solo una lampadina Hue Light e Bridge un Arduino e poca comprensione del codice. Mi ci è voluto un po' per capire il suo codice, ma ancora non lo capisco davvero.

Per prima cosa ho aggiunto questa libreria per Internet.

#includere

Questo è per la tua rete (deve essere lo stesso della lampadina Hue Light)

const char* ssid = " "; // metti qui la tua rete WiFi SSIDconst char* password = " "; // inserisci qui la password della tua rete WiFi

Questi sono l'ID del tuo Bridge e il nome utente che il tuo bridge ti ha dato. (Non so dove stia l'80 ma quando ho fatto delle ricerche ho visto che era usato per le reti).

// Costanti tonalità const char hueHubIP = ""; // Hue hub IP const char hueUsername = ""; // Nome utente tonalità const int hueHubPort = 80;

// Variabili tonalità bool hueOn; // on/off int hueBri; // valore di luminosità long hueHue; // valore tonalità String hueCmd; // comando tonalità

buffer lungo senza segno=0; //buffer per la memorizzazione dei dati ricevuti unsigned long addr;

Passaggio 15:

Per la configurazione del vuoto, ho fatto di più per la connessione a Internet. In questo codice, Arduino sta cercando se può connettersi alla rete.

void setup(){ Serial.begin(9600);

Serial.println();

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

WiFi.begin(ssid, password);

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

ritardo (500);

Serial.print("."); }

Serial.println("connesso"); }

Passaggio 16:

Nel loop di James, ho visto che aveva un'istruzione If e else. Ma quello era per il cavo ethernet, quindi ho provato a tralasciarlo. A volte ho anche provato a regolarlo, ma non lo sapevo ancora con molti dati. Alcune cose nel codice le ho capite, nella stringa ci sono i dati che vengono dati alla luce Hue.

ciclo vuoto(){

// Una serie di quattro comandi di esempio, il cui colore sfuma di due luci tra il rosso e il rosa. Leggi la documentazione dell'API Hue // per maggiori dettagli sui comandi esatti da utilizzare, ma tieni presente che le virgolette devono essere sfuggite.

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

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

command = "{"hue\": 65280, \"sat\":255, \"bri\":255, \"transitiontime\":"+String(random(15, 25))+"}"; setHue(1, comando);

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

}

Passaggio 17:

Il codice successivo era un booleano, ma in Arduino devi scrivere Bool. All'inizio ricevevo molti errori a causa della parola client. Quindi ho cercato e ho visto che del codice utilizzava la riga "Client WifiClient;". Quindi l'ho usato e ha funzionato.

Nell'istruzione if vedi spesso client.print. Se guardi nel codice, vedrai che l'URL che hai inserito in precedenza è diviso in parti. Ora inserisci il tuo codice. Ho dovuto scegliere la mia terza luce a LED.

/* setHue() è la nostra funzione di comando principale, a cui deve essere passato un numero chiaro e una * stringa di comando correttamente formattata in formato JSON (fondamentalmente un array di variabili * e valori in stile Javascript. Quindi effettua una semplice richiesta HTTP PUT a il Bridge all'IP specificato all'inizio. */

bool setHue(int lightNum, comando String) {

client WiFi Client;

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

while (client.connected()){

client.print("PUT /api/"); client.print(hueUsername); client.print("/luci/"); client.print(lightNum); // hueLight a base zero, aggiungi 1 client.println("3/state"); // qui ho cambiato il nome della tonalità e stateclient.print("Host: "); client.println(hueHubIP); client.print("Lunghezza contenuto: "); client.println(comando.lunghezza()); client.println("Content-Type: text/plain;charset=UTF-8"); client.println(); // riga vuota prima del corpo client.println(comando); // comando tonalità

} client.stop(); restituire vero; // comando eseguito }

altrimenti restituisce false; // comando non riuscito }

Passaggio 18:

Al secondo booleano, ho fatto la stessa cosa cambiando alcune parole. L'ho caricato per vedere se funzionava.

/* Una funzione di supporto nel caso in cui la logica dipenda dallo stato corrente della luce. * Questo imposta un numero di variabili globali che puoi controllare per scoprire se una luce è attualmente accesa o meno * e la tonalità ecc. Non necessario solo per inviare comandi */

bool getHue(int lightNum) {

client WiFi Client;

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

client.print("OTTIENI /api/"); client.print(hueUsername); client.print("/luci/"); client.print(lightNum); client.println("3/stato"); client.print("Host: "); client.println(hueHubIP); client.println("Tipo di contenuto: application/json"); client.println("keep-alive"); client.println();

while (client.connected()) { if (client.available()) { client.findUntil("\"on\":", "\0"); hueOn = (client.readStringUntil(', ') == "true"); // se la luce è accesa, imposta la variabile su true client.findUntil("\"bri\":", "\0"); hueBri = client.readStringUntil(', ').toInt(); // imposta la variabile sul valore di luminosità client.findUntil("\"hue\":", "\0"); hueHue = client.readStringUntil(', ').toInt(); // imposta la variabile su hue value break; // non sta ancora catturando altri attributi di luce } } client.stop(); restituire vero; // catturato su, bri, hue } else return false; // errore di lettura su, bri, hue }

Passaggio 19:

Immagine
Immagine

Penso che potrei stabilire una connessione con Philips Hue. Ricevo informazioni ma devono ancora essere utilizzate.

Sfortunatamente, questo va oltre ciò che posso codificare. Se conosci la risposta, o se ci sono errori reali che devono essere corretti, mi piacerebbe sentirla.:-)

Consigliato: