Domotica con Raspberry: Philips Hue + Home Assistant

Progetto di Domotica con Raspberry

Integrare le lampade Philips Hue con Home Assistant

 

 

In questo tutorial della serie “Domotica con Raspberry“, andremo a vedere in dettaglio come integrare le lampade Philips Hue con Home Assistant in modo da poter controllare le vostre luci non solo con una app ma in modo centralizzato!

Hai già dato un occhio all’indice di articoli inerenti la Domotica presenti nel mio sito? Facci un salto: Indice articoli di Domotica

 

Se volete il Bundle:

Pre-Configurazione

Un consiglio. La guida è basata al 100% nella modifica dei file di configurazione di Home Assistant. Per fare ciò avete 2 opzioni da poter seguire:

 

 

  • Modificare i file direttamente via ssh
  • Modificare i file in locale e poi caricarli nella raspberry

Per iniziare vi consiglio di seguire il primo modo. Come editor di testo vi consiglio di utilizzare “vim” ma anche “Nano” andrà benissimo. Iniziamo intanto installando l’editor di testo:

sudo apt-get install vim

Come ho spiegato nel mio precedente articolo: Installare Home Assistant. Guida completaHome Assistant si compone principalmente di 2 file:

  • configuration.yaml
  • groups.yaml Questo è stato introdotto in una delle ultime release. In passato era inglobato nel primo file.

Prima di iniziare, accendete il Philips Hue, connettetelo alla rete LAN ed accendete le rispettive lampadine. Se avete installato Home Assistant correttamente, dovreste trovarvi nella schermata principale una scheda come questa:

Per facilitarci le cose, Home Assistant è pre-configurato con un’impostazione chiamata “discovery”.

In parole povere, per i componenti che sono supportati, la configurazione è plug-and-play. Dato che il Philips Hue è un componente supportato, ci rende la vita più facile.

Cliccate su “Configure” e seguite i passi mostrati come da foto. Cliccate nuovamente nel pulsante a video ed in 2 click avrete configurato il vostro Philips Hue con Home Assistant!

Per verificare che le luci del Philips Hue siano state configurate correttamente, sulla sinistra cliccate sul simbolo “< >“. Le lampadine della Philips dovrebbero essere elencate tra le “Entity“. Dovreste avere una configurazione simile a questa:

Entity

I nomi delle 2 lampade fanno fede ai nomi che gli avete dato tramite l’applicazione su Smartphone.

Configurazione File “configuration.yaml”

Ora che abbiamo correttamente configurato le lampadine con Home Assistant possiamo migliorare un pò la configurazione aggiungendo anche il controllo della luminosità.

Aprite il file “configuration.yaml” con un editor di testo a vostro piacimento ed aggiungete alla fine questo pezzo di codice.

input_slider:      
  hue_light_2_brightness:
    name: Brightness
    initial: 1
    min: 1
    max: 255
    step: 1

  hue_light_3_brightness:
    name: Brightness
    initial: 1
    min: 1
    max: 255
    step: 1

 

Una peculiarità del linguaggio Yaml è la sensibilità agli spazi. Ogni riga deve avere un numero di spazi maggiore alla riga precedente ed ogni “tema” deve stare allineato correttamente.

Se notate, la seconda riga ha 2 spazi in più della prima e dalla terza in poi ne hanno tutte 4. Questo perchè dalla terza in giù fanno parte tutte dello stesso “tema”.

Questo pezzo di codice andrà a configurare 2 input_sliders i quali serviranno a modificare la luminosità delle vostre lampade. Questi 2 sliders da soli non funzionano. Hanno bisogno di essere “chiamati” da un’automazione.

Incollate questo pezzo di codice sotto a quello precedente:

automation:
  - alias: Hue Light 2 Brightness
    trigger:
      platform: state
      entity_id: input_slider.hue_light_2_brightness
    action:
      service: light.turn_on
      entity_id: light.hue_white_lamp_2
      data_template:
        brightness: '{{ trigger.to_state.state | int }}'
  - alias: Hue Light 3 Brightness
    trigger:
      platform: state
      entity_id: input_slider.hue_light_3_brightness
    action:
      service: light.turn_on
      entity_id: light.hue_white_lamp_3
      data_template:
        brightness: '{{ trigger.to_state.state | int }}'

 

Questo ultimo pezzo di codice non fa altro che integrarsi con i 2 sliders di prima e, al variare dello slider, setterà la luminosità della lampada.

