Création graphique 2 capteurs Kw/h + ° extérieure

Bonjour,
Je souhaite tout d’abord vous souhaiter une excellente année 2025.

J’aimerais créer un graphique qui montre la moyenne quotidienne de température extérieure (j’ai un sensor pour ça) et la consommation quotidienne de ma PAC (j’ai aussi le sensor).
Comment me conseillez-vous de le faire ?
J’arrive à afficher un graphique, j’obtiens une température moyenne (par jour, par mois ou par an), mais la consommation de la Pac est calculée sur un mois avec donc une valeur proche parfois de 2000 kw/h.
Je ne peux afficher 2000 et 10° sur le même graphique, on ne verrait rien.
Mon objectif est d’avoir un graphique quotidien avec la conso de la pac quotidienne et la température moyenne quotidienne.

Merci par avance pour vos lumières.

Hello,

Tu peux utiliser GitHub - RomRider/apexcharts-card: 📈 A Lovelace card to display advanced graphs and charts based on ApexChartsJS for Home Assistant qui est super puissant et que je trouve beau :slight_smile:

J’affiche même des booléens sur un graph, tu peux changer les échelles.

type: custom:apexcharts-card
header:
  show: true
  title: Chaufferie
  show_states: true
  colorize_states: true
graph_span: 6h
all_series_config:
  stroke_width: 2
  curve: straight
yaxis:
  - id: temperature
    min: auto
    max: auto
    decimals: 0
  - id: boolean1
    show: false
    min: 0
    max: 4
  - id: boolean2
    show: false
    min: -1
    max: 3
  - id: boolean3
    show: false
    min: -2
    max: 2
  - id: boolean4
    show: false
    min: -3
    max: 1
series:
  - entity: sensor.sonde_ecs
    yaxis_id: temperature
    show:
      legend_value: false
  - entity: sensor.retour_cogeneration
    yaxis_id: temperature
    show:
      legend_value: false
  - entity: sensor.sonde_retour_coge_circuit_chauffage
    yaxis_id: temperature
    show:
      legend_value: false
  - entity: binary_sensor.i1_chaudiere_1_compteur_marche
    transform: "return x === 'on' ? 1 : 0;"
    yaxis_id: boolean4
    type: area
    curve: stepline
    stroke_width: 0
    show:
      in_header: false
      legend_value: true
  - entity: binary_sensor.i3_chaudiere_2_compteur_marche
    transform: "return x === 'on' ? 1 : 0;"
    yaxis_id: boolean3
    type: area
    curve: stepline
    stroke_width: 0
    show:
      in_header: false
      legend_value: true
  - entity: binary_sensor.i5_demande_chauffage_regulateur
    transform: "return x === 'on' ? 1 : 0;"
    yaxis_id: boolean2
    type: area
    opacity: 0.4
    curve: stepline
    stroke_width: 0
    show:
      in_header: false
      legend_value: true
  - entity: binary_sensor.i6_marche_coge
    transform: "return x === 'on' ? 1 : 0;"
    yaxis_id: boolean1
    type: area
    curve: stepline
    opacity: 0.4
    stroke_width: 0
    show:
      in_header: false
      legend_value: true

Qui donne:

Maintenant pour toi ça serait quelque chose comme:

type: custom:apexcharts-card
header:
  show: true
  title: PAC
  show_states: true
  colorize_states: true
graph_span: 24h
yaxis:
  - id: temperature
    min: auto
    max: auto
  - id: pac
    min: auto
    max: auto
series:
  - entity: sensor.temperature
    yaxis_id: temperature
  - entity: sensor.pac_conso
    yaxis_id: pac

J’espère que ça t’aide

2 « J'aime »

Désolé mais @Cloom à répondu en meme temps que moi ! tu auras deux réponses !!
Bonjour
ca dépend du composant que tu utilises pour ecrire tes courbes.
Moi j’utilise APEX CHART et tu peux mettre une unité secondaire sur la droite.
Je te donne un exemple , mais moi mon unité secondaire est binaire, pour afficher HP et HC ; mais tu peux mettre ce que tu veux


type: custom:apexcharts-card
header:
  title: Tension réseau <24h> en V
  show: true
graph_span: 24h
yaxis:
  - id: first
    decimals: 0
    min: 200
    max: 250
    apex_config:
      tickAmount: 5
  - id: second
    opposite: true
    max: 1
    decimals: 0
    apex_config:
      tickAmount: 1
series:
  - entity: sensor.shellyem_garage_gen_voltage
    yaxis_id: first
    name: tension
    color: black
    stroke_width: 1
  - entity: input_select.tarif_elec
    yaxis_id: second
    curve: stepline
    type: area
    transform: "return x === 'HC' ? 1 : 0 ;"
    color: aqua
    stroke_width: 0
    opacity: 0.3
    show:
      in_header: false
      legend_value: false

@ Jippy

Oui pour l’unité" secondaire, mais est-ce que chaque courbe à son échelle ?
Car je vais afficher aux alentours de 0 à 100 kwh/ jours pour la PAC et entre 0 et 25° pour la température

Oui, tu choisis en créant des yaxis que tu assignés à tes series. Tu peux même laisser en auto comme dans l’exemple que je te propose pour toi

Il y a je pense de nombreuses solutions pour avoir 2 courbes avec une échelle différente.
Par exemple, tu trouveras de nombreux exemples de « mini-graph » card, comme ceci par exemple:


La température est sur l’axe y de gauche, et l’humité sur l’axe y de droite, avec bien sûr des échelles différentes.
Mini-graph : GitHub - kalkih/mini-graph-card: Minimalistic graph card for Home Assistant Lovelace UI

Tu as aussi la possibilité d’utiliser GitHub - SpangleLabs/history-explorer-card: A card for Home Assistant Lovelace for exploring the history of your entities interactively and in real time. qui a de nombreuses options de customisation.

1 « J'aime »

Merci pour vos aides.
Le problème que j’ai c’est que le graphique affiche la plus petite intervale de valeur (la mesure instantanée).
J’aimerai afficher la moyenne de température de la journée et le total de kw/h de la pac.

Voici ce que j’ai fait :

type: custom:apexcharts-card
update_interval: 1min
graph_span: 3d
yaxis:
  - id: first  # identification name of the second y-axis
    decimals: 0
 
    apex_config:
      tickAmount: 6
  - id: second # identification name of the second y-axis
    opposite: true # make it show on the right side
    decimals: 0
    apex_config:
      tickAmount: 6
all_series_config:
     stroke_width: 2
series:
  - entity: sensor.pompe_a_chaleur
    yaxis_id: first # this serie will be associated to the 'id: first' axis.
  - entity: sensor.andlau_temperature
    yaxis_id: second # this serie will be associated to the 'id: second' axis.

avec plotly

1 « J'aime »

J’ai compris que tu avais mis la moyenne dans un sensor deja !

Je pense que tu peux faire comme ça (j’ai mis un exemple avec bar et courbe):

type: custom:apexcharts-card
graph_span: 7d
yaxis:
  - id: first  # identification name of the second y-axis
    decimals: 0
  - id: second # identification name of the second y-axis
    opposite: true # make it show on the right side
    decimals: 0
all_series_config:
     stroke_width: 2
series:
  - entity: sensor.netatmo_living_room_humidity
    yaxis_id: first # this serie will be associated to the 'id: first' axis.
    group_by:
      func: avg
      duration: 24h
  - entity: sensor.netatmo_living_room_temperature
    type: column
    yaxis_id: second # this serie will be associated to the 'id: second' axis.
    group_by:
      func: avg
      duration: 24h

Qui donne:

Mon préféré ! Avec des zooms, des slides, … Très configurable.

On peut faire des trucs de malade mais des simples graphes très simples et fonctionnels (C’est le seul qui permet de faire des zoom simplement à ma connaissance).

Le code :

- type: custom:plotly-graph
  entities:
    - entity: '[[climate]]'
      attribute: temperature
      yaxis: y1
      name: Consigne
    - entity: '[[climate]]'
      attribute: current_temperature
      yaxis: y1
      name: T°
    - entity: '[[climate]]'
      attribute: ema_temp
      yaxis: y1
      name: Ema
    - entity: '[[climate]]'
      attribute: on_percent
      yaxis: y2
      name: Power percent
      fill: tozeroy
      fillcolor: rgba(200, 10, 10, 0.3)
      line:
        color: rgba(200, 10, 10, 0.9)
    - entity: '[[slope]]'
      name: Slope
      fill: tozeroy
      yaxis: y9
      fillcolor: rgba(100, 100, 100, 0.3)
      line:
        color: rgba(100, 100, 100, 0.9)
  hours_to_show: 4
  refresh_interval: 10
  height: 800
  config:
    scrollZoom: true
  layout:
    margin:
      r: 50
    legend:
      x: 0
      'y': 1.2
      groupclick: togglegroup
      title:
        side: top right
    yaxis:
      visible: true
      position: 0
    yaxis2:
      visible: true
      position: 0
      fixedrange: true
      range:
        - 0
        - 1
    yaxis9:
      visible: true
      fixedrange: false
      range:
        - -2
        - 2
      position: 1
    xaxis:
      rangeselector:
        'y': 1.1
        x: 0.7
        buttons:
          - count: 1
            step: hour
          - count: 12
            step: hour
          - count: 1
            step: day
          - count: 7
            step: day

@Limonade67 as-tu réussi à faire ce que tu voulais?

J’adore Plotly Graph Card pour les zooms mais je le trouve pas très sexy. Je lui préfère Apex ou Mini graph card pour le style et j’ai des plotly dans des dashboards différents qui sont plus là pour le coté technique et chercher des informations précises. Ça a été très utile pour optimiser la chaufferie de mon immeuble :slight_smile: Celui qui gère les chaudières a adoré d’avoir les données sans passer des heures la nuit dans la chaufferie connecté directement au PLC :smiley:

Il y a désormais le zoom dans l’historique d’HA, donc c’est peut-être moins utile pour moi aujourd’hui.

Merci pour ton intervention.
Non, je n’ai pas réussi car comme souvent, une réponse implique d’autres questionnements de ma part.

  1. Quel est le langage utilisé par cette custom carte ?
  2. Quel langage est utilisé pour les cartes classiques ?

J’ai essayé d’utiliser des instructions d’une carte pour les mettre dans une autre avec l’éditeur de code, mais j’ai systématiquement des messages d’erreur ?

Mon objectif est maintenant d’afficher une valeur modifiée avec un calcul préalable.

J’aimerais afficher ma consommation quotidienne en kw/h divisée par la différence de température entre intérieur et extérieur.
Ratio = Pu consommée par jour / (T° int - T° ext).

C’est ce genre de graphique ?

Oui, mais en divisant la puissance/jours par la température chauffée.

Whaou, j’ai du mal à lire et comprendre ton graphique.
Que sont les histogrammes bleus en haut ?
Le nombre de jours à X°
La courbe verte est une moyenne ?
L’abscisse est notée température ext ,mais quant la température ext augmente, l’Elec en kwh/j augmente aussi ?

Sacré graph !