Bonjour,
dans les cartes synlology / raspberry / livebox et autres de notre ami @WarC0zes
l’uptime s’affiche comme ceci:
entities:
- entity: sensor.ds920_dernier_demarrage
name: Uptime
format: total
mais mes routeurs ne me donnent que l’uptime en secondes :
{{ states('sensor.ds920_dernier_demarrage') }} 2024-04-10T11:31:24+00:00
{{ states('sensor.sagem_emta62_2_temps_de_fonctionnement') }} 118780
{{ now() }} 2024-04-18 18:20:09.212570+02:00
Si je comprend bien, il faut que je transforme mon uptime en date, du style now - uptime
mais
{{ (now() - states('sensor.sagem_emta62_2_temps_de_fonctionnement') ) }}
ca passe pas…
mais…
en plus, j’ai besoin de ne l’exécuter qu’une fois, pas la peine de garder des variables en rab, non ?
alors, vous avez une idée pour calculer mon sensor.sagem_dernier_demarrage
??
Salut,
j’avais fais ce template sensor pour un uptime d’un esp qui est en secondes. Depuis je suis passer par un lambda sur esphome
- name: Bluetooth Proxy Uptime Readable
state: >-
{% set uptime = states.sensor.atom_bluetooth_proxy_ad7a6c_ble_proxy_uptime.state | int(0) %}
{% set jours = (uptime / 86400) | int(0) %}
{%- if jours > 0 -%}
{{ jours }} jours, {{ (uptime - (jours * 86400)) | int(0) | timestamp_custom('%H:%M:%S', false) }}
{%- else -%}
{{ uptime | int(0) | timestamp_custom('%H:%M:%S', false) }}
{%- endif -%}
unique_id: bluetooth_proxy_uptime_readable
1 « J'aime »
Hello,
j’ai peut être avancé, mais…
voila mes templates
##### For Boot time gateways ######################################
- name: SAGEM EMTA62-2 Last Boot
state: >-
{% set timeb = as_timestamp(now())|int - states.sensor.sagem_emta62_2_temps_de_fonctionnement.state | int(0) %}
{{ timeb | timestamp_custom('%Y-%m-%d %H:%M:%S+02:00') }}
unique_id: sagem_emta62_2_last_boot
- name: Orange Livebox Last Boot
state: >-
{% set timec = as_timestamp(now())|int - states.sensor.orange_livebox_temps_de_fonctionnement.state | int(0) %}
{{ timec | timestamp_custom('%Y-%m-%d %H:%M:%S+02:00') }}
unique_id: orange_livebox_last_boot
##### END Boot time gateways ######################################
Alors, j’ai mis dans la carte l’entrée dernier démarrage de mon DS920 et celle que j’ai fabriquée et ca donne çà:
donc, c’est pas bon…
Ca donne quoi en résultat ?
{{ states('sensor.sagem_emta62_2_temps_de_fonctionnement') | relative_time }}
{{ states('sensor.orange_livebox_temps_de_fonctionnement') | relative_time }}
471660
60102
soit la meme chose que sans le « relative time »
Tochy
Avril 22, 2024, 6:26
6
Salut
Le problème c’est que tu mélanges des timestamp, datetime et valeur
D’ailleurs je suis sur que si tu testes cette ligne dans les outils de dev, il te le dit.
Essayes comme ça si tu as un résultat :
{{ now()| as_timestamp - states('sensor.sagem_emta62_2_temps_de_fonctionnement') | as_timestamp ) }}
Et ensuite si c’est bon :
{{ ( now() | as_timestamp - states('sensor.sagem_emta62_2_temps_de_fonctionnement') | as_timestamp ) | as_datetime | as_local }}
1 « J'aime »
Oui, j’ai bien une erreur TypeError: unsupported operand type(s) for -: 'datetime.datetime' and 'str'
mais comment retirer des secondes à une date ???
Tochy
Avril 22, 2024, 6:37
9
J’ai complété mon message j’avais envoyé par erreur
Tochy
Avril 22, 2024, 6:40
10
En convertissant et la date et la str en timestamp
bentou
Avril 22, 2024, 6:42
11
{{ now()| as_timestamp - states('sensor.sagem_emta62_2_temps_de_fonctionnement') | as_timestamp ) }}
TemplateSyntaxError: unexpected ')'
{{ as_timestamp(states.sensor.sagem_emta62_2_temps_de_fonctionnement) }} ValueError: Template error: as_timestamp got invalid input '<template TemplateState(<state sensor.sagem_emta62_2_temps_de_fonctionnement=473279; unit_of_measurement=s, friendly_name=SAGEM EMTA62-2 Temps de fonctionnement @ 2024-04-22T20:49:07.521168+02:00>)>' when rendering template '{{ as_timestamp(states.sensor.sagem_emta62_2_temps_de_fonctionnement) }}' but no default was specified
Merci, ca a solutionner un soucis de mon coté ou je chercher une solution.
Tochy
Avril 22, 2024, 6:59
13
{{ now()| as_timestamp - states('sensor.sagem_emta62_2_temps_de_fonctionnement') | as_timestamp }}
Il y’a une paranthèse en trop à la fin. J’ai un peu de mal avec les copier coller sur tablette
Tochy
Avril 22, 2024, 7:01
14
C’est toujours compliqué les dates dans les calculs. Chaque fois je fais 50 lignes dans les outils de dev pour arriver à ce que je veux
1 « J'aime »
bentou
Avril 22, 2024, 7:01
15
{{ now()| as_timestamp - states('sensor.sagem_emta62_2_temps_de_fonctionnement') | as_timestamp }}
ValueError: Template error: as_timestamp got invalid input '473909' when rendering template '{{ now()| as_timestamp - states('sensor.sagem_emta62_2_temps_de_fonctionnement') | as_timestamp }}' but no default was specified
Tochy
Avril 22, 2024, 7:07
16
{{ now()| as_timestamp - states('sensor.sagem_emta62_2_temps_de_fonctionnement')| int }}
Essai ça alors
bentou
Avril 22, 2024, 7:08
17
ca me répond que c’est un nombre
1713338476.914191
Tochy
Avril 22, 2024, 7:09
18
Ok et comme ça
{{ ( now() | as_timestamp - states('sensor.sagem_emta62_2_temps_de_fonctionnement') | int ) | as_datetime | as_local }}
bentou
Avril 22, 2024, 7:10
19
là c’est un string
2024-04-17 09:21:23.147889+02:00
Tochy
Avril 22, 2024, 7:11
20
Oui mais est ce que c’est la date que tu voulais ?