Gestion de l'option Tempo EDF

Bonjour à tous,

Finalement, en trifouillant avec ChatGPT, il m’a pondu cette version:

type: vertical-stack
cards:
  - type: horizontal-stack
    cards:
      - type: custom:button-card
        entity: sensor.rte_tempo_couleur_actuelle
        name: Aujourd'hui
        show_label: label
        label: |
          [[[
            var now = new Date();
            var midnight = new Date(now.getFullYear(), now.getMonth(), now.getDate());
            var day = midnight.toLocaleString('fr-FR', { weekday: 'long' });
            var dayOfMonth = ('0' + midnight.getDate()).slice(-2);
            var month = midnight.toLocaleString('fr-FR', { month: 'long' }).replace('.', '');
            var color = states['sensor.rte_tempo_couleur_actuelle'].state;
            var hpPrice = states['input_number.tarif_edf_tempo_hp_' + color.toLowerCase()].state;
            var hcPrice = states['input_number.tarif_edf_tempo_hc_' + color.toLowerCase()].state;
            var joursRestants = states['sensor.rte_tempo_cycle_jours_restants_' + color.toLowerCase()].state;
                      
            var content = `<span style="font-size: 1.2em; margin: 10px 0;">${day} ${dayOfMonth} ${month}</span><br><span style="font-size: 0.9em; margin: 5px 0;">Jusqu'à 06h00</span><hr style="margin: 1px 0 8px; border-top: 1px solid rgba(0, 0, 0, 0.2);">il reste ${joursRestants} ${color}`;
            content += `<br>Tarif HP: ${hpPrice} €/kWh<br>Tarif HC: ${hcPrice} €/kWh`;

            return content;
          ]]]
        styles:
          card:
            - height: 130px
            - background-color: |
                [[[
                  var color = states['sensor.rte_tempo_couleur_actuelle'].state.toLowerCase();
                  return (color === 'rouge') ? '#fe1b00' : 
                         (color === 'blanc') ? 'white' : 
                         (color === 'bleu') ? 'dodgerblue' : 
                         'var(--card-background-color)';
                ]]]
            - color: |
                [[[
                  return (states['sensor.rte_tempo_couleur_actuelle'].state.toLowerCase() === 'blanc') ? 'black' : 'white';
                ]]]
            - border-radius: 20px
            - padding: 16px
            - font-size: 1.2em
            - text-align: center
            - box-shadow: 0px 2px 4px 0px rgba(0,0,0,0.3)
          grid:
            - grid-template-areas: '"n" "l"'
            - grid-template-rows: 1fr min-content
          name:
            - font-weight: bold
            - font-size: 1.2em
          label:
            - font-size: 0.8em
            - justify-self: center
            - align-self: center
            - margin-top: 10px
      - type: custom:button-card
        entity: sensor.rte_tempo_prochaine_couleur
        name: Demain
        show_label: true
        label: |
          [[[
          var now = new Date();
          var midnight = new Date(now.getFullYear(), now.getMonth(), now.getDate() + 1);
          var day = midnight.toLocaleString('fr-FR', { weekday: 'long' });
          var dayOfMonth = ('0' + midnight.getDate()).slice(-2);
          var month = midnight.toLocaleString('fr-FR', { month: 'long' }).replace('.', '');

          var colorState = states['sensor.rte_tempo_prochaine_couleur'];
          var color = (colorState && colorState.state) ? colorState.state : 'indisponible';

          var hpPriceState = states['input_number.tarif_edf_tempo_hp_' + color.toLowerCase()];
          var hcPriceState = states['input_number.tarif_edf_tempo_hc_' + color.toLowerCase()];
          var joursRestantsState = states['sensor.rte_tempo_cycle_jours_restants_' + color.toLowerCase()];

          if (colorState && hpPriceState && hcPriceState && joursRestantsState &&
              colorState.state && hpPriceState.state && hcPriceState.state && joursRestantsState) {
            var hpPrice = hpPriceState.state;
            var hcPrice = hcPriceState.state;
            var joursRestants = joursRestantsState.state;
            var content = `<span style="font-size: 1.2em; margin: 10px 0;">${day} ${dayOfMonth} ${month}</span><br><span style="font-size: 0.9em; margin: 5px 0;">Jusqu'à 06h00</span><hr style="margin: 1px 0 8px; border-top: 1px solid rgba(0, 0, 0, 0.2);">il reste ${joursRestants} ${color}`;
            content += `<br>Tarif HP: ${hpPrice} €/kWh<br>Tarif HC: ${hcPrice} €/kWh`;
            return content;
          } else {
            // Orange si unavailable
            return 'Jour non défini';
          }

          ]]]
        styles:
          card:
            - height: 130px
            - background-color: |
                [[[
                  var colorState = states['sensor.rte_tempo_prochaine_couleur'];
                  if (colorState && colorState.state) {
                    var color = colorState.state.toLowerCase();
                    return (color === 'rouge') ? '#fe1b00' : 
                           (color === 'blanc') ? 'white' : 
                           (color === 'bleu') ? 'dodgerblue' : 
                           (color === 'unavailable') ? 'orange' :
                           'var(--card-background-color)';
                  } else {
                    // Sinon jaune (aucuns état ci dessus)
                    return 'yellow';
                  }
                ]]]
            - color: |
                [[[
                  var colorState = states['sensor.rte_tempo_prochaine_couleur'];
                  return (colorState && colorState.state && colorState.state.toLowerCase() === 'blanc') ? 'black' : 'white';
                ]]]
            - border-radius: 20px
            - padding: 16px
            - font-size: 1.2em
            - text-align: center
            - box-shadow: 0px 2px 4px 0px rgba(0,0,0,0.3)
          grid:
            - grid-template-areas: '"n" "l"'
            - grid-template-rows: 1fr min-content
          name:
            - font-weight: bold
            - font-size: 1.2em
          label:
            - font-size: 0.8em
            - justify-self: center
            - align-self: center
            - margin-top: 10px


Pour le coup, ça a l’air de fonctionner puisque maintenant j’ai bien toutes les infos pour le lendemain et normalement ça intègre la prise en charge de l’état indisponible.
A voir si c’est bien le cas quand on aura des changements de tarifs.

Son explication:

En tout cas, encore merci @chuppito pour le partage :slight_smile:

Bonjour,

J’ai installé l’intégration de Hekmon : RTE Tempo
J’ai fait une automatisation pour être notifié par SMS, elle fonctionnait bien mais tous les jour je recevait un SMS me disant la couleur du jour et les jours bleus, blancs et rouges restants, pénible losrqu’il reste que des bleus :slightly_smiling_face:
du coup j’ai mis des conditions, mais à l’exécution j’ai des erreurs :


je ne comprend pas tout, voici mon automatisation :

alias: "[Notifier] changement de couleur Tempo SMS"
description: Envoyer une notification lorsqu'une nouvelle couleur Tempo est détectée
trigger:
  - platform: state
    entity_id: sensor.rte_tempo_prochaine_couleur
    enabled: false
  - platform: time
    at: "09:00:00"
condition:
  - condition: and
    conditions:
      - condition: numeric_state
        entity_id: sensor.rte_tempo_cycle_jours_restants_blanc
        above: 1
        attribute: attribution
      - condition: numeric_state
        entity_id: sensor.rte_tempo_cycle_jours_restants_rouge
        attribute: attribution
        above: 1
action:
  - data:
      target: 612345678
      title: EDF TEMPO
      message: >-
        Aujourd'hui : {{ states.sensor.rte_tempo_couleur_actuelle_visuel.state
        }} {{ states.sensor.rte_tempo_couleur_actuelle.state }} 
         Demain : {{ states.sensor.rte_tempo_prochaine_couleur_visuel.state }} {{ states.sensor.rte_tempo_prochaine_couleur.state }} 
         Jours restants : 
         {{ states.sensor.rte_tempo_cycle_jours_restants_bleu.state }} 🔵
         {{ states.sensor.rte_tempo_cycle_jours_restants_blanc.state }} ⚪
         {{ states.sensor.rte_tempo_cycle_jours_restants_rouge.state }} 🔴
    action: notify.sms
mode: single

qu’est-ce qui n’est pas bon ?

Salut,
essaie de changer la condition:

condition:
  - condition: and
    conditions:
      - condition: numeric_state
        entity_id: sensor.rte_tempo_cycle_jours_restants_blanc
        above: 1
        attribute: attribution
      - condition: numeric_state
        entity_id: sensor.rte_tempo_cycle_jours_restants_rouge
        attribute: attribution
        above: 1
      - condition: or
        conditions:
          - condition: not
            conditions:
              - condition: state
                entity_id: sensor.rte_tempo_couleur_actuelle
                state: "BLEU"
          - condition: not
            conditions:
              - condition: state
                entity_id: sensor.rte_tempo_prochaine_couleur
                state: "BLEU"

Bonjour Akunia,

Je viens de modifier mon automatisation avec ton morceau de code :