Configurazione File “groups.yaml”

In passato la configurazione di questo file era contenuta nel configuration.yaml. Per facilitare la gestione grafica di Home Assistant e modificare anche le impostazioni da interfaccia web, hanno creato un file separato.

Per come sono abituato io, preferisco continuare da riga di comando ma nessuno vi vieta di modificare la visualizzazione dei gruppi tramite interfaccia web.

Questo è il codice che dovrete inserire nel file groups.yaml:

hue_lights:
  name: Hue Lights
  entities:
  - light.hue_white_lamp_3
  - input_slider.hue_light_3_brightness
  - light.hue_white_lamp_2
  - input_slider.hue_light_2_brightness

Questo pezzo di codice andrà a creare un gruppo chiamato “Hue Lights” con 4 componenti all’interno: le 2 lampade e i 2 sliders.

Ok. Abbiamo quasi finito. Ora sfruttiamo la nuova funzionalità di Home Assistant per testare se il nostro file di configurazione è stato scritto correttamente.

Dal menù a sinistra della pagina principale di Home Assistant, clicchiamo su “Configuration” e poi a destra su “CHECK CONFIG“. Se avete seguito tutti i passi correttamente otterrete un feedback come questo:

Ottimo. Ora sarà sufficiente riavviare Home Assistant per vedere i risultati. Basta cliccare su “RESTART” in basso alla pagina in cui siete.

Se dovessero esserci errori, questa maschera vi indicherà la riga del file che ha problemi. Nel 90% dei casi, trattandosi di un linguaggio di programmazione semplice, saranno solo degli spazi mancanti o codice da indentare meglio.

Dopo un minuto circa (dipende dalla velocità della vostra scheda MicroSD. A tal proposito vi rimando qui: Recensione Raspberry Pi 3 Modello B), Home Assistant sarà di nuovo operativo.

Una volta riavviato Home Assistant, nella schermata principale dovrebbe essere comparso un gruppo come questo:


Se la vostra lampada non si accende o non riuscite a variarne la luminosità verificate che l’interruttore a muro sia “attivo”.

Con questo tipo di configurazione, d’ora in avanti dovrete sempre tenere attivo l’interruttore a muro e gestire l’accensione/spegnimento da Home Assistant.

Come vi dicevo prima, questo gruppo può essere modificato nella pagina di “Configuration“. Una volta riavviato Home Assistant dovrebbe comparirvi il gruppo come da foto:

Con questa funzione potete scegliere quale gruppo modificare, se farlo diventare una vista o decidere l’ordine degli elementi. (Continuo a preferire la linea di comando!).

Ad ogni modifica che fate su Home Assistant, vi consiglio di riavviarlo con l’apposito bottone nell’interfaccia web. Se volete, potete farlo anche da linea di comando utilizzando:

sudo service home-assistant restart

Con questo setup, siete in grado di controllare le vostre luci in modo intelligente. Potete evolvere questa configurazione per accendere o spegnere le luci ad un determinato orario o per esempio diminuire la luminosità quando state guardando un film. (Io le ho configurate così ad esempio)

 

Sezione Bonus

Non mi accontento mai. Voglio sempre spingere al limite le potenzialità che la tecnologia ci offre. La domotica con raspberry non ha limiti.

  • Vi ho mostrato come comandare le luci di casa attraverso un’unica piattaforma, ora vi mostrerò come comandarle utilizzando il giroscopio del vostro telefono.

Si, avete capito bene. E’ possibile integrare Home Assistant anche con normali gesti che compiamo con il nostro telefono. Uno dei quali per esempio è lo “shaking“.

  • Utilizzando l’applicazione Tasker, vi mostrerò come fare. Questa applicazione è a pagamento, ma è una di quelle che merita di essere comprata.

  • Per prima cosa, una volta aperta l’applicazione, cliccate in basso nel simbolo “+” e poi su “event”. In questo modo andremo a creare un nuovo profilo.

  • Selezioniamo quindi un tipo di evento che vogliamo azionare. Nel nostro caso sceglieremo il sensore di movimento, quindi cliccate su “Sensor

  • A noi interessa gestire i movimenti del telefono. Clicchiamo quindi su “Shake

