Richieste da Bot Telegram

Richieste da Bot Telegram

Oggi vi mostrerò come utilizzare Telegram per comandare la vostra domotica tramite Home Assistant. Infatti le grandi doti della nostra chat più amata, dove solitamente riceviamo le notifiche da Home Assistant, ci permetterà di inviare dei comandi al nostro assistente che eseguirà senza pertanto dover accedere al nostro dominio.

Come requisiti minimi dovremmo avere l’accesso ad Home Assistant in https ed aver configurato il nostro bot Telegram dove ricevere le notifiche.

Tutto il codice che andremmo ad analizzare sono un insieme di automazioni per comodità andiamo ad aggiungere questa riga nel file configuration.yaml

automation old: !include_dir_merge_list automations

Poi nella cartella /config andiamo a creare una nuova cartella di nome automations.

All’interno ora potremmo inserire i file yaml che contengono le automazioni senza dover dichiarare nulla nella prima riga. Questo è diverso dal funzionamento dei package ma nulla ci vieta di inserire il codice in un package ed aggiungere nella prima riga la dichiarazione automation: però dovrete spostare il tutto di 2 spazi più a sinistra. 

Da questo link Richiesta bot Telegram.zip  potrete scaricare i vari file yaml per fare le richieste da bot Telegram.
Analizziamo ora ogni singolo file.

 

Telegram Notifica Bot.yaml

- alias: Telegram_Bot_Start
hide_entity: true
initial_state: 'on'
trigger:
- platform: event
event_type: telegram_command
event_data:
command: /start
action:
- service: notify.telegram
data_template:
title: Benvenuto
message: '*PANNELLO DI CONTROLLO*'
data:
inline_keyboard:
- '{{ "\U0001F6A8" }} Sicurezza:/sicurezza,{{ "\U0001F4A1" }} Luci:/luci'
- '{{ "\U0001F4BB" }} Sistema:/sistema,{{ "\U0001F6AA" }} Sensori:/sensori'
- '{{ "\U0001F4C4" }} Sommario:/Sommario,{{ "\U00002600" }} Meteo:/meteo'


- alias: Telegram_Bot_Stop
hide_entity: true
trigger:
- platform: event
event_type: telegram_callback
event_data:
data: /stop
action:
- service: notify.telegram
data_template:
message: '*PANNELLO DI CONTROLLO*'
data:
inline_keyboard:
- '{{ "\U0001F6A8" }} Sicurezza:/sicurezza,{{ "\U0001F4A1" }} Luci:/luci'
- '{{ "\U0001F4BB" }} Sistema:/sistema,{{ "\U0001F6AA" }} Sensori:/sensori'
- '{{ "\U0001F4C4" }} Sommario:/Sommario,{{ "\U00002600" }} Tempo:/meteo'

Con queste 2 automazioni andremo a creare il menù di controllo/comando in Telegram.
Con il comando /start dato da Telegram richiameremo il menù generale appena creato con dei tasti che premuti andranno a richiamare altri menù.
Le cose importanti e personalizzabili saranno la dichiarazione dei tasti con l’icona e il link associato al nome dopo la dicitura inline_keyboard: dove avremo:

“\U0001F6A8” sarà il codice unicode dell’icona,
Sicurezza: sarà il titolo al suo interno
/sicurezza sarà l’automazione che andremo a richiamare contenente in data: /sicurezza

Le icone le potete trovare a questo link http://unicode.org/emoji/charts/full-emoji-list.html
Le icone dal sito sono in questo formato U+1F600 dovrete trasformarle in questo U0001F600 per essere decifrate da Telegram.

 

Telegram Luci.yaml

################ Menù Luci

- id: infoluci
alias: info luci
hide_entity: true
trigger:
- platform: event
event_type: telegram_callback
event_data:
data: /luci
action:
- service: telegram_bot.answer_callback_query
data_template:
callback_query_id: '{{ trigger.event.data.id }}'
message: luci
- service: notify.telegram
data_template:
message: >-

{{U0001F4A1}}*MENÙ LUCI*
----------------------------------

*luci Sala*: {{ states.group.sala.state }}

*Luci Cucina*: {{ states.group.cucina.state }}

*Luci Salagiochi*: {{ states.group.salagiochi.state }}

*Luci Camera Matrimoniale*: {{ states.group.matrimoniale.state }}

*Luci Bagni*: {{ states.group.bagni.state }}

*Luci Studio*: {{ states.group.studio.state }}

*Luci Corridoio*: {{ states.light.daniela.state }}

*Luce Scale*: {{ states.light.daniela.state }}

