ESPHome : comment afficher l'heure de la mise à jour des mesures de Flipr ? ou une autre date présente dans une entité Home Assistant?

bonjour,

j’ai un code ( ici : GitHub - SocrateMobile/Affichage-Flipr-HomeAssistant: Code ESPHome pour LILYGO TTGO T-Display 1.14 Pouces LCD + ESP32 Module sans Fil Permet d'afficher les relevés de Flipr) dans lequel j’utilise un ESP32 avec un écran pour afficher les valeurs de contrôle de ma piscine. J’utilise un Flipr pour réaliser l analyse du pH, du chlore, du redox, de la température de l’eau: j’arrive à récupérer toutes les infos, et les afficher à l’écran. SAUF : la date de la dernière mesure, qui remonte sous la forme suivante :

2023-09-02T21:31:54+00:00

attribution: Flipr Data
device_class: timestamp
friendly_name: Mesuré

Avez vous une idée ?

Merci d avance
JFL

Salut

pour afficher la date et l’heure

         it.strftime(0, 1,  "%Y-%m-%d %H:%M", id(homeassistant_time).now());

pour afficher le temps de fonctionnement de l’esp

          it.printf(0,0, "up %s",  id(espuptime).state.c_str());  

avec espuptime definit comme un text_sensor

text_sensor:

  - platform: template
    name: espuptime
    update_interval: 60s
    icon: mdi:clock-start
    lambda: |-
      int seconds = (id(uptime_seconds).state);
      int days = seconds / (24 * 3600);
      seconds = seconds % (24 * 3600);
      int hours = seconds / 3600;
      seconds = seconds % 3600;
      int minutes = seconds /  60;
      seconds = seconds % 60;
      if ( days ) {
        return { (String(days) +"d " + String(hours) +"h " + String(minutes) +"m "+ String(seconds) +"s").c_str() };
      } else if ( hours ) {
        return { (String(hours) +"h " + String(minutes) +"m "+ String(seconds) +"s").c_str() };
      } else if ( minutes ) {
        return { (String(minutes) +"m "+ String(seconds) +"s").c_str() };
      } else {
        return { (String(seconds) +"s").c_str() };

Ok merci de ce retour

Mais ici, il ne s agit pas d avoir le temps de HA ou de l esp, mais de récupérer une valeur remontée par une entité d un autre périphérique :

Mon analyseur Flipr fait des analyses à une période donnee

Home assistant via le plugin Flipr récupère toutes les infos , y compris la date et l heure du dernier relevé de mesure

L esp32 récupère ces informations dans home assistant pour les afficher sur un écran déporté

C est ici que je souhaite récupérer la valeur contenue, pour la comparer à l heure actuelle et en calculer le temps passé: mesure effectuée il y a 1H30 par exemple

JFL

Comme cela

Salut,

Si ce que tu veux c’est quelque chose comme « mesure effectuée il y a 1H30 par exemple », le plus simple est surement de créer une entité texte template dans HA qui fait le calcul de la différence et qui le formate comme tu veux dans HA.
Puis dans EspHome, récupérer ce texte comme un text sensor.

L’alternative c’est de faire la conversion dans EspHome, mais risque d’être plus complexe et de passer par pas mal du code en C++ comme le partage @jrvrcd

ok, je vais essayer …
quelque chose comme ca?

    time_since_last_measurement:
      friendly_name: Temps depuis de le relevé Flipr
      unit_of_measurement: minutes
      value_template: >-
        {%- set last_measured = states('sensor.flipr_XXXXXXXX_last_measured') -%}
        {%- set current_time = now() -%}
        {%- set time_difference = current_time - as_timestamp(strptime(last_measured, '%Y-%m-%dT%H:%M:%S%z')) -%}
        {{ (time_difference / 60) | round(2) }}

Salut,

je n’ai pas lu le code en détails, mais c’est l’idée :wink: