domenica 12 gennaio 2014

Interfacciare Arduino alle Philips Hue - parte 1 - le REST API

Sono arrivate in ufficio questa settimana le Philips Hue, per la precisione lo started kit acquistabile sull'Apple Store

Non sono delle comuni lampade a led, bensì della lampade dotate di trasmettitore a standard ZigBee a sua volta interfacciato con un accessorio denominato Bridge, che ha il compito di dialogare con tutte le lampade "a tiro di fucile" e mettere a disposizione il controllo delle stesse su rete Ethernet.
Per gli utenti meno smaliziati è disponibile una app gratuita chiamata appunto Philips Hue, che permette di pilotare le lampade singolarmente o a gruppi (fino a un massimo di 50 lampade), scegliendo la colorazione in base a una qualsiasi foto caricabile nell'app e trascinando le icone rappresentanti le lampade sul punto desiderato all'interno dell'immagine o foto. Il risultato, immediato, è il cambio di colorazione della lampada con l'esatta tonalità scelta.
Questo il video ufficiale di Philips:

Per fare questo il Bridge deve connettersi all'ipad mediante una rete wireless, che non è supportata direttamente dal Bridge, ma che deve essere connessa al Bridge stesso tramite una cavo Ethernet.
Credo, ma non ho letto le istruzioni, che sia obbligatorio avere un dhcp server attivo nella rete, in modo che il Bridge assuma un indirizzo sulla stessa classe di ip del dispositivo iOS che si vuole utilizzare per il controllo.
Per abilitare il dispositivo iOS è necessario lanciare l'app e schiacciare l'unico bottone in mezzo al Bridge, metodo che permette di accoppiare i due dispositivi.
Fatto questo il dispositivo è immediatamente utilizzabile: è possibile controllare liberamente le lampade, oppure utilizzare uno degli scenari di default, modificarli, salvarli, crearne di nuovi.
All'interno di ogni scenario le icone delle lampade vanno trascinate sul punto dell'immagine di sfondo dalla quale si vuole attingere il colore specifico. Lo slider in basso permette invece di regolare la luminosità.


E fin qui bella la novità ma l'effetto sorpresa passa in fretta e finito quello il tecnogadget perde di effetto.
La cosa invece più interessante è che Philips ha reso pubbliche le specifiche del Bridge, il quale è dotato di una interfaccia REST che ne permette il controllo in modo praticamente universale, aprendo le porte a qualsiasi sviluppo software esterno.
Tutta la documentazione delle REST API la trovate qui http://developers.meethue.com
Quello che vi propongo oggi è di interfacciare un Arduino al Bridge in modo da applicare una logica di controllo esterna, che può poi essere facilmente completata per integrarsi ad esempio con sensori PIR di presenza, sensori di luce, microfoni, ecc. Il campo di applicazione è praticamente illimitato: possiamo pensare di far accendere in automatico le luci quando qualcuno è presente nell'ambiente, spegnere dopo n minuti dall'uscita delle persone, cambiare la luminosità in funzione della luce naturale presente, controllare l'accensione con un battito di mani, ecc.

Attivazione dell'utente

L'interfaccia REST per essere utilizzata necessita di un nome utente che deve essere preventivamente attivato.
La prima cosa da fare è trovare l'ip del Bridge. Per fare questo Philips mette a disposizione una utility web all'indirizzo http://www.meethue.com/api/nupnp . 
Il risultato è una stringa json che mostra l'id dell'apparato, il suo ip attuale e il mac Address.

[{"id":"001788fffe188bf3","internalipaddress":"192.168.3.241","macaddress":"00:17:88:18:8b:f3"}]

Trovato l'ip è necessario collegarsi all'interfaccia di controllo e attivare un nuovo utente.
Per fare questo colleghiamoci a:
dove ovviamente al posto di BRIDGE_IP dove indicare l'ip trovato in precedenza.
Nella form che appare, scrivete nell'url:
/api
e nel body:
{"devicetype":"arduino","username":"arduinouser"}
dove arduino è il nome del device di controllo e arduinouser l'utente che volete creare. Cliccate su POST e otterrete un messaggio di errore come il seguente:
il motivo è che dovete prima autorizzare la creazione dell'utente, premendo il tasto sul Bridge. Riprovate a fare il POST dopo aver premuto il tasto centrale del Bridge.
Otterrete come risposta alla creazione il seguente messaggio:
[
   {
         "success": {
            "username": "arduinouser"
                    }
   }
]
Dopo aver creato l'utente potrete liberamente inviare dei comandi di controllo.
Ad esempio l'url di controllo delle singole luci è nel formato:
/api/UTENTE/lights/1/state
dove al posto di UTENTE dove utilizzare l'utente creato nel passaggio precedente.
Ad esempio se inviate con protocollo PUT la stringa
{"on":true}
all'url /api/arduinouser/lights/1/state otterrete l'accensione della lampada #1.

Nel prossimo post: interfacciare Arduino alle Philips Hue: fade di una lampada via REST api

Nessun commento:

Posta un commento