data:
inline_keyboard:
- '{{ "\U0001F6CB" }} Sala:/sala, {{ "\U0001F37D" }} Cucina:/cucina'
- '{{ "\U0001F3A0" }} Salagiochi:/salagiochi, {{ "\U0001F6CC" }} Matrimoniale:/matrimoniale'
- '{{ "\U0001F6C0" }} Bagni:/bagni, {{ "\U0001F4D6" }} Studio:/studio'
- '{{ "\U00000FC1" }} Corridoio:/corridoio, {{ "\U0001F4A1" }} Scale:/scale'
- '{{ "\u21a9\ufe0f" }} Menú Principale:/stop'

################ SALA

- id: azzionisala
alias: azioni luci sala
hide_entity: true
trigger:
- platform: event
event_type: telegram_callback
event_data:
data: /sala
action:
- service: telegram_bot.answer_callback_query
data_template:
callback_query_id: '{{ trigger.event.data.id }}'
message: Menú Luci Sala
- service: notify.telegram
data_template:
title: '*LUCI SALA*'
message: "{% if is_state(\"group.sala\", \"off\") %} Luci Spente {% else\
\ %} Luci Accese {% endif %} \n"
data:
inline_keyboard:
- 'Accendere:/accendisala, Spegnere:/spegnisala'
- 'Luci:/luci'
- '{{ "\u21a9\ufe0f" }} Menú Principale:/stop'
- id: accendisalacompleto
alias: accendi sala
hide_entity: true
trigger:
- platform: event
event_type: telegram_callback
event_data:
data: /accendisala
action:
- service: light.turn_on
entity_id: group.sala
- service: telegram_bot.answer_callback_query
data_template:
callback_query_id: '{{ trigger.event.data.id }}'
message: Controllo luci Sala
- service: notify.telegram
data_template:
title: '*LUCI SALA*'
message: "{% if is_state(\"group.sala\", \"off\") %} Luci Spente {% else\
\ %} Luci Accese {% endif %} \n"
data:
inline_keyboard:
- 'Accendere:/accendisala, Spegnere:/spegnisala'
- 'Luci:/luci'
- '{{ "\u21a9\ufe0f" }} Menú Principale:/stop'
- id: spegnisalacompleto
alias: spegni sala
hide_entity: true
trigger:
- platform: event
event_type: telegram_callback
event_data:
data: /spegnisala
action:
- service: light.turn_off
entity_id: group.sala
- service: telegram_bot.answer_callback_query
data_template:
callback_query_id: '{{ trigger.event.data.id }}'
message: Controllo Luci Sala
- service: notify.telegram
data_template:
title: '*LUCI SALA*'
message: "{% if is_state(\"group.sala\", \"off\") %} Luci Spente {% else\
\ %} Luci Accese {% endif %} \n"
data:
inline_keyboard:
- 'Accendere:/accendisala, Spegnere:/spegnisala'
- 'Luci:/luci'
- '{{ "\u21a9\ufe0f" }} Menú Principale:/stop'

################ CUCINA
- id: azzionicucina
alias: azioni luci cucina
hide_entity: true
trigger:
- platform: event
event_type: telegram_callback
event_data:
data: /cucina
action:
- service: telegram_bot.answer_callback_query
data_template:
callback_query_id: '{{ trigger.event.data.id }}'
message: Menú Luci Cucina
- service: notify.telegram
data_template:
title: '*LUCI CUCINA*'
message: "{% if is_state(\"group.cucina\", \"off\") %} Luci Spente {% else\
\ %} Luci Accese {% endif %} \n"
data:
inline_keyboard:
- 'Accendere:/accendicucina, Spegnere:/spegnicucina'
- 'Luci:/luci'
- '{{ "\u21a9\ufe0f" }} Menú Principale:/stop'
- id: accendicucinacompleto
alias: accendi cucina
hide_entity: true
trigger:
- platform: event
event_type: telegram_callback
event_data:
data: /accendicucina
action:
- service: light.turn_on
entity_id: group.cucina
- service: telegram_bot.answer_callback_query
data_template:
callback_query_id: '{{ trigger.event.data.id }}'
message: Controllo luci Cucina
- service: notify.telegram
data_template:
title: '*LUCI CUCINA*'
message: "{% if is_state(\"group.cucina\", \"off\") %} Luci Spente {% else\
\ %} Luci Accese {% endif %} \n"
data:
inline_keyboard:
- 'Accendere:/accendicucina, Spegnere:/spegnicucina'
- 'Luci:/luci'
- '{{ "\u21a9\ufe0f" }} Menú Principale:/stop'
- id: spegnicucinacompleto
alias: spegni cucina
hide_entity: true
trigger:
- platform: event
event_type: telegram_callback
event_data:
data: /spegnicucina
action:
- service: light.turn_off
entity_id: group.cucina
- service: telegram_bot.answer_callback_query
data_template:
callback_query_id: '{{ trigger.event.data.id }}'
message: Controllo Luci Cucina
- service: notify.telegram
data_template:
title: '*LUCI CUCINA*'
message: "{% if is_state(\"group.cucina\", \"off\") %} Luci Spente {% else\
\ %} Luci Accese {% endif %} \n"
data:
inline_keyboard:
- 'Accendere:/accendisala, Spegnere:/spegnisala'
- 'Luci:/luci'
- '{{ "\u21a9\ufe0f" }} Menú Principale:/stop'

