Modification échelle des axes?

Bonjour,

Je cherche une solution pour modifier l’échelle « figée » des axes des graphiques
Dans le cas présent, l’échelle est au maximum à 1000, tronquant de ce fait les valeurs supérieurs en les mettant à zéro (voir le graphique)
Ou alors y a t il une astuce avec le séparateur de millier ?

Avez vous une idée à ce propos ?

image

Merci pour votre aide
JL

Salut
Pourquoi tu penses que ça tronque plutôt qu’un truc qui retombe ?
En tout état de cause sur l’histoire tu n’a pas la main sur l’échelle, ça s’adapte tout seul aux valeurs. D’où ma question

Parce que je connais les valeurs initiales et elles dépassent cette limite à 1000 (voir le graphique ce dessous), j’ai comme un doute par rapport au séparateur parce que l’affichage disparait ( ? ) lorsque la valeur dépasse le millier et donc a un séparateur ajouté au nombre, je dirai même que la nouvelle valeur affichée devient minuscule sur le graphique, 3.235 s’affiche comme 3,235 sur le graphique et donc devient quasi invisible vu l’échelle de 1000…

Dans les formats numériques, il n’y a pas de séparateurs de milliers, c’est juste pour l’affichage.
Sur ton graphique, il n’y a pas de valeur > 1000.
Idem, le séparateur de décimales est différents en fonction du pays (en france c’est , ailleurs c’est un . )
Si mauvaise interprétation des choses, alors il faut commencer par allez voir quelles données sont transmises à HA

1 « J'aime »

Salut

Y’a un truc qui va pas du tout dans tes données.

Ton sma energie jour est à environ 3 kwh ce qui parait cohérents.
Par contre je graph monterai à plus de 1000 kwh pour le même sensors ? Rassure moi tu n’as pas uen centrale nucléaire dans ton jardin :slight_smile:

1 « J'aime »

:joy: effectivement c’est pas cohérent du tout cette échelle !
et comme dit, le problème est sans doute au niveau de la valeur fournie par la source (données récupérées d’un QA sur HC3 Fibaro)
Je viens de corriger la précision d’affichage dans HA pour cette source, rien après la virgule =
image
Mais alors je perd la précision en les kWh hors graphique…

Merci de m’avoir mis « la puce à l’oreille » :smiley:
image

Maintenant si c’est ok à ce niveau, je vais revenir après avec la problématique de l’affichage de la bonne unité dans une card lors du passage au millier… dès que le soleil sera revenu alimenter les panneaux :wink:

Tu voudrais que sur une carte ça affiche des Wh jusqu’a 999 et ensuite des kWh au dessus ?
Si c’est le cas je ne crois pas que ce soit gérer nativement par contre en passant par des cartes qui accepte les templates (toutes ne le permettent pas) tu dois pouvoir le faire en faisant un truc du style :

Si X < 1000 alors affiche x Wh
sinon affiche x/1000 kwh

J’ai essayé ce genre de possibilité mais à chaque fois cela fut un echec :
value_template: >
{% set value = states(‹ sensor.puissance_actuelle_e_numerique ›) | float(0) %}
{% if value >= 1000 %}
{{ (value / 1000) | round(3) }} kW
{% else %}
{{ value | round(3) }} W
{% endif %}

1000 : ok pour les valeurs en dessous de 1000 w mais pas de changement d’unité en passant au dessus de 1000
en modifiant avec > 1 là ca fonctionne pour les valeurs au dessus de 1000 w mais pour les valeurs inférieur, pas de changement d’unité…
C’était peut être lié à la précision d’affichage qui était sur « x,xxx »
Mais pourquoi cette modification pour l’affichage impacte le filtre pour le changement d’unité…
Je devrai attendre le retour du soleil pour faire encore des tests
(J’ai un peu abandonné pensant qu’il n’y avait pas de solution)

Un exemple avec une mushroom template card (parce que c’est celle que j’ai sous la main):

type: custom:mushroom-template-card
primary: Puissance PV
secondary: |-
  {% if (states('sensor.msunpv_powpv')|float(0) *-1) < 1000 %}
    {{ states('sensor.msunpv_powpv')|float(0) *-1 }} W
  {% else %}
    {{ (states('sensor.msunpv_powpv')|float(0) *-1 /1000 )|round(3) }} kW
  {% endif %}  
icon: mdi:solar-power

Ps: Le *-1 est pour avoir la valeur en positive car chez moi la puiisance pV est exprimée en négatif

Merci @Tochy :+1:
Je regarderai demain car là y a plus de production solaire pour tester…
:wink:

Bjr,
J’ai testé ton code mais cela n’a pas fonctionné pour moi, surement du à une erreur de mon coté.
J’abandonne l’idée de l’unité car afficher les milliers en W (avec 4 chiffres) est valable en fait :
image

