community italiana di domotica personale
 
Eseguire sequenze logiche sulla domotica Home Assistant tramite comandi vocali Alexa

Eseguire sequenze logiche sulla domotica Home Assistant tramite comandi vocali Alexa

SCOPI DEL PROGETTO:
  • Definire delle sequenze (intelligenti) di azioni domotiche Home Assistant eseguibili tramite lo smart speaker Amazon Echo (Alexa)
  • Livello di difficoltà: basso
  • Costo: n.a.
CONCETTI AFFRONTATI:
  • Configurazione software
COMPONENTI SOFTWARE UTILIZZATE:
DISPOSITIVI FISICI UTILIZZATI:
  • Il computer su cui è in esecuzione Home Assistant
  • Uno o più smart speaker dotati di assistente Alexa (eg. linea Amazon Echo)
PROGETTO INDICATO 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

Amazon Alexa - Script Home Assistant

Abstract

Gli smart speaker sono tra gli strumenti di gestione finale tra i più apprezzati in domotica personale. Il perché è molto semplice da intuire: comandare con la voce il comportamento della propria casa fornisce un’interfaccia uomo-macchina imparagonabile con qualsiasi altra modalità.

Come sappiamo, tra i più diffusi smart speaker sono quelli della linea Amazon Echo dotati di assistente Alexa, i quali possono venire integrati con la domotica basata sull’HUB personale Home Assistant in diverse modalità, sia come attuatori che come riproduttori multimediali.

La prima modalità (come attuatori) consente, per l’appunto, di gestire le entità domotiche presenti sull’HUB (quali che siano) tramite comandi vocali: da “accendi la luce” a “imposta il riscaldamento a 20 gradi“, ogni comando previsto dalla natura specifica dell’entità controllata è tipicamente consentito.

Quello che, di base, non è previsto da Alexa è eseguire sequenze di comandi. O meglio: esistono certamente le routine, le quali sì permettono di eseguire sequenze di azioni sulla base di un comando, ma non prevedono di applicare alcuna logica in quello che fanno.

Ipotizziamo di avere un sensore previsionale meteo su Home Assistant che indichi la quantità di pioggia prevista a +6 ore. Ipotizziamo altresì di avere uno o più sensori di apertura varchi collocati sulle finestre di averli integrati a Home Assistant.

Ipotizziamo infine di aver definito una routine su Alexa che, quando andiamo a letto, semplicemente dicendo “Alexa, buonanotte” spenga le luci di casa. Bene: col presente progetto vedremo come far sì che tale routine d’esempio (usata per spiegare il concetto) provveda non solo a spegnere le luci, ma anche – per esempio – a verificare automaticamente se sia prevista pioggia e se, in caso qualche finestra sia aperta, avvisare tramite un annuncio dello smart speaker in merito alla situazione di potenziale pericolo, per esempio “Attenzione, è prevista pioggia nella notte e ci sono finestre aperte“.

Si parte

Logica di funzionamento

Uno script di Home Assistant altro non è che una sequenza – volendo, arricchita da logica – di azioni. Tali script, se inclusi nei domini esposti verso Alexa, vengono visti da quest’ultimo come “scenari”.

Per questa guida ipotizzeremo la realizzazione dello scenario descritto nell’abstract (la verifica dell’apertura delle finestre a fronte di una previsione di pioggia e, in caso, comunicazione di alert) tramite uno script che esporremo verso Alexa.

Assunti

Premesso che lo script realizzato con questo progetto sarà puramente illustrativo (il proprio potrà contenere qualsivoglia altra azione), assumeremo per la sua realizzazione l’esistenza sul nostro HUB delle seguenti entità:

  • sensor.6h_precipitation
  • binary_sensor.window_opening_1binary_sensor.window_opening_2
  • media_player.alexa

Il primo, sensor.6h_precipitation è un sensore meteo che indica la previsione di pioggia, mentre binary_sensor.window_opening_1 e binary_sensor.window_opening_2 sono due sensori binari che indicano lo stato di apertura rispettivamente di due finestre. Ovviamente assumiamo che tali entità siano il prodotto di diverse integrazioni a partire dai servizi e sensori fisici a propria disposizione.

In ultimo, media_player.alexa è l’entità che rappresenta il nostro smart speaker Alexa integrato come riproduttore multimediale. Inoltre, si assume che il nostro smart speaker sia anche integrato a Home Assistant come attuatore a comandi vocali (in modalità a pagamento o gratuita).

Script

La prima cosa da fare, come detto, è creare lo script che ci serve. Nel nostro caso lo chiameremo script.check_finestra (con friendly name “Check finestre in caso pioggia”) e lo definiremo in configurazione come segue:

script:
  check_finestra:
    alias: "Check finestre in caso pioggia"
    sequence:
      -  condition: and
         conditions:
          - condition: numeric_state
            entity_id: sensor.6h_precipitation
            above: 0
          - condition: or
            conditions:
              - condition: state
                entity_id: binary_sensor.window_opening_1
                state: 'on'
              - condition: state
                entity_id: binary_sensor.window_opening_2
                state: 'on'
      - action: notify.alexa_media
        data:
          target: media_player.alexa
          data:
            type: tts
          message: "Attenzione, è prevista pioggia e ci sono finestre aperte."

Si tratta di uno script molto semplice, il quale, in caso sia prevista pioggia

          - condition: numeric_state
            entity_id: sensor.6h_precipitation
            above: 0

e una delle due finestre risulti aperta:

          - condition: or
            conditions:
              - condition: state
                entity_id: binary_sensor.window_opening_1
                state: 'on'
              - condition: state
                entity_id: binary_sensor.window_opening_2
                state: 'on'

innesca la notifica verbale di Alexa:

      - action: notify.alexa_media
        data:
          target: media_player.alexa
          data:
            type: tts
          message: "Attenzione, è prevista pioggia e ci sono finestre aperte."

siccome gli script vengono eseguiti in sequenza, in questo caso se prima non viene superato il blocco condition, la chiamata per l’esecuzione della notifica verbale non viene eseguita. Niente pioggia – o finestre chiuse – nessuna notifica.

Al termine dell’aggiunta dello script, ricordarsi di riavviare Home Assistant o, per praticità, recarsi alla voce “Strumenti per sviluppatori” > “YANK” e cliccare su “RICARICA SCRIPT“.

Vetrina - Offerte del giorno

App Alexa

A questo punto sarà sufficiente recarsi presso l’app mobile Alexa e, alla voce “Dispositivi” > “Aggiungi dispositivo” > “Altro” e attendere il completamento della ricerca. Al termine, lo scenario (in questo caso chiamato “Check finestre in caso pioggia”) verrà aggiunto tra i dispositivi domotici integrati con Alexa.

N.b. Questa procedura non potrà mai andare a buon fine se prima non si è provveduto all’integrazione di Home Assistant come attuatore a comandi vocali.
Routine

Dato che abbiamo realizzato uno script, Alexa può facilmente gestirlo e quindi innescarlo a fronte di un nostro comando. Dando per assunta come detto l’avvenuta integrazione del proprio Amazon Echo alla domotica Home Assistant (in modo gratuito o tramite cloud a pagamento) – la quale deve includere, nei domini integrati, anche gli script – andremo a vedere come gestire, tramite routine Alexa, l’innesco dello scenario corrispondente chiamato “Check finestre in caso di pioggia” precedentemente definito.

In primis, apriamo l’applicazione Alexa su smartphone/tablet e selezioniamo “Routine” / “Nuova routine“. Come trigger, selezioniamo “Quando questo accade“:

Alexa - Routine - CheckFinestre - 1

selezioniamo poi l’icona “Voce“:

Alexa - Routine - CheckFinestre - 2

Selezioniamo poi la voce “Alexa dice“:

Alexa - Routine - CheckFinestre - 3

Nella schermata successiva indichiamo il comando che ci aspettiamo venga interpretato come l’attivazione dello script. Noi abbiamo scelto “Alexa, check finestre“:

Alexa - Routine - CheckFinestre - 4

selezioniamo poi la voce “Aggiungi un’azione” e selezioniamo, nella schermata seguente, “Controlla scenario“:

Alexa - Routine - CheckFinestre - 5

A questo punto nell’elenco degli scenari presenti, selezionare “Check finestre in caso pioggia” (in caso manchi, recarsi alla voce di menù principale “Aggiungi dispositivo” / “Altro” ed effettuare a mano l’auto-discovery, poi tornare alle Routine):

Alexa - Routine - CheckFinestre - 6

Poi, nella schermata successiva selezionare “Avanti“:

Alexa - Routine - CheckFinestre - 7

Infine, selezionare “Salva“:

Alexa - Routine - CheckFinestre - 8

Così facendo, da qui in poi ogni volta che si pronuncerà “Alexa, check finestre“, Home Assistant verificherà le condizioni e le logiche dello script. In questo caso specifico, avviserà l’utente in caso sia prevista pioggia e almeno una delle due finestre risulti aperta.


Domotizzare la profumazione degli ambienti tramite diffusore e Home Assistant

⚠️ 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.