################ SALAGIOCHI
- id: azzionisalagiochi
alias: azioni luci salagiochi
hide_entity: true
trigger:
- platform: event
event_type: telegram_callback
event_data:
data: /salagiochi
action:
- service: telegram_bot.answer_callback_query
data_template:
callback_query_id: '{{ trigger.event.data.id }}'
message: Menú Luci Salagiochi
- service: notify.telegram
data_template:
title: '*LUCI SALAGIOCHI*'
message: "{% if is_state(\"group.salagiochi\", \"off\") %} Luci Spente {% else\
\ %} Luci Accese {% endif %} \n"
data:
inline_keyboard:
- 'Accendere:/accendisalagiochi, Spegnere:/spegnisalagiochi'
- 'Luci:/luci'
- '{{ "\u21a9\ufe0f" }} Menú Principale:/stop'
- id: accendisalagiochicompleto
alias: accendi salagiochi
hide_entity: true
trigger:
- platform: event
event_type: telegram_callback
event_data:
data: /accendisalagiochi
action:
- service: light.turn_on
entity_id: group.salagiochi
- service: telegram_bot.answer_callback_query
data_template:
callback_query_id: '{{ trigger.event.data.id }}'
message: Controllo luci Salagiochi
- service: notify.telegram
data_template:
title: '*LUCI SALAGIOCHI*'
message: "{% if is_state(\"group.salagiochi\", \"off\") %} Luci Spente {% else\
\ %} Luci Accese {% endif %} \n"
data:
inline_keyboard:
- 'Accendere:/accendisalagiochi, Spegnere:/spegnisalagiochi'
- 'Luci:/luci'
- '{{ "\u21a9\ufe0f" }} Menú Principale:/stop'
- id: spegnisalagiochicompleto
alias: spegni salagiochi
hide_entity: true
trigger:
- platform: event
event_type: telegram_callback
event_data:
data: /spegnisalagiochi
action:
- service: light.turn_off
entity_id: group.salagiochi
- service: telegram_bot.answer_callback_query
data_template:
callback_query_id: '{{ trigger.event.data.id }}'
message: Controllo Luci Salagiochi
- service: notify.telegram
data_template:
title: '*LUCI SALAGIOCHI*'
message: "{% if is_state(\"group.salagiochi\", \"off\") %} Luci Spente {% else\
\ %} Luci Accese {% endif %} \n"
data:
inline_keyboard:
- 'Accendere:/accendisalagiochi, Spegnere:/spegnisalagiochi'
- 'Luci:/luci'
- '{{ "\u21a9\ufe0f" }} Menú Principale:/stop'


################ MATRIMONIALE

- id: azzionimatrimoniale
alias: azioni luci matrimoniale
hide_entity: true
trigger:
- platform: event
event_type: telegram_callback
event_data:
data: /matrimoniale
action:
- service: telegram_bot.answer_callback_query
data_template:
callback_query_id: '{{ trigger.event.data.id }}'
message: Menú Luci Matrimoniale
- service: notify.telegram
data_template:
title: '*LUCI MATRIMONIALE*'
message: "{% if is_state(\"group.matrimoniale\", \"off\") %} Luci Spente {% else\
\ %} Luci Accese {% endif %} \n"
data:
inline_keyboard:
- 'Accendere:/accendimatrimoniale, Spegnere:/spegnimatrimoniale'
- 'Luci:/luci'
- '{{ "\u21a9\ufe0f" }} Menú Principale:/stop'
- id: accendimatrimonialecompleto
alias: accendi matrimoniale
hide_entity: true
trigger:
- platform: event
event_type: telegram_callback
event_data:
data: /accendimatrimoniale
action:
- service: light.turn_on
entity_id: group.matrimoniale
- service: telegram_bot.answer_callback_query
data_template:
callback_query_id: '{{ trigger.event.data.id }}'
message: Controllo luci Matrimoniale
- service: notify.telegram
data_template:
title: '*LUCI MATRIMONIALE*'
message: "{% if is_state(\"group.matrimoniale\", \"off\") %} Luci Spente {% else\
\ %} Luci Accese {% endif %} \n"
data:
inline_keyboard:
- 'Accendere:/accendimatrimoniale, Spegnere:/spegnimatrimoniale'
- 'Luci:/luci'
- '{{ "\u21a9\ufe0f" }} Menú Principale:/stop'
- id: spegnimatrimonialecompleto
alias: spegni matrimoniale
hide_entity: true
trigger:
- platform: event
event_type: telegram_callback
event_data:
data: /spegnimatrimoniale
action:
- service: light.turn_off
entity_id: group.matrimoniale
- service: telegram_bot.answer_callback_query
data_template:
callback_query_id: '{{ trigger.event.data.id }}'
message: Controllo Luci Matrimoniale
- service: notify.telegram
data_template:
title: '*LUCI MATRIMONIALE*'
message: "{% if is_state(\"group.matrimoniale\", \"off\") %} Luci Spente {% else\
\ %} Luci Accese {% endif %} \n"
data:
inline_keyboard:
- 'Accendere:/accendimatrimoniale, Spegnere:/spegnimatrimoniale'
- 'Luci:/luci'
- '{{ "\u21a9\ufe0f" }} Menú Principale:/stop'

