Bonjour à tous.
Je cherche à incruster le niveau d’une batterie sur un écran E-paper dans un projet ESPHOME.
J’ai trouvé un exemple pour le niveau de Wifi que j’ai implémenté et qui fonctionne très bien.
Il fonctionne avec la célèbre font « materialdesignicons » et je crois avoir compris le fonctionnement pour les font et les caractères standard.
Pour cet exemple les glyph sont fait avec des caractère qui ne s’affiche pas sur mes écrans de PC mais donnent les bons résultats sur le E_Paper ??? du coup je ne sais pas reproduire la chose pour la batterie.
Je joint la configuration du Wifi pour exemple si quelqu’un peut m’expliquer comment créer mes propres glyph je serai moins bête.
- file: '/config/www/fonts/materialdesignicons-webfont.ttf'
id: mdi_wifi
size: 20
glyphs: [
# Wifi
'', # mdi-wifi-strength-alert-outline
'', # mdi-wifi-strength-1
'', # mdi-wifi-strength-2
'', # mdi-wifi-strength-3
'', # mdi-wifi-strength-4
]
Ce qui m’étonne c’est c’est point d’interogation dans un rectangle pour chaque Glyph, toujours le même mai sil semble qu’il aille bien chercher les bonnes icones.
On l’appelle comme cela pour l’écran :
if(id(wifisignal).has_state()) {
int x = 296 ;
y = 128 ;
if (id(wifisignal).state >= -50) {
//Excellent
it.print(x, y, id(mdi_wifi), TextAlign::BASELINE_RIGHT, "");
ESP_LOGI("WiFi", "Exellent");
} else if (id(wifisignal).state >= -60) {
//Good
it.print(x, y, id(mdi_wifi), TextAlign::BASELINE_RIGHT, "");
ESP_LOGI("WiFi", "Good");
} else if (id(wifisignal).state >= -75) {
//Fair
it.print(x, y, id(mdi_wifi), TextAlign::BASELINE_RIGHT, "");
ESP_LOGI("WiFi", "Fair");
} else if (id(wifisignal).state >= -100) {
//Weak
it.print(x, y, id(mdi_wifi), TextAlign::BASELINE_RIGHT, "");
ESP_LOGI("WiFi", "Weak");
} else {
//Unlikely working signal
it.print(x, y, id(mdi_wifi), TextAlign::BASELINE_RIGHT, "");
ESP_LOGI("WiFi", "Unlikely");
}
}
C’est le même caractère etrange partout mais ça sort le bon icone…
Je voudrais faire pareil avec les icones depuis « battery_0_bar » jusque « battery_full ».
D’autre part j’ai un autre exemple mais qui ne fonctionne pas de la même manière mais donne le même résultat :
- file: '/config/www/fonts/materialdesignicons-webfont.ttf'
id: icon_font_20
size: 20
glyphs:
- "\U000F050F" # Temp
- "\U000F029A" # Pressure
- "\U000F15FA" # Wind
- "\U000F058C" # Rain
- "\U000F0597" # Chance pluie 0F0597
- "\U000F04B9" # Dedans canapé
- "\U000F09F1" # Dehors tulipe 0F09F1
- "\U000F0F2F" # Alerte meteo
On l’appel comme ça pour l’écran :
it.print (175 ,95 , id(icon_font_20), TextAlign::BASELINE_RIGHT,"\U000F09F1"); /* Icone dehors */
Là au moins c’est compréhensible.
Mais je ne vois pas comment sortir du fichier de font les bons codes \U000… pour mon exemple de batterie.
Voila des vrais problèmes de débutant qui n’a aucune connaissance théorique de programmation.
Merci de votre aide.
Philippe
A+