community italiana di domotica personale
 
Scene e notifiche visuali basate sul clima e altro, con Nanoleaf e Home Assistant (v2)

Scene e notifiche visuali basate sul clima e altro, con Nanoleaf e Home Assistant (v2)

SCOPI DEL PROGETTO:
  • Automatizzare il comportamento dei pannelli luminosi Nanoleaf in base al clima esterno (o altre condizioni specifiche)
  • Livello di difficoltà: medio/basso
  • Costo: n/a
CONCETTI AFFRONTATI:
COMPONENTI SOFTWARE UTILIZZATE:
  • Home Assistant configurato e funzionante
  • Componente Home Assistant “Nanoleaf
  • Una piattaforma Home Assistant per l’integrazione delle condizioni meteo (in questo progetto, “Met.no“, ma va bene una qualunque che fornisca queste informazioni)
DISPOSITIVI FISICI UTILIZZATI:
PROGETTO INDICATO a UTENTI CON ISTALLAZIONE:
Ambienti Home Assistant HassOS-Supervised-Core
NOTE E DISCLAIMER
  • qualsiasi eventuale modifica agli impianti domestici dev'essere progettata e realizzata SOLO da personale qualificato;
  • qualsiasi modifica non prevista attuata in proprio è a propria responsabilità personale nonché a proprio rischio e pericolo (i contenuti della presenta pagina hanno infatti puro scopo didattico) e fa decadere garanzia, omologazioni e certificazioni di qualità; dei dispositivi interessati;
  • tutte le tecniche descritte si intendono applicate a software e firmware aggiornati alle ultime versioni disponibili;
  • gli articoli di inDomus sono totalmente indipendenti e non sponsorizzati. Se mai questo cambiasse, verrà segnalato chiaramente sulle pagine oggetto di sponsorizzazione;
  • questa pagina è materialmente scritta e manutenuta da più individui: non ci si aspetti né si pretenda un supporto personale. In caso di difficoltà, chiedere supporto alla community sul nostro forum o sulla nostra chat;
  • se hai bisogno di orientarti, c'è la mappa.
Revisione progetto: 1.0

Abstract

I pannelli luminosi componibili Nanoleaf sono ormai noti per essere una soluzione d’arredamento molto apprezzata sia in termini funzionali (ovvero allo scopo di illuminare in modo dinamico) che in termini squisitamente estetici: sono molto ben costruite, versatili, fanno arredamento a sé.

Nanoleaf Triangle - MuroTra le varie funzionalità consentite dai pannelli e dalla loro applicazione di gestione e controllo (disponibile per iOS e Android) c’è quella “colore“, la quale permette di utilizzare schemi iridescenti predefiniti (o personalizzati, realizzati da zero). Queste impostazioni visualizzano delle animazioni di colore anche molto diverse tra loro non solo in termini di interazione di colore, ma anche in termini di velocità, di effetto di transizione e altri parametri.

L’app Nanoleaf presenta di per sé un certo numero di schemi predefiniti, insieme il quale può essere ampliato sia definendo schemi personali sia scaricando nuovi schemi dal database collaborativo degli utenti Nanoleaf di tutto il mondo.

Dopo aver avuto modo di recensire svariati, diversi modelli Nanoleaf, inDomus si è chiesta quali potrebbero essere le funzionalità accessorie date dall’uso combinato di tali pannelli con il noto HUB personale.

La risposta (o almeno, una delle possibili) è il presente progetto, il quale illustrerà come fare in modo di attivare specifici schemi luce/colore Nanoleaf in base alle condizioni meteo (o alle previsioni, perché no) della location in cui si trova installato oppure in base a specifici stati della propria domotica, a mo’ di “pannello di controllo” (la rilevazione di un allarme, lo stato di un sensore e molto altro). Una cosa un po’ più elaborata di questo altro progetto basato solo su LED semplici, insomma.

Qual è il limite?
Come al solito, la fantasia.

Si parte

Logica progetto

L’idea di base è quella di regolare automaticamente il pannello Nanoleaf integrato a Home Assistant (o “i” pannelli, laddove se ne vogliano sincronizzare più d’uno) in funzione di un qualche input. Nello specifico, in primis ragioneremo sul clima: se fuori nevica, vogliamo che il pannello riproduca uno schema che ricordi la neve; se fuori c’è il sole, ci aspettiamo uno schema colore che ricordi un cielo azzurro, o un sole giallo (a gusto proprio, ovviamente).

Innanzitutto ci doteremo quindi di informazioni elementari relative al clima della località in cui sono in funzione Home Assistant e il pannello/i Nanoleaf. A partire da queste informazioni definiremo poi un’automazione la quale all’atto dell’accensione dell’entità “Light” che rappresenta il pannello Nanoleaf provveda ad applicagli l’effetto visivo voluto sfruttando i parametri di servizio caratteristici di questo tipo di entità – la quale rapprensenta, digitalmente, il pannello.