################ BAGNI

- id: azzionibagni
alias: azioni luci sala
hide_entity: true
trigger:
- platform: event
event_type: telegram_callback
event_data:
data: /bagni
action:
- service: telegram_bot.answer_callback_query
data_template:
callback_query_id: '{{ trigger.event.data.id }}'
message: Menú Luci Bagni
- service: notify.telegram
data_template:
title: '*LUCI BAGNI*'
message: "{% if is_state(\"group.bagni\", \"off\") %} Luci Spente {% else\
\ %} Luci Accese {% endif %} \n"
data:
inline_keyboard:
- 'Accendere:/accendibagni, Spegnere:/spegnibagni'
- 'Luci:/luci'
- '{{ "\u21a9\ufe0f" }} Menú Principale:/stop'
- id: accendibagnicompleto
alias: accendi bagni
hide_entity: true
trigger:
- platform: event
event_type: telegram_callback
event_data:
data: /accendibagni
action:
- service: light.turn_on
entity_id: group.bagni
- service: telegram_bot.answer_callback_query
data_template:
callback_query_id: '{{ trigger.event.data.id }}'
message: Controllo luci Bagni
- service: notify.telegram
data_template:
title: '*LUCI BAGNI*'
message: "{% if is_state(\"group.bagni\", \"off\") %} Luci Spente {% else\
\ %} Luci Accese {% endif %} \n"
data:
inline_keyboard:
- 'Accendere:/accendisala, Spegnere:/spegnisala'
- 'Luci:/luci'
- '{{ "\u21a9\ufe0f" }} Menú Principale:/stop'
- id: spegnibagnicompleto
alias: spegni bagni
hide_entity: true
trigger:
- platform: event
event_type: telegram_callback
event_data:
data: /spegnibagni
action:
- service: light.turn_off
entity_id: group.bagni
- service: telegram_bot.answer_callback_query
data_template:
callback_query_id: '{{ trigger.event.data.id }}'
message: Controllo Luci Bagni
- service: notify.telegram
data_template:
title: '*LUCI BAGNI*'
message: "{% if is_state(\"group.bagni\", \"off\") %} Luci Spente {% else\
\ %} Luci Accese {% endif %} \n"
data:
inline_keyboard:
- 'Accendere:/accendibagni, Spegnere:/spegnibagni'
- 'Luci:/luci'
- '{{ "\u21a9\ufe0f" }} Menú Principale:/stop'

################ STUDIO

- id: azzionistudio
alias: azioni luci studio
hide_entity: true
trigger:
- platform: event
event_type: telegram_callback
event_data:
data: /studio
action:
- service: telegram_bot.answer_callback_query
data_template:
callback_query_id: '{{ trigger.event.data.id }}'
message: Menú Luci Studio
- service: notify.telegram
data_template:
title: '*LUCI STUDIO*'
message: "{% if is_state(\"group.studio\", \"off\") %} Luci Spente {% else\
\ %} Luci Accese {% endif %} \n"
data:
inline_keyboard:
- 'Accendere:/accendistudio, Spegnere:/spegnistudio'
- 'Luci:/luci'
- '{{ "\u21a9\ufe0f" }} Menú Principale:/stop'
- id: accendistudiocompleto
alias: accendi studio
hide_entity: true
trigger:
- platform: event
event_type: telegram_callback
event_data:
data: /accendistudio
action:
- service: light.turn_on
entity_id: group.studio
- service: telegram_bot.answer_callback_query
data_template:
callback_query_id: '{{ trigger.event.data.id }}'
message: Controllo luci Studio
- service: notify.telegram
data_template:
title: '*LUCI STUDIO*'
message: "{% if is_state(\"group.studio\", \"off\") %} Luci Spente {% else\
\ %} Luci Accese {% endif %} \n"
data:
inline_keyboard:
- 'Accendere:/accendistudio, Spegnere:/spegnistudio'
- 'Luci:/luci'
- '{{ "\u21a9\ufe0f" }} Menú Principale:/stop'
- id: spegnistudiocompleto
alias: spegni studio
hide_entity: true
trigger:
- platform: event
event_type: telegram_callback
event_data:
data: /spegnistudio
action:
- service: light.turn_off
entity_id: group.studio
- service: telegram_bot.answer_callback_query
data_template:
callback_query_id: '{{ trigger.event.data.id }}'
message: Controllo Luci Studio
- service: notify.telegram
data_template:
title: '*LUCI STUDIO*'
message: "{% if is_state(\"group.studio\", \"off\") %} Luci Spente {% else\
\ %} Luci Accese {% endif %} \n"
data:
inline_keyboard:
- 'Accendere:/accendistudio, Spegnere:/spegnistudio'
- 'Luci:/luci'
- '{{ "\u21a9\ufe0f" }} Menú Principale:/stop'

