Ecojoko et cout en euro pour abonnement tempo

Bonjour,
je débute sous home assistant, j’ai intégré little_monkey et RTE Tempo.
J’ai créé un carte en prenant des bouts de code à gauche et droite pour calculer le cout total de la journée qui est découpée en 3 partie avec Heures creuses matin et soir, et Heures pleines.

je vous met le code ici, si quelqu’un veut tester :

type: custom:button-card
name: Cout électricité
show_label: true
show_state: true
label: |
  [[[
    var couleurActuelle = states['sensor.rte_tempo_couleur_actuelle'].state.toLowerCase();
    var heuresPleinesActuelles = states['binary_sensor.rte_tempo_heures_creuses'].state;
    var ConsoHCBleu = states['sensor.ecojoko_consommation_hc_bleu_reseau'].state;
    var ConsoHCBlanc = states['sensor.ecojoko_consommation_hc_blanc_reseau'].state;
    var ConsoHCRouge = states['sensor.ecojoko_consommation_hc_rouge_reseau'].state;
    var ConsoHPBleu = states['sensor.ecojoko_consommation_hp_bleu_reseau'].state;
    var ConsoHPBlanc = states['sensor.ecojoko_consommation_hp_blanc_reseau'].state;
    var ConsoHPRouge = states['sensor.ecojoko_consommation_hp_rouge_reseau'].state;
    var prixLabel;
    var prixHC;
    var currentHour = new Date().getHours();
    var HCMatin = currentHour >= 0 && currentHour < 6; // Vérifie et met dans la variable CouleurHCMatin la couleur des heures creuses du matin de minuit à 6h
    var HPDuJour = currentHour >= 6 && currentHour < 22; // Vérifie et met dans la variable CouleurHP la couleur des heures creuses du matin de 6h à 22h
    var HCSoir = currentHour >= 22 && currentHour < 24;// Vérifie et met dans la variable CouleurHCSoir la couleur des heures creuses du matin de 22h à minuit
    var CouleurHCMatin;
    var CouleurHP;
    var CouleurHCSoir;
    var prixHCMatin;
    var prixHP;
    var prixHCSoir;
    var prixHCBleu = 0.1056;
    var prixHCBlanc = 0.1246 ;
    var prixHCRouge = 0.1328;
    var prixHPBleu = 0.1369;
    var prixHPBlanc = 0.1654;
    var prixHPRouge = 0.7324;
    var prixDuJour = 0;
    var consoHCMatin = 0;
    var consoHCSoir = 0;
    var consoHP = 0;


    if (HCMatin){
      CouleurHCMatin = couleurActuelle;
    }
    if (HPDuJour){
      CouleurHP = couleurActuelle;
    }
    if (HCSoir){
      CouleurHCSoir = couleurActuelle;
    }

    if (CouleurHCMatin === 'bleu') {
      prixHCMatin =(prixHCBleu * ConsoHCBleu);
      consoHCMatin = ConsoHCBleu;
    } else if (CouleurHCMatin === 'blanc'){
      prixHCMatin =(prixHCBlanc * ConsoHCBlanc);
      consoHCMatin = ConsoHCBlanc;
    } else if (CouleurHCMatin === 'rouge'){
      prixHCMatin =(prixHCRouge * ConsoHCRouge);
      consoHCMatin = ConsoHCRouge;
    } else {
      prixHCMatin = 0;
    }

    if (CouleurHCSoir === 'bleu') {
      prixHCSoir =(prixHCBleu * ConsoHCBleu);
      consoHCSoir = ConsoHCBleu;
    } else if (CouleurHCSoir === 'blanc'){
      prixHCSoir =(prixHCBlanc * ConsoHCBlanc);
      consoHCSoir = ConsoHCBlanc;
    } else if (CouleurHCSoir === 'rouge'){
      prixHCSoir =(prixHCRouge * ConsoHCRouge);
      consoHCSoir = ConsoHCRouge;
    } else {
      prixHCSoir = 0;
    }

    if (CouleurHP === 'bleu') {
      prixHP =(0.1369 * ConsoHCBleu);
      consoHP = ConsoHPBleu;
    } else if (prixHPBleu === 'blanc'){
      prixHP =(prixHPBlanc * ConsoHCBlanc);
      consoHP = ConsoHPBlanc;
    } else if (CouleurHP === 'rouge'){
      prixHP =(prixHPRouge * ConsoHCRouge);
      consoHP = ConsoHPRouge;
    } else {
      prixHP = 0.0000;
    }

    

    prixDuJour = prixHCMatin + prixHP + prixHCSoir;

    return `<div style="text-align: right; font-size: 1.2em;">
    Conso du matin : ${consoHCMatin} kWh<br> 
    Prix HC du matin : ${prixHCMatin.toFixed(4)} €<br>
    Conso du jour : ${consoHP} kWh<br>
    Prix HP : ${prixHP.toFixed(4)} €<br>
    Conso du soir : ${consoHCSoir} kWh<br>
    Prix HC du soir : ${prixHCSoir.toFixed(4)} €<br>
    <br>
    Total du jour : ${prixDuJour.toFixed(4)} €</div>`;
    
  ]]]
styles:
  card:
    - background-color: |
        [[[
          var couleurActuelle = states['sensor.rte_tempo_couleur_actuelle'].state.toLowerCase();
          return (couleurActuelle === 'rouge') ? '#c62828' : 
                 (couleurActuelle === 'blanc') ? '#f5f5f5' : 
                 (couleurActuelle === 'bleu') ? '#1565c0' : 
                 'var(--card-background-color)';
        ]]]
    - color: |
        [[[
          return (states['sensor.rte_tempo_couleur_actuelle'].state.toLowerCase() === 'blanc') ? 'black' : 'white';
        ]]]
    - border-radius: 15px
    - padding: 10px
    - font-size: 1em
    - text-align: center
    - box-shadow: 0px 0px 5px 10px rgba(150,150,150,0.5)
  label:
    - font-weight: bold

Maintenant j’aimerai savoir si il est possible d’enregistrer les variables prixHCMatin, prixHCSoir, prixHP, prixDuJour pour en garder un historique quelque part. J’ai cru comprendre qu’avec des sensors ca serait possible, mais j’en suis pas encore là dans mon apprentissage d’home assistant.

Si quelqu’un a une idée, des améliorations, des remarques…

Merci d’avoir pris le temps de lire ce post.

PS : à noter que je ne sais pas encore comment va se comporter le calcul des heures creuses du soir si c’est la même couleur que le matin, est-ce que ca repart à 0 ou est-ce que ca va cumuler avec celle du matin… :sweat_smile:

Bonjour,
J’ai à peu près la même configuration que toi : Tempo + EcoJoko

J’utilise tout simplement Energie pour afficher mon suivi de conso et le calcul des prix à la journée, au mois, etc… Ces valeurs restent ensuite dans l’historique.

Dans Energie, je déclare ceci :
image

Puis pour chaque consommation (HC bleu, HP bleu, etc…) je déclare le tarif associé :

Tarif que j’ai déclaré via des input numbers => EDF Tarif Bleu prices within Home Assistant · GitHub

Je viens de config l’onglet energie et ajouté les input_number.

J’ai donc les 6 « ecojoko - Consommation HC/HP Bleu/Blanc/Rouge » de config, j’ai également mis ma production solaire.

Je vois que t’as ajouté l’ecojoko surplus de production, mais ca ne va pas fausser les résultats si t’as déjà la production solaire ?

J’ai également un autre soucis maintenant, c’est que le Coût affiche tout le temps 0,00€, pourtant j’ai bien pointé vers les bons input_number.

Il est possible de changer la couleur des différents « Consommation du réseau » ? histoire de mettre du rouge pour la consommation rouge, du blanc pour le blanc, etc…

Merci pour tes réponses, ca aide à voir un peu mieux.

PS : mon code du premier post est tout pété finalement. Il ne fonctionne pas. Mais j’aimerai quand même pouvoir afficher la cout à la journée et pouvoir le comparer avec l’option de base (je suis passé à tempor récemment) pour voir les économies effectuées.

Le surplus solaire ne fausse pas les infos de consommation, c’est juste un indicateur de ce que j’ai renvoyé à Enedis. Pour le calcul de ma prod, c’est via l’intégration Fusion Solar.

Le coût ne s’affiche pas de suite, il faut un peu de temps, dans mon cas cela a mis 1 heure ou 2 dès que j’ai commencé à consommer.