Diamo l’ok al warning che ci viene proposto. Nella schermata successiva, potrete modificare il tipo di movimento, “destra-sinistra”, nel nostro caso e la sensibilità del movimento. Per ora vi consiglio di lasciare tutto a default, potremo modificare questi valori anche in un secondo momento.

  • Clicchiamo ora in alto a sinistra nella freccia per tornare indietro.
  • Ci verrà proposto di creare un nuovo “Task“. Premiamo quindi su “New Task

  • Diamogli il nome che preferiamo e proseguiamo. Ora cliccate nuovamente nel simbolo “+” in basso.

Ora dovremo scegliere il tipo di componente che andremo ad azionare con il quale attiveremo Home Assistant. Nel nostro caso useremo l’HTTP Post.

Trascrivete i campi come di seguito:

  • Server:Port: http://IP_HOME_ASSISTANT:8123/api/services/light/turn_on

 

Dato che Home Assistant supporta i comandi di tipo Json, vi consiglio di iniziare a familiarizzare con questa sintassi. la desinenza “turn_on” alla fine del link, chiama il servizio di Home Assistant che accende le luci. turn_off per esempio, le spegne.

Se avete configurato una password per Home assistant, aggiungete alla fine del link questo:

?api_password=VOSTRA_PASSWORD

La porta 8123 è impostata di default. Se l’avete cambiata (complimenti per la dimestichezza nell’uso del software in questo caso!), sostituitela

  • Data/File: {“entity_id”:”light.NOME_LAMPADA“}

Il NOME_LAMPADA lo trovate qui

Se volete regolare anche la luminosità basta modificare il campo precedente con:

{“entity_id”:”light.NOME_LAMPADA“,”brightness”:XXX}

XXX è un valore compreso tra 1 e 255. E’ la quantità di luminosità che farà la vostra lampada.

  • Content Type: application/json

Finito. Premete indietro in alto a sinistra fino a tornare nella schermata principale. Ora premete i 3 puntini in alto a destra e poi “Exit” per uscire.

Dovete necessariamente scegliere “Save First” altrimenti non memorizza le impostazioni. Prima di uscire controllare di avere il vostro profilo settato su “ON”. Lo potete vedere a destra del nome.

Se volete potete anche rinominare il profilo tenendo premuto il nome assegnato.

Se tutto è andato per il verso giusto, dovreste riuscire ad accedere la vostra lampada agitando il telefono a destra e sinistra!

(Dovete prima spegnerla sempre tramite Home Assistant perchè funzioni).

Cosa si prova ad accendere le luci di casa con un gesto della mano?

Cosa fare adesso?

  • Potete per esempio configurare Tasker in modo che spenga le luci con un gesto e le accenda con un altro!
  • Potete configurare Tasker in modo che con un shake, le vostre luci calino di intensità.
  • Chiamate subito un vostro amico e mostrategli cosa avete fatto

Cosa ne pensate di Home Assistant? Fatemi sapere nei commenti come sono andati i vostri esperimenti!

Hai già dato un occhio all’indice di articoli inerenti la Domotica presenti nel mio sito? Facci un salto: Indice articoli di Domotica

 

4 commenti

  1. ciao nik, è possibile creare uno script, quindi col tasto “active”, una scena?
    Cioè, io nel hub di philips ho la scena “relax”, come faccio ad attivarla tramite home assistant?
    posseggo hass.io. grazie

  2. Ciao Cristian,

    Personalmente ti consiglio di gestire la scena direttamente da Homeassistant. Non configurarla nell’app della philips, ma dentro Homeassistant. L’app tiella solo per aggiungere le nuove lampade.

    Ciao

    Nik

  3. Ciao, ma con questo tipo di configurazione, l’hub hue comunica qualcosa al cloud philips? O e’ possibile fare tutto localmente (quindi anche senza connessione internet, ma solo wifi locale)?
    Grazie

  4. Ciao Valerio,

    Hai fatto una domanda molto interessante…
    A casa ho un Firewall con equipaggiato PfSense. Siccome non ero sicuro se la connessione dell’HUB fosse solo locale, ho iniziato a controllarne il traffico. Ti confermo che l’HUB comunica qualcosa al cloud Philips. Da un’analisi più approfondita sembra solo che verifichi la disponibilità di aggiornamenti per poi proporteli tramite APP, ma non essendo sicuro al 100% ho bloccato il dispositivo in modo che navighi solo localmente.
    Ti confermo che l’HUB, benchè la navigazione sia bloccata, funziona perfettamente. Una volta ogni tanto lo sblocco e verifico gli aggiornamenti tramite l’applicazione.

    Spero di averti risposto in maniera esaustiva

    A presto

    Nik

Lascia un commento