Tank
Septembre 30, 2024, 2:28
1
Bonjour,
Mon problème
Sur mon dashboard, je veux afficher la quantité d’électricité qui sort ou rentre dans le logement.
J’ai donc une pince ampèremétrique juste après le Linky, et actuellement la carte suivante :
type: custom:button-card
entity: sensor.general_power
name: |
[[[
if (states['sensor.general_power'].state > 0) return 'Acheté';
else return 'Vendu';
]]]
show_state: true
color_type: card
color: auto
styles:
card:
- font-size: 16px
- padding: 10px
- background-color: |
[[[
if (states['sensor.general_power'].state < 0) return '#1565c0';
else if (states['sensor.general_power'].state > 0) return '#FFA300';
else return 'white';
]]]
- color: |
[[[
if (states['sensor.general_power'].state < 0) return 'white';
else return 'black';
]]]
icon:
- width: 24px
- height: 24px
Toutefois, vu que l’électricité peut sortir du logement (lorsque les panneaux solaires produisent plus que ce que le logement consomme), la valeur affichée devient négative.
Comment faire en sorte de n’afficher que des valeurs positives, sans avoir besoin de créer un nouveau sensor qui fasse quelque chose du genre sensor.general_power * -1
?
Salut,
tu peux utiliser state_display
, et voir avec ce code ( a modifier suivant ton besoin) :
state_display: |
[[[
if (states['sensor.general_power'].state > 0)
return states['sensor.general_power'].state; else return '0';
]]]
Tank
Septembre 30, 2024, 2:47
3
Justement, dans la partie else return '0';
je voudrais afficher la valeur absolue.
Et c’est surtout là-dessus que je bloque et que j’ai besoin de votre aide
Salut,
return abs(states['sensor.general_power'].state);
ça doit donner ce que tu veux
1 « J'aime »
je ne pourrais pas t’en dire plus, je suis nul en math , enfin sur une valeur absolue
Édit:
j’aurais appris un truc aujourd’hui, merci @Pulpy-Luke
Tank
Septembre 30, 2024, 3:42
6
En essayant avec ta proposition, j’ai ce code complet :
type: custom:button-card
entity: sensor.general_power
name: |
[[[
if (states['sensor.general_power'].state > 0) return 'Acheté';
else return 'Vendu';
]]]
show_state: true
state_display: |
[[[
if (states['sensor.general_power'].state > 0)
return states['sensor.general_power'].state;
else
return abs(states['sensor.general_power'].state);
]]]
color_type: card
color: auto
styles:
card:
- font-size: 16px
- padding: 10px
- background-color: |
[[[
if (states['sensor.general_power'].state < 0) return '#1565c0';
else if (states['sensor.general_power'].state > 0) return '#FFA300';
else return 'white';
]]]
- color: |
[[[
if (states['sensor.general_power'].state < 0) return 'white';
else return 'black';
]]]
icon:
- width: 24px
- height: 24px
Et l’erreur suivante est remonté :
ButtonCardJSTemplateError: ReferenceError: abs is not defined in 'if(states[sensor.gene...
Ok, il manque la libraire Math.
Par ailleurs pas besoin de garder le if, tu peux directement retourner la valeur absolue (c’est toujours positif)
type: custom:button-card
entity: sensor.general_power
name: |
[[[
if (states['sensor.general_power'].state > 0) return 'Acheté';
else return 'Vendu';
]]]
show_state: true
state_display: |
[[[
return Math.abs(states['sensor.general_power'].state);
]]]
color_type: card
color: auto
styles:
card:
- font-size: 16px
- padding: 10px
- background-color: |
[[[
if (states['sensor.general_power'].state < 0) return '#1565c0';
else if (states['sensor.general_power'].state > 0) return '#FFA300';
else return 'white';
]]]
- color: |
[[[
if (states['sensor.general_power'].state < 0) return 'white';
else return 'black';
]]]
icon:
- width: 24px
- height: 24px
2 « J'aime »
Tank
Septembre 30, 2024, 4:11
8
Merci pour l’aide.
J’étais initialement parti sur ce math.abs, mais je devais mal l’implémenter (mauvais endroit, …)
Pour que ça colle à mon besoin, j’ai arrondi à l’entier, et rajouté l’unité à la fin (W), ce qui donne ceci :
state_display: |
[[[
return Math.round(Math.abs(states['sensor.general_power'].state)) + ' W';
]]]
1 « J'aime »