SCOPI DEL PROGETTO:
CONCETTI AFFRONTATI:
|
PREREQUISITI:
COMPONENTI SOFTWARE UTILIZZATE:DISPOSITIVI FISICI UTILIZZATI:
|
GUIDA INDICATA A UTENTI CON ISTALLAZIONE:![]() |
|
NOTE E DISCLAIMER
|
|
Revisione progetto: 1.1 |
Abstract
Il titolo di questo piccolo progetto potrebbe risultare disorientante. In che senso “…modalità non disturbare? Home Assistant non prevede nessuna modalità di questo tipo!”
Corretto.
Il concetto di DND (do not disturb, in inglese “non disturbare”) è qualcosa con quale abbiamo familiarizzato, negli ultimi anni, piuttosto sugli smartphone e sui computer. Tale modalità permette per l’appunto di non essere disturbati da notifiche, da chiamate inopportune o altro: tale modalità viene impostata manualmente dall’utente o automaticamente (previa programmazione) quando non si vuol essere disturbati.
Durante gli anni di pandemia molti si sono abituati a lavorare in smart working: il lavoro domestico si è fuso con la realtà della propria domotica che, per molti, ha agevolato l’esperienza di lavorare in un ambiente casalingo. In alcuni momenti la presenza della domotica può essere però risultata persino fastidiosa: nel bel mezzo di una riunione via Zoom, sentire magari Amazon Alexa o Google Assistant pronunciare “la lavatrice ha terminato il ciclo di lavaggio” può risultare imbarazzante, per sé e per chi ci ascolta.
Si tratta di un semplice esempio tra i tanti di come possa essere utile “far conoscere” il proprio stato di DND alla propria domotica, così da assumere determinati comportamenti (o non farlo) in funzione di tale stato.
Assunti
Si assume che Home Assistant ovviamente sia già operativo. Inoltre, si assume che a tale istanza sia già collegata una o più applicazioni Home Assistant Companion da altrettanti smartphone/tablet.
Si parte
- Questione di sensori
- Su Android
- Su iOS
- Come usare i sensori
- Trigger
- Condition
- Altro
Questione di sensori
Com’è noto, l’app per smartphone/tablet Home Assistant Companion è disponibile da molto tempo – ed evolve ciclicamente assieme all’HUB – per gli ecosistemi Google Android e Apple iOS.
Tale app è particolarmente utile per gestire il proprio HUB in modo immediato e pratico, oltre a dotare l’utente di tracker GPS utili per definire automazioni dentro/fuori casa e altro. Ciò che alcuni ingnorano è che, una volta collegato un dispositivo Android/iOS all’HUB tramite l’app, vengono creati presso quest’ultimo tutta una serie di entità (per lo più sensori) collegati ai più disparati aspetti del dispositivo in questione: percentuale di batteria, stato di carica, ma anche modalità d’uso, podometro, accelerometri e molto altro (variabile in base al firmware e al dispositivo stesso).
Uno di questi sensori ci torna particolarmente utile nel caso di questo piccolo progetto: quello relativo, appunto, allo stato DND, o “do not disturb”, collegato appunto al fatto che il dispositivo sia o non sia in quel dato stato.
Nota. Gli stati possono essere diversi. Alcuni smartphone/tablet riportano lo stato specifico di DND (modalità lavoro, sonno, viaggio eccetera) tramite un vero e proprio “Sensor”, mentre altri forniscono sono un sensore binario (“Binary Sensor”) che indica solo se lo stato DND sia attivo o meno. |
Su Android
Se si utilizza uno smartphone/tablet basato su Google Android, l’integrazione “Mobile App” eroga svariati sensori, tra i quali uno solitamente chiamato per l’appunto “Do Not Disturb Sensor”
Per appurarlo, cliccare su “Configurazione” > “Dispositivi e servizi” e, alla voce “Mobile App” selezionare il dispositivo di proprio interesse (nel caso dell’esempio che segue, “SM-A750FN”).
Tale sensore conterrà, nel proprio stato, la modalità operativa del device.
Ora, effettuare dei test cambiando le varie modalità per capire come vengono descritte presso Home Assistant (possono cambiare da modello a modello), per esempio “priority_only” eccetera. Una volta raccolti tutti i possibili stati ed esserseli segnati, segnarsi anche da parte il nome dell’entità, per esempio nel nostro caso sensor.sm_a750fn_do_not_disturb_sensor.
Su Apple iOS
Se si utilizza uno smartphone/tablet basato su Apple iOS, l’integrazione “Mobile App” eroga svariati sensori, tra i quali uno solitamente chiamato “Focus“.
Per appurarlo, cliccare su “Configurazione” > “Dispositivi e servizi” e, alla voce “Mobile App” selezionare il dispositivo di proprio interesse (nel caso dell’esempio che segue, “iPhone Focus”).
Tale sensore (in realtà è un “Binary Sensor”) conterrà, nel proprio stato, la modalità operativa del device.
Ora, effettuare dei test cambiando le varie modalità per capire come vengono descritte presso Home Assistant (possono cambiare da modello a modello), per esempio “on” eccetera.
Una volta raccolti tutti i possibili stati ed esserseli segnati, segnarsi anche da parte il nome dell’entità, per esempio nel nostro caso binary_sensor.iphone_focus.

Come usare i sensori
Scoperto il nome dell’entità sensore e realtivi possibili stati, siamo pronti ad usarli a nostro vantaggio presso il nostro HUB.
In pratica, l’approccio prevede sostanzialmente di utilizzarli come trigger per delle automazione (eseguire qualcosa al cambio dello stato) oppure come condition, in caso si voglia influenzare il comportamento di un’automazione in funzione dello stato DND (presente o meno).
Sono solo esempi.
Ovviamente, ogni situazione personale è, per l’appunto, personale e gli spunti forniti sono, per l’appunto, spunti.
Trigger
Vediamo quindi come innescare un’automazione a fronte dell’impostazione o meno dello stato DND.
Ipotizziamo per esempio di aver integrato Amazon Alexa come riproduttore multimediale per “farlo parlare” alla bisogna (oppure con Google Assistant, è lo stesso) e ipotizziamo quindi di non voler essere disturbati con notifiche quando siamo in modalità DND.
Le integrazioni Alexa (ma anche Google Assistant) generano un’entità di tipo “Switch” (un interruttore) che, se attivate, silenziano lo smart speaker; definiamo quindi un’automazione siffatta:
automation: - alias: "SERVICE - Do not disturb" id: "service_do_not_disturb" initial_state: true trigger: - platform: state entity_id: sensor.NOMETEL_do_not_disturb # oppure binary_sensor.NOMETEL_focus to: ~ condition: [] action: - entity_id: switch.alexa_do_not_disturb_switch action: > {% if trigger.to_state.state == 'off' %} switch.turn_off {% else %} switch.turn_on {% endif %}
L’automazione, molto semplice, intercetta qualunque cambio di stato del sensore in questione e, di conseguenza, accende o spegne il relativo switch per silenziare Alexa (o quello che sia).
Naturalmente, dove il sensore possa prevedere stati operativi diversi di DND (in base, lo ripetiamo, ai modelli e alle versioni dei sistemi operativi dello smartphone/tablet in questione), l’automazione potrebbe essere modificata in modo da effettuare cose diverse sulla base di stati diversi.
Condition
Oltre a usare i sensori come trigger, è possibile eventualmente sfruttarli come condition per influenzare una o più automazioni.
Ipotizziamo di non voler necessariamente silenziare del tutto gli smart speaker come fatto tramite l’automazio di cui sopra, ma di voler evitare solo alcune notifiche verbali.
Prendiamo il caso del progetto relativo alle notifiche sulle temperature del frigorifero: non vorremo certo essere disturbati da Alexa che ci comunica “che il frigorifero è troppo caldo” nel bel mezzo di una riunione!
automation:
- alias: "Notifica temperatura frigo"
trigger:
- platform: numeric_state
entity_id: sensor.temperatura_media_frigo
above: 5.0
for:
minutes: 30
- platform: numeric_state
entity_id: sensor.temperatura_media_frigo
below: 3.0
for:
minutes: 30
condition: []
action:
- action: notify.alexa_media
data:
target: media_player.alexa_sala
data:
type: announce
method: speak
message: >
{% if trigger.to_state.state|float > 5.0 %}
Rilevata temperatura media frigorifero troppo alta.
{% elif trigger.to_state.state|float < 3.0 %}
Rilevata temperatura media frigorifero troppo bassa.
{% endif %}
L’automazione di cui sopra ci notifica quando il frigo sta lavorando male, ok.
Modificandola però come segue:
automation: - alias: "Notifica temperatura frigo" trigger: - platform: numeric_state entity_id: sensor.temperatura_media_frigo above: 5.0 for: minutes: 30 - platform: numeric_state entity_id: sensor.temperatura_media_frigo below: 3.0 for: minutes: 30 condition: - condition: template value_template: '{{ states("sensor.NOMETEL_do_not_disturb") == "off" }}' # oppure value_template: '{{ states("binary_sensor.NOMETEL_focus") == "off" }}' action: - action: notify.alexa_media data: target: media_player.alexa_sala data: type: announce method: speak message: > {% if trigger.to_state.state|float > 5.0 %} Rilevata temperatura media frigorifero troppo alta. {% elif trigger.to_state.state|float < 3.0 %} Rilevata temperatura media frigorifero troppo bassa. {% endif %}
Così facendo l’automazione viene eseguita solo quando non ci si trova in stato DND, ovvero quando siamo effettivamente disturbabili. Naturalmente, tale approccio è applicabile al contrario, ovvero impostando una condizione inversa.
Altro
I sensori/sensori binari hanno tantissime funzioni, anche quelle di consultazione su Dashboards.
Bene o male i due casi d’esempio di cui sopra sono abbastanza classici e facilmente adattabili ai propri scopi, ma nessuno ci vieta di usare i sensori per ulteriori fini, per esempio calcolare il tempo trascorso in modalità DND per generare nuovi sensori (per esempio utilizzando il componenti “History Stats“), o altro.
⚠️ 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. |