API pour récupérer TEMPO EDF

Bonjour,
Où as tu trouvé ces URL ? Elles ne semblent pas fonctionner.
Merci

Idem. Une alternative en attendant c’est d’utiliser RTE comme source via l’intégration HA. Mais bon ça nécessite un compte développeur…etc

Autre alternative: je récupére la couleur du lendemain directement sur le Linky avec le ZLinky_TIC. L’inconvénient c’est que l’info ne tombe que vers 20h, pas pratique pour anticiper un éventuel jour rouge…

J’espère que demain ou lundi ça sera rétabli et que c’est « juste » lié au début de la nouvelle saison TEMPO.

Si si , ça fonctionne. Tu peux le faire directement sur la page https://www.api-couleur-tempo.fr/api ( fait via Swagger API ). Il y a des infos sur https://www.api-couleur-tempo.fr

Si vous souhaitez utiliser les api RTE sur ESP32, vous pouvez utiliser mon fork de tasmota dédié aux contrats Linky qui gère nativement les api RTE et qui publie le résultat via MQTT.

Pour info, les api RTE sont en avance de plusieurs heures pour les annonces de couleur des jours … car elles en sont la source !

Bonjour, côté EDF toujours pas de possibilité de récupérer les informations Tempo ?
Merci

Vous avez essayé cet intégration ?

J’ai réussi à déduire les jours restant avec api-couleur-tempo:

Dans rest.yaml:

- resource: https://www.api-couleur-tempo.fr/api/joursTempo?periode=2024-2025
  scan_interval: 36
  sensor:
    - name: "Jours Rouge past"
      value_template: >
        {{ (value_json | default([]) | selectattr('codeJour', 'equalto', 3) | list | count) | default('unknown') }}

    - name: "Jours Blanc past"
      value_template: >
        {{ (value_json | default([]) | selectattr('codeJour', 'equalto', 2) | list | count) | default('unknown') }}

    - name: "Jours Bleu past"
      value_template: >
        {{ (value_json | default([]) | selectattr('codeJour', 'equalto', 1) | list | count) | default('unknown') }}

puis dans configuration.yaml:

rest: !include rest.yaml

sensor:

  - platform: template
    sensors:
      jours_rouge_restants:
        friendly_name: "Jours Rouge restants"
        value_template: >
          {{ 22 - (states('sensor.jours_rouge_past') | int) }}

      jours_blanc_restants:
        friendly_name: "Jours Blanc restants"
        value_template: >
          {{ 43 - (states('sensor.jours_blanc_past') | int) }}

      jours_bleu_restants:
        friendly_name: "Jours Bleu restants"
        value_template: >
          {{ 300 - (states('sensor.jours_bleu_past') | int) }}

Pour la couleur tempo aujourd’hui et demain:

Dans rest.yaml:

- resource: https://www.api-couleur-tempo.fr/api/jourTempo/today
  scan_interval: 3600
  sensor:
    - name: "Tempo Aujourd'hui"
      value_template: >
        {% set codes = {0: "inconnu", 1: "bleu", 2: "blanc", 3: "rouge"} %}
        {{ codes[value_json.codeJour] }}
      json_attributes:
        - dateJour
        - codeJour
        - periode

- resource: https://www.api-couleur-tempo.fr/api/jourTempo/tomorrow
  scan_interval: 60
  sensor:
    - name: "Tempo Demain"
      value_template: >
        {% set codes = {0: "inconnu", 1: "bleu", 2: "blanc", 3: "rouge"} %}
        {{ codes[value_json.codeJour] }}
      json_attributes:
        - dateJour
        - codeJour
        - periode

J’utilise aussi cette intégration et elle est parfaite.
Aucun bug et très réactive.
Les entités sont faciles a récupérer pour créer des notifications.
Bien vu tikismoke

Merci Nicdu40.

Je propose un légère variante qui récupère tout en une seule requête

- resource_template: >
    {% set Y1 = now().year if now().month>8 else now().year-1 %}
    {{ "https://www.api-couleur-tempo.fr/api/joursTempo?periode=%s-%s" % (Y1, Y1+1) }}
  headers:
    Content-Type: application/json
    User-Agent: Wget/1.20.3 (linux-gnu)
  sensor:
    - name: Tempo bleus
      unique_id: tempo_bleus
      value_template: >
        {{ value_json
          | selectattr('codeJour','eq',1) 
          | list | count }}
    - name: Tempo blancs
      unique_id: tempo_blancs
      value_template: >
        {{ value_json
          | selectattr('codeJour','eq',2) 
          | list | count }}
    - name: Tempo rouges
      unique_id: tempo_rouges
      value_template: >
        {{ value_json
          | selectattr('codeJour','eq',3) 
          | list | count }}
    - name: Tempo demain
      unique_id: tempo_demain
      value_template: >
        {% set data = value_json
          | selectattr('dateJour','eq',(now()+timedelta(days=1)).strftime('%Y-%m-%d')) 
          |list %}
        {% set couleur = {0: "", 1: "BLEU", 2: "BLANC", 3: "ROUGE"} %}
        {{ couleur[data.0.codeJour] }}
    - name: Tempo jour
      unique_id: tempo_jour
      value_template: >
        {% set data = value_json
          | selectattr('dateJour','eq',now().strftime('%Y-%m-%d')) 
          |list %}
        {% set couleur = {0: "", 1: "BLEU", 2: "BLANC", 3: "ROUGE"} %}
        {{ couleur[data.0.codeJour] }}

Merci befour,

Du coup avec ton code, pour ceux qui veulent les jours restants:

configuration.yaml :

rest: !include rest.yaml

  - platform: template
    sensors:
      jours_rouge_restants:
        friendly_name: "Jours Rouge restants"
        value_template: >
          {{ 22 - (states('sensor.tempo_rouges') | int) }}

      jours_blanc_restants:
        friendly_name: "Jours Blanc restants"
        value_template: >
          {{ 43 - (states('sensor.tempo_blancs') | int) }}

      jours_bleu_restants:
        friendly_name: "Jours Bleu restants"
        value_template: >
          {{ 300 - (states('sensor.tempo_bleus') | int) }}

Pour avoir ceci:


Couleur des vignettes tempo jour /demain:

show_name: true
show_icon: false
show_state: true
type: glance
entities:
  - entity: sensor.tempo_jour
    card_mod:
      style: |
        :host .name {
          font-weight: normal;
          font-size: 80%;
        }
        :host {
          font-weight: bold;
          border-style: solid;
          border-radius: 15px;
          {% if is_state('sensor.tempo_jour', 'ROUGE') %}
            background-color: red;
          {% elif is_state('sensor.tempo_jour', 'BLANC') %}
            background-color: white;
          {% elif is_state('sensor.tempo_jour', 'BLEU') %}
            background-color: DodgerBlue;
          {% else %}
            background-color: lightgrey;
          {% endif %}
          {% if is_state('sensor.tempo_jour', 'blanc') %}
            color: black;
          {% else %}
            color: white;
          {% endif %}
        }
  - entity: sensor.tempo_demain
    card_mod:
      style: |
        :host .name {
          font-weight: normal;
          font-size: 80%;
        }
        :host {
          font-weight: bold;
          border-style: double;
          border-radius: 15px;
          {% if is_state('sensor.tempo_demain', 'ROUGE') %}
            background-color: red;
          {% elif is_state('sensor.tempo_demain', 'BLANC') %}
            background-color: white;
          {% elif is_state('sensor.tempo_demain', 'BLEU') %}
            background-color: DodgerBlue;
          {% else %}
            background-color: lightgrey;
          {% endif %}
          {% if is_state('sensor.tempo_demain', 'blanc') %}
            color: black;
          {% else %}
            color: white;
          {% endif %}
        }
state_color: true


Pour les jours restant:

show_name: true
show_icon: false
show_state: true
type: glance
entities:
  - entity: sensor.tempo_jour
    card_mod:
      style: |
        :host .name {
          font-weight: normal;
          font-size: 80%;
        }
        :host {
          font-weight: bold;
          border-style: solid;
          border-radius: 15px;
          {% if is_state('sensor.tempo_jour', 'ROUGE') %}
            background-color: red;
          {% elif is_state('sensor.tempo_jour', 'BLANC') %}
            background-color: white;
          {% elif is_state('sensor.tempo_jour', 'BLEU') %}
            background-color: DodgerBlue;
          {% else %}
            background-color: lightgrey;
          {% endif %}
          {% if is_state('sensor.tempo_jour', 'blanc') %}
            color: black;
          {% else %}
            color: white;
          {% endif %}
        }
  - entity: sensor.tempo_demain
    card_mod:
      style: |
        :host .name {
          font-weight: normal;
          font-size: 80%;
        }
        :host {
          font-weight: bold;
          border-style: double;
          border-radius: 15px;
          {% if is_state('sensor.tempo_demain', 'ROUGE') %}
            background-color: red;
          {% elif is_state('sensor.tempo_demain', 'BLANC') %}
            background-color: white;
          {% elif is_state('sensor.tempo_demain', 'BLEU') %}
            background-color: DodgerBlue;
          {% else %}
            background-color: lightgrey;
          {% endif %}
          {% if is_state('sensor.tempo_demain', 'blanc') %}
            color: black;
          {% else %}
            color: white;
          {% endif %}
        }
state_color: true