alias: "[Notifier] changement de couleur Tempo SMS"
description: Envoyer une notification lorsqu'une nouvelle couleur Tempo est détectée
trigger:
  - platform: time
    at: "12:00:00"
condition:
  - condition: and
    conditions:
      - condition: numeric_state
        entity_id: sensor.rte_tempo_cycle_jours_restants_blanc
        above: 1
        attribute: attribution
      - condition: numeric_state
        entity_id: sensor.rte_tempo_cycle_jours_restants_rouge
        attribute: attribution
        above: 1
      - condition: or
        conditions:
          - condition: not
            conditions:
              - condition: state
                entity_id: sensor.rte_tempo_couleur_actuelle
                state: BLEU
          - condition: not
            conditions:
              - condition: state
                entity_id: sensor.rte_tempo_prochaine_couleur
                state: BLEU
action:
  - data:
      target: 612345678
      title: EDF TEMPO
      message: >-
        Aujourd'hui : {{ states.sensor.rte_tempo_couleur_actuelle_visuel.state
        }} {{ states.sensor.rte_tempo_couleur_actuelle.state }} 
         Demain : {{ states.sensor.rte_tempo_prochaine_couleur_visuel.state }} {{ states.sensor.rte_tempo_prochaine_couleur.state }} 
         Jours restants : 
         {{ states.sensor.rte_tempo_cycle_jours_restants_bleu.state }} 🔵
         {{ states.sensor.rte_tempo_cycle_jours_restants_blanc.state }} ⚪
         {{ states.sensor.rte_tempo_cycle_jours_restants_rouge.state }} 🔴
    action: notify.sms
mode: single

mais j’ai les erreurs suivantes:

Bonjour à tous.
Mon précédent bidouillage pour Tempo (un truc qui récupérait les infos sur Multiscrape) ne fonctionnait plus, je suis donc passé par le module très bien fait Hekmon.
J’ai fait un petit « tuto » pour ceux que ça peut intéresser:

1 « J'aime »

Bonjour à tous,

j’essaie d’automatiser le déclenchement de ma pompe à chaleur en fonction de plusieurs conditions dont la couleur du jour mais cela ne semble pas fonctionner. Auriez vous une idée?

alias: Chauffage Suite Parentale
description: ""
triggers:
  - trigger: numeric_state
    entity_id:
      - sensor.thermo_suite_parentale_temperature
    below: 19
conditions:
  - condition: or
    conditions:
      - condition: and
        conditions:
          - condition: state
            entity_id: sensor.rte_tempo_couleur_actuelle
            state: Rouge
          - condition: time
            after: "22:00:00"
            before: "06:00:00"
          - condition: or
            conditions:
              - condition: zone
                entity_id: person.moi
                zone: zone.home
              - condition: zone
                entity_id: person.elle
                zone: zone.home
      - condition: and
        conditions:
          - condition: state
            entity_id: sensor.rte_tempo_couleur_actuelle
            state: Bleu
          - condition: or
            conditions:
              - condition: zone
                entity_id: person.moi
                zone: zone.home
              - condition: zone
                entity_id: person.elle
                zone: zone.home
      - condition: and
        conditions:
          - condition: state
            entity_id: sensor.rte_tempo_couleur_actuelle
            state: Blanc
          - condition: or
            conditions:
              - condition: zone
                entity_id: person.moi
                zone: zone.home
              - condition: zone
                entity_id: person.elle
                zone: zone.home
actions:
  - action: climate.turn_on
    metadata: {}
    data: {}
    target:
      entity_id:
        - climate.suite_parentale
  - action: climate.set_fan_mode
    metadata: {}
    data:
      fan_mode: heat
    target:
      entity_id:
        - climate.suite_parentale
  - action: climate.set_temperature
    metadata: {}
    data:
      temperature: 25
    target:
      entity_id:
        - climate.suite_parentale
mode: single

Bonjour, oui j’ai bien une idée du souci mais tu est pas hors-sujet, là ?

Le sujet concerne la gestion de l’option Tempo et on parle d’automatisation donc je ne vois pas pourquoi je serais hors sujet?
Après je peux créer un sujet a part entière la dessus mais je trouve ca dommage car ca pourrait servir à d’autres usager de TEMPO

Le sujet est « Gestion de l’option Tempo EDF » et la, tu a un souci de trigger d’automatisation, …

Mais, pour t’aider quand meme, je pense, que tu comprend pas comment ça fonctionne dans HomeAssistant :
triggers, veut dire événement, dans le sens informatique « one-shot », donc l’automatisation ne sera lancer que quand la 1er fois la température de ta suite parentale passe en dessous de 19°

