Bonjour Messieurs,
Nouveau sur le forum mais aussi sur home assistant, je sollicite votre aide pour une configuration d’automatisation avec telegram.
En effet, je suis un couche tard et est tendance à m’endormir devant la TV, du coup sur Jeedom j’avais crée un scénario basique avec notification telegram de cette façon programmé à 1H du mat:
la condition si Etat Denon X2400H (ampli) est "on "
Action-> notification telegram:
→ dois-je éteindre la tv ?
OUI / NON
OUI: appel du scénario/script de l’extinction de la tv (vidéoprojecteur, ampli, chromcast, kodi ) grâce au HUB harmony
NON: donne la réponse « bon film »
Jusque là je pense pouvoir le gérer sur HA, mais le problème c’est que sur Jeedom j’avais rajouté un empty=1 (durée 120) qui lançais l’extinction de la tv si pas de réponse au bout de 120 sec, mais je ne sais vraiment pas comment le retranscrire sur HA.
Pouvez-vous m’aider svp?
Je n’utilise pas encore NodeRed, j’essaye de me familiariser avec les outils uniquement HA me permettant de mieux appréhender la suite des futures automatisations.
Mon HA est sous ESX, parti directement de la OVA officiel, mon telegram est opérationnel (nouveau bot pour HA et bien configuré).
Merci d’avance
Petit UP svp
J’avoue je galère et ne trouve pas d’info…
Rapidement, passe par un booléen qui se mets à Vrai lors de l’envoi du telegram initial.
Ensuite, tu lances un minuteur et à sa fin, si le booléen est encore à Vrai, tu exécutes tes actions.
Et dans les actions de la réponses telegram, tu passes le booléen à Faux.
1 « J'aime »
Ok je vais regarder de ce côté merci pour l’info
au cas où, utilises tu node red?
ah merdouille, lol …on dirait que je n’avais pas tout lu
1 « J'aime »
bon je test je test mais j’ai vraiment beaucoup de mal.
je sais que inconsciemment je pense et réfléchi jeedom (mais j’essaye de m’en défaire) mais dur à poser la logique.
Vu la puissance du système c’est surement faisable mais j’ai du mal à comprendre
J’essaierai de me rendre disponible dans la semaine pour voir ça avec toi si personne n’intervient
1 « J'aime »
merci c’est cool ton aide est grandement appréciée
1 « J'aime »
Comme promis:
Le code ci-dessous permet, selon ta demande :
- Envoi d’un message Telegram à heure fixe (
input_datetime.telegram_tv_horaire
)
- Réception du même message en envoyant la commande
/tv
depuis Telegram vers HA
- Choix possible dans le message :
- Oui (extinction)
- Non (aucune action)
- Minuteur de la durée définie (
timer.telegram_tv_time_out
) arrivé à terme (Extinction)
Il faut renseigner dans le fichier secrets
l’identifiant Telegram telegram_chat_id
(utilisé dans l’automatisation horaire)
Le principe est le suivant :
- Une automatisation scrute la commande
/tv
et envoie le message
- Une automatisation envoie le message à heure fixe
- Une automatisation scrute la réponse Oui et exécute le script
script.extinction_tv
- Une automatisation scrute la réponse
Non
- Une automatisation lance le minuteur
- Une automatisation scrute la fin du minuteur et exécute le script
script.extinction_tv
Le code :
#Fichier secrets.yaml
#telegram_chat_id: 12345678 #chat_id utilisé par l'intégration Telegram
#Configurtion Packages
#################################################
# Les entités utilisées dans les automatisations#
#################################################
input_datetime:
telegram_tv_horaire:
name: Heure de déclenchement (Telegram TV)
has_date: false
has_time: true
input_boolean:
telegram_tv_minuteur_actif:
#Permet de lancer le minuteur
name: TimeOut actif (Telegram TV)
icon: mdi:timer-sand
input_text:
telegram_tv_last_chat_id:
#Permet de conserver la dernière personne ayant demandé la commande /tv
name: Dernière personne contactée (Telegram TV)
timer:
telegram_tv_time_out:
#Le minuteur avant extinction automatique
name: TimeOut (Telegram TV)
duration: "00:01:00"
icon: mdi:timer-sand
#################################################
#################################################
# Les automatisations #
#################################################
automation:
#####################################
# La question #
#####################################
############################
# Réception de la commande #
# Envoi de la question #
############################
- alias: _hacf_telegram_tv_commande
trigger:
- platform: event
event_type: telegram_command
event_data:
command: /tv
action:
- service: input_boolean.turn_on
target:
entity_id: input_boolean.telegram_tv_minuteur_actif
- service: input_text.set_value
target:
entity_id: input_text.telegram_tv_last_chat_id
data:
value: "{{ trigger.event.data.chat_id }}"
- service: timer.start
target:
entity_id: timer.telegram_tv_time_out
- service: telegram_bot.send_message
data:
title: "*Il est tard (/tv) \U0001F319*"
message: |-
Faut-il éteindre la télé ? 📺
target: "{{ trigger.event.data.chat_id }}"
inline_keyboard:
- "Oui - \U0001F634:/tv_oui, Non - \U0001F3A6️:/tv_non"
mode: single
############################
############################
# Horaire définie #
# Envoi de la question #
############################
- alias: _hacf_telegram_tv_horaire
trigger:
- platform: time
at: input_datetime.telegram_tv_horaire
action:
- service: input_boolean.turn_on
target:
entity_id: input_boolean.telegram_tv_minuteur_actif
- service: input_text.set_value
target:
entity_id: input_text.telegram_tv_last_chat_id
data:
value: !secret telegram_chat_id
- service: timer.start
target:
entity_id: timer.telegram_tv_time_out
- service: telegram_bot.send_message
data:
title: "*Il est tard (/tv) \U0001F319*"
message: |-
Faut-il éteindre la télé ? 📺
target: "{{ states('input_text.telegram_tv_last_chat_id') }}"
inline_keyboard:
- "Oui - \U0001F634:/tv_oui, Non - \U0001F3A6️:/tv_non"
mode: single
############################
############################
# Lancement du minuteur #
############################
- id: '_hacf_telegram_tv_timeout'
alias: _hacf_telegram_tv_timeout
trigger:
- platform: state
entity_id: input_boolean.telegram_tv_minuteur_actif
to: 'on'
action:
# - delay:
# seconds: 5
- service: input_boolean.turn_off
target:
entity_id: input_boolean.telegram_tv_minuteur_actif
############################
############################
# Réception de la réponse #
# NON #
############################
- id: '_hacf_telegram_tv_non'
alias: _hacf_telegram_tv_non
trigger:
- platform: event
event_type: telegram_callback
event_data:
data: '/tv_non'
action:
- service: input_boolean.turn_off
target:
entity_id: input_boolean.telegram_tv_minuteur_actif
- service: telegram_bot.answer_callback_query
data:
callback_query_id: '{{ trigger.event.data.id }}'
message: "Bon Film ! \U0001F37F"
- service: telegram_bot.edit_replymarkup
data:
message_id: '{{ trigger.event.data.message.message_id }}'
chat_id: '{{ trigger.event.data.user_id }}'
inline_keyboard: []
############################
############################
# Réception de la réponse #
# OUI #
############################
- id: '_hacf_telegram_tv_oui'
alias: _hacf_telegram_tv_oui
trigger:
- platform: event
event_type: telegram_callback
event_data:
data: '/tv_oui'
action:
- service: input_boolean.turn_off
target:
entity_id: input_boolean.telegram_tv_minuteur_actif
- service: telegram_bot.answer_callback_query
data:
callback_query_id: '{{ trigger.event.data.id }}'
message: "Bonne nuit ! \U0001F6CF️"
- service: telegram_bot.edit_replymarkup
data:
message_id: '{{ trigger.event.data.message.message_id }}'
chat_id: '{{ trigger.event.data.user_id }}'
inline_keyboard: []
####################
# Actions à réaliser
####################
- service: script.extinction_tv
############################
############################
# Pas de réponse #
# TimeOut #
############################
- id: '_hacf_telegram_tv_timeout_finished'
alias: _hacf_telegram_tv_timeout_finished
trigger:
- platform: event
event_type: timer.finished
event_data:
entity_id: timer.telegram_tv_time_out
action:
- service: telegram_bot.edit_message
data:
message_id: 'last'
chat_id: "{{ states('input_text.telegram_tv_last_chat_id') }}"
title: "*Il est tard (/tv) \U0001F319*"
message: "\U0001F4A4 Extinction automatique"
- service: input_text.set_value
target:
entity_id: input_text.telegram_tv_last_chat_id
data:
value: ""
####################
# Actions à réaliser
####################
- service: script.extinction_tv
############################
#################################################
# Les Scripts #
#################################################
script:
extinction_tv:
#Contient les actions à réaliser en cas d'extinction demandé ou timeout
sequence:
- service: switch.turn_off
target:
entity_id: switch.tv
- delay:
milliseconds: 500
- service: switch.turn_off
target:
entity_id: switch.ampli
Des questions ? Attention ! Tu auras des réponses
PS :
Il me semble plus propre d’utiliser le service telegram_bot.edit_message
en lieu et place de telegram_bot.edit_replymarkup
. A toi de faire la modification en t’inspirant de l’utilisation déjà réalisée dans l’automatisation :automation._hacf_telegram_tv_timeout_finished
+1:
1 « J'aime »
1000000000000000000000000000 merci!!!
C’est plus une entraide c’est carrément le tuto personnalisé au petit oignon!!!
Grand merci encore à toi Clemalex !!!
Je n’aurais jamais trouvé cette config (malgré de nombreux heure sur google )
J’ai une question, la réponse /tv_non devrait arrêter le timer normalement ?
Malheureusement le timer continue son décompte et exécute le script d’extinction…
Dois-je appeler un autre service dans l’automatisation « NON » ?
1 « J'aime »
Plusieurs chose :
Cette automatisation ne sert à rien… :
Elle m’était utile pour le debug.
Tu dois la supprimer
J’ai effectivement oublié (j’y avais pensé pourtant d’où l’utilisation du booléen input_boolean.telegram_tv_minuteur_actif
) l’ajout de la condition dans l’automatisation _hacf_telegram_tv_timeout_finished
:
############################
# Pas de réponse #
# TimeOut #
############################
- id: '_hacf_telegram_tv_timeout_finished'
alias: _hacf_telegram_tv_timeout_finished
trigger:
- platform: event
event_type: timer.finished
event_data:
entity_id: timer.telegram_tv_time_out
condition: #<-- l'oubli est ici ;-)
- condition: state
entity_id: input_boolean.telegram_tv_minuteur_actif
state: 'on'
action:
- service: telegram_bot.edit_message
data:
message_id: 'last'
chat_id: "{{ states('input_text.telegram_tv_last_chat_id') }}"
title: "*Il est tard (/tv) \U0001F319*"
message: "\U0001F4A4 Extinction automatique"
- service: input_text.set_value
target:
entity_id: input_text.telegram_tv_last_chat_id
data:
value: ""
####################
# Actions à réaliser
####################
- service: script.extinction_tv
############################
Tu peux observer qu’une réponse (oui ou non) entraine la mise à faux de ce booléen, et donc le minuteur se termine mais l’automatisation ne se déclenche pas dû fait de la condition
1 « J'aime »
Tu es un chef!!!
Bon je me sens vraiment largué jamais je n’aurais trouvé!!
Du coup cela me fait un peu peur pour la suite, pourtant j’aime cherché énormément par moi même.
Tu es Dev à tout hasard si ce n’est pas indiscret?