J’ai réussi à améliorer la lecture et la contraction du code:
Pour expliquer:
Je créé toujours des variables contenant l’écriture française. J’ajoute cette fois-ci le mois pour etre plus polyvalent
(Vous noterez que j’ai commencé la table mois avec une valeur vide, car je ne sais pas gerer le mois 0…):
{% set mois = ["","Janvier","Fevrier","Mars","Avril","Mai","Juin","Juillet","Aout","Septembre","Octobre","Novembre","Decembre"] %}
{% set jours = ["Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi","Dimanche"] %}
Je réduis un peu mon code à une variable device pour la compréhension (mon but à moi est d’avoir le datetime du dernier changement d’état d’une liste de device, mais cela fonctionne avec un seul device):
{% set device = ([
states.binary_sensor.porte_001.last_changed,
states.binary_sensor.porte_002.last_changed,
states.binary_sensor.porte_003.last_changed,
states.binary_sensor.porte_004.last_changed,
states.binary_sensor.porte_005.last_changed
]|max) %}
Et je fais référence à mes deux tables à l’aide du chiffre du jour de la semaine, et du numéro du mois pour avoir une date complètement française et configurable comme on le veut:
{{ jours[device.weekday()] }}
:
me donne le jour en Français en lieu est place de {{ device.strftime("%A") }}
:
{{ device.day }}
ou {{ device.strftime("%d") }}
:
me donneront le chiffre du jour dans le mois.
{{ mois[device.month]}}
:
me donnera le mois en Français en lieu est place de {{ device.strftime("%B") }}
:
{{ as_local(device).strftime("%H:%M") }}
:
me donne l’heure et les minutes, en forçant la localisation de l’heure (pour gérer le décalage été/hiver)
Pour résumer:
{% set mois = ["","Janvier", "Fevrier","Mars","Avril","Mai","Juin","Juillet","Aout","Septembre","Octobre","Novembre","Decembre"] %}
{% set jours = ["Lundi", "Mardi","Mercredi","Jeudi","Vendredi","Samedi","Dimanche"] %}
{% set device = ([
states.binary_sensor.porte_001.last_changed,
states.binary_sensor.porte_002.last_changed,
states.binary_sensor.porte_003.last_changed,
states.binary_sensor.porte_004.last_changed,
states.binary_sensor.porte_005.last_changed
]|max) %}
Le {{ jours[device.weekday()] }} {{ device.day }} {{ mois[device.month]}} à {{ as_local(device).strftime("%Hh%M") }}
Me retourne dans mon sensor :