################ CORRIDOIO

- id: azzionicorridoio
alias: azioni luci corridoio
hide_entity: true
trigger:
- platform: event
event_type: telegram_callback
event_data:
data: /corridoio
action:
- service: telegram_bot.answer_callback_query
data_template:
callback_query_id: '{{ trigger.event.data.id }}'
message: Menú Luci Corridoio
- service: notify.telegram
data_template:
title: '*LUCI CORRIDOIO*'
message: "{% if is_state(\"group.corridoio\", \"off\") %} Luci Spente {% else\
\ %} Luci Accese {% endif %} \n"
data:
inline_keyboard:
- 'Accendere:/accendicorridoio, Spegnere:/spegnicorridoio'
- 'Luci:/luci'
- '{{ "\u21a9\ufe0f" }} Menú Principale:/stop'
- id: accendicorridoiocompleto
alias: accendi corridoio
hide_entity: true
trigger:
- platform: event
event_type: telegram_callback
event_data:
data: /accendicorridoio
action:
- service: light.turn_on
entity_id: group.corridoio
- service: telegram_bot.answer_callback_query
data_template:
callback_query_id: '{{ trigger.event.data.id }}'
message: Controllo luci Corridoio
- service: notify.telegram
data_template:
title: '*LUCI CORRIDOIO*'
message: "{% if is_state(\"group.corridoio\", \"off\") %} Luci Spente {% else\
\ %} Luci Accese {% endif %} \n"
data:
inline_keyboard:
- 'Accendere:/accendicorridoio, Spegnere:/spegnicorridoio'
- 'Luci:/luci'
- '{{ "\u21a9\ufe0f" }} Menú Principale:/stop'
- id: spegnicorridoiocompleto
alias: spegni corridoio
hide_entity: true
trigger:
- platform: event
event_type: telegram_callback
event_data:
data: /spegnicorridoio
action:
- service: light.turn_off
entity_id: group.corridoio
- service: telegram_bot.answer_callback_query
data_template:
callback_query_id: '{{ trigger.event.data.id }}'
message: Controllo Luci Corridoio
- service: notify.telegram
data_template:
title: '*LUCI CORRIDOIO*'
message: "{% if is_state(\"group.corridoio\", \"off\") %} Luci Spente {% else\
\ %} Luci Accese {% endif %} \n"
data:
inline_keyboard:
- 'Accendere:/accendicorridoio, Spegnere:/spegnicorridoio'
- 'Luci:/luci'
- '{{ "\u21a9\ufe0f" }} Menú Principale:/stop'

################ SCALE
- id: azzioniscale
alias: azioni luci scale
hide_entity: true
trigger:
- platform: event
event_type: telegram_callback
event_data:
data: /scale
action:
- service: telegram_bot.answer_callback_query
data_template:
callback_query_id: '{{ trigger.event.data.id }}'
message: Menú Luci Scale
- service: notify.telegram
data_template:
title: '*LUCI SCALE*'
message: "{% if is_state(\"light.luce_scale\", \"off\") %} Luci Spente {% else\
\ %} Luci Accese {% endif %} \n"
data:
inline_keyboard:
- 'Accendere:/accendiscale, Spegnere:/spegniscale'
- 'Luci:/luci'
- '{{ "\u21a9\ufe0f" }} Menú Principale:/stop'
- id: accendiscalecompleto
alias: accendi scale
hide_entity: true
trigger:
- platform: event
event_type: telegram_callback
event_data:
data: /accendiscale
action:
- service: light.turn_on
entity_id: light.luce_scale
- service: telegram_bot.answer_callback_query
data_template:
callback_query_id: '{{ trigger.event.data.id }}'
message: Controllo luci Scale
- service: notify.telegram
data_template:
title: '*LUCI SCALE*'
message: "{% if is_state(\"light.luce_scale\", \"off\") %} Luci Spente {% else\
\ %} Luci Accese {% endif %} \n"
data:
inline_keyboard:
- 'Accendere:/accendiscale, Spegnere:/spegniscale'
- 'Luci:/luci'
- '{{ "\u21a9\ufe0f" }} Menú Principale:/stop'
- id: spegniscalecompleto
alias: spegni scale
hide_entity: true
trigger:
- platform: event
event_type: telegram_callback
event_data:
data: /spegniscale
action:
- service: light.turn_off
entity_id: light.luce_scale
- service: telegram_bot.answer_callback_query
data_template:
callback_query_id: '{{ trigger.event.data.id }}'
message: Controllo Luci Scale
- service: notify.telegram
data_template:
title: '*LUCI SCALE*'
message: "{% if is_state(\"light.luce_scale\", \"off\") %} Luci Spente {% else\
\ %} Luci Accese {% endif %} \n"
data:
inline_keyboard:
- 'Accendere:/accendiscale, Spegnere:/spegniscale'
- 'Luci:/luci'
- '{{ "\u21a9\ufe0f" }} Menú Principale:/stop'

