Du coup pour ceux que ça peu intéresser, voici mes automatisations :
La première c’est pour les notifications :
alias: Poubelles - Notification Interactive
description: >-
Envoie la notification le dimanche à 18h pour la poubelle Jaune ou Marron
(semaine P/I).
triggers:
- at: "18:00:00"
trigger: time
conditions:
- condition: time
weekday:
- sun
actions:
- variables:
semaine_paire: "{{ (now().isocalendar()[1] | int) % 2 == 0 }}"
poubelle_data: |
{% if semaine_paire %}
{% set data = {'couleur': 'JAUNE', 'callback': '/oui_jaune'} %}
{% else %}
{% set data = {'couleur': 'MARRON', 'callback': '/oui_marron'} %}
{% endif %}
{{ data }}
keyboard_list:
- - - Oui, je la sors (Compter)
- "{{ poubelle_data.callback }}"
- - Non, je ne la sors pas
- /non_{{ poubelle_data.couleur | lower }}
- data:
config_entry_id: ##################
message: >-
🗑️ Ramassage demain ! Pensez à sortir la **POUBELLE {{
poubelle_data.couleur }}** ce soir. L'avez-vous sortie ?
inline_keyboard: "{{ keyboard_list }}"
action: telegram_bot.send_message
mode: single
Je recois donc une notif pour savoir quelle poubelle sortir :

Et quand je clic sur oui ou sur Non, le message change et mon compteur s’incrémente :

Et donc le code pour la 2eme est la réponse :
alias: Poubelles - Gestion des Réponses Telegram et Comptage
description: Écoute tous les clics et gère les compteurs et la réponse.
triggers:
- event_type: telegram_callback
trigger: event
conditions: []
actions:
- variables:
callback_id: "{{ trigger.event.data.id }}"
commande: "{{ trigger.event.data.data }}"
is_yes: "{{ 'oui' in commande }}"
couleur_raw: "{{ commande.split('_')[-1] }}"
couleur: "{{ couleur_raw | upper }}"
compteur_cible: |
{% if 'marron' in commande %}
counter.poubelle_marron_compteur
{% elif 'jaune' in commande %}
counter.poubelle_jaune_compteur
{% else %}
none
{% endif %}
- data:
callback_query_id: "{{ callback_id }}"
message: >-
{% if is_yes %}Comptage effectué.{% else %}Réponse enregistrée.{% endif
%}
show_alert: false
action: telegram_bot.answer_callback_query
- if:
- condition: template
value_template: "{{ is_yes }}"
then:
- target:
entity_id: "{{ compteur_cible }}"
action: counter.increment
- variables:
message_confirmation: >-
✅ C'est noté ! Poubelle {{ couleur }} sortie. Total: {{
states(compteur_cible) }}
else:
- variables:
message_confirmation: >-
❌ C'est noté. La poubelle {{ couleur }} NE sera PAS sortie cette
fois.
- data:
message_id: "{{ trigger.event.data.message.message_id }}"
chat_id: "{{ trigger.event.data.chat_id }}"
message: "{{ message_confirmation }}"
inline_keyboard: []
action: telegram_bot.edit_message
mode: single
Suivi de l’affichage :
Avec le code de la tuile :
type: vertical-stack
cards:
- type: custom:mushroom-title-card
title: 🗑️ Gestion des Poubelles
subtitle: Résumé & Prochain passage
- type: custom:mushroom-chips-card
chips:
- type: entity
entity: counter.poubelle_jaune_compteur
name: Jaune
icon: mdi:trash-can
icon_color: yellow
- type: entity
entity: counter.poubelle_marron_compteur
name: Marron
icon: mdi:trash-can
icon_color: brown
alignment: center
- type: custom:mushroom-template-card
icon: mdi:calendar
icon_color: green
primary: |
{% set semaine = now().isocalendar()[1] %}
{% if semaine % 2 == 0 %}
🟡 Prochaine poubelle : Jaune
{% else %}
🟤 Prochaine poubelle : Marron
{% endif %}
secondary: >
{% macro fr_jour(date) %}
{% set j = ['lundi','mardi','mercredi','jeudi','vendredi','samedi','dimanche'] %}
{{ j[date.weekday()] }}
{% endmacro %}
{% macro fr_mois(date) %}
{% set m = ['janvier','février','mars','avril','mai','juin','juillet','août','septembre','octobre','novembre','décembre'] %}
{{ m[date.month - 1] }}
{% endmacro %}
📅 Passage : {{ fr_jour(now() + timedelta(days=(7 - now().weekday()))) |
capitalize }}
{{ (now() + timedelta(days=(7 - now().weekday()))).day }}
{{ fr_mois(now() + timedelta(days=(7 - now().weekday()))) }}
- type: custom:mushroom-template-card
icon: mdi:message-alert
icon_color: blue
primary: 🕕 Prochaine notification
secondary: |
{% macro fr_jour(date) %}
{% set j = ['lundi','mardi','mercredi','jeudi','vendredi','samedi','dimanche'] %}
{{ j[date.weekday()] }}
{% endmacro %}
{% macro fr_mois(date) %}
{% set m = ['janvier','février','mars','avril','mai','juin','juillet','août','septembre','octobre','novembre','décembre'] %}
{{ m[date.month - 1] }}
{% endmacro %}
📆 Dimanche à 18h
(veille du passage :
{{ fr_jour(now() + timedelta(days=(7 - now().weekday()))) | capitalize }}
{{ (now() + timedelta(days=(7 - now().weekday()))).day }}
{{ fr_mois(now() + timedelta(days=(7 - now().weekday()))) }})