Annuncio pubblicitario

La gamma di luci Philips Hue non è certamente economica (ci sono alcune alternative Alternative Philips Hue che valgono davvero la penaIl sistema Philips Hue è in carica per quanto riguarda l'illuminazione intelligente, ma ci sono alcune valide alternative. Ne abbiamo scelti tre che offrono tutti lo stesso set di funzionalità e hackerabilità di base. Leggi di più ), ma una cosa che apprezzo molto è il ben documentato API Cosa sono le API e come sono le API aperte che cambiano InternetTi sei mai chiesto in che modo i programmi sul tuo computer e sui siti web che visiti si "dialogano"? Leggi di più per creare le tue app Hue. Oggi ti mostrerò come controllare le luci Hue da un Arduino, quindi aggiungerò un semplice sensore di movimento.

Perché stiamo facendo questo? Perché i sistemi di automazione domestica possono essere piuttosto rigidi e costosi. Imparando come controllare la tonalità da Arduino, apri le porte a una varietà di progetti di automazione domestica su misura che semplicemente non possono essere battuti da componenti standard. Se hackerare le cose insieme non fa per te, prova queste

instagram viewer
8 favolose app Hue Le 7 migliori app Philips Hue per Android e iPhoneCerchi le migliori app Philips Hue da utilizzare con le tue luci intelligenti? Ecco alcune fantastiche app per iPhone e Android. Leggi di più anziché.

Il sistema di tonalità

Diventiamo tecnici per un po 'in modo da conoscere i sistemi sottostanti con cui stai lavorando. Le luci di tonalità creano un rete mesh Mesh Networks: il futuro della comunicazioneLe reti mesh sono quasi invulnerabili. In una rete mesh, non ci sono punti di strozzamento attraverso i quali passa tutto il traffico. Al contrario, le informazioni vengono passate da un dispositivo all'altro fino a quando non raggiungono la destinazione. Leggi di più , usando un protocollo wireless a corto raggio chiamato ZigBee - nello specifico, lo sono ZigBee Light Link certificato, il che significa che anche altri prodotti ZLL dovrebbero funzionare insieme a Hue (in teoria).

Sebbene tecnicamente a corto raggio, la funzionalità di rete mesh di ZigBee significa che ogni nuova lampadina estende la rete, trasmettendo messaggi ad altre lampadine. Ciò significa che se hai problemi a controllare una luce dall'altra parte della casa, prova a posizionare un'altra luce tra i due.

Zigbee è un ottimo protocollo, ma è abbastanza diverso dal Wi-Fi o da una rete di computer cablata, quindi abbiamo bisogno del Philips Hue Bridge per unire i due. Il bridge Hue esegue un firmware linux open source modificato, che trasmette un web server di base.

Questo è ciò che vedrai se digiti semplicemente l'indirizzo IP del tuo bridge Hue nel tuo browser. Non puoi fare molto da qui però.
Questo è ciò che vedrai se digiti semplicemente l'indirizzo IP del tuo bridge Hue nel tuo browser. Da qui non puoi fare molto.

È interagendo con questo web server locale che puoi scoprire lo stato attuale delle luci e controllarle.

È un sistema meravigliosamente semplice e maturo per i progetti fai-da-te. Complimenti a Philips per aver reso questa cosa così hackerabile.

Inziando

Prima di poter accedere alla documentazione API, è necessario registrati come sviluppatore. È gratuito, ma devi accettare i termini e le condizioni. Fallo ora.

Chiunque abbia familiarità con i servizi Web standard o Javascript dovrebbe essere in grado di lavorare con la tonalità: tutti i dati vengono passati e ricevuti come Pacchetti JSON Che cos'è JSON? Una panoramica di LaymanChe tu abbia intenzione di essere uno sviluppatore web o meno, è una buona idea almeno sapere cos'è JSON, perché è importante e perché viene utilizzato in tutto il Web. Leggi di più .

Per dare un'occhiata a questo in azione, dovrai conoscere l'indirizzo IP del tuo bridge Hue. Ci sono alcuni modi per farlo:

  • Guarda la tabella di assegnazione degli indirizzi DHCP nell'interfaccia di amministrazione del tuo router
  • Esegui un programma di mappatura di rete come Home dello scanner IP
  • Prova il Strumento broker UPnP di Philips
  • Ping "philips-hue.home"
mappatura di rete per trovare bridge

Al termine, vai avanti e digita nella barra degli indirizzi del browser con debug / clip.html aggiunto all'URL. Nel mio caso, questo era:

http://192.168.1.216/debug/clip.html

Questo è uno strumento di debug che ti consente di inviare e ricevere i pacchetti JSON attraverso una semplice interfaccia web. Il primo passo è abilitare il profilo sviluppatore sul bridge Hue stesso, che è disabilitato per impostazione predefinita per motivi di sicurezza. Incolla quanto segue nel campo CORPO, lascia l'URL come /api/e inviare una richiesta POST facendo clic su pulsante post:

{"devicetype": "test user", "username": "newdeveloper"}

La prima volta che lo fai, vedrai un "pulsante di collegamento non premuto" da qualche parte nella risposta. Questa è una funzione di sicurezza che richiede che ogni nuova applicazione utilizzata sia autorizzata fisicamente. Vai e trova il tuo Bridge, premi il pulsante e invia di nuovo la stessa richiesta entro 30 secondi. Questa volta riceverai una risposta diversa e l'utente sarà autorizzato. Se desideri utilizzare un nome utente diverso, leggi i documenti API su creare utenti. Per ora, questo sarà sufficiente.

Una volta impostato l'utente, diventa l'URL di base con cui interagire /api/newdeveloper/. Puoi inviare una richiesta GET per scoprire tutto ciò che il tuo Bridge attualmente conosce su luci collegate, allarmi, scene e un breve registro delle app che sono state utilizzate. Ecco un esempio di alcune delle informazioni sullo stato contenute in una singola lampadina.


"state": {"on": true, "bri": 254, "hue": 14910, "sat": 144, "effect": "none", "xy": [0.4596, 0.4105], "ct": 369, "alert": "none", "colormode": "ct", "raggiungibile": false}, "type": "Luce colorata estesa", "name": "Camera 1", "modelid": "LCT001", 

Si noti che il “On”: true lo stato in realtà non mostra se la lampadina è accesa o meno; solo che in base alle impostazioni di Bridge, esso dovrebbero essere su. “Raggiungibile”: false può indicare sia una lampadina che è troppo lontana, sia semplicemente spenta sull'interruttore di alimentazione.

Un ultimo esempio prima di integrare questo in Arduino: assicurati che una delle tue luci sia visibile e accesa e che tu sappia quale numero è. Cambia l'URL in /api/newdevelopers/lights/1/state (cambiando il numero sulla tua luce) e invia una richiesta PUT con i seguenti dati:

{"hue": 50100, "sat": 255, "bri": 255}

Dovresti vedere la tua luce reagire in questo modo:

demo di tonalità

Quello che hai fatto è spingere un nuovo stato nella lampadina. Puoi anche aggiungere "tempo di transizione", che è un metodo di animazione primitivo che indica quanti secondi vorresti che il cambio di stato impiegasse.

È possibile impostare il colore un numero di modi diversi, ma sfortunatamente non esiste un modo semplice per inviare un valore RGB. Nell'esempio sopra, abbiamo inviato colore, saturazione e brightness. Prova a modificare il valore della tonalità e a inviare di nuovo la richiesta PUT.

Funzionando Da Arduino

Esiste una libreria Hue / Arduino esistente chiamata ArduinoHue a cui Philips si collega nella documentazione API, ma il problema con questa libreria è che comunica tramite la connessione USB al PC, che deve anche eseguire un'applicazione Python costantemente. EuGH. Puoi anche lasciare che il tuo computer esegua l'intera cosa a quel punto e tagliare completamente l'Arduino.

Invece, ti mostrerò come controllare la tonalità dall'Arduino utilizzando uno schermo Ethernet. Non è necessario che Arduino sia collegato a un computer, quindi può funzionare in modo indipendente ovunque sia possibile inserire un cavo Ethernet. In effetti, dovrebbe funzionare anche con uno scudo Wi-Fi, ma non ne ho uno con cui giocare.

ehternet-sheild-box

Se desideri saltare avanti, il codice di esempio completo è incorporato di seguito o disponibile qui. L'ho adattato da un esempio pubblicato di Gilson Oguime. Se non hai mai giocato con lo scudo Ethernet prima d'ora, potresti voler passare rapidamente attraverso tutorial client web - Presumo un po 'di familiarità con questo, e non coprirò il codice utilizzato per stabilire un IP di rete, ecc. Ti abbiamo anche mostrato come creare un mini web server con lo scudo Ethernet Dai al tuo progetto Arduino il proprio mini-webserver, con una protezione EthernetQualche tempo fa, ti ho mostrato come configurare un sistema di controllo Internet per il tuo Arduino, ma è stato necessario rimanere connessi a un computer tramite USB per mantenere la connessione Internet ... Leggi di più .

Creazione di cambiamenti di stato

La creazione di un nuovo stato da spingere verso le lampadine è un semplice caso di creazione di un nuovo Corda variabile e sfuggendo a tutte le doppie virgolette. Ho aggiunto a casuale() funzione anche lì per creare un'animazione in qualche modo dinamica. Prova a rendere casuale la variabile tonalità anche per colori diversi.

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

Invio del comando

Per inviare effettivamente il comando, hai una funzione di supporto chiamata setHue () che accetta il numero di luce e la stringa di comando come argomento, in questo modo:

setHue (1, comando);

Tutto ciò che fa allora è connettersi al bridge, sputare il comando come una richiesta PUT, insieme a tutte le altre sciocchezze che comporta la creazione di una richiesta HTTP.


client.print ("PUT / api /"); client.print (hueUsername); client.print ( "/ luci /"); client.print (lightNum); client.println ("/ state HTTP / 1.1"); client.println ( "keep-alive"); client.print ("Host:"); client.println (hueHubIP); client.print ("Content-Length:"); client.println (command.length ()); client.println ("Content-Type: text / plain; charset = UTF-8" ); client.println (); // riga vuota prima del corpo. client.println (comando); // Comando tonalità. 

Aggiunta di un sensore di movimento

Alla fine, ho cablato un semplice Sensore di movimento HC-SR501 al pin I / O digitale 2. Quando viene rilevato un movimento, una serie di stati viene spinta sul ponte per 2 lampadine per creare un'animazione lenta e dinamica. Quando il sensore di movimento si disattiva, un singolo comando di spegnimento viene inviato ad entrambi. Idealmente, verrebbero ripristinati allo stato in cui si trovavano prima che venisse rilevato il movimento, ma la logica non è così intelligente - li accenderemo e spegneremo.

limitazioni

Sebbene sia un codice non ottimizzato, ci vuole quasi un secondo perché l'interfaccia di rete di Arduino invii una singola richiesta di comando. Ho testato lo stesso comando da un Mac, utilizzando la stessa connessione Ethernet, ed era capace da dieci a venti volte quella velocità (ecco l'AppleScript nel caso in cui desideri provare). Di conseguenza, qualsiasi tipo di animazione veloce (stavo tentando di creare un effetto a sfarfallio della candela) non è possibile da un Arduino. Questo non dovrebbe essere un problema per la maggior parte dei progetti, solo per animazioni luminose ad alta velocità, ma è bene essere consapevoli della limitazione.

È anche difficile analizzare completamente qualsiasi risposta JSON che ricevi dal bridge; non c'è abbastanza RAM sull'Arduino per archiviare tutti i dati grezzi. Per questo motivo, potresti voler limitarti principalmente all'invio.

Hack the Hue

Ora che sei armato della conoscenza di come controllare Hue in modo completamente indipendente, si apre un mondo di hack di domotica Hue. La vera domanda è: cosa farai?

James ha una laurea in Intelligenza Artificiale ed è certificato CompTIA A + e Network +. È lo sviluppatore principale di MakeUseOf e trascorre il suo tempo libero giocando a paintball e giochi da tavolo VR. Costruisce PC da quando era un bambino.