I blocchi sostanzialmente si ripetono tranne il primo che è il menù delle luci. Inizierà dando delle info sullo stato di alcune gruppi di luci per poi far comparire il menù selezionabile delle singole o gruppi di luci.

Nel creare nuovi pulsanti e automazioni dovremmo verificare che l’identificazione del tasto (es. /sala) sia lo stesso dichiarato nell’automazione che si vuole richiamare sulla riga data (es. /sala). Nell’esempio il tasto Sala richiamerà l’automazione azioni luci sala.

Premendo il tasto sala si aprirà un secondo menù, darà all’inizio lo stato attuale della lampada e poi i tasti per accenderla o spegnerla.

Questo è dato dalle due automazioni accendi sala e spegni sala.

 

Telegram Sistema.yaml

- id: infosistema
alias: Info Sistema
hide_entity: true
trigger:
- platform: event
event_type: telegram_callback
event_data:
data: /sistema
action:
- service: telegram_bot.answer_callback_query
data_template:
callback_query_id: '{{ trigger.event.data.id }}'
message: Sistema
- service: notify.telegram
data_template:

message: >-

{{ "\U0001F4BB" }} *SISTEMA*:

*Uso CPU*: {{ states.sensor.processor_use.state }} %

*Tempo attivo*: {{ states.sensor.uptime.state }}

*Ultimo Riavvio*: {{ states.sensor.last_boot.state }}

*Temp CPU*: {{ states.sensor.cpu_temp.state }}

*Memoria Libera*: {{ states.sensor.memory_free.state }}

*Memoria Usata*: {{ states.sensor.memory_usage_real.state }}

data:
inline_keyboard:
- '{{ "\u21a9\ufe0f" }} Menú Principale:/stop'

Questo menù ci permetterà di vedere lo stato del Raspberry visualizzando alcuni sensori. Sarà necessario aggiungere i seguenti sensori se non li avete già inclusi per visualizzare lo stato di HA.

sensor:
- platform: command_line
name: CPU Temp
command: "cat /sys/class/thermal/thermal_zone0/temp"
unit_of_measurement: "°C"
value_template: '{{ value | multiply(0.001) | round(1) }}'

- platform: systemmonitor
resources:
- type: disk_use_percent
arg: /home
- type: memory_free
- type: last_boot
- type: processor_use

- platform: uptime
unit_of_measurement: hours

 

Telegram Meteo.yaml

- id: infometeo
alias: info meteo
hide_entity: true
trigger:
- platform: event
event_type: telegram_callback
event_data:
data: /meteo
action:
- service: telegram_bot.answer_callback_query
data_template:
callback_query_id: '{{ trigger.event.data.id }}'
message: Meteo
- service: notify.telegram
data_template:

message: >-

{{ "\U00002600" }} *METEO*:
------------------------------------------------

*Tempo*: {{ states.sensor.dark_sky_summary_tmpl.state}}

*Temp. domani Max/Min*: {{ states.sensor.dark_sky_daily_high_temperature_1.state}}/{{ states.sensor.dark_sky_daily_low_temperature_1.state}} °C

*Previsioni*: {{ states.sensor.dark_sky_hourly_summary_tmpl.state}}

data:
inline_keyboard:
- '{{ "\u21a9\ufe0f" }} Menú Principale:/stop'

Per visualizzare queste informazioni abbiamo bisogno di configurare darksky

 

Telegram Sensori.yaml

- id: infosensori
alias: info sensori
hide_entity: true
trigger:
- platform: event
event_type: telegram_callback
event_data:
data: /sensori
action:
- service: telegram_bot.answer_callback_query
data_template:
callback_query_id: '{{ trigger.event.data.id }}'
message: Sensori
- service: notify.telegram
data_template:

message: >-

{{ "\U0001F6AA" }} *SENSORI*:

*Stato Porte Finestre*:

*Porta Ingresso* {{ state_attr('binary_sensor.0x00158d00024b3317_contact', 'contact') }}

*Porta Cameretta* {{ state_attr('binary_sensor.0x00158d0001e773aa_contact', 'contact') }}

*Finestra Terrazzo* {{ state_attr('binary_sensor.0x00158d0001e74ab4_contact', 'contact') }}

-----------------------------------

{{ "\U0001F321" }} *TEMPERATURE*:

*Temperatura Sala*: {{ state_attr('sensor.0x00158d0002227ec4_temperature', 'temperature') }} ºC

*Temperatura Cucina*: {{ state_attr('sensor.0x00158d00022cac7b_temperature', 'temperature') }} ºC

*Temperatura Salagiochi*: {{ state_attr('sensor.0x00158d0001fa5436_temperature', 'temperature') }} ºC

*Temperatura Matrimoniale*: {{ state_attr('sensor.0x00158d0001f46f6f_temperature', 'temperature') }} ºC

*Temperatura Cameretta*: {{ state_attr('sensor.0x00158d0001f4713e_temperature', 'temperature') }} ºC

*Temperatura Studio*: {{ state_attr('sensor.0x00158d000223f3f4_temperature', 'temperature') }} ºC

*Temperatura Bagno D.*: {{ state_attr('sensor.0x00158d0002227f42_temperature', 'temperature') }} ºC

*Temperatura Bagno V.*: {{ state_attr('sensor.0x00158d0001fa3d12_temperature', 'temperature') }} ºC

data:
inline_keyboard:
- '{{ "\u21a9\ufe0f" }} Menú Principale:/stop'

Nel mio caso ho messo i sensori che ho accoppiato con la chiavetta ZigBee, quindi per estrarre lo stato la formula sarà leggermente diversa.

{{ states.sensor.sensorexxxx.state }}

 

Telegram Security.yaml

Per coloro che hanno un sistema di allarme integrato in Home Assistant possono gestirlo da una richiesta Telegram.

- id: allarme
alias: telegram alarm
hide_entity: true
trigger:
- platform: event
event_type: telegram_callback
event_data:
data: /sicurezza
action:
- service: telegram_bot.answer_callback_query
data_template:
callback_query_id: '{{ trigger.event.data.id }}'
message: Seguridad
- service: notify.telegram
data_template:
title: Menù Security
message: >
{% if is_state("alarm_control_panel.enrico", "disarmed") %} Allarme Disabilitato {% else %} Allarme Attivato {% endif %}
data:
inline_keyboard:
- 'Away ON:/away_on, Away OFF:/away_off'
- 'Home ON:/alarm_on, Home OFF:/alarm_off'
- 'Silenzioso ON:/alarm_on, Silezioso OFF:/alarm_off'
- '{{ "\u21a9\ufe0f" }} Menú Principale:/stop'

###Automazione per attivazione allarme
- id: allarmeattivazione
alias: telegram attivazione allarme
hide_entity: true
trigger:
- platform: event
event_type: telegram_callback
event_data:
data: '/away_on'
action:
- service: alarm_control_panel.alarm_arm_away
entity_id: alarm_control_panel.enrico
- service: telegram_bot.answer_callback_query
data_template:
callback_query_id: '{{ trigger.event.data.id }}'
message: 'Submenu Opcion 1'
- service: notify.telegram
data_template:
title: 'Menù Allarme'
message: >
{% if is_state("alarm_control_panel.enrico", "disarmed") %} Allarme Disabilitato {% else %} Allarme Attivato {% endif %}
data:
inline_keyboard:
- 'Away ON:/away_on, Away OFF:/away_off'
- 'Home ON:/alarm_on, Home OFF:/alarm_off'
- 'Silenzioso ON:/alarm_on, Silenzioso OFF:/alarm_off'
- '{{ "\u21a9\ufe0f" }} Menú Principale:/stop'

###Automazione per disattivare allarme
- id: allarmedisattivazione
alias: telegram disattivazione allarme
hide_entity: true
trigger:
- platform: event
event_type: telegram_callback
event_data:
data: '/away_off'
action:
- service: alarm_control_panel.alarm_disarm
data:
entity_id: alarm_control_panel.enrico
code: 123
- service: telegram_bot.answer_callback_query
data_template:
callback_query_id: '{{ trigger.event.data.id }}'
message: 'Menù Allarme'
- service: notify.telegram
data_template:
title: 'Menu Opzione1'
message: >
{% if is_state("alarm_control_panel.enrico", "disarmed") %} Alarma Desactivada {% else %} Alarma Activada {% endif %}
data:
inline_keyboard:
- 'Away ON:/away_on, Away OFF:/away_off'
- 'Home ON:/alarm_on, Home OFF:/alarm_off'
- 'Silenzioso ON:/alarm_on, Silenzioso OFF:/alarm_off'
- '{{ "\u21a9\ufe0f" }} Menú Principale:/stop'

