Notifiche della domotica Home Assistant tramite Telegram

5 minuti di lettura
SCOPI DELLA GUIDA
  • Aggiungere alla configurazione del proprio HUB delle entità di tipo “Notifications” al fine di permettere alla propria domotica personale di notificare all’utente stati, eventi e quant’altro tramite messaggi, immagini e altro.
  • Livello di difficoltà: medio
CONCETTI AFFRONTATI:
  • Configurazione software
  • Configurazione strumenti di gestione finale
COMPONENTI SOFTWARE UTILIZZATI:
PREREQUISITI
DISPOSITIVI FISICI UTILIZZATI:
  • Il dispositivo sul quale risiede Home Assistant (deve poter raggiungere la rete Internet)
GUIDA MAGGIORMENTE INDICATA PER:

Tutti gli ambienti

Note e disclaimer
  • qualsiasi modifica all'impianto elettrico dev'essere effettuata da personale qualificato;
  • qualsiasi modifica attuata in proprio è a propria responsabilità personale nonché a proprio rischio e pericolo (la presente guida ha puro scopo didattico);
  • qualsiasi modifica attuata in proprio a un dispositivo ne fa decadere la garanzia.

Abstract

TelegramLa domotica personale basata su Home Assistant ha la possibilità di effettuare notifiche di vario genere (tipicamente testuali) tramite molteplici piattaforme, tutte quante facenti capo al componente “Notification“, il quale genera entità utilizzabili presso automazioni, script, scene ecc.

In questa guida vedremo come configurare tali notifiche sfruttando il servizio Telegram.

Per utilizzare questa guida è necessario aver già sottoscritto il servizio; per farlo è sufficiente scaricare l’app (per iOS o Android) e registrarsi gratuitamente. Tutti i passaggi i quali prevedano una qualche attività su Telegram potranno essere eseguiti sia su smartphone che tramite l’app in versione tablet o PC/Mac/Linux.

N.b. L’uso della piattaforma Telegram come sistema di notifica Home Assistant è efficace e consigliato, ma invitiamo comunque il lettore a prendere visione della guida relativa a Pushbullet: a differenza di Telegram, questa piattaforma consente non solo di notificare in modo puntuale verso l’utente, ma anche verso uno o più dispositivi specifici (Telegram, invece, consegna indiscriminatamente i messaggi a tutti i dispositivi dove l’utente si sia autenticato).

Si parte

Bot Telegram

Innanzitutto è necessario creare un proprio bot (abbreviazione di Robot) presso l’ambiente cloud di Telegram. Un bot è essenzialmente un programma che provvede, per nostro conto, ad eseguire delle azioni specifiche; in questo contesto si tratterà di una sorta di “ponte” che permetterà la connessione da e per Telegram da parte di Home Assistant.

Per creare un bot aprire Telegram e, presso la buca di ricerca (dove solitamente si cercano messaggi e/o utenti specifici) cercare l’utente (speciale) chiamato “botfather“:

 

Telegram - ricerca botfather

Dopo averlo trovato, selezionarlo e premere su “Start” per definire l’inizio di una conversazione (simulata, è a sua volta un bot!) con l’applicativo.

Nella buca del testo (dove solitamente si scrivono i messaggi, per capirci), inserire il messaggio/comando:

/newbot

e subito dopo inviarlo per avviare la configurazione di un bot ex-novo.

Telegram - botfather newbot

A questo punto botfather domanderà come chiamare il proprio bot per verificare che tale nome sia disponibile (nell’esempio abbiamo usato “indomus”); superata la verifica, chiederà il nome definitivo, il quale deve contenere come suffisso la stringa “_bot” (eg. “indomus_bot”).

Terminata la procedura, botfather comunicarà la chiave API (in questo nostro caso necessaria all’integrazione Home Assistant).

Telegram -botfather API keySegnare da parte la chiave API e procedere oltre.

Chiudere botfather e, tornando alla ricerca dei messaggi/utenti di Telegram, cercare il proprio bot (nell’esempio chiamato “indomus_bot“) e inviargli almeno un messaggio. ATTENZIONE: questo passaggio è fondamentale, pena il mancato funzionamento dell’integrazione.

Chat ID

Ora è necessario trovare l’identificativo della propria chat o, per brevità, chat ID.

Per farlo, chiudere botfather e, tornando alla ricerca dei messaggi/utenti di Telegram, cercare l’utente “IDbot“:

Telegram - ricerca IDBot

Una volta trovato, selezionarlo, premere poi su “start” e, nella buca dei messaggi, inserire e inviare il seguente comando:

/getid

il quale ritornerà un numero intero il quale identifica il proprio chat ID (eg. 543745371).

Segnare da parte questo numero e procedere oltre.

Home Assistant

A questo punto siamo pronti ad implementare la piattaforma “Telegram” presso Home Assistant. Per far ciò, includere nella configurazione dell’HUB la seguente pozione di codice:

telegram_bot:
  - platform: polling
    api_key: chiave_API
    allowed_chat_ids:
      - chat_ID

