community italiana di domotica personale
 
Gestire la modalità “non disturbare” sulla propria domotica Home Assistant

Gestire la modalità “non disturbare” sulla propria domotica Home Assistant

SCOPI DEL PROGETTO:
  • Sfruttare la modalità “non disturbare” su Home Assistant
  • Livello di difficoltà: basso
  • Costo: nullo
CONCETTI AFFRONTATI:
  • Configurazione software
PREREQUISITI:
COMPONENTI SOFTWARE UTILIZZATE:
DISPOSITIVI FISICI UTILIZZATI:
GUIDA INDICATA 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.1

Home Assistant DND

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

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”).

Home Assistat - Mobile App - Android do not disturb sensor

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”).

Home Assistat - Mobile App - iOS do not disturb sensor

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.

Vetrina - Offerte del giorno

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.