Node-Red récupérer la valeur d'un timer

Bonjour,

J’ai une entité Timer et je souhaite récupérer sa valeur dans Node-Red.
Je n’arrive à récupérer que son état, Actif ou Pause.
image

Dans LoveLace j’affiche bien la valeur.
image

Une idée ?
Merci
Bob

State te retrouve son état. Les durées ne sont pas des états mais des attributs.
Regarde dans outils de développement > états

timer

Merci, oui j’ai bien tout ça :
image
C’est dans Node-Red que je souhaite remonter l’info :wink:

Dans nodered, au lieu de n’afficher que msg.payload, tu affiches tout le msg. Quand c’est affiché, en face de la valeur qui t’intéresse, tu cliques sur « copy path » ou l’équivalent dn français. Ça va te donner la façon d’avoir l’attribut qui t’intéresse.
Je te suggère de regarder les tutos de nodered qui explique comment faire ce genre de choses.

Oui j’avais bien compris.
Regarde dans ton « Current State », tu as le nom de l’objet de msg qui reçoit toutes les infos de l’entité.
Par défaut, msg.payload ne reçoit que l’état.
msg.data reçoit toutes les infos de l’entité.

Donc dans ton debug au lieue de mettre msg.payload, tu verra qu’en mettant msg.data tu as un truc qui ressemble à ça:

object
 entity_id: "timer.timer_lumieres",
 state: "active",
attributes: object
 duration: "0:03:00",
 editable: false,
 finishes_at: "2021-12-23T20:56:32+00:00"
 remaining: "0:03:00"
 last_changed: "2021-12-23T20:53:32.909810+00:00"
 last_updated: "2021-12-23T20:53:32.909810+00:00"

Bonjour et merci,

Mon compteur est actif et se décrémente:
image
Mon « Current State »:
image
Mon « Debug »:
image
Mes infos Debug:

24/12/2021, 12:27:32node: 6e8a820a4b4b13femsg.data : Object

object
entity_id: "timer.testbob"
state: "active"
attributes: object
duration: "24:00:00"
editable: true
finishes_at: "2021-12-25T10:54:34+00:00"
remaining: "24:00:00"
icon: "mdi:counter"
friendly_name: "TestBob"
last_changed: "2021-12-24T10:54:34.781891+00:00"
last_updated: "2021-12-24T10:54:34.781891+00:00"
context: object
id: "14f041c12a1a9656c434fae78591bc34"
parent_id: null
user_id: "2f8ec7bd3b924161a2d869e46faa91cd"
timeSinceChangedMs: 1977316
original_state: "active"

Je n’y voit pas la valeur du timer.
Oui @golfvert, je vais regarder les tutos, pour en apprendre un peu plus sur Node-Red, en 2022 :slight_smile:, là je pars pour les fêtes.
Merci à vous tous et joyeuses fêtes.

C’est là que le fun commence, il n’y a jamais la valeur actuelle restante quand le timer est actif, tu n’as que le « finishes_at » en date…

Du coup tu dois faire une soustraction entre finishes_at et la date/heure actuelle pour savoir combien il reste…
Ca se fait soit avec un compteur template dans HA, ou une fonction dans node red.

Je n’ai pas d’exemple à te donner, car je n’ai jamais fait ça avec NodeRed.
Mais j’ai un truc similaire avec ESPHome, donc pas de copier coller, sorry :slight_smile:

Voici ce que je fais:

  1. dans HA. Conversion de date/heure vers timestamp.
  - platform: template
    sensors:
      timer_1_end:
        friendly_name: "Timer 1 End Timestamp"
        device_class: timestamp
        value_template: "{{ as_timestamp(state_attr('timer.timer_1', 'finishes_at'), 0) | int }}"
  1. Dans ESPHome
  • Récupération de timestamp de time.now()
  • Calcul de « timer_1_end - timestamp-now. »
  • Le résultat c’est le temps restant en secondes…
auto time = id(homeassistant_time).now();
if(id(GTimer).state.compare("active") == 0)
{
   int remaining = (int)id(GTimerEnd).state - (int)time.timestamp;
   .....
}
1 « J'aime »

Bonjour,
Pour finir cette demande, je voulais en fait compter le temps de chauffage et faire un cas Nodered, ensuite j’ai vu un exemple dans une présentation de board qui le permettait de façon très simple, je le mets ici avec le rendu.
Merci pour l’aide sur Nodered :wink:

image

Bob

  - platform: history_stats
    name: Chauffage / 24h
    entity_id: light.door_lock_unit_12
    state: "on"
    type: time
    end: "{{ now().replace(hour=0, minute=0, second=0) }}"
    duration:
      hours: 24

  - platform: history_stats
    name: Chauffage Jour
    entity_id: light.door_lock_unit_12
    state: "on"
    type: time
    start: "{{ now().replace(hour=0, minute=0, second=0) }}"
    end: "{{ now() }}"

  - platform: history_stats
    name: Chauffage 7 jours
    entity_id: light.door_lock_unit_12
    state: "on"
    type: time
    end: "{{ now().replace(hour=0, minute=0, second=0) }}"
    duration:
      days: 7