Mais d’autres problème persistent…

  • Si une valeur se termine par « 0 » alors l’affichage est tronqué :
    image
  • dans la tuile Gauge, si la valeur dépasse 1000 w, l’affichage devient 1 avec unité W
    image
  • deux autre anomalie d’affichage,
    si la valeur passe sous 1000, pour Puissance actuelle E formatée, un « .0 » s’ajoute (voir capture d’écran).
    Et pour l’autre, Energie Jour O, il y a toujours un « ,0 » à la fin du nombre

Et là je suppose qu’il doit s’agir d’une formule complexe pour que d’une part, un nombre 1234 s’affiche « 1234 » ou « 1.234 » et non « 1234,0 »
et un nombre 999 s’affiche « 999 » et non « 999.0 »
image

Tout ca sans parler des graphiques qui ont l’échelle sur 1000 alors que les valeurs varient jusqu’à 4000…

c’est peut être insoluble (parfois une modif d’un coté impacte, négativement, un autre coté), alors j’abandonne les investigations, provisoirement.
Merci à tous :pray:

Ps : la config du fichier configuration.yaml qui doit sans doute être en partie responsable … ? :

# Loads default set of integrations. Do not remove.
default_config:

# Load frontend themes from the themes folder
frontend:
  themes: !include_dir_merge_named themes

automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml

sensor:
  - platform: integration
    source: sensor.cave1_energie_jour_o_78
    name: energy_spent
    unit_prefix: k
    round: 2

  - platform: template
    sensors:
      puissance_actuelle_e_numerique:
        friendly_name: "Puissance actuelle E (num)"
        value_template: >
          {% set value = states('sensor.cave2_puissance_actuelle_e_72').split(' ')[0] | float(0) %}
          {{ value }}
        unit_of_measurement: "W"
        unique_id: puissance_actuelle_E_num
        
      puissance_actuelle_o_numerique:
        friendly_name: "Puissance actuelle O (num)"
        value_template: >
          {% set value = states('sensor.cave1_puissance_actuelle_o_77').split(' ')[0] | float(0) %}
          {{ value }}
        unit_of_measurement: "W"
        unique_id: puissance_actuelle_O_num

      puissance_actuelle_e_formatted:
        friendly_name: "Puissance actuelle E formatée"
        value_template: >
          {% set value = states('sensor.puissance_actuelle_e_numerique_2') | float(0) %}
          {% if value > 1 %}
            {{ (value) }} W
          {% else %}
            {{ value | round(3) }} W!!!
          {% endif %}
        icon_template: mdi:flash
        unique_id: puissance_actuelle_E_formatted

      puissance_actuelle_o_formatted:
        friendly_name: "Puissance actuelle O formatée"
        value_template: >
            {% set value = states('sensor.puissance_actuelle_o_numerique_2') | float(0) %}
            {% if value > 1 %}
              {{ (value) }} W
            {% else %}
              {{ value | round(3) }} W!!!
            {% endif %}
        icon_template: mdi:flash
        unique_id: puissance_actuelle_O_formatted

      cave2_energie_jour_e_74_watts:
        friendly_name: "Energie Jour E (Watts)"
        value_template: >
          {% set value = states('sensor.cave2_energie_jour_e_74') | float %}
          {{ (value * 1000) | round(4) }}
        unit_of_measurement: "W"
        
      cave1_energie_jour_o_78_watts:
        friendly_name: "Energie Jour O (Watts)"
        value_template: >
          {% set value = states('sensor.cave1_energie_jour_o_78') | float %}
          {{ (value * 1000) | round(4) }}
        unit_of_measurement: "W"
        
homeassistant:
  customize:
    sensor.cave1_energie_jour_o_78:
      device_class: energy

    sensor.cave2_energie_jour_e_74:
      device_class: energy
      
    sensor.puissance_actuelle_e_numerique:
      device_class: power

    sensor.puissance_actuelle_o_numerique:
      device_class: power

    sensor.puissance_actuelle_e_formatted:
      device_class: power

    sensor.puissance_actuelle_o_formatted:
      device_class: power

# Activer les scripts Python
python_script:

Je pense que tes soucis viennent de la façon dont tu récupères tes valeurs.

Je vois que tu as un split, donc tu decoupes une chaine de caractères.

Fait voir à quoi correspond cette chaine sans le split:

states('sensor.cave2_puissance_actuelle_e_72')

Tu vas dans outils de dev/etats et tu cherches sensor.cave2_puissance_actuelle_e_72 et tu postes le résultat de son état.

Voilà (à 11h30 ce matin) :

Un point m’échappe. Pourquoi fait tu un split puisque à priori ton sensor te remonte juste la valeur que tu veux ?

set value = states('sensor.cave2_puissance_actuelle_e_72').split(' ')[0] | float(0)