Applicando la medesima logica, suggeriremo anche delle automazioni che, a fronte del presentarsi di una data condizione (eg. superamento di una soglia, o altri stati di determinate entità) accenda il pannello impostando uno specifico effetto visivo.

Assunzioni

Per la realizzazione del presente progetto si assume che:

  • sia stata già effettuata la banale integrazione del pannello Nanoleaf col proprio HUB Home Assistant;
  • il panello Nanoleaf, integrato con Home Assistant, sia rappresentato dall’entità chiamata “light.nanoleaf“;
  • per le condizioni meteo utilizzeremo la piattaforma “Met.no” (per quanto il progetto sia facilmente adattabile ad altre piattaforme meteo), in quanto quella di default maggiormenta adottata nelle installazioni di Home Assistant.

Condizioni meteo attuali

Come anticipato, ciò di cui abbiamo bisogno è una fonte di informazioni relative allo stato attuale delle condizioni meteo della nostra zona.

Com’è noto, l’integrazione “Met.no consente di dotarci delle condizioni meteo – nonché previsionali – a partire dalla posizione della propria abitazione (indicata in configurazione dell’HUB) rappresentate la posizione geografica del nostro ambiente domotico.

Tale integrazione genera un’entità particolarmente utile a questo progetto, quella che appunto riporta quasi in tempo reale le condizioni meteorologiche (nonché le previsioni più prossime). Tale entità è di tipo “Weather” e cambia nome in base alla configurazione dell’integrazione, dal nome della propria abitazione impostata sull’HUB ed altro.

Solitamente inizia con il prefisso “weather.*“: basta cercare nella lista entità di Home Assistant (“Strumenti per gli sviluppatori” > “Stati“) per trovarla facilmente:

Home Assistant - Met.no forecat
un esempio di entità “Weather” basata su Met.no.

Assumeremo, per il presente progetto, che l’entità clima a nostra disposizione si chiami “weather.forecast_home“.

N.b. Il nome contenente la parola “forecast” (previsioni) non deve essere frainteso: l’entità riporta infatti sia le condizioni attuali che le previsioni per le prossime ore.

Le condizioni meteo censite e riportate dall’integrazione Met.no possono essere:

  • sunny (soleggiato)
  • clear-night (notte serena)
  • rainy (piovoso)
  • snowy (nevoso)
  • snowy-rainy (nevischio)
  • windy (ventoso)
  • fog (nebbioso)
  • cloudy (nuvoloso)
  • hail (grandine)
  • lightning (fulminazione)
  • partly-cloud (parzialmente nuvoloso)

Quel che faremo è definire un’entità template che – a partire dalle condizioni di cui sopra – definisca in sé il nome di un profilo “color” presente sull’app Nanoleaf, per poi usarla in fase di definizione dell’automazione che auto-regolerà il pannello Nanoleaf.

Nanoleaf

Prima è quindi necessario recarsi presso l’app mobile Nanoleaf e identificare quali siano gli schemi “coloreda applicare in base alle varie condizioni meteo (come e quando lo vedremo successivamente).

Laddove gli schemi colore presenti non siano adatti, è sufficiente cliccare su “Scopri” in basso a sinistra ed effettuare una ricerca sul database collaborativo Nanoleaf e aggiungere alla nostra lista quelli che più ci interessano e ci aggradano: ce ne sono centinaia, basterà sceglierne uno per ognuno delle condizioni meteo che abbiamo proposto sopra.

Nanoleaf - App - Selezione schema colore
la scelta dello schema colore in uso.

inDomus ha identificato una serie di schemi colore (che riporteremo nell’esempio a seguire) ideali per “mappare” le condizioni meteo esterne. Quel che è importante sapere è che, una volta definito l’elenco degli schema colore, è necessario riportarli in configurazione avendo ben cura di riportarne i nome per come sono scritti sull’app (e quindi salvati sui pannelli), pena il mancato funzionamento dell’automatismo che definiremo.

Nell’immagine sopra, per esempio, uno schema colore si chiama “Clouds” (ideale, va da sé, per un cielo a pecorelle).
Riportando in configurazione il nome:

  • falling whites – non funziona
  • Falling whites – non funziona
  • falling Whites – non funziona
  • Falling Whites – FUNZIONA

Quindi sarà il caso di riportare in configurazione i nomi scritti in modo corretto.

Alcuni schemi interessanti trovati da inDomus:

Condizione meteo Nome schema colore presso l’app Nanoleaf
Soleggiato Sunny
Notte serena Starry Night
Piovoso Rain
Nevoso/Nevischio Snow Day
Ventoso Windy Ocean
Fog *Solid*
Nuvoloso/Parzialmente nuvoloso Cloudy
Hail Rain Shower
Fulminazione Lightning
SCHEMA GENERICO Falling Whites
Vetrina - Offerte del giorno

Definizione sensore

Come detto, definiremo un sensore template al fine di definire automaticamente, al variare delle condizioni, il profilo corretto da applicare al pannello. Questa scelta è volta a concentrale le logiche di scelta del profilo colore su di esso, così da potere utilizzarne l’output in qualunque automazione / script / scena.

Aggiungeremo quindi alla configurazione di Home Assistant un sensore così definito:

template:
  - sensor:
    - name: nanoleaf_weather_based_effect:
      friendly_name: "Effetto luminoso Naoleaf su base clima"
      value_template: >-
        {% if is_state("weather.forecast_home","sunny") %}
        Sunny
        {% elif is_state("weather.forecast_home","clear-night") %}
        Starry Night
        {% elif is_state("weather.forecast_home","rainy") %}
        Rain
        {% elif is_state("weather.forecast_home","snowy") %}
        Snow Day
        {% elif is_state("weather.forecast_home","snowy-rainy") %}
        Snow Day
        {% elif is_state("weather.forecast_home","windy") %}
        Windy Ocean
        {% elif is_state("weather.forecast_home","fog") %}
        *Solid*
        {% elif is_state("weather.forecast_home","cloudy") %}
        Clouds
        {% elif is_state("weather.forecast_home","hail") %}
        Rain Shower
        {% elif is_state("weather.forecast_home","lightning") %}
        Lightning
        {% else %}
        Falling Whites
        {% endif %}

Il sensore che abbiamo definito (chiamato “sensor.nanoleaf_weather_based_effect“) conterrà nel proprio stato una stringa rappresentante il nome di uno dei profili colore precedentemente identificati in base al variare delle condizioni meteo. Questo valore varierà automaticamente al variare dello stato del sensore “weather.home_forecast“.

Va da sé che ovviamente lo schema proposto sia altamente personalizzabile, sia nelle logiche di applicazione dello schema colore sia negli schemi di colore scelti.

Usando le previsioni

Nessuno ci obbliga ad utilizzare necessariamente le condizioni meteo attuali.

La volontà infatti potrebbe essere quella di visualizzare sul pannello non tanto le condizioni attuali quanto le previsioni meteo a 12-24 ore. Bene: per far ciò sarà sufficiente – sempre tramite “weather.forecast_home” – utilizzare le informazioni contenute nell’array presente negli attributi dell’entità.

Tale array contiene le previsioni meteo a +5 ore, suddivise per ore, le quali possono essere estratte tramite la chiamata:

{{ state_attr(“weather.forecast_home”,”forecast”)[X].condition }}

Dove la X è un numero da 0 a 4 indicante la previsione meteo da estrarre (0 è quella a +1h, 4 è quella a è +5h).

N.b. Volendo è possibile anche istruire Met.no in modo da generare un’altra entità dal prefisso _hourly (quindi nel nostro esempio sarebbe weather.forecast_home_hourly) la quale fornisce, sempre in un array contenuto negli attributi, le previsioni orarie fino a +24h. Per farlo, recarsi presso la voce dell’integrazione e aggiungere la configurazione come da procedura guidata.

Rimanendo quindi nel solco dell’implementazione di “Met.no”, vediamo come configurare il sensore template in modo da sfruttare la previsione a +5h:

template:
  - sensor:
    - name: nanoleaf_weather_based_effect:
      friendly_name: "Effetto luminoso Naoleaf su base clima previsionale"
      value_template: >-
        {% if state_attr("weather.forecast_home","forecast")[4].condition == 'sunny' %}
        Sunny
        {% elif state_attr("weather.forecast_home","forecast")[4].condition == 'windy' %}
        Windy
        {% elif state_attr("weather.forecast_home","forecast")[4].condition == 'rainy' %}
        Rain

             ...e così via

        {% else %}
        Falling Whites
        {% endif %}

Automazione

A questo punto è necessario definire l’automazione che provvederà alla gestione automatica nell’applicazione dell’effetto luminoso al pannello.

La cosa più semplice e intuitiva è quella di definirne una la quale, all’accensione del pannello, provveda ad applicare lo schema colore coerente col clima, a partire dal valore dello stato del sensore “sensor.nanoleaf_weather_based_effect” il quale, come spiegato, provvede da sé a valorizzarsi.

L’automazione è dunque così facilmente realizzata:

automation:
- alias: "Impostazione Nanoleaf su base clima"
  trigger:
    - platform: state
      id: "accensione_nanoleaf"
      entity_id: light.nanoleaf
      to: 'on'
    - platform: state
      id: "cambio_meteo"
      entity_id: weather.forecast_home
      to: ~
  condition: []
  action:
      - choose:
          - conditions:
              - condition: trigger
                id: "accensione_nanoleaf" #in caso accenda il pannello
            sequence:
              - service: light.turn_on
                entity_id: light.nanoleaf
                data:
                  effect: '{{ states.sensor.nanoleaf_weather_based_effect.state }}'
          - conditions:
              - condition: trigger
                id: "cambio_meteo" #in caso sia cambiato il meteo
            sequence:
              - condition: state # prima verifico che il pannello sia già acceso, altrimenti mi fermo
                entity_id: light.nanoleaf
                state: "on" 
              - service: light.turn_on
                entity_id: light.nanoleaf
                data:
                  effect: '{{ states.sensor.nanoleaf_weather_based_effect.state }}'

L’innesco (il trigger) dell’automazione è doppio: essa viene infatti attivata o all’accensione del pannello (per aggiornare il suo schema colori in funzione del meteo) oppure al cambio del meteo stesso, stavolta però verificando prima che il pannello sià già acceso (in caso sia spento, lo lascia spento interrompendo l’esecuzione dell’automazione).

La cosa interessante è che l’automazione viene eseguita ogni qual volta il pannello viene acceso non solo da Home Assistant, ma anche dalla sua app o addirittura manualmente. Il perché è semplice: l’integrazione Nanoleaf fa sì che Home Assistant conosca stato e cambio di stato del pannello, quindi qualunque sia il metodo d’accensione, l’automazione viene sempre eseguita.

Uso come mezzo di notifica

Al di là di impostare automaticamente uno schema colore a fronte delle condizioni meteo, un pannello Nanoleaf può essere anche utilizzato come strumento per notificare determinati eventi relativi alla propria domotica personale.

Dato che, come spiegato, è possibile realizzare degli schemi personali propri (a tinta unita, lampeggianti, iridescenti ecc.), è facilmente pensabile di fare in modo che il pannello si accenda e visualizzi il suddetto schema colore a fronte del presentarsi di una data situazione.

Ipotizziamo dunque, a mo’ d’esempio, di aver integrato a Home Assistant dei sensori di allagamento (entità “binary_sensor.water_leak_sensor“), un’elettrovalvola per interrompere l’afflusso d’acqua centrale (entità “switch.water“) e di voler definire un’automazione che

  • interrompa l’afflusso d’acqua;
  • accenda il pannello Nanoleaf sullo schema colore “Allagamento” (ipotizziamo sia rosso, tinta unita).

L’automazione potrebbe essere la seguente:

automation:
- alias: "Allagamento!"
  trigger:
    platform: state
    entity_id: binary_sensor.water_leak_sensor
    from: 'off'
    to: 'on'
  condition: []
  action:
    - service: switch.turn_off
      entity_id: switch.water
    - service: light.turn_on
      entity_id: light.nanoleaf
      data:
        effect: 'Allagamento'

In presenza dell’automazione che imposta il pannello, alla sua accensione, allo schema “colore” relativo al clima (“automation.impostazione_nanoleaf_su_base_clima“), sarà ovviamente necessario disattivarla temporaneamente all’esecuzione della stessa, altrimenti le due automazioni confliggerebbero tra loro.

La risultante automazione quindi sarà:

automation:
- alias: "Allagamento "
  trigger:
    platform: state
    entity_id: binary_sensor.water_leak_sensor
    from: 'off'
    to: 'on'
  condition: []
  action:
    - service: homeassistant.turn_off
      entity_id: automation.impostazione_nanoleaf_su_base_clima
    - service: switch.turn_off
      entity_id: switch.water
    - service: light.turn_on
      entity_id: light.nanoleaf
      data:
        effect: 'Allagamento'
    - delay:
        seconds: 3
    - service: homeassistant.turn_on
      entity_id: automation.impostazione_nanoleaf_su_base_clima

In evidenza le righe aggiunte le quali provvedono a stoppare l’automazione “clima”, attendono tre secondi e poi la riattivano.

⚠️ Se di Home Assistant ne sai poco ma sei interessato a capirne di più, ti suggeriamo di partire da qui.

Questa pagina è redatta, manutenuta e aggiornata dallo staff di inDomus, un gruppo di persone molto diverse tra loro che trovi, per domande e supporto, sul forum e sulla chat del sito. Alcuni link sono taggati in qualità di affiliati Amazon e riceviamo un compenso dagli acquisti idonei, utile al sostenimento del sito, ma le nostre recensioni sono tutte indipendenti e non sponsorizzate. Se ti sei perso, a tua disposizione c'è la mappa.