Home Assistant e Notifiche Telegram una coppia vincente

Home Assistant e Notifiche Telegram una coppia vincente

di Antonio Mario Longo

09 Dicembre 2020

Home Assistant

Antonio Mario Longo

Telegram oramai sta coinvolgendo molti utenti, sia perchè è diventato uno strumento di comunicazione molto forte, ma anche perchè con una ricerca possiamo trovare tantissimi gruppi che parlano di argomenti di nostro interesse. Vedremo in questo articolo come far sposare la nostra domotica su Home Assistant con Telegram per essere avvertiti su ciò che accade in ambiente domestico con notifiche testuali, immagini o video. Già in passato Luigi Duchi, propose la stessa guida, reperibile a questo indirizzo: https://www.vincenzocaputo.com/home_assistant/home-assistant-aggiungiamo-le-notifiche-telegram-85 , ma dal 2018 ad oggi è cambiata qualcosina e ci ci sembrava doveroso poter aiutare con guide sempre aggiornate i nostri cari lettori, in modo tale da non dover sbattere la testa più di tanto con i vari cambiamenti.

Componenti necessari per il progetto:

  • App Telegram istallata sullo smartphone (IOS , Android).
  • Home Assistant.
  • Addon Samba o Ftp Preinstallato.

1° Parte: Configurazione Telegram

  • Aprite l'app Telegram dal vostro smartphone
  1. Fate un tap o sull'icona della lente (posizionata in alto a destra dell'app) 
  2. Digitate la keyword botfather
  3. Cliccate sul simbolino del nonnino con lo smartphone in mano
    Intro Telegram
  4. Nella finestra di conversazione che si aprirà digitate /newbot 
  5. Il bot vi risponderà in inglese chiedendovi di assegnare un nome al bot
  6. Scegliete e digitate un nome a vostra scelta ex: ProvaBotTelegram
  7. Il bot Grandfather ci risponderà in inglese indicandoci di inserire un Username che termini con la parola "bot"
  8. Digitate e date conferma dell'Username scelto, ma fate attenzione perché se l'username è già stato scelto, il bot risponderà sempre in maniera automatica di ritentare modificando o riscrivendo quest'ultimo finché lo stesso risulti reperibile ( giocate un pò di fatasia magari sostituendo la a con @ o la i con 1 ) sino a ottenere una risposta positiva dal bot.
    Prima Parte bot
  9. Annotate e salvate il token di accesso delle API HTTP che sarà utile successivamente per la configurazione su Home Assistant
  10. Cliccate infine sul collegamento che il bot vi ha fornito nel primo paragrafo scritto in blu che inizia con t.me/nome_del_bot_assegnato 
    Divisione 2
  • All'apertura della nuova finestra del bot appena creato cliccate su Start
  • Scrivete una parola qualsiasi per far si che non abbiate problemi in futuro con l'integrazione.
  • Successivamente ritornate alla ricerca dei contatti e digitate getidsbot e aprite la chat con questo nuovo bot 
    Getidsbot
  • Date il comando /start o pigiate sul tasto START in basso alla pagina di conversazione.
  • Questo nuovo Bot vi restituirà delle scritte che per noi saranno superflue ma verso la fine della pagina ci indicherà un parametro fondamentale il nostro id, quindi salvatelo perchè indispensabile nello step successivo. 
    Chat Id

2° Parte: Configurazione Home Assistant

In questa parte abbiamo bisogno di due dati che abbiamo salvato in precedenza, ovvero l'id ricavato da getidsbot e il token di accesso delle Api HTTP. Dopo aver messo i dati in primo piano colleghiamoci su Home Assistant con Samba o Ftp.

  • Aprire e modificare il file configuration.yaml di Home Assistant 
  • Inserire in fondo alla configurazione questa parte di codice: 

 

telegram_bot:
  - platform: polling
    api_key: YOUR_API_KEY
    allowed_chat_ids:
      - 123456789 # (chat ID1)
      - 987654321 # (chat ID2)

Questo codice ovviamente dovrà essere modificato in base ai parametri sotto elencati:

  • Accanto alla stringa api_key: inserite il codice alfa numerico che avete recuperato al punto 9 della parte precedente.
  • Sotto ad allowed _chat_ids: inserite il codice numerico che avete ricavato con il bot getids
  • Ovviamente se avete un altro membro della famiglia, che deve essere avvertito con delle notifiche potrete inserirlo dopo aver ricavato il suo Chat Ids dal bot sopra menzionato.

Dopo aver completato queste piccole modifiche scrivere il seguente codice:

notify:
  - platform: telegram
    name: NOTIFIER_NAME
    chat_id: CHAT_ID_1

In questo caso, le parti da cambiare sono NOTIFIER_NAME che indicherà il nome della persona che riceverà la notifica e CHAT_ID_1, ovvero il numero che abbiamo ricavato in precedenza dal bot getidsbot. Ovviamente ripetete questa parte di codice per tutti i componenti della famiglia su cui notificare un qualsiasi messaggio, come nell'esempio di seguito: 

notify:
  - name: Antonio
    platform: telegram
    chat_id: 245871258
  - name: Tyson
    platform: telegram
    chat_id: 25637021
Terminato il tutto riavviare Home Assistant. Successivamente potremo utilizzare il sistema di notifica con le automazioni come nell'esempio sotto riportato:

- id: lavatrice_spenta
  alias: Lavatrice Spenta
  trigger:
  - entity_id: switch.lavatrice
    platform: state
    to: 'off'
  action:
  - service: notify.roberto
    data:
      message: La lavatrice ha terminato il lavaggio

Inviare Immagini con notifiche telegram: 

Per poter inviare le immagini, Home Assistant le potrà reperire o da un URL specifico, oppure dai file contenuti nel proprio sistema. Vediamo i due esempi di servizi e analizziamoli per comprendere il tutto:

  service: notify.roberto
  data:
    title: Invio immagine

Come si può notare il servizio manda una notifica a Roberto con una foto immettendo un Url specifico che può essere l'immagine di una ip cam locata nella nostra rete. Se invece volessimo mandare un immagine standard memorizzata nel nostro sistema, seguite questi passaggi:

  • Collegatevi su Home Assistant con Samba o FTP
  • Nel percorso ip_del_vostro_rasberry (ex: 192.168.1.20) dirigetevi nella cartella media. 
  • Create una sotto cartella denominata "immagini" in modo tale da avere una struttura del genere: 
    percorso immagini
  • All'interno della cartella inserite i file immagine che vorrete inviare come Notifica Telegram (ex: pippo.jpg)
  • Dirigetevi nel file configuration.yaml e aggiungete questa parte di codice sotto la riga homeassistant: in modo tale da  avere una configurazione simile: 
    homeassistant:
      allowlist_external_dirs:
        - /media/immagini
    
    Questa operazione servirà ad Home Assistant per abilitare a leggere e nel nostro caso ad inviare i file da una determinata directory del sistema.
  • Terminate queste operazioni riavviate Home Assistant, in modo da rendere effettive le modifiche.
  • Collegatevi con Samba o FTP su Home Assistant, inserite un file immagine nella directory Immagini precedentemente creata.
  • Al termine delle operazioni potrete costruire automazioni come nell'esempio sotto riportato:

 

automation:

- id: prova_foto
  alias: prova foto
  trigger:
  - entity_id: light.luce_studio
    platform: state
    to: 'on'
  action:
  - service: notify.antonio
    data:
      message: "ciao"
      data:
        photo:
        - file: /media/immagini/pippo.jpg

Una nota molto importante è che nell'invio di notifiche con foto il message è obbligatorio (nell'automazione sovrastante è "ciao"), nel caso lo si elidesse dalle automazioni o dagli scripts Home Assistant non vi darà nessun errore quando eseguirete il check della configurazione ma allo stesso tempo non riceverete nessun messaggio.

Inviare Video con Notifiche Telegram:

Questo tipo di notifica, invece manda dei video estrapolati da un URL oppure dei file video presenti nella memoria di Home Assistant. Partiamo dall'invio di un video situato in un determinato url, come quello di una  telecamera ubicata nella nostra rete

automation:

- id: prova_video
  alias: prova video
  trigger:
  - entity_id: light.luce_studio
    platform: state
    to: 'on'
  action:
  - service: notify.antonio
    data:
      message: "prova video"
      data:
        video:
        - url: http://192.168.1.48/camera.mp4

Come potete constatare il servizio è sempre il medesimo (notify.nome) cambia solo il parametro successivo a message che indica l'url da dove Home Assistant procederà a inviare il filmato. Per mandare invece dei file memorizzati in una cartella locale del sistema, invece bisogna seguire questi brevi passaggi:

  • Collegatevi su Home Assistant con Samba o FTP
  • Nel percorso ip_del_vostro_rasberry (ex: 192.168.1.20) dirigetevi nella cartella media.
  • Create una sotto cartella denominata "video" in modo tale da avere una struttura del genere: 
    Video Folder Raspberry
  • All'interno della cartella inserite i file video che vorrete inviare come Notifica Telegram (ex: video.mp4)
  • Dirigetevi nel file configuration.yaml e aggiungete questa parte di codice sotto la riga - /media/immagini: (creata nella parte precedente) in modo tale da  avere una configurazione simile: 
      allowlist_external_dirs:
        - /config
        - /media/immagini
        - /media/video
    
  • Riavviate Home Assistant in modo da far riconoscere il nuovo percorso incluso nella lista delle directory ammesse alla configurazione
  • A sistema riavviato ricollegatevi sempre con Samba o FTP su Home Assistant e  inserite un file video ( possibilmente in formato mp4) nella directory video precedentemente creata.
  • Al termine delle operazioni potrete creare un' automazione avente la seguente struttura: {img:4674}

Non vi nego che ho provato a trasformare un video preso da internet in formato mp4, ma il sistema non lo ha inviato, invece un video preso da una telecamera ip o quello di uno smartphone è stato elaborato senza problemi. Quindi provate con vari file video se la procedura eventualmente non viene eseguita a primo colpo.

Queste notifiche possono essere utili nei sistemi di sorveglianza o altro, quindi divertitevi con la vostra fantasia per creare il sistema domotico più adatto alle vostre esigenze.

Produrre e aggiornare contenuti su vincenzocaputo.com richiede molto tempo e lavoro. Se il contenuto che hai appena letto è di tuo gradimento e vuoi supportarmi, clicca uno dei link qui sotto per fare una donazione.

Disqus loading...