Et ce moment là, il vérifie si toute tes conditions sont remplis, si c’est le cas, les actions seront exécuter. si tu veut vérifier tes conditions, tu trouvera les historiques de l’exécutions de ton automatisation.

1 « J'aime »

Merci je vais essayer de changer mon trigger du coup

Mon avis : ne fait pas des automatisations de ce type mais utilises le Scheduler. Ca à l’air un peu compliqué mais une fois qu’on l’a, ca fait tout et le café.

Y a pas mal de sujets sur le SCheduler dans ce forum.

1 « J'aime »

Merci je vais essayer

Je vais poser ma question ici, vu que c’est ici que ça a commencé :wink:

@Nemesis24 en particulier.
Je voulais savoir si tu avais fais des mofis sur la partie sql, depuis ?
Parce que je me retrouve avec des incohérences dans les valeurs remontées.
Hier c’était un jour bleu et aujourd’hui blanc, donc les valeurs en blanc n’ont pas bougés depuis hier, pourtant quand je regarde hpdw (127.101) et hpdwl(126.783), il y a une différence :

et dans mon l’historique pour hpdw, j’ai bien 126.783

J’ai fait un compteur ce matin qui fait la différence entre le talon de 126.783 et la valeur HP blanc du linky

Capture d'écran 2024-12-23 170853

Ce qui fait au moment de la capture : 2.78 kWh
D’après le rendu sql, la conso d’aujourd’hui est de 2.47 kWh

Capture d'écran 2024-12-23 170902

Et 2.78 + 126.78 = 2.47 + 127.101, donc on retrouve nos petits, mais avec un décalage.

La formule pour hpdw est :

  query: >
    SELECT
      states.state
    FROM
      states
      INNER JOIN states_meta ON
        states.metadata_id = states_meta.metadata_id
    WHERE
      states_meta.entity_id = 'sensor.zlinky_easf04'
      AND last_updated_ts <= (strftime('%s', 'now') - (strftime('%s', 'now') % 86400)

et pour hpdwl :

  query: >
    SELECT
      states.state
    FROM
      states
      INNER JOIN states_meta ON
        states.metadata_id = states_meta.metadata_id
    WHERE
      states_meta.entity_id = 'sensor.zlinky_easf04'
      AND last_updated_ts <= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - 86400 +
    CASE
      WHEN strftime('%m', last_updated_ts) BETWEEN '04' AND '10' THEN 25200
      ELSE 18000
    END

De ce que je comprend et de ce que tu avais expliqué, tu reprends la valeur 24 heures avant pour hpdwl et vérifies que tu es en heures d’hiver ou pas (%m).
Mais comme on était en bleu hier, je vois pas où pourrais venir la différence.

Merci.

PS : peut-être un début de réponse :

127.101 kWh semble être la valeur pour 7h00

Du coup j’ai modifié le « décalage » de 25200 qui correspond à 7 heures par 21600 pour 6 heures.
et maintenant les valeurs correspondent, ce qui est plus logique qu’avec un décalage de 2 heures en hiver :

A suivre dans le temps.

Bonjour,

j’essaye d’améliorer mon dashboard et je voulais reproduire les cartes tempo comme le montre Antoine1 un peu plus haut.
Mais je n’y arrive pas : si je copie/colle son code HA m’indique qu’il ne connait pas custom:button-card.

Il faut installer qqchose avant ?

Merci pour votre aide.

Hello,

Je pense que tu as donné la réponse dans ta question => GitHub - custom-cards/button-card: ❇️ Lovelace button-card for home assistant, ou directement via HACS => button card

merci.

Maintenant j’ai un autre soucis :
ButtonCardJSTemplateError: TypeError: states[(« input_number.tarif_edf_tempo_hp_ » + color.toLowerCase())] is undefined in 'var now = new Date(); var midnight = new Date(now.getFullYear(), now.getMonth(), now.getDate());…

A priori il ne trouve pas les infos de prix.
On les trouve où ?

EDIT : j’ai créé les input_number (device->hlpers)

Tout fonctionne maintenant.

Bonjour à tous.
J’ai lu ici quelques morceaux qui parlent de l’ajout du cout de l’abonnement (tempo) dans les couts du Dashboard énergie (ou dans les tuiles d’un Dashboard classique), mais je n’ai pas vu LA solution qui va bien. Avez vous réussi à ajouter ce cout de l’abo et si oui, pourriez vous partager un code ?

Bonjour,
vu le nombre important de messages et de suivi du sujet. Afin d’éviter de saturer les notifications par mail, nous passons le sujet en archive.
Ouvrez un nouveau sujet si besoin d’aide.