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 ?
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
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
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 =
Mais alors je perd la précision en les kWh hors graphique…
Merci de m’avoir mis « la puce à l’oreille »
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
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)
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 :
Mais d’autres problème persistent…
Si une valeur se termine par « 0 » alors l’affichage est tronqué :
dans la tuile Gauge, si la valeur dépasse 1000 w, l’affichage devient 1 avec unité W
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 »
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
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:
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
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…
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 , en fait c’est l’anomalie HA qui est de retour… les centaines sont transformées en millier)
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,
Mais l’anomalie revient !
les centaines transformées en millier et les milliers en centaine si il y a un « 0 » à la fin du nombre
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 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 !