Bar graph avec la fonction Display d'esphome

Bonjour.

Je possède un lilygo t display s3 et m’amuse avec.
J’ai souhaité créer un bar graph , et, je n’ai pas vu cela implémenté dans les fonction display de esphome.

J’ai suivi ce fil: Bar graph? - ESPHome - Home Assistant Community

Et j’ai fait ce code (ici, c’est ma conso Edf variant de 0 à 6Kva):


            if (id(conso_edf).state >=1) {
              it.printf(115, 137, id(roboto24), white , TextAlign::TOP_CENTER, "%.0f W", id(conso_edf).state);
              if (id(conso_edf).state >1) {
                it.filled_rectangle(200, 162, 20,5 , green);}
              if (id(conso_edf).state >750) {
                it.filled_rectangle(200, 156, 20,5 , green);}
              if (id(conso_edf).state >1500) {
                it.filled_rectangle(200, 150, 20,5 , blue);}
              if (id(conso_edf).state >2250) {
                it.filled_rectangle(200, 144, 20,5 , blue);}
              if (id(conso_edf).state >3000) {
                it.filled_rectangle(200, 138, 20,5 , yellow);}
              if (id(conso_edf).state >3750) {
                it.filled_rectangle(200, 132, 20,5 , yellow);}
              if (id(conso_edf).state >4500) {
                it.filled_rectangle(200, 126, 20,5 , red);}
              if (id(conso_edf).state >5200) {
                it.filled_rectangle(200, 120, 20,5 , red);}              
            }

Ca me ressort ce que je souhaite , mais, je me pose la question:
Est-il possible de faire (beaucoup) plus simple ? ?

Si l’un(e) d’entre vous a un lien vers une doc , je suis preneur.

Bonne journée à vous :slight_smile:

J’enlèverais les accolades :

if (id(conso_edf).state >1) {
                it.filled_rectangle(200, 162, 20,5 , green);}

devient :

if (id(conso_edf).state >1) 
    it.filled_rectangle(200, 162, 20,5 , green);

Après, j’ai essayé en enlevant 120 et en faisant un modulo mais je ne gagne quasi rien car il faut garder le if pour les couleurs :slight_smile:
Si tu avais 50 cas, ça vaudrait le coup de faire une fonction, mais là, moi, je laisserais comme cela :slight_smile:

Bonjour Tedour et merci pour ton retour.

Du coup, je garde comme ça en attendant que ça soit nativement implémenté dans esphome

En attendant, mon code avec tes recommandations:

  if (id(conso_edf).state >=1) {
              it.printf(115, 137, id(roboto24), white , TextAlign::TOP_CENTER, "%.0f W", id(conso_edf).state);
              it.filled_rectangle(200, 162, 20,5 , green);
              if (id(conso_edf).state >750) 
                it.filled_rectangle(200, 156, 20,5 , green);
              if (id(conso_edf).state >1500) 
                it.filled_rectangle(200, 150, 20,5 , blue);
              if (id(conso_edf).state >2250) 
                it.filled_rectangle(200, 144, 20,5 , blue);
              if (id(conso_edf).state >3000) 
                it.filled_rectangle(200, 138, 20,5 , yellow);
              if (id(conso_edf).state >3750) 
                it.filled_rectangle(200, 132, 20,5 , yellow);
              if (id(conso_edf).state >4500) 
                it.filled_rectangle(200, 126, 20,5 , red);
              if (id(conso_edf).state >5250) 
                it.filled_rectangle(200, 120, 20,5 , red);
            }

Bonne journée