Sensor coût pour energie meter

Bonsoir

j’ai voulu créer un senior coût du Kwh qui s’actualise en fonction de l’heure et de couleur de mon abonnement tempo.
J’ai crée le sensor ci-dessous mais il ne s’actualise pas et je ne trouve pas d’erreur dans les logs!
Pouvez vous m’aider ? Y a t(il une erreur dans l’écriture?

  - platform: template
    sensors:
      current_electricity_cost:
        value_template: >-
          {% set t = strptime(states('sensor.time'), '%H:%M') %}
          {%- if t.hour >=22 and t.hour <6 and is_state('sensor.tempo_aujourd_hui', 'TEMPO_BLEU') -%}0.0862
          {%- elif t.hour >=22 and t.hour <6 and is_state('sensor.tempo_aujourd_hui', 'TEMPO_BLANC') -%}0.1112
          {%- elif t.hour >=22 and t.hour <6 and is_state('sensor.tempo_aujourd_hui', 'TEMPO_ROUGE') -%}0.1222
          {%- elif t.hour >=6 and t.hour <22 and is_state('sensor.tempo_aujourd_hui', 'TEMPO_BLEU') -%}0.1272
          {%- elif t.hour >=6 and t.hour <22 and is_state('sensor.tempo_aujourd_hui', 'TEMPO_BLANC') -%}0.1653
          {%- elif t.hour >=6 and t.hour <22 and is_state('sensor.tempo_aujourd_hui', 'TEMPO_ROUGE') -%}0.5486
          {%- endif -%}
        friendly_name: Current Electricity Cost
        unit_of_measurement: €/kWh

merci
seb

Salut,

As-tu fais des tests avec les outils de développement ? Parce qu’il y a plein d’erreurs…

  • La première : t ne contient pas de valeur hour au mieux c’est une chaine de caractère
  • la condition ET n’est pas bonne pour le créneau 22h → 6h : il n’y a pas de chiffre qui soit en MEME TEMPS plus grand que 22 et plus petit que 6
  • répéter le test 3 fois(x2) pour connaitre 2 périodes, c’est pas le plus léger à écrire. Après c’est pas ça le plus gênant

Un truc rapidos qui doit quand même aller un peu plus loin

          {% set t = now().hour %}
          {% if t >= 6 and t < 22 %}
            {% if is_state('sensor.tempo_aujourd_hui', 'TEMPO_BLEU') %}
              0.1272
            {% elif is_state('sensor.tempo_aujourd_hui', 'TEMPO_BLANC') %}
              0.1653
            {% elif is_state('sensor.tempo_aujourd_hui', 'TEMPO_ROUGE') %}
              0.5486
            {% else %}
              erreur
            {% endif %}
          {% else %}
            {% if is_state('sensor.tempo_aujourd_hui', 'TEMPO_BLEU') %}
              0.0862
            {% elif is_state('sensor.tempo_aujourd_hui', 'TEMPO_BLANC') %}
              0.1112
            {% elif is_state('sensor.tempo_aujourd_hui', 'TEMPO_ROUGE') %}
              0.1222
             {% else %}
              erreur
            {% endif %}
          {% endif %}

He merci Pulpy

Nickel ça marche super bien.
Bonne soirée et encore merci.
Sebastien

Peux tu poster le résultat stp ca pourrait aider su monde.
:wink:

1 « J'aime »

Hello voilà mon code pour avoir le prix de votre consommation électrique du réseau.
A intégrer à votre Config (pour du tempo) :

#cout electricite bareme 9kva de aout 2022
#  - platform: template                               
#    friendly_name: cost electricity euro
#    round : 3
#    method : left
#    unit_of_measurement: euro/kWh

  - platform: template
    sensors:
      current_electricity_cost:
        value_template: >-
          {% set t = now().hour %}
          {% if t >= 6 and t < 22 %}
            {% if is_state('sensor.tempo_aujourd_hui', 'TEMPO_BLEU') %}
              0.1272
            {% elif is_state('sensor.tempo_aujourd_hui', 'TEMPO_BLANC') %}
              0.1653
            {% elif is_state('sensor.tempo_aujourd_hui', 'TEMPO_ROUGE') %}
              0.5486
            {% else %}
              erreur
            {% endif %}
          {% else %}
            {% if is_state('sensor.tempo_aujourd_hui', 'TEMPO_BLEU') %}
              0.0862
            {% elif is_state('sensor.tempo_aujourd_hui', 'TEMPO_BLANC') %}
              0.1112
            {% elif is_state('sensor.tempo_aujourd_hui', 'TEMPO_ROUGE') %}
              0.1222
             {% else %}
              erreur
            {% endif %}
          {% endif %}
        friendly_name: Current Electricity Cost
        unit_of_measurement: €/kWh

Hello

alors je reviens vers vous car je me suis aperçu, avec mes tarifs avaient un bug.

pour rappel :

je suis en tempo, donc jour bleu-blanc- rouge.
le basculement de couleur (donc de tarif) se fait a 6h du matin donc le tarif de couleurs est valable de 6h à 6h.
HP de 6h à 22h et HC de 22h à 6h.

Donc, avec la formule de l’article ci-dessus cela me donne ca:

Mon soucis c’est que de 0h00 a 6h, le tarif est sur la mauvaise base de couleur. Car le tarif est basé sur sur un sensor. tempo_aujourd’hui qui lui bascule a 0h00 et non pas a 6h00.

Voici le sensor. tempo_aujourd’hui dans mon config.yaml

# TEMPO EDF
  - platform: rest
    name: 'Tempo Demain'
    resource_template: https://particulier.edf.fr/services/rest/referentiel/searchTempoStore?dateRelevant={{now().strftime("%Y-%m-%d")}}
    value_template: '{{ value_json.couleurJourJ1 }}'
    scan_interval: 3600
    headers:
      Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
      Content-Type: application/json
      User-Agent: Wget/1.20.3 (linux-gnu)
  - platform: rest
    name: "Tempo Aujourd'hui"
    resource_template: https://particulier.edf.fr/services/rest/referentiel/searchTempoStore?dateRelevant={{now().strftime("%Y-%m-%d")}}
    value_template: "{{ value_json.couleurJourJ }}"
    scan_interval: 3600
    headers:
      Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
      Content-Type: application/json
      User-Agent: Wget/1.20.3 (linux-gnu)
  - platform: rest
    name: 'Jours Rouge restants'
    resource: https://particulier.edf.fr/services/rest/referentiel/getNbTempoDays?TypeAlerte=TEMPO
    value_template: '{{ value_json.PARAM_NB_J_ROUGE }}'
    scan_interval: 3600
    headers:
      Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
      Content-Type: application/json
      User-Agent: Wget/1.20.3 (linux-gnu)
  - platform: rest
    name: 'Jours Blanc restants'
    resource: https://particulier.edf.fr/services/rest/referentiel/getNbTempoDays?TypeAlerte=TEMPO
    value_template: '{{ value_json.PARAM_NB_J_BLANC }}'
    scan_interval: 3600
    headers:
      Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
      Content-Type: application/json
      User-Agent: Wget/1.20.3 (linux-gnu)
  - platform: rest
    name: 'Jours Bleu restants'
    resource: https://particulier.edf.fr/services/rest/referentiel/getNbTempoDays?TypeAlerte=TEMPO
    value_template: '{{ value_json.PARAM_NB_J_BLEU }}'
    scan_interval: 3600
    headers:
      Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
      Content-Type: application/json
      User-Agent: Wget/1.20.3 (linux-gnu)

Qu’est il possible de faire?
On mettre a jour le sensor. tempo_aujourd’hui que à 6h00?
ou
On peut dans le sensor tarif faire que le plage horaire de 0h00 a 6h garde le tarif appliqué de 22h a 0h00 ?

merci

Hello

alors je tente cela :

  - platform: template
    sensors:
      tempo_state_memo:
        value_template: >-
          {% set t = now().hour %}
          {% if t >= 6 and t < 7 %}
            {% if is_state('sensor.tempo_aujourd_hui', 'TEMPO_BLEU') %}
              TEMPO_BLEU
            {% elif is_state('sensor.tempo_aujourd_hui', 'TEMPO_BLANC') %}
              TEMPO_BLANC
            {% elif is_state('sensor.tempo_aujourd_hui', 'TEMPO_ROUGE') %}
              TEMPO_ROUGE
            {% else %}
              erreur
            {% endif %}
          {% endif %}
        friendly_name: tempor state memo

Mon soucis, je voudrais bien que cette mise a jour se fasse a 6h pile ou alors entre 6h00 et 6h02.

qui peut m’aider svp
Merci
seb

Salut

Remplace

par

{% set t=now().strftime("%H%M") |int(0)%}

Tu auras ainsi une valeur ‹ facile › à vérifier
Par exemple

{% if t == 600 %}

Pour info les templates sont évalués toutes les minutes…

@Pulpy-Luke
merci ça marche mais mon soucis c’est que a la minute suivante la valeur disparait. (recalcul)
comment je peux faire pour que la valeur mise à jour reste fixe jusqu’au jour d’après?

exemple tous les matin a 6h du matin le Template s’exécute, puis plus rien jusqu’au lendemain 6h.

merci

Personnellement, je ne vois pas tellement l’intérêt de ce ‹ template ›…
Si je carricature tu ne fais QUE reprendre la même info que celle déjà présente dans sensor.tempo_aujourd_hui
=> si bleu, bleu, si rouge, rouge etc …
Donc sauf cas d’usage très particulier, ça fait doublon… Quelle est ton utilisation ?

Hello @Pulpy-Luke

J’ai expliqué mon soucis un peu plus haut
oui cela semble une répétition mais non

Il faut donc que je stock la couleur de la veille jusqu’à 6h puis mettre a jour la couleur
seb

Donc on est bien d’accord que techniquement ça n’apporte rien de plus que le sensor d’origine.
Perso je ferai un input_select.tempo_aujourd_hui avec les 3 choix de couleurs, et à 6H, tous les jours, se déclenche une automatisation qui met la valeur de sensor.tempo_aujourd_hui dans input_select.tempo_aujourd_hui
C’est mieux qu’un truc qui tourne toutes les minutes pour 1 modification par jour

Hello @Pulpy-Luke

alors je vais suivre ton conseil . Donc j’ai crée un select input :

input_select:
  tempo_status_memoire:
    name: Tempo status memoire
    options:
     - TEMPO_ROUGE
     - TEMPO_BLEU
     - TEMPO_BLANC

Et une automation :

alias: Mise à jour mémoire tempo a 6h
description: Mise à jour mémoire tempo a 6h
trigger:
  - platform: time
    at: "06:00:05"
condition: []
action:
  - service: input_select.select_option
    data: {{states('sensor.tempo_aujourd_hui')}}
    target:
      entity_id: input_select.tempo_status_memoire
mode: single

mais cette automation, quand je la lance en manu ne fonctionne pas.
un vrai boulet des fois.
merci
seb

C’est pas le bon format pour la partie data

alias: Mise à jour mémoire tempo a 6h
description: Mise à jour mémoire tempo a 6h
trigger:
  - platform: time
    at: "06:00:05"
condition: []
action:
  - service: input_select.select_option
    data:
      option: "{{states('sensor.tempo_aujourd_hui')}}"
    target:
      entity_id: input_select.tempo_status_memoire
mode: single

Je me suis amusé à utiliser multiscrape pour limiter le nombre d’appels

# TEMPO EDF
- name: rte_jour
  resource: https://particulier.edf.fr/services/rest/referentiel/searchTempoStore?dateRelevant={{now().strftime("%Y-%m-%d")}}
  scan_interval: 3600
  headers:
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
    Content-Type: application/json
    User-Agent: Wget/1.20.3 (linux-gnu)
  sensor:
    - unique_id: rte_jour
      value_template: "{{ value_json.couleurJourJ}}"
      attributes:
        - name: demain
          value_template: "{{ value_json.couleurJourJ1 }}"

- name: rte_planning
  resource: https://particulier.edf.fr/services/rest/referentiel/getNbTempoDays?TypeAlerte=TEMPO
  scan_interval: 3600
  headers:
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
    Content-Type: application/json
    User-Agent: Wget/1.20.3 (linux-gnu)
  sensor:
    - unique_id: rte_planning
      value_template: "{{ value_json.PARAM_NB_J_BLEU+value_json.PARAM_NB_J_BLANC+ value_json.PARAM_NB_J_ROUGE }}"
      attributes:
        - name: bleu
          value_template: "{{ value_json.PARAM_NB_J_BLEU }}"
        - name: blanc
          value_template: "{{ value_json.PARAM_NB_J_BLANC }}"
        - name: rouge
          value_template: "{{ value_json.PARAM_NB_J_ROUGE }}"

Ce qui donne

Et un petite carte mushroom (je suis en HP/HC)
image

Hello @Pulpy-Luke

TOP, super travail

Merci
Tiens en regardant, je me pose une question
Hier, journée blanche et aujourd’hui aussi …
Pourtant c’est le compteur bleu qui se décrémente …
image
:face_with_peeking_eye:

Alors le compteur se décompte quand il annonce la couleur du jour suivant (le matin après 10h)!
donc aujourd’hui il ont annoncé bleu pour demain du coup c’est un bleu en moins
Si demain a 10h il annonce rouge tu verras un -1 sur le compteur rouge

@Pulpy-Luke je pourrais abuser de ton savoir :slight_smile: peux tu regarder ce poste?

Salut.
J’ai pas tellement joué avec ces nouvelles entités. Le dashboard énergie est en principe capable de gérer les totaux journaliers (quitte à faire un sensor en plus ?) … A l’occasion je relirai un peu la doc