notify:
  - name: Marco
    platform: telegram
    chat_id: chat_ID

nel quale andremo a personalizzare i campi “chiave_API” e “chat_ID” con i due parametri collezionati nei due paragrafi precedenti.
Riavviare Home Assistant.

Se sarà andato tutto bene, nel log apparirà una voce di questo tipo:

INFO (MainThread) [homeassistant.loader] Loaded notify.telegram from homeassistant.components.notify.telegram

la quale decreterà l’avvenuta generazione dell’entità di tipo “Notifications” chiamata notify.marco.

Più destinatari

In caso gli account Telegram da raggiungere (selettivamente, o in gruppo) siano più di uno, la configurazione va adattata di conseguenza.

N.b. per “più account Telegram” non si intendono “più dispositivi con altrettante app Telegram che facciano capo allo stesso account“, ma proprio “più iscrizioni a Telegram” inteso come diverse persone iscritte a Telegram. Se Marco è l’unico a dover essere notificato tramite Telegram, la configurazione spiegata sopra è più che sufficiente; se Marco avrà più telefoni, tablet e computer che utilizzino Telegram, ogni notifica arriverà contemporaneamente ad ogni dispositivo.

Se invece Home Assistant dovrà notificare sia verso Marco che Daniela (indipendentemente da quante app e dispositivi personali posseggano), allora la configurazione dovrà essere necessariamente diversa e prevedere tante entità “Notifications” quante sono gli account da notificare (in questo esempio, due).

Per far ciò è necessario:

  • autorizzare tanti chat ID quanti sono gli account;
  • creare tante entità “Notification” quanti sono gli account.

La chiave API del bot Telegram, invece, rimane una sola, creata da uno qualunque degli account in questione.

Ipotizziamo dunque che Marco possegga la chat ID 543745371 e Daniela la chat ID 145744137 (gli ID si scoprono sempre nello stesso modo), la configurazione sarà la seguente:

telegram_bot:
  - platform: polling
    api_key: chiave_API
    allowed_chat_ids:
      - 543745371
      - 145744137

notify:
  - name: Marco
    platform: telegram
    chat_id: 543745371
  - name: Daniela
    platform: telegram
    chat_id: 145744137

configurazione la quale, dopo il consueto riavvio di Home Assistant, genererà due entità chiamate notify.marco e notify.daniela.
Fatto questo sarà possibile inviare selettivamente notifiche alle varie entità.

Ma se volessi creare un gruppo in modo da notificare, contemporaneamente, tutti gli account Telegram (e/o di altro tipo)?

Dovrei sfruttare le funzionalità “Notify Group” di Home Assistant, definendo quindi l’ennesima entità “Notifications” la quale, se indirizzata, invierebbe messaggi urbi et orbi.

Rimanendo nel solco dell’esempio sopra, definiamo un’entità notify.famiglia a partire dalle due entità precedentemente definite:

  - name: famiglia
    platform: group
    services:
      - service: marco
      - service: daniela

con una complessiva, definitiva configurazione fatta così:

telegram_bot:
  - platform: polling
    api_key: chiave_API
    allowed_chat_ids:
      - 543745371
      - 145744137

notify:
  - name: Marco
    platform: telegram
    chat_id: 543745371
  - name: Daniela
    platform: telegram
    chat_id: 145744137
  - name: famiglia
    platform: group
    services:
      - service: marco
      - service: daniela

Utilizzo in automazione

A questo punto Home Assistant è in grado di inviare notifiche verso le nostre entità “Notifications” di tipo Telegram utilizzando, com’è ovvio, delle automazioni.
Poniamo il caso di voler inviare una notifica a fronte della temperatura esterna superiore a quella interna:

automation:
- alias: "Notifica temperature esterna maggiore di quella interna"
  trigger:
    platform: template
    value_template: "{{ ((states.sensor.temperatura_esterna.state|float) > (states.sensor.temperatura_interna.state|float)) and states.sensor.temperatura_interna.state|float > 0 }}"
  condition: []
  action:
    service: notify.marco
    data:
      title: "Domotica - clima"
      message: "Rilevata temperatura esterna superiore a quella interna."

Se, ovviamente, al posto di notify.marco avessimo indicato notify.famiglia, le notifiche sarebbero indirizzate a tutti i destinatari indicati nel raggruppamento spiegato precedentemente.

Altre caratteristiche

L’implementazione di Telegram su Home Assistant è molto efficace, sopratutto perché molto flessibile: permette di inviare immagini, link, video, documenti e molto altro. A tal scopo, si consiglia di prendere visione della pagina dedicata alla piattaforma presente sul sito di Home Assistant.


Home Assistant Official LogoATTENZIONE: ricorda che sul nostro community FORUM c'è una sezione ad hoc dedica a Home Assistant, per qualsiasi dubbio, domanda, informazione nel merito specifico di queste componenti.


Please comment below

Primi passi con Home Assistant: da dove cominciare