SCOPI DEL PROGETTO:
CONCETTI AFFRONTATI:
|
COMPONENTI SOFTWARE UTILIZZATE:
COMPONENTI FISICI UTILIZZATI:
|
PROGETTO INDICATO a UTENTI CON ISTALLAZIONE: |
|
NOTE E DISCLAIMER
|
|
Revisione progetto: 1.5 |
Abstract
I furti nelle abitazioni: una bruttissima realtà figlia della natura stessa dell’uomo. Specialmente in realtà isolate – ma non solo – le abitazioni sono spesso obiettivo di malintenzionati che attendono l’assenza degli inquilini per agire indisturbati. La domotica basata su Home Assistant può – anche in questi casi – venirci in aiuto.
Non sarebbe fore bello dotarsi di un automatismo che, in nostra assenza, simuli una nostra fittizia presenza? Lo scopo del presente progetto è proprio questo: fare in modo che vari elementi della casa precedentemente integrati (come luci, interruttori, tapparelle elettriche) si attivino e disattivino automaticamente e casualmente (ma con una logica) in modo da “dare l’impressione” che qualcuno sia effettivamente in casa.
Oltre a realizzare questo meccanismo faremo anche in modo che la sua attivazione avvenga in modo automatico quando usciamo di casa e si disattivi quando torniamo.
Assunti
Per la realizzazione di questo progetto si assume che:
- si abbia una buona dimestichezza con Home Assistant e con le sue entità, i suoi script e automazioni e le sue logiche di funzionamento;
- si siano già implementati dei “Device Tracker” al fine innescare automaticamente la simulazione in caso di assenza degli inquilini, i quali siano raggruppati nel gruppo group.famiglia;
- si sia dotati di almeno una luce integrata, in un modo o nell’altro, all’HUB. Preferibile, ovviamente, anche la presenza di tapparelle elettriche, anch’esse debitamente integrate.
Si parte
- Approccio
- La sequenza logica
- Installazione
- Perfezionamento
- Configurazione interfaccia
- Automazione
- Ulteriori personalizzazioni
- Ringraziamenti
Approccio
Il progetto è piuttosto articolato e modulare, in modo da potersi adattare facilmente alle più comuni realtà operative dei propri ambiti domotici gestiti tramite Home Assistant.
Spiegandolo a grandi linee (andremo nel dettaglio a seguire), il progetto dota l’utente di un interruttore virtuale che, quando acceso, avvia automaticamente la programmazione di simulazione, mentre quando spento, ovviamente, provvede a disattivarlo. Va da sé che questo singolo interruttore possa essere semplicemente attivato/disattivato quando si esce e quando si rientra a casa (grazie ai ben noti meccanismi di automazione di questo tipo su Home Assistant).
La prima personalizzazione che l’utente dovrà fare è quella di indicare quali luci e/o tapparelle (già presenti come entità sulla propria configurazione Home Assistant) rendere parte della simulazione durante la propria assenza.
Una volta fissati (una tantum) questi elementi, l’utente potrà – tramite interfaccia – impostare una serie di parametri:
- attivare o disattivare l’inclusione di luci e tapparelle nella simulazione;
- quale modello di simulazione utilizzare:
- “Lavoro” (inteso come fascia oraria di lavoro)
- “Vacanze” (simulazione di giornata intera)
- “Notturno” (solo di notte)
- “Generico”
- se attivare forzatamente la simulazione (indipendentemente dalla presenza o meno degli inquilini);
- se, quando attiva, la simulazione per operare valuti l’effettiva attivazione del sistema d’allarme (il quale ovviamente dev’essere anch’esso integrato a Home Assistant).
- se attivare le varie fasi (che vedremo) sulla base di orari o sulla base della posizione relativa del sole.
La sequenza logica
La simulazione viene avviata ad ogni cambio di fascia oraria (o posizione del sole), sempre.
Se eseguire o meno delle azioni automatiche viene deciso in base a:
- se l’interruttore virtuale “generale” (chiamato con il friendly name “Simulazione Presenza” dell’entità input_boolean.simulations_automations_general_presence) è ON, l’automazione prosegue, altrimenti si ferma;
- se l’automazione prosegue, verifica se l’utente abbia anche specificato di verificare lo stato di attivazione del sistema d’allarme e:
- se deve verificarlo e se l’allarme è attivo, prosegue, altrimenti si ferma;
- se non deve verificare l’allarme, semplicemente prosegue.
In caso abbia appurato di doversi fermare, semplicemente si ferma. Se invece prosegue, ciò che accade è che:
- viene attivato uno script di specifico per il passaggio di fascia oraria dove vengono eseguite un certo numero di azioni (eg: luci + tapparelle);
- vengono aggiornati dei sensori di tipo “random” i quali forniscono valori, tempi e stati casuali;
- una volta eseguito il passaggio viene atteso il tempo casuale calcolato sopra al fine di non far scattare le automazioni sempre nel preciso istante, lasciando intuire che si tratti di qualcosa di programmato;
- atteso questo tempo random vengono eseguite le varie operazioni di simulazione (luci e/o tapparelle) anch’esse tutte separate da un tempo casuale (eg. tapparella 1, 2 minuti, tapparella 2, 10 minuti, tapparella 3), ed in base alla fascia oraria viene deciso se la tapparella debba essere aperta (tra metà e totalmente aperta);
- le tapparelle vengono sollevate di un’apertura casuale (eg. di giorno magari una viene portata al al 70% e un’altra al 90%);
- allo stesso modo le luci: magari si accende quella della cucina e si spegne quella del soggiorno e la volta successiva varia (ovviamente andranno indicate solo luci percepibili dall’esterno dell’abitazione);
- in alcune fasi della giornata, come la sera, le ripetizioni ad esempio non gestiscono le tapparelle, ma solo il passaggio alla fascia oraria poiché generalmente le persone posizionano le tapparelle ad un orario ma poi, vivendo in casa, gestiscono solo le luci;
- in base alla configurazione è possibile indicare in qualsiasi fascia oraria cosa debbano fare gli elementi: se essere casuali, se spegnere le luci, se chiudere le tapparelle o semplicemente lasciare tutto com’è.
Il progetto realizza tutto questo pur mantenendo un’elementare grado di gestione da parte dell’utente.
Installazione
Per installare questo progetto utilizzeremo i package, una funzione di Home Assistant che permette di definire uno o più file di configurazione specifici, raggruppando così tutte le sue configurazioni in un solo posto. Per capire come utilizzare questo componente e installato è utile leggere questa scheda.
Nella cartella scelta per i packages (solitamente “packages” all’interno della cartella che contiene i file di configurazione di Home Assistant), copiare il file chiamato “simulazione_presenza.yaml” contenuto nel repository che potete trovare QUI.
Infine salvare e uscire. Recarsi alla voce di menu “Strumenti per sviluppatori” > “YAML“, cliccare su “Verifica configurazione“: se – e solo se – la configurazione risulta corretta, provvedere a un riavvio di Home Assistant (voce “RIAVVIARE” a fondo pagina).
Dopo un necessario riavvio, (svariate) nuove entità di diversa natura saranno apparse presso Home Assistant.
Perfezionamento
A questo punto aprite il file customize.yaml presente nella cartella di configurazione di Home Assistant e, in fondo, copiate il seguente codice:
# Simulations Automations # Binary Sensors # Presenza # Fuori Casa # Stati binary_sensor.stato_casuale_1_fuori_casa: hidden: false icon: mdi:power-cycle # Sensors # Presenza # Fuori Casa # Valori sensor.valore_casuale_1_fuori_casa: hidden: false icon: mdi:numeric sensor.valore_casuale_2_fuori_casa: hidden: false icon: mdi:numeric sensor.valore_casuale_3_fuori_casa: hidden: false icon: mdi:numeric # Tempi sensor.tempo_casuale_1_fuori_casa: hidden: false icon: mdi:clock-digital sensor.tempo_casuale_2_fuori_casa: hidden: false icon: mdi:clock-digital sensor.tempo_casuale_3_fuori_casa: hidden: false icon: mdi:clock-digital # Scripts # Presenza # Fuori Casa # Generico # Stati script.simulations_automations_away_presence_randomize_states: hidden: false friendly_name: 'Generazione Casuali [Stati]' icon: mdi:dice-1 # Valori script.simulations_automations_away_presence_randomize_values: hidden: false friendly_name: 'Generazione Casuali [Valori]' icon: mdi:dice-2 # Tempi script.simulations_automations_away_presence_randomize_times: hidden: false friendly_name: 'Generazione Casuali [Tempi]' icon: mdi:dice-3 # Elementi script.simulations_automations_away_presence_randomize_covers: hidden: false friendly_name: 'Generazione Casuali [Tapparelle]' icon: mdi:window-shutter-alert script.simulations_automations_away_presence_randomize_lights: hidden: false friendly_name: 'Generazione Casuali [Luci]' icon: mdi:lightbulb-multiple-outline # Giorno script.simulations_automations_away_presence_start_day: hidden: false friendly_name: 'Simulazione Giorno [Inizio]' icon: mdi:weather-sunny script.simulations_automations_away_presence_during_day: hidden: false friendly_name: 'Simulazione Giorno [Ripetizione]' icon: mdi:weather-sunny script.simulations_automations_away_presence_day_covers: hidden: false friendly_name: 'Simulazione Giorno [Tapparelle]' icon: mdi:window-shutter script.simulations_automations_away_presence_day_lights: hidden: false friendly_name: 'Simulazione Giorno [Luci]' icon: mdi:lightbulb-on-outline # Sera script.simulations_automations_away_presence_start_evening: hidden: false friendly_name: 'Simulazione Sera [Inizio]' icon: mdi:weather-sunset script.simulations_automations_away_presence_during_evening: hidden: false friendly_name: 'Simulazione Sera [Ripetizione]' icon: mdi:weather-sunset script.simulations_automations_away_presence_evening_covers: hidden: false friendly_name: 'Simulazione Sera [Tapparelle]' icon: mdi:window-shutter script.simulations_automations_away_presence_evening_lights: hidden: false friendly_name: 'Simulazione Sera [Luci]' icon: mdi:lightbulb-on-outline # Notte script.simulations_automations_away_presence_start_night: hidden: false friendly_name: 'Simulazione Notte [Inizio]' icon: mdi:weather-night script.simulations_automations_away_presence_during_night: hidden: false friendly_name: 'Simulazione Notte [Ripetizione]' icon: mdi:weather-night script.simulations_automations_away_presence_night_covers: hidden: false friendly_name: 'Simulazione Notte [Tapparelle]' icon: mdi:window-shutter script.simulations_automations_away_presence_night_lights: hidden: false friendly_name: 'Simulazione Notte [Luci]' icon: mdi:lightbulb-on-outline
Salvate e uscite, e riavviate per un’ultima volta Home Assistant.
Personalizzazione
Sebbene si sia già installato il package “simulazione_presenza.yaml“, è il momento di modificarlo per personalizzarlo rispetto alle proprie entità (luci/interruttori, tapparelle, allarmi).
LUCI
L’avvio della simulazione per la parte delle luci è gestita da un specifico script creata dall’installazione del package chiamato script.simulations_automations_away_presence_randomize_lights.
Aprendo il file simulazione_presenza.yaml è possibile individuarne facilmente la definizione:
sequence:
- action: script.turn_on
entity_id: script.simulations_automations_away_presence_randomize_times
- delay: '{{ states("sensor.tempo_casuale_2_fuori_casa") | int(default=0) }}'
- action: script.turn_on
entity_id: script.simulations_automations_away_presence_randomize_states
- action: >-
{% if is_state("binary_sensor.stato_casuale_1_fuori_casa", "on") %}
switch.turn_on
{% else %}
switch.turn_off
{% endif %}
entity_id: light.cucina
#.
#.
#.
#eccetera
come si vede, nella definizione questo blocco di quattro elementi (tre azioni e un delay) si ripete più volte cambiando solo l’ultima riga, quella relativa all’entità condizionata dall’accensione o dallo spegnimento (in questo esempio, light.cucina).
Il blocco agisce sequenzialmente in questo modo:
- evoca lo script script.simulations_automations_away_presence_randomize_times, il quale genera valori casuali per i timer;
- attende un tempo casuale (definito sopra) tramite un delay;
- evoca lo script script.simulations_automations_away_presence_randomize_states, il quale genera stati casuali (on o off);
- in base a questi stati casuali, accende o spegne la luce indicata.
Questo blocco va ripetuto così com’è, pari pari, per ogni luce che si vuole aggiungere al contesto della simulazione, semplicemente modificando in ogni blocco il nome dell’entità da includere.
Leggendo bene il codice, si noterà che le entità controllate (e quindi le ripetizioni di blocco) sono quattro: light.cucina, light.soggiorno_1, light.soggiorno_2, light.camera.
N.b. In caso le luci siano mappate su componente “Switch” anziché “Light”, ovviamente il codice andrà adeguato con azioni ed entità appropriati (light.turn_on e light.turn_off). |
TAPPARELLE
Stesso discorso, ma nello script script.simulations_automations_away_presence_randomize_covers.
Il blocco che si ripete è simile a quello delle luci, solo che in questo caso è l’altezza di apertura ad essere gestito:
sequence:
- action: script.turn_on
entity_id: script.simulations_automations_away_presence_randomize_times
- delay: '{{ states("sensor.tempo_casuale_3_fuori_casa") | int(default=0) }}'
- action: script.turn_on
entity_id: script.simulations_automations_away_presence_randomize_values
- action: cover.set_cover_position
entity_id: cover.cucina
data:
position: >-
{% if is_state("sensor.simulations_automations_time_slot_away_presence", "Giorno") %}
{{ states("sensor.valore_casuale_2_fuori_casa") | int(default=0) }}
{% elif is_state("sensor.simulations_automations_time_slot_away_presence", "Sera") %}
{{ states("sensor.valore_casuale_1_fuori_casa") | int(default=0) }}
{% elif is_state("sensor.simulations_automations_time_slot_away_presence", "Notte") %}
{{ states("sensor.valore_casuale_3_fuori_casa") | int(default=0) }}
{% else %}
0
{% endif %}
#.
#.
#.
#eccetera
Nell’esempio l’entità cover.cucina viene regolata in modo casuale in base anche del momento del giorno.
Se si vorranno includere più tapparelle basterà ripetere il blocco cambiando il nome dell’entità controllata. Ognuna si aprirà in modo diverso e casuale, garantendo una”credibilità” all’automazione.
Leggendo bene il codice, si noterà che le entità controllate (e quindi le ripetizioni di blocco) sono due: cover.cucina, e cover.soggiorno.
ALLARME
Se si possiede un allarme integrato con Home Assistant, allora è possibile utilizzarlo nella simulazione come parametro per valutare se eseguirla o meno.
Dentro la definizione del “Binary Sensor” di nome simulations_automations_preset_status_presence, esiste un blocco if che inizia così:
{% if is_state("alarm_control_panel.impianto_sicurezza", "armed_away") %}
abbiamo ipotizzato di avere un allarme integrato dal nome alarm_control_panel.impianto_sicurezza. Sarà quindi sufficiente sostituire questo nome col nome della propria entità allarme per utilizzarlo come “filtro” per l’innesco dell’automazione. Ovviamente tale entità potrebbe essere anche di altro tipo.
Stesso dicasi per il blocco “elif” che segue, il quale considera invece lo stato “disarmato”:
{% elif is_state("alarm_control_panel.impianto_sicurezza", "disarmed") %}
Terminate le modifiche, aggiornare il file “simulazione_presenza.yaml” e riavviare Home Assistant.
Configurazione interfaccia
Dopo aver creato tutte le entità grazie all’inclusione del package di cui sopra, è ora il momento di di rappresentare le entità che ci servono per configurare e gestire la simulazione automatica presso l’interfaccia Dashboards.
Per farla proponiamo due strade:
- realizzare un pannello ad hoc (consigliato)
- limitarsi ad aggiungere tre “manual card” all’interfaccia.
Se si vuole dedicare un pannello (scelta consigliata) è sufficiente aprire in modalità YAML l’interfaccia Dashboards (cliccare sui tre puntini in alto a destra, “Configurare interfaccia utente“, poi nuovamente i tre puntini e poi “Editor di Configurazione testuale“.
Posizionarsi in fondo al testo visualizzato nell’editor e copia-incollare il seguente codice:
- badges: []
cards:
- entities:
- entity: input_boolean.simulations_automations_general_presence
- entity: input_select.simulations_automations_preset_presence
- entity: binary_sensor.simulations_automations_preset_status_presence
show_header_toggle: false
title: Impostazioni Generali
type: entities
- entities:
- entity: input_boolean.simulations_automations_covers_away_presence
- entity: input_boolean.simulations_automations_lights_away_presence
- entity: input_boolean.simulations_automations_repeat_away_presence
- entity: input_boolean.simulations_automations_alarm_away_presence
- entity: input_select.simulations_automations_base_away_presence
- entity: >-
input_datetime.simulations_automations_start_day_end_night_away_presence
- entity: >-
input_datetime.simulations_automations_start_evening_end_day_away_presence
- entity: >-
input_datetime.simulations_automations_start_night_end_evening_away_presence
- entity: sensor.simulations_automations_time_slot_away_presence
- entity: sensor.simulations_automations_last_trigger_away_presence
show_header_toggle: false
title: Impostazioni Fuori Casa
type: entities
- entities:
- entity: sensor.simulations_automations_preset_config_presence
- entity: automation.simulations_automations_presenza_aggiornamento_stato_modello_selezionato
- entity: automation.simulations_automations_presenza_fuori_casa_aggiornamento_fascia_oraria
- entity: automation.simulations_automations_presenza_fuori_casa_reset_stati
- entity: automation.simulations_automations_presenza_fuori_casa_passaggio_a_giorno
- entity: automation.simulations_automations_presenza_fuori_casa_durante_il_giorno
- entity: automation.simulations_automations_presenza_fuori_casa_passaggio_a_sera
- entity: automation.simulations_automations_presenza_fuori_casa_durante_la_sera
- entity: automation.simulations_automations_presenza_fuori_casa_passaggio_a_notte
- entity: automation.simulations_automations_presenza_fuori_casa_durante_la_notte
- entity: switch.simulations_automations_general_presence
- entity: script.simulations_automations_away_presence_randomize_states
- entity: script.simulations_automations_away_presence_randomize_values
- entity: script.simulations_automations_away_presence_randomize_times
- entity: script.simulations_automations_away_presence_randomize_covers
- entity: script.simulations_automations_away_presence_randomize_lights
- entity: input_boolean.simulations_automations_start_day_check_away_presence
- entity: script.simulations_automations_away_presence_start_day
- entity: script.simulations_automations_away_presence_during_day
- entity: script.simulations_automations_away_presence_day_covers
- entity: script.simulations_automations_away_presence_day_lights
- entity: input_boolean.simulations_automations_start_evening_check_away_presence
- entity: script.simulations_automations_away_presence_start_evening
- entity: script.simulations_automations_away_presence_during_evening
- entity: script.simulations_automations_away_presence_evening_covers
- entity: script.simulations_automations_away_presence_evening_lights
- entity: input_boolean.simulations_automations_start_night_check_away_presence
- entity: script.simulations_automations_away_presence_start_night
- entity: script.simulations_automations_away_presence_during_night
- entity: script.simulations_automations_away_presence_night_covers
- entity: script.simulations_automations_away_presence_night_lights
- entity: binary_sensor.stato_casuale_1_fuori_casa
- entity: sensor.valore_casuale_1_fuori_casa
- entity: sensor.valore_casuale_2_fuori_casa
- entity: sensor.valore_casuale_3_fuori_casa
- entity: sensor.tempo_casuale_1_fuori_casa
- entity: sensor.tempo_casuale_2_fuori_casa
- entity: sensor.tempo_casuale_3_fuori_casa
- entity: input_text.simulations_automations_last_trigger_time_away_presence
- entity: input_text.simulations_automations_last_trigger_date_away_presence
- entity: input_text.simulations_automations_last_trigger_time_slot_away_presence
- entity: input_text.simulations_automations_last_trigger_type_away_presence
show_header_toggle: false
title: Cruscotto
type: entities
icon: 'mdi:human-handsdown'
path: simulations_automations
title: Simulazioni
Uscire salvando: apparirà in alto un nuovo pannello contenente tre “card” relative alla simulazione di presenza.
In alternativa al pannello è possibile creare manualmente tre “manual card” vergini aggiungendovi poi questi tre, rispettivi blocchi di codice:
CARD “IMPOSTAZIONI GENERALI”
entities:
- entity: input_boolean.simulations_automations_general_presence
- entity: input_select.simulations_automations_preset_presence
- entity: binary_sensor.simulations_automations_preset_status_presence
show_header_toggle: false
title: Impostazioni Generali
type: entities
CARD “IMPOSTAZIONI FUORI CASA”
entities:
- entity: input_boolean.simulations_automations_covers_away_presence
- entity: input_boolean.simulations_automations_lights_away_presence
- entity: input_boolean.simulations_automations_repeat_away_presence
- entity: input_boolean.simulations_automations_alarm_away_presence
- entity: input_select.simulations_automations_base_away_presence
- entity: input_datetime.simulations_automations_start_day_end_night_away_presence
- entity: input_datetime.simulations_automations_start_evening_end_day_away_presence
- entity: input_datetime.simulations_automations_start_night_end_evening_away_presence
- entity: sensor.simulations_automations_time_slot_away_presence
- entity: sensor.simulations_automations_last_trigger_away_presence
show_header_toggle: false
title: Impostazioni Fuori Casa
type: entities
CARD “CRUSCOTTO”
entities:
- entity: sensor.simulations_automations_preset_config_presence
- entity: automation.simulations_automations_presenza_aggiornamento_stato_modello_selezionato
- entity: automation.simulations_automations_presenza_fuori_casa_aggiornamento_fascia_oraria
- entity: automation.simulations_automations_presenza_fuori_casa_reset_stati
- entity: automation.simulations_automations_presenza_fuori_casa_passaggio_a_giorno
- entity: automation.simulations_automations_presenza_fuori_casa_durante_il_giorno
- entity: automation.simulations_automations_presenza_fuori_casa_passaggio_a_sera
- entity: automation.simulations_automations_presenza_fuori_casa_durante_la_sera
- entity: automation.simulations_automations_presenza_fuori_casa_passaggio_a_notte
- entity: automation.simulations_automations_presenza_fuori_casa_durante_la_notte
- entity: switch.simulations_automations_general_presence
- entity: script.simulations_automations_away_presence_randomize_states
- entity: script.simulations_automations_away_presence_randomize_values
- entity: script.simulations_automations_away_presence_randomize_times
- entity: script.simulations_automations_away_presence_randomize_covers
- entity: script.simulations_automations_away_presence_randomize_lights
- entity: input_boolean.simulations_automations_start_day_check_away_presence
- entity: script.simulations_automations_away_presence_start_day
- entity: script.simulations_automations_away_presence_during_day
- entity: script.simulations_automations_away_presence_day_covers
- entity: script.simulations_automations_away_presence_day_lights
- entity: input_boolean.simulations_automations_start_evening_check_away_presence
- entity: script.simulations_automations_away_presence_start_evening
- entity: script.simulations_automations_away_presence_during_evening
- entity: script.simulations_automations_away_presence_evening_covers
- entity: script.simulations_automations_away_presence_evening_lights
- entity: input_boolean.simulations_automations_start_night_check_away_presence
- entity: script.simulations_automations_away_presence_start_night
- entity: script.simulations_automations_away_presence_during_night
- entity: script.simulations_automations_away_presence_night_covers
- entity: script.simulations_automations_away_presence_night_lights
- entity: binary_sensor.stato_casuale_1_fuori_casa
- entity: sensor.valore_casuale_1_fuori_casa
- entity: sensor.valore_casuale_2_fuori_casa
- entity: sensor.valore_casuale_3_fuori_casa
- entity: sensor.tempo_casuale_1_fuori_casa
- entity: sensor.tempo_casuale_2_fuori_casa
- entity: sensor.tempo_casuale_3_fuori_casa
- entity: input_text.simulations_automations_last_trigger_time_away_presence
- entity: input_text.simulations_automations_last_trigger_date_away_presence
- entity: input_text.simulations_automations_last_trigger_time_slot_away_presence
- entity: input_text.simulations_automations_last_trigger_type_away_presence
show_header_toggle: false
title: Cruscotto
type: entities
Dopo l’avvenuta configurazione i tre pannelli appariranno sull’interfaccia.
Spiegazione strumenti
Vediamo nel dettaglio a cosa servano gli strumenti apparsi sull’interfaccia.
IMPOSTAZIONI GENERALI
- Simulazione presenza: serve ad attivare la simulazione (la quale si innesca al successivo cambio d’ora/stato solare);
- Modello di simulazione: serve a scegliere il modello da applicare (spiegato in fondo);
- Stato modello: se l’automazione sia innescata o meno.
IMPOSTAZIONI FUORI CASA
- Tapparelle casuali: se le tapparelle indicate in configurazione siano coinvolte o meno dalla simulazione;
- Luci casuali: se le luci indicate in configurazioni siano coinvolte o meno dalla simulazione;
- Ripetizioni casuali: se l’accensione/spegnimento o il sollevamento/abbassamento debbano essere ripetute casualmente o meno.*
- Valutazione antifurto: se valutare lo stato dell’entità antifurto (se presente) o meno;
- Base elementi casuali: se basarsi, per l’innesco ciclico su fasce orarie o sul sole;
- Inizio*/Fine*: fasce orarie;
- Fascia Oraria: fascia oraria in corso;
- Ultima Simulazione: quando è stata l’ultima azione eseguita.
*Luci e tapparelle sono gestite una volta ogni cambio di fascia oraria. Le ripetizioni, se attive, variano come segue: di giorno sono ogni 2 ore, di sera ogni 10 minuti (la sera generalmente dura poco), di notte ogni 3 ore. Le ripetizioni serali escludono le tapparelle.
CRUSCOTTO
Si tratta di un pannello che presenta tutte le entità “di servizio” a supporto dell’automatismo (a fini di consultazione libera, analisi, innesco manuale).
Il primo indicatore in elenco su questo pannello, “Configurazione modello“, riporta quattro stati:
-
1 – Non Attivo = non fa nulla
-
2 – Spegnimento = esegue totale spegnimento delle luci indicate (spiegato in fondo)
-
3 – Chiusura = esegue totale chiusura delle tapparelle indicate (spiegato in fondo)
-
4 – Casuale = genera valori casuali in base alla fascia oraria.
Automazione
A questo punto per attivare la simulazione (la quale comunque parte solo in base al rispetto dei vari, restanti parametri, come per esempio l’eventuale fascia oraria, l’eventuale stato dell’antifurto e quant’altro) è sufficiente impostare input_boolean.simulations_automations_general_presence a ON (manualmente o tramite automazione).
Scriviamo due automazioni che provvedano all’abilitazione o alla disabilitazione in base all’uscita o il ritorno a casa:
automation: - alias: "AWAY HOME" trigger: platform: state entity_id: group.famiglia from: 'home' condition: [] action: - action: input_boolean.turn_on entity_id: input_boolean.simulations_automations_general_presence - alias: "BACK HOME" trigger: platform: state entity_id: group.famiglia to: 'home' condition: [] action: - action: input_boolean.turn_off entity_id: input_boolean.simulations_automations_general_presence
Ovviamente si potrà personalizzare l’automazione (o le automazioni) come meglio si crede. Ciò che conta, essenzialmente, è agire su input_boolean.simulations_automations_general_presence.
Ulteriori personalizzazioni
Il package, come si sarà notato, è abbastanza strutturato e complesso. Sono vari i punti dove si può metter mano per cambiarne il comportamento.
MODELLO SIMULAZIONE
Come abbiamo visto da interfaccia è possibile scegliere quale modello utilizzare tramite input_select.simulations_automations_preset_presence:
Tale variazione ha effetto sul binary_sensor.simulations_automations_preset_status_presence, il quale, in base a com’è scritto, rende operativa (o meno) la simulazione in base alle proprie esigenze.
Ora, l’attuale codice proposto non causa differenze di comportamento dell’automazione: lascia infatti all’utente la possibilità di personalizzare ogni singolo sotto-blocco (relativo alle condizioni “Lavoro“, “Vacanza“, “Notturno” e “Generico” come meglio crede.
Il package, installato come proposto, permette di impostare binary_sensor.simulations_automations_preset_status_presence, a un valore qualsiasi e giocare con input_boolean.simulations_automations_general_presence per decidere quando rendere l’automazione operativa (come fatto nell’automazione qui sopra).
Un metodo più elegante sarebbe quello di lasciare a automazione input_boolean.simulations_automations_general_presence sempre acceso e far sì che la simulazione si comporti in base alla selezione del modello di simulazione scelto con input_select.simulations_automations_preset_presence, la cui logica cablata in binary_sensor.simulations_automations_preset_status_presence agisca per noi in modo trasparente e totalmente automatico.
SPEGNIMENTI/CHIUSURE COMPLETE
Esistono due script, in calce al package, chiamati script.scenario_all_covers_off e scriptscenario_all_lights_off. Il primo viene evocato dalla simulazione quando c’è necessità di abbassare tutte le cover, mentre il secondo spegne tutte le luci:
scenario_all_covers_off:
sequence:
- action: cover.set_cover_position
entity_id: all
data:
position: 0
scenario_all_lights_off:
sequence:
- action: light.turn_off
entity_id: all
Questi due script provvedono ad abbassare tutte le tapparelle e a spegnere tutte le luci presenti su Home Assistant, non solo quelle precedentemente indicate nella configurazione del package. Pertanto, in caso tale comportamento non sia adeguato alle aspettative, i due script andranno variati indicando, al posto di “all“, le entità che si vorranno controllare.
Esempio:
scenario_all_lights_off: sequence: - action: light.turn_off entity_id: light.cucina, light.camera
Ringraziamenti
Si ringrazia sentitamente l’autore del progetto, Sagitt.
⚠️ 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. |