Vi rimando per domande o discussioni al link del nostro forum

http://forum.hassiohelp.eu/showthread.php?tid=222

 

20 risposte

  1. Manuel Bianchi ha detto:

    Ciao..
    Ottimo progetto, ma ho delle difficoltà con i sensori delle porte.
    Nella guida è specificato l’uso dei sensori Xiaomi con Ziig Bee door/windows, ma con usando il gateway è da compilare così?

    *Porta Ingresso* {{ states.binary_sensor.door_window_sensor_158d000110aa16.state }}

    • Enrico ha detto:

      Per provare se funziona vai su Strumenti per Sviluppatori, modelli e copi la tua stringa {{….}} Se a destra ti compare lo stato corretto sei a posto.

  2. Lorenzo ha detto:

    Ciao, bellissimo articolo, era proprio quello che cercavo. Però è spiegato solo il lato HA e per quanto riguarda il lato telegram? Come faccio a creare i menu ed i pulsanti come si vede in foto?
    Ciao Lorenzo

    • Enrico ha detto:

      In automatico dando il comando /start in Telegram compaiono i menù che hai creato in HA

      • Lorenzo ha detto:

        Ciao, forse non mi sono spiegato, lo so che dando il comando start sia avvia il bot di telegram, ma i menu come si creano e soprattutto come li collego ad HA per fargli eseguire il comando? Non credo che creando solo il pulsante si colleghi automaticamente.
        Ciao e grazie

        • Enrico ha detto:

          Io do per scontato che tu abbia già configurato il bot Telegram con HA. I pulsanti meglio le loro azioni le che programmando le automazioni che sono ben descritte nell’articolo poi sta a te creartene di nuove

  3. woody ha detto:

    Grazie per aver condiviso questo articolo.

    Ho solo un problema con l’inline keyboard delle luci.

    Ogni volta che richiamo una delle luci per fare in modo che appaia il sotto menu per accendere e spegnere, quest’ultimo menù appare 3 volte, uno di seguito all’altro.

    Cosa posso controllare per evitare ciò?

    Grazie

  4. Giovanni ha detto:

    salve a tutti,
    ho configurato quanto sopra indicato ma l’azione
    action:
    – service: notify.telegram
    non fa rispondere il bot. Risolvo sostituendo con notify.NOME creato ad hoc, ma vorrei usare una risposta automatica in relazione all’utente che invia il comando tra i vari utenti che ho autorizzato ad interagire con il bot che ho inserito nella lista allowed_chat_ids.
    ho provato con telegram_bot.send_message ma risponde sempre allo stesso utente anche se altri utenti danno il comando.
    Qualche idea?
    Grazie,
    Giovanni

    • Giancarlo ha detto:

      Ciao anche io vorrei che il bot rispondesse con un messaggio solo a chi ha premuto il tasto di accensione luce ad esempio per dare la conferma solo a quell’utente. C’è la variabile che identifica l’utente che ha mandato il comando?

      • Giovanni ha detto:

        Ho risolto così:
        action:
        – service: telegram_bot.send_message
        data_template:
        target: ‘{{ trigger.event.data.user_id }}’
        message: ‘ {{ trigger.event.data.from_first }}, *TESTO DEL MESSAGGIO *’

  5. matteo lio ha detto:

    a me il bot non risponde.. ho gia provato piu volte

  6. Giovanni ha detto:

    Con la versione di HA 2022.4.xx non vengono più recuperati i dati del trigger derivanti da inline keyboard. Ho questa automazione:
    – id: telegram_temperatura_salone
    alias: telegram_temperatura_salone
    trigger:
    – platform: event
    event_type: telegram_callback
    event_data:
    data: /temp_salone_richiesta
    action:
    – service: telegram_bot.send_message
    data_template:
    target: ‘{{ trigger.event.data.user_id }}’
    message: ‘ temperatura salone = {{ states(”sensor.salone_temperatura”) }} C’

    che risponde all’utente che clicca sul pulsante di richiesta temperatura.
    Dalla versione di aprile non riconosce più il target: ‘{{ trigger.event.data.user_id }}’ e quindi non invia più il messaggio. Non trovo notizie nel changelog dell’aggiornamento. Qualcuno sa come risolvere?
    Grazie

    • giovanni ha detto:

      Mi rispondo da solo,
      è cambiata la struttura quindi non bisogna più usare trigger.event.data.user_id ma seguire la nuova con trigger.event.data.message.chat.id come è possibile controllare ascoltando l’evento telegram_callback

  7. DAVIDE ha detto:

    il link non è più attivo,qualcuno potrebbe inviarmi i file in privato ?
    grazie

  8. Speed ha detto:

    Il link Richiesta bot Telegram.zip non è più attivo purtroppo, si può ripristinare?

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Advertisment ad adsense adlogger