Luci a luminosità crescente con la domotica Home Assistant

3 minuti di lettura
SCOPI DEL PROGETTO:
  • Definire un meccanismo che innalzi progressivamente il livello di luminosità di una (o più) entità luce sulla domotica Home Assistant
  • Livello di difficoltà: basso
  • Costo: basso
CONCETTI AFFRONTATI:
  • Configurazione software
COMPONENTI SOFTWARE UTILIZZATE:
COMPONENTI FISICI UTILIZZATI:
  • Il computer sul quale è in esecuzione Home Assistant
  • Un qualsiasi punto luce precedentemente integrato con Home Assistant (dotato di regolazione di intensità luminosa)
PROGETTO MAGGIORMENTE INDICATO PER:

Tutti gli ambienti

Note e disclaimer
  • qualsiasi eventuale modifica agli impianti domestici dev'essere progettata ed realizzata SOLO da personale qualificato;
  • qualsiasi modifica attuata in proprio è a propria responsabilità personale nonché a proprio rischio e pericolo (i contenuti della presenta pagina hanno puro scopo didattico);
  • qualsiasi modifica attuata in proprio a un dispositivo ne fa decadere garanzia, omologazioni e certificazioni di qualità.
Revisione progetto: 1.2

alba

Abstract

L’applicazione di questo progetto è dedicata a chi ami un “risveglio morbido” anche per mano dell’intensità luminosa della stanza in cui riposa. Ovviamente non è il solo campo di applicazione: una luce crescente (o decrescente, personalizzando il progetto) – specialmente con una velocità più o meno veloce, a seconda – può sempre tornare utile.

Partendo dall’assunto di avere a disposizione un punto luce integrato in un’entità di tipo “Light” che supporti la regolazione di intensità (di qualsiasi tipo, dai LED colorati regolabili a più elementari dimmer, alle lampadine Philips HUE eccetera), definiremo un servizio basato su un semplice script Python il quale, sulla base dei parametri:

  • livello di partenza di percentuale luminosa (da 1% a salire);
  • livello di arrivo di percentuale luminosa (100% max);
  • di quanto incrementare la percentuale ad ogni scatto;
  • ogni quanti secondi incrementare la percentuale dello scatto indicato.

quando evocato inneschi questa effetto di luminosità crescente.

Il progetto consente, rispetto al metodo “transition” previsto per alcune integrazioni della componente “Light”, di definire di quanta percentuale di intensità luminosa incrementare ad ogni scatto.

Assunti

Come detto, si assume che in configurazione Home Assistant esista già l’integrazione di una qualsiasi luce integrabile con l’HUB. Assumeremo che tale entità si chiami light.led_camera la quale sia, ovviamente, regolabile nell’intensità luminosa.

Assumeremo inoltre che il componente “Python Scripts” sia già già attivo su Home Assistant (vedi scheda per sapere come eventualmente attivarlo).

Si parte

Script

Innanzitutto andremo ad installare lo script nel percorso dedicato a questi elementi, ovvero /python_scripts/ all’interno della cartella contenente la configurazione di Home Assistant.

Creiamo dunque un file chiamato fade_in_light.py e salviamoci dentro il seguente codice:

entity_id  = data.get('entity_id')
sleep_delay = int(data.get('delay_in_sec'))
start_level_pct = int(data.get('start_level_pct'))
end_level_pct = int(data.get('end_level_pct'))
step_pct  = int(data.get('step_in_level_pct'))

start_level = int(255*start_level_pct/100)
end_level = int(255*end_level_pct/100)
step = int(255*step_pct/100)

new_level = start_level
while new_level < end_level : states = hass.states.get(entity_id) current_level = states.attributes.get('brightness') or 0 if (current_level > new_level) : 
		logger.info('Exiting Fade In')
		break
	else :
		logger.info('Setting brightness of ' + str(entity_id) + ' from ' + str(current_level) + ' to ' + str(new_level))
		data = { "entity_id" : entity_id, "brightness" : new_level }
		hass.services.call('light', 'turn_on', data)
		new_level = new_level + step
		time.sleep(sleep_delay)

Una volta copiato il testo e salvato il file, riavviare Home Assistant.

All’avvenuto riavvio nella lista dei servizi (“Strumenti per gli sviluppatori” / “Servizi”) dovrebbe essere apparso un nuovo servizio, ovvero “python_scripts.fade_in_light“.

Questo servizio accetterà (obbligatori) cinque parametri:

  • entitiy_id, ovvero l’entità “Light” da controllare;
  • delay_in_sec, ovvero il livello di partenza di percentuale luminosa (da 1% a salire);
  • start_level_pct, ovvero il livello di arrivo di percentuale luminosa (100% max);
  • end_level_pct, ovvero “di quanto” incrementare la percentuale ad ogni scatto;
  • step_in_level_pct, ovvero ogni quanti secondi incrementare la percentuale dello scatto indicato.

Automazione

Ora non manca che evocare il servizio con un’automazione (ma potrebbe anche essere uno script, o altro).

Scriviamone per esempio una che si inneschi all’alba:

automation:
  - alias: "Luce crescente"
    trigger:
      - platform: state
        entity_id: sun.sun
        to: "above_horizon"
    condition:
      - condition: state
        entity_id: group.famiglia
        state: 'home'
    action:
      - service: python_script.fade_in_light
        data:
          entity_id: light.led_camera
          delay_in_sec: 10
          start_level_pct: 1
          end_level_pct: 100
          step_in_level_pct: 1

L’automazione derivante (“automation.luce_crescente“) si innesca quando il sensore sun.sun (uno dei sensori di default su Home Assistant) rileva l’affacciarsi del sole all’orizzonte (“above_horizon“) ma solo se la famiglia è in casa (usando il gruppo “group.famiglia“).

L’azione è quella di evocare lo script, indicandogli di partire dall’1% di luminosità per salire fino al 100% con passi d’incremento dell’1%, una volta ogni dieci secondi. In pratica, la luce si accenderà da 0 al 100% in circa un quarto d’ora.

Tali tempistiche, ovviamente, vanno regolate in base alle proprie aspettative ed esigenze.


Un’altro trigger per la nostra automazione potrebbe essere quello relativo all’effettivo stato di addormentamento di chi sta nel letto, magari implementando un sensore di vibrazione o altre tecniche.

Il limite, come sempre, è la fantasia.


Nanoleaf Canvas


Home Assistant Official Logo ATTENZIONE: ricorda che sul nostro community FORUM c'è una sezione ad hoc dedica a Home Assistant, per qualsiasi dubbio, domanda, informazione nel merito specifico di queste componenti.


Telegram News Channel