Il y aurait eu besoin d’un split si le sensor avait remonté plusieurs infos en même temps avec un séparateur entre chaque du style

3.191 2561 36.1

Et là il aurait fallu un split(’ ‹ )[0] pour avoir la première valeur : 3.191
Un split( › ')[1] pour la deuxième : 2651
Etc…

Ensuite le 3.191, correspond 3 W ou à 3 kW sur ton installation ?
Parce que pour HA ça correspond à 3 W mais je pense qu’a 11h30 si tu avais du soleil tu étais plus vers 3 kW selon ton nombre de panneaux.

c’est en piochant des infos un peu partout pour résoudre les problèmes d’affichage que j’ai vu le split mais effectivement il n’a pas lieu d’être :face_with_diagonal_mouth:
d’ailleurs en le supprimant, j’obtiens le même résultat

oui, tu mets le doigt sur la problématique que je rencontre,
ex : HA m’affiche 3 W pour 3kW de la source ! je me contenterais bien d’un affichage de 3.191 W mais apparemment HA traduit le « . » comme un séparateur de décimal…

Ok alors ton sensor

  - platform: template
    sensors:
      puissance_actuelle_e_numerique:
        friendly_name: "Puissance actuelle E (num)"
        value_template: >
          {% set value = states('sensor.cave2_puissance_actuelle_e_72').split(' ')[0] | float(0) %}
          {{ value }}
        unit_of_measurement: "W"
        unique_id: puissance_actuelle_E_num

Doit être comme cela

  - platform: template
    sensors:
      puissance_actuelle_e_numerique:
        friendly_name: "Puissance actuelle E (num)"
        value_template: >
          {{ states('sensor.cave2_puissance_actuelle_e_72')|replace('.','') | float(0) }}
        unit_of_measurement: "W"
        unique_id: puissance_actuelle_E_num

Et tu peux même lui mettre le device_class directement sans passer par le customize

  - platform: template
    sensors:
      puissance_actuelle_e_numerique:
        friendly_name: "Puissance actuelle E (num)"
        value_template: >
          {{ states('sensor.cave2_puissance_actuelle_e_72')|replace('.','') | float(0) }}
        unit_of_measurement: "W"
        unique_id: puissance_actuelle_E_num
        device_class: power

Sous cette forme il devrait t’afficher si je me suis pas planter dans les () : 3191.0 W qui devient dans ce cas compatible avec HA.
La il est en watts on aurait pu le faire kWatts.

Ensuite pour l’histoire d’afficher des W ou des kW il ne faut plus toucher au sensor mais juste à son affichage dans les cards.

Essai déjà de courriger toutes les valeurs comme ci dessus.

Ok merci,
j’ai utilisé ta dernière proposition mais…
maintenant je produits instantanément trop ? (la centrale nucléaire dont tu parlais :smiley: , en fait c’est l’anomalie HA qui est de retour… les centaines sont transformées en millier)
image

En fait j’ai encore rechargé et la cela semble plus réaliste (à 16h30), mais parce que les valeurs sources sont au-dessus de 1000 et n’ont pas de « 0 » à la fin de leur nombre,
image

Mais l’anomalie revient ! :frowning:
les centaines transformées en millier et les milliers en centaine si il y a un « 0 » à la fin du nombre
image

En fait, lorsqu’il s’agit de centaine à la source, il y a un « .0 », « xxx.0 » ce qui apparemment provoque l’affichage en millier,
alors qu’en millier le nombre est « x.xxx »

Et en ce qui concerne l’effacement du dernier chiffre des milliers si c’est un « 0 »… ?

Ah oui. Effectivement ça se complique là.

Il n’y aurait pas un réglage à faire sur ton module pour éviter ça ?
Pour qu’il reste en watts par exemple ?

surement mais la ca me dépasse :-/
dans la H3 le résultat est toujours correcte :
image

image

j’utilise l’intégration Fibaro de HA pour importer ces données
peut être est ce à ce niveau que la conversion s’en mêle les pinceaux ?

En cherchant dans la QA du HC3 je vois bien :

local puissance_actuelle = string.format("%d", math.floor(self.values[property]['value']))

self:updateView("button2_1_1", "text", puissance_actuelle .. " W")

print("213 - Puissance_actuelle : " .. puissance_actuelle .. " W")

et le print donne bien une valeur en W :
213 - Puissance_actuelle : 3824 W

J’ai trouvé les lignes dans la QA qui concerne le passage en « K » :

elseif (value >= 1000) then unit = "K" .. unit value = value / 1000
j’ai désactivé ces lignes et maintenant dans HC3 j’ai un affichage en W uniquement pour cette valeur.
Mais dans HA, maintenant les valeurs sont à x10 !

Quand tu dis x10 c’est qu’il te rajoute un 0 à la fin quelle que soit la valeur ?
genre 1911 w il donne 19110