Pour la couleur oui c’est possible, tu trouveras certainement un post sur ce forum qui en parle. Idem pour le coût comparatif, j’ai cru voir un sujet ouvert sur cette demande.

Personnellement ces infos ne m’intéressent pas, je sais que grâce à Tempo je fais 40% d’économie ^^
=> Comparateur d'abonnements d'électricité | Un outil pour simuler les différents abonnements d'électricité depuis un export Linky de la consommation.

En revanche, j’affiche la couleur du jour et celle à venir le lendemain ainsi que le tarif HC/HP du moment.

image

type: vertical-stack
cards:
  - type: horizontal-stack
    cards:
      - type: custom:button-card
        entity: sensor.rte_tempo_couleur_actuelle
        name: Aujourd'hui
        show_label: true
        label: |
          [[[
            var date = new Date();
            var day = date.toLocaleString('fr-FR', { weekday: 'short' }).slice(0, 3);
            var dayOfMonth = ('0' + date.getDate()).slice(-2);
            var month = date.toLocaleString('fr-FR', { month: 'short' }).replace('.', '');
            var color = states['sensor.rte_tempo_couleur_actuelle'].state;
            return `<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);">Jour ${color}`;
          ]]]
        styles:
          card:
            - height: 110px
            - background-color: |
                [[[
                  var color = states['sensor.rte_tempo_couleur_actuelle'].state.toLowerCase();
                  return (color === 'rouge') ? '#c62828' : 
                         (color === 'blanc') ? '#f5f5f5' : 
                         (color === 'bleu') ? '#1565c0' : 
                         '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
      - type: custom:button-card
        entity: sensor.rte_tempo_prochaine_couleur
        name: Demain
        show_label: true
        label: |
          [[[
            var date = new Date();
            date.setDate(date.getDate() + 1);
            var day = date.toLocaleString('fr-FR', { weekday: 'short' }).slice(0, 3);
            var dayOfMonth = ('0' + date.getDate()).slice(-2);
            var month = date.toLocaleString('fr-FR', { month: 'short' }).replace('.', '');
            var color = states['sensor.rte_tempo_prochaine_couleur'].state;
            return `<span style="font-size: 1.2em; margin: 10px 0;">${day} ${dayOfMonth} ${month}</span><br><span style="font-size: 0.9em; margin: 5px 0;">À partir de 06h00</span><hr style="margin: 1px 0 8px; border-top: 1px solid rgba(0, 0, 0, 0.2);">Jour ${color}`;
          ]]]
        styles:
          card:
            - height: 110px
            - background-color: |
                [[[
                  var color = states['sensor.rte_tempo_prochaine_couleur'].state.toLowerCase();
                  return (color === 'rouge') ? '#c62828' : 
                         (color === 'blanc') ? '#f5f5f5' : 
                         (color === 'bleu') ? '#1565c0' : 
                         'var(--card-background-color)';
                ]]]
            - color: |
                [[[
                  return (states['sensor.rte_tempo_prochaine_couleur'].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
  - type: horizontal-stack
    cards:
      - type: custom:button-card
        name: Tarif HP
        show_label: true
        show_state: true
        label: |
          [[[
            var couleurActuelle = states['sensor.rte_tempo_couleur_actuelle'].state.toLowerCase();
            var heuresPleinesActuelles = states['binary_sensor.heures_pleines'].state;
            var prixLabel;

            if (couleurActuelle === 'bleu' && heuresPleinesActuelles) {
              prixLabel = states['input_number.tarif_edf_tempo_bleu_hp'].state + ' €';
            } else if (couleurActuelle === 'blanc' && heuresPleinesActuelles) {
              prixLabel = states['input_number.tarif_edf_tempo_blanc_hp'].state + ' €';
            } else if (couleurActuelle === 'rouge' && heuresPleinesActuelles) {
              prixLabel = states['input_number.tarif_edf_tempo_rouge_hp'].state + ' €';
            } else {
              prixLabel = 'Aucune information disponible';
            }

            var currentHour = new Date().getHours();
            var isChecked = currentHour >= 6 && currentHour < 22; // Check if the current hour is between 06:00 and 22:00

            return `<div style="text-align: right; font-size: 1.2em;">${prixLabel}&nbsp;&nbsp;${isChecked ? ' ✔' : ''}</div>`;
          ]]]
        styles:
          card:
            - height: 50px
            - background-color: |
                [[[
                  var couleurActuelle = states['sensor.rte_tempo_couleur_actuelle'].state.toLowerCase();
                  return (couleurActuelle === 'rouge') ? '#c62828' : 
                         (couleurActuelle === 'blanc') ? '#f5f5f5' : 
                         (couleurActuelle === 'bleu') ? '#1565c0' : 
                         'var(--card-background-color)';
                ]]]
            - color: |
                [[[
                  return (states['sensor.rte_tempo_couleur_actuelle'].state.toLowerCase() === 'blanc') ? 'black' : 'white';
                ]]]
            - border-radius: 20px
            - padding: 16px
            - font-size: 1em
            - text-align: center
            - box-shadow: 0px 2px 4px 0px rgba(0,0,0,0.3)
          label:
            - font-weight: bold
      - type: custom:button-card
        name: Tarif HC
        show_label: true
        show_state: true
        label: |
          [[[
            var couleurActuelle = states['sensor.rte_tempo_couleur_actuelle'].state.toLowerCase();
            var heuresCreusesActuelles = states['binary_sensor.heures_creuses'].state;
            var prixLabel;

            if (couleurActuelle === 'bleu' && heuresCreusesActuelles) {
              prixLabel = states['input_number.tarif_edf_tempo_bleu_hc'].state + ' €';
            } else if (couleurActuelle === 'blanc' && heuresCreusesActuelles) {
              prixLabel = states['input_number.tarif_edf_tempo_blanc_hc'].state + ' €';
            } else if (couleurActuelle === 'rouge' && heuresCreusesActuelles) {
              prixLabel = states['input_number.tarif_edf_tempo_rouge_hc'].state + ' €';
            } else {
              prixLabel = 'Aucune information disponible';
            }

            var currentHour = new Date().getHours();
            var isChecked = currentHour < 6 || currentHour >= 22; // Check if the current hour is before 06:00 or after 22:00

            return `<div style="text-align: right; font-size: 1.2em;">${prixLabel}&nbsp;&nbsp;${isChecked ? ' ✔' : ''}</div>`;
          ]]]
        styles:
          card:
            - height: 50px
            - background-color: |
                [[[
                  var couleurActuelle = states['sensor.rte_tempo_couleur_actuelle'].state.toLowerCase();
                  return (couleurActuelle === 'rouge') ? '#c62828' : 
                         (couleurActuelle === 'blanc') ? '#f5f5f5' : 
                         (couleurActuelle === 'bleu') ? '#1565c0' : 
                         'var(--card-background-color)';
                ]]]
            - color: |
                [[[
                  return (states['sensor.rte_tempo_couleur_actuelle'].state.toLowerCase() === 'blanc') ? 'black' : 'white';
                ]]]
            - border-radius: 20px
            - padding: 16px
            - font-size: 1em
            - text-align: center
            - box-shadow: 0px 2px 4px 0px rgba(0,0,0,0.3)
          label:
            - font-weight: bold

Pour la comparaison avec le tarif de base, c’est juste pour éviter de le faire à la main depuis le changement de l’abonnement, histoire de voir les économies et de me faire engueuler parce qu’on n’a pas pris tempo + tôt :laughing:

je n’ai pas de binary_sensor.heures_pleines, les 2 dernières cartes ne sont donc pas fonctionnelles.

OK, je vais attendre encore un peu pour voir si ca remonte le coût.

Merci encore pour toutes ces infos

Sous tempo, les HP & HC c’est facile à gérer => 6h 22h et 22h 6h

Donc, tu vas dans les Entrées (Paramètres>>Appareils et services>>Entrées), tu crées 2 Capteurs de moment de la journée (HC et HP) et voilà, tu as tes binary_sensor ^^

effectivement, ca fonctionne mieux avec ca. Top, merci :+1:

Je me répond à moi même, mais il y a un soucis avec l’onglet énergie d’home assistant ?

Ce matin c’était heure creuse blanche, mais sur mon panneau je ne vois que les HC bleue (qui auront lieu ce soir à 22h) qui ont déjà 7kWh de consommé, alors qu’on doit être à 0.

C’est pas encore au point de mon côté, pourtant j’ai vérifié l’association des sources d’énergie dans les params.

Bizarre :thinking: