SCOPI DEL PROGETTO:
CONCETTI AFFRONTATI:
|
COMPONENTI SOFTWARE UTILIZZATE:
COMPONENTI FISICI UTILIZZATI:
|
PROGETTO INDICATO a UTENTI CON ISTALLAZIONE:![]() |
|
NOTE E DISCLAIMER
|
|
Revisione progetto: 1.3 |
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.
⚠️ 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. Se ti sei perso, a tua disposizione c'è la mappa. |