#101 Le 01/09/2022, à 16:07
- iznobe
Re : Genmon: affichage température SSD dans le tableau de bord sur 22.04
je suis pas sur de bien comprendre le pourquoi du retour en arriere .
dans le code ou as tu besoin d' inserer ton delay = 10 et l' autre a 20 ?
Edit , je viens de voir c ' est la ligne convert .
cette ligne est dans la fonction , donc aucun soucis pour la portée des variable
Dernière modification par iznobe (Le 01/09/2022, à 16:11)
retour COMPLET et utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#102 Le 01/09/2022, à 16:19
- iznobe
Re : Genmon: affichage température SSD dans le tableau de bord sur 22.04
je viens de re ecrire la fonction avec les conditions re ecrites et les " " pour les chaines de caracteres .
essaie là :
#!/bin/bash
celsius=$(cat "$(grep -l "Samsung SSD 860" /sys/class/scsi_disk/*/device/model | xargs dirname)"/hwmon/hwmon*/temp1_input | rev | cut -c4- | rev);
alerte_jaune=50;
alerte_rouge=70;
################################################fonction gestion_gif####################################################################################
function gestion_gif ($couleur)
{
if [ "$couleur" = "rouge" ]
then
delay=10;
couleur_hexa="#FFFF00";
elif [ "$couleur" = "jaune" ]
then
delay=20;
couleur_hexa="#FF0000";
fi
if [ ! -f $HOME/.scripts/gifs/frames_png ]; then
mkdir $HOME/.scripts/frames_png/ 2>/dev/null;
fi
if [ ! -f $HOME/.scripts/gifs/ ]; then
mkdir $HOME/.scripts/gifs/ 2>/dev/null;
fi
if [ -f $HOME/.scripts/gifs/"$celsius""$couleur".gif ]; then
echo "<img>$HOME/.scripts/gifs/"$celsius""$couleur".gif</img>";
else
#création du gif animé de base
convert -size 75x22 xc:transparent -font "/usr/share/fonts/truetype/ubuntu/Ubuntu-R.ttf" -pointsize 12 -fill white -draw "text 0,15 'SSD :'" $HOME/.scripts/frames_png/X1.png;
for i in {2..10} ; do cp $HOME/.scripts/frames_png/X1.png $HOME/.scripts/frames_png/X"$i".png ; done;
convert -delay 20 $HOME/.scripts/frames_png/X*.png -loop 0 $HOME/.scripts/frames_png/gif_vide.gif;
#adaptation du gif animé de base à l'alerte jaune
convert $HOME/.scripts/frames_png/gif_vide.gif -coalesce -geometry +20+40 -gravity East \
-font "/usr/share/fonts/truetype/ubuntu/Ubuntu-R.ttf" -pointsize 12 -fill "#FF0000" \
\( -clone 0 -annotate 0 "$celsius °C " \) -swap 0 +delete \
\( -clone 1 -annotate 0 "$celsius °C " \) -swap 1 +delete \
\( -clone 2 -annotate 0 "$celsius °C " \) -swap 2 +delete \
\( -clone 3 -annotate 0 "$celsius °C " \) -swap 3 +delete \
\( -clone 4 -annotate 0 "$celsius °C " \) -swap 4 +delete \
-layers OptimizeFrame $HOME/.scripts/gifs/"$celsius""$couleur".gif
echo "<img>$HOME/.scripts/gifs/"$celsius""$couleur".gif</img>"
fi
}
########################################################################################################################################################
#################################################température normale: gif bleu##########################################################################
if [ "$celsius" -le "$alerte_jaune" ]; then
couleur=bleu;
msg="<txt><span> SSD: </span><span foreground=\"#00FFFF\">"${celsius}"°C </span></txt>"
echo "$msg"
fi
#########################################################alarme rouge: gif rouge########################################################################
if [ "$celsius" -ge "$alerte_rouge" ]; then
couleur=rouge;
function gestion_gif ($couleur)
paplay /usr/share/sounds/sound-icons/glass-water-1.wav;
spd-say -t female1 -l fr "attention la température du esse esse dé est très élevée";
xfconf-query -c xfce4-notifyd -p /theme -s special;
notify-send --icon=$HOME/.scripts/clef_vide.png 'Température SSD critique' "<span color='#FF0000' font='26px'><b> "$celsius" °C</b></span>";
sleep 11;
xfconf-query -c xfce4-notifyd -p /theme -s Smoke;
notify-send --icon=dialog-warning -t 0 'Température SSD critique' "<span color='#FF0000' font='26px'><b> "$celsius" °C</b></span>";
fi
####################################################alerte jaune: gif jaune#############################################################################
if [ "$celsius" -gt "$alerte_jaune" ] && [ "$celsius" -lt "$alerte_rouge" ]; then
couleur=jaune;
function gestion_gif ($couleur)
fi
NOTE : je ne peux pas tester le code , mais lorsque tu as des soucis avec des variables , comme là ' une condition sur une variable , ce que je fais :
je me fais un script d' essai dans lequel j ' affiche les variables avec un simple echo que je lance dans le terminal .
par exemple avant la condition:
echo "$couleur";
# ici la condition
# apres la condition
echo "$delay";
Dernière modification par iznobe (Le 01/09/2022, à 16:34)
retour COMPLET et utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#103 Le 01/09/2022, à 16:21
- jlfh0816
Re : Genmon: affichage température SSD dans le tableau de bord sur 22.04
Ah si, j’allais oublier: il y a quand même quelque chose qui ne fonctionne pas comme je le voudrais dans mon script.
Lorsque la température dépasse le seuil critique de l’alarme rouge (70°C), notify-send envoie bien une notification formatée par le thème temporaire special de xfce-notify-4.0 qui a été créé pour l’occasion.
Et au bout d’une dizaine de secondes, le thème habituel Smoke de ma machine reprend comme attendu le dessus.
Ce qui me chagrine, c’est que tant que le thème temporaire special est en activité, le tableau de bord n’affiche plus de température clignotante, l’emplacement est vide.
Ce n’est que lorsqu’il cède sa place à Smoke que cet affichage ré-apparaît.
Est-ce que ce comportement est normal ou y-a-t-il des spécificités au fonctionnement du trio GenMon / notify-send / xfce-notify-4.0 ?
Merci par avance si quelqu’un a une idée.
Xubuntu - Voyager 18.04 et 22.04
Hors ligne
#104 Le 01/09/2022, à 16:34
- iznobe
Re : Genmon: affichage température SSD dans le tableau de bord sur 22.04
pour ta derniere question , je ne sais pas trop .
Pour les conditions precedentes le code qui marche est :
if [ "$couleur" = "rouge" ]
then
delay=10;
couleur_hexa="#FFFF00";
elif [ "$couleur" = "jaune" ]
then
delay=20;
couleur_hexa="#FF0000";
fi
j ' ai teste avec ce simple script :
#!/bin/bash
couleur=rouge;
if [ "$couleur" = "rouge" ]
then
delay=10;
couleur_hexa="#FFFF00";
elif [ "$couleur" = "jaune" ]
then
delay=20;
couleur_hexa="#FF0000";
fi
echo "$delay";
Dernière modification par iznobe (Le 01/09/2022, à 16:37)
retour COMPLET et utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#105 Le 01/09/2022, à 16:38
- jlfh0816
Re : Genmon: affichage température SSD dans le tableau de bord sur 22.04
@iznobe
Merci de t'être repenché sur cette fonction récalcitrante (tu as vraiment beaucoup de patience ! ).
J'ai donc testé ta nouvelle version (post #102) mais :
- si je l'exécute dans GenMon, il n'y a pas de mieux pour l'affichage dans le tableau de bord (delay et couleur ne sont pas corrects);
- si je l'exécute dans le terminal, je reçois ce message d'erreur :
jlfh0816@Voyager2204:~$ ./temperature.sh
./temperature.sh: ligne 21: erreur de syntaxe près du symbole inattendu « fi »
./temperature.sh: ligne 21: ` fi'
Merci beaucoup pour le truc des echo lors des tests de variables. Je vais m'en servir à coup sûr !
Dernière modification par jlfh0816 (Le 01/09/2022, à 16:39)
Xubuntu - Voyager 18.04 et 22.04
Hors ligne
#106 Le 01/09/2022, à 16:39
- iznobe
Re : Genmon: affichage température SSD dans le tableau de bord sur 22.04
oui j ' avais mis un elif couleur bleu vide en trop ca lui plaisait pas ...
j ' ai corrigé dans mon post precedent .
n ' oublie pas de changer delay = 10 et delay = 20 ( ainsi que pour le code couleur ) par la variable correspondante dans la fonction .
Dernière modification par iznobe (Le 01/09/2022, à 16:41)
retour COMPLET et utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#107 Le 01/09/2022, à 17:13
- jlfh0816
Re : Genmon: affichage température SSD dans le tableau de bord sur 22.04
@iznobe
Dans un terminal, ton petit script de test fonctionne très bien, aucun soucis.
Lorsque j'inclus ce bout de code dans ta fonction et que je lance le script dans un terminal, ça a l'air de fonctionner (j'ai bien l'echo de l'image à afficher) mais il y a malgré tout un message d'erreur :
Ci-dessous, par exemple pour tester la valeur celsius=67 :
convert-im6.q16: invalid argument for option `-delay': /home/jlfh0816/.scripts/frames_png/X10.png @ error/convert.c/ConvertImageCommand/1223.
<img>/home/jlfh0816/.scripts/gifs/67.gif</img>
Et, troisième point, lorsque je fais lancer ce script par GenMon, les couleurs et vitesses de clignotement ne sont pas correctes, certains chiffres sont même en blanc.
Du coup, je crois que le problème est au niveau de la commande convert de ImageMagik. Je vais me documenter là-dessus et je te dirai si je trouve quelque chose de probant.
Xubuntu - Voyager 18.04 et 22.04
Hors ligne
#108 Le 01/09/2022, à 17:17
- iznobe
Re : Genmon: affichage température SSD dans le tableau de bord sur 22.04
si tu as inclus un appel a fonction pour la couleur bleu et que tu n ' utilise pas de delay , il faut initialiser delay a 0 par exemple , dans la fonction au debut :
delay=0;
couleur_hexa="#FFFFFF";
if [ "$couleur" = "rouge" ]
then
delay=10;
couleur_hexa="#FFFF00";
elif [ "$couleur" = "jaune" ]
then
delay=20;
couleur_hexa="#FF0000";
fi
ca permet d' avoir une valeur par defaut a l' initialisation prise en compte dans tous les autres cas .
ou encore pour aller au bout de la structure if elif else :
if [ "$couleur" = "rouge" ]
then
delay=10;
couleur_hexa="#FFFF00";
elif [ "$couleur" = "jaune" ]
then
delay=20;
couleur_hexa="#FF0000";
else
delay=0;
couleur_hexa="#FFFFFF";
fi
Dernière modification par iznobe (Le 01/09/2022, à 17:26)
retour COMPLET et utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#109 Le 01/09/2022, à 17:46
- jlfh0816
Re : Genmon: affichage température SSD dans le tableau de bord sur 22.04
si tu as inclus un appel a fonction pour la couleur bleu et que tu n ' utilise pas de delay , il faut initialiser delay a 0 par exemple , dans la fonction au debut :
Non, je n'appelle pas la fonction pour une température normale puisque, dans ce cas, je n'ai pas besoin de gifs animés.
Par contre, j'avais oublié de te signaler que lorsque c'est GenMon qui exécute le script, l'affichage des températures <50°C dans le tableau de bord est anormal car toujours double :
- un affichage fixe en bleu, c'est celui normalement attendu;
- juste à côté, un autre affichage clignotant et le plus souvent en rouge.
Du coup, j'ai essayé le script avec un appel à la fonction pour les températures normales mais cela ne change rien, j'ai le même double affichage.
Sinon, à propos de delay=0, j'ai lu dans la doc de ImageMagick que c'est une valeur très particulière réservée à la création de frames intermédiaires pas forcément visibles par l'utilisateur... pas trop compris à quoi ça sert mais a priori, peut-être vaut-il mieux éviter d'attribuer la valeur 0 à la variable delay ?
Tout cela est assez exaspérant car, dans un terminal, le script a l'air de ne pas trop mal se comporter. C'est lorsqu'on le fait exécuter par GenMon que ça se passe mal...
Bon, ne perd plus ton temps avec ça iznobe, tu as déjà été bien gentil de m'aider jusqu'ici. Je me contenterai d'un script sans fonction, ça suffira à mon bonheur je t'assure... Merci !
Xubuntu - Voyager 18.04 et 22.04
Hors ligne
#110 Le 01/09/2022, à 18:36
- iznobe
Re : Genmon: affichage température SSD dans le tableau de bord sur 22.04
Par contre, j'avais oublié de te signaler que lorsque c'est GenMon qui exécute le script, l'affichage des températures <50°C dans le tableau de bord est anormal car toujours double :
- un affichage fixe en bleu, c'est celui normalement attendu;
- juste à côté, un autre affichage clignotant et le plus souvent en rouge.
ok donc y a un soucis avec le code .
tu devrais regarder sur le net " bash comparaison " et " bash conditions ".
essaie ce code :
#!/bin/bash
celsius=$(cat "$(grep -l "Samsung SSD 860" /sys/class/scsi_disk/*/device/model | xargs dirname)"/hwmon/hwmon*/temp1_input | rev | cut -c4- | rev);
alerte_jaune=50;
alerte_rouge=70;
################################################fonction gestion_gif####################################################################################
function gestion_gif ($couleur)
{
if [ "$couleur" = "rouge" ]
then
delay=10;
couleur_hexa="#FFFF00";
elif [ "$couleur" = "jaune" ]
then
delay=20;
couleur_hexa="#FF0000";
else
delay=01;
couleur_hexa="#FFFFFF";
fi
if [ ! -f $HOME/.scripts/gifs/frames_png ]; then
mkdir $HOME/.scripts/frames_png/ 2>/dev/null;
fi
if [ ! -f $HOME/.scripts/gifs/ ]; then
mkdir $HOME/.scripts/gifs/ 2>/dev/null;
fi
if [ -f $HOME/.scripts/gifs/"$celsius""$couleur".gif ]; then
echo "<img>$HOME/.scripts/gifs/"$celsius""$couleur".gif</img>";
else
#création du gif animé de base
convert -size 75x22 xc:transparent -font "/usr/share/fonts/truetype/ubuntu/Ubuntu-R.ttf" -pointsize 12 -fill white -draw "text 0,15 'SSD :'" $HOME/.scripts/frames_png/X1.png;
for i in {2..10} ; do cp $HOME/.scripts/frames_png/X1.png $HOME/.scripts/frames_png/X"$i".png ; done;
convert -delay 20 $HOME/.scripts/frames_png/X*.png -loop 0 $HOME/.scripts/frames_png/gif_vide.gif;
#adaptation du gif animé de base à l'alerte jaune
convert $HOME/.scripts/frames_png/gif_vide.gif -coalesce -geometry +20+40 -gravity East \
-font "/usr/share/fonts/truetype/ubuntu/Ubuntu-R.ttf" -pointsize 12 -fill "#FF0000" \
\( -clone 0 -annotate 0 "$celsius °C " \) -swap 0 +delete \
\( -clone 1 -annotate 0 "$celsius °C " \) -swap 1 +delete \
\( -clone 2 -annotate 0 "$celsius °C " \) -swap 2 +delete \
\( -clone 3 -annotate 0 "$celsius °C " \) -swap 3 +delete \
\( -clone 4 -annotate 0 "$celsius °C " \) -swap 4 +delete \
-layers OptimizeFrame $HOME/.scripts/gifs/"$celsius""$couleur".gif
echo "<img>$HOME/.scripts/gifs/"$celsius""$couleur".gif</img>"
fi
}
########################################################################################################################################################
#########################################################alarme rouge: gif rouge########################################################################
if [ "$celsius" -ge "$alerte_rouge" ]; then
couleur=rouge;
function gestion_gif ($couleur)
paplay /usr/share/sounds/sound-icons/glass-water-1.wav;
spd-say -t female1 -l fr "attention la température du esse esse dé est très élevée";
xfconf-query -c xfce4-notifyd -p /theme -s special;
notify-send --icon=$HOME/.scripts/clef_vide.png 'Température SSD critique' "<span color='#FF0000' font='26px'><b> "$celsius" °C</b></span>";
sleep 11;
xfconf-query -c xfce4-notifyd -p /theme -s Smoke;
notify-send --icon=dialog-warning -t 0 'Température SSD critique' "<span color='#FF0000' font='26px'><b> "$celsius" °C</b></span>";
####################################################alerte jaune: gif jaune#############################################################################
elif [ "$celsius" -gt "$alerte_jaune" ] && [ "$celsius" -lt "$alerte_rouge" ]; then
couleur=jaune;
function gestion_gif ($couleur)
#################################################température normale: gif bleu##########################################################################
else # [ "$celsius" -le "$alerte_jaune" ]; then
couleur=bleu;
msg="<txt><span> SSD: </span><span foreground=\"#00FFFF\">"${celsius}"°C </span></txt>"
echo "$msg"
fi
il devrait , avec un peu de chance , fonctionner et régler quelque soucis je n ' ai pas inclus tes dernieres modifs ni tester .
Dernière modification par iznobe (Le 01/09/2022, à 18:38)
retour COMPLET et utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#111 Le 01/09/2022, à 21:33
- jlfh0816
Re : Genmon: affichage température SSD dans le tableau de bord sur 22.04
essaie ce code :
... / ...
il devrait , avec un peu de chance , fonctionner et régler quelque soucis je n ' ai pas inclus tes dernieres modifs ni tester .
Merci iznobe de t'accrocher comme ça, tu as vraiment beaucoup de ressources et de patience !
J'ai donc testé ton nouveau code et voici ce que ça donne :
1°) si ton code est exécuté dans un terminal, en testant successivement 27°C, 56°C et 96°C :
jlfh0816@Voyager2204:~/.scripts$ ./temperature.sh
<img>/home/jlfh0816/.scripts/gifs/27.gif</img>
<txt><span> SSD: </span><span foreground="#00FFFF">27°C </span></txt>
jlfh0816@Voyager2204:~/.scripts$ ./temperature.sh
<img>/home/jlfh0816/.scripts/gifs/56.gif</img>
jlfh0816@Voyager2204:~/.scripts$ ./temperature.sh
<img>/home/jlfh0816/.scripts/gifs/96.gif</img>
jlfh0816@Voyager2204:~/.scripts$
Donc, tout a l'air de bien se passer dans le terminal, aucun message d'erreur...
Toutefois, en y regardant de plus près, il y a quand même des anomalies :
- les gifs animés sont dénommés 56.gif et 96.gif alors qu'ils auraient être appelés 56jaune.gif et 96rouge.gif
- et, en ce qui concerne la température normale 27°C, il n'aurait dû y avoir qu'une seule ligne, celle délimitée par les balises <txt><span> ... </span></txt>. La première ligne délimitée par les balises <img> ... </img> ne devrait pas exister puisque les températures normales doivent être affichées fixes et en bleu turquoise. Elles n'ont pas besoin d'un gif animé pour les représenter (d'autant que ce gif animé non désiré contient la même erreur de dénomination que les autres : 27.gif) !
Et surtout, comme tu le vois ci-dessous, l'affichage correspondant dans le tableau de bord n'est pas du tout correct.
2°) si ton code est exécuté par GenMon :
- en attribuant une température normale :
- en attribuant une température de 56°C :
- en attribuant une température de 96°C :
En fait, ce sont toujours les mêmes erreurs d'affichage que précédemment... à vraiment ne rien y comprendre ???
Dernière modification par jlfh0816 (Le 02/09/2022, à 10:13)
Xubuntu - Voyager 18.04 et 22.04
Hors ligne
#112 Le 02/09/2022, à 07:05
- iznobe
Re : Genmon: affichage température SSD dans le tableau de bord sur 22.04
Bonjour , je pense que , vu que dansun terminal cela fonctionne comme attendu , ce doit etre lié a Genmon et a ses specificités .
cela dit j' ai relevé une erreur :
if [ ! -f $HOME/.scripts/gifs/frames_png ]; then
mkdir $HOME/.scripts/frames_png/ 2>/dev/null;
fi
pas un soucis là ?
ca ne devrait pas etre plutot :
if [ ! -f $HOME/.scripts/frames_png ]; then
mkdir $HOME/.scripts/frames_png/ 2>/dev/null;
fi
sans parler du fait que " -f " c ' est pour un fichier , pour un repertoire tu devrais utiliser " -d "
bref , a mon avis il y a quand meme pas mal de chose a revoir .
EDIT :
du coup j' ai corriger les erreurs repertoires ( -d ) et la faute pour le " gif " en trop dans le chemin .
j' ai aussi rendu plus clair en definnissant les chemins dans des variables en debut de fonction . y a peut etre des endroits ou il manque " $ " , a tester :
#!/bin/bash
celsius=$(cat "$(grep -l "Samsung SSD 860" /sys/class/scsi_disk/*/device/model | xargs dirname)"/hwmon/hwmon*/temp1_input | rev | cut -c4- | rev);
alerte_jaune=50;
alerte_rouge=70;
################################################fonction gestion_gif####################################################################################
function gestion_gif ($couleur)
{
# test
rep_gif="$HOME"/.scripts/gifs
nom_gif="$celsius""$couleur".gif
complete_gif="$HOME"/.scripts/gifs/"$celsius""$couleur".gif
if [ "$couleur" = "rouge" ]
then
delay=10;
couleur_hexa="#FFFF00";
elif [ "$couleur" = "jaune" ]
then
delay=20;
couleur_hexa="#FF0000";
else
delay=01;
couleur_hexa="#FFFFFF";
fi
if [ ! -d $HOME/.scripts/frames_png ]; then
mkdir $HOME/.scripts/frames_png/ 2>/dev/null;
fi
if [ ! -d $rep_gif ]; then
mkdir $rep_gif 2>/dev/null;
fi
if [ -f $complete_gif ]; then
echo "<img>$complete_gif</img>";
else
#création du gif animé de base
convert -size 75x22 xc:transparent -font "/usr/share/fonts/truetype/ubuntu/Ubuntu-R.ttf" -pointsize 12 -fill white -draw "text 0,15 'SSD :'" $HOME/.scripts/frames_png/X1.png;
for i in {2..10} ; do cp $HOME/.scripts/frames_png/X1.png $HOME/.scripts/frames_png/X"$i".png ; done;
convert -delay 20 $HOME/.scripts/frames_png/X*.png -loop 0 $HOME/.scripts/frames_png/gif_vide.gif;
#adaptation du gif animé de base à l'alerte jaune
convert $HOME/.scripts/frames_png/gif_vide.gif -coalesce -geometry +20+40 -gravity East \
-font "/usr/share/fonts/truetype/ubuntu/Ubuntu-R.ttf" -pointsize 12 -fill "#FF0000" \
\( -clone 0 -annotate 0 "$celsius °C " \) -swap 0 +delete \
\( -clone 1 -annotate 0 "$celsius °C " \) -swap 1 +delete \
\( -clone 2 -annotate 0 "$celsius °C " \) -swap 2 +delete \
\( -clone 3 -annotate 0 "$celsius °C " \) -swap 3 +delete \
\( -clone 4 -annotate 0 "$celsius °C " \) -swap 4 +delete \
-layers OptimizeFrame $complete_gif
echo "<img>$complete_gif</img>"
fi
}
########################################################################################################################################################
#########################################################alarme rouge: gif rouge########################################################################
if [ "$celsius" -ge "$alerte_rouge" ]; then
couleur=rouge;
function gestion_gif ($couleur)
paplay /usr/share/sounds/sound-icons/glass-water-1.wav;
spd-say -t female1 -l fr "attention la température du esse esse dé est très élevée";
xfconf-query -c xfce4-notifyd -p /theme -s special;
notify-send --icon=$HOME/.scripts/clef_vide.png 'Température SSD critique' "<span color='#FF0000' font='26px'><b> "$celsius" °C</b></span>";
sleep 11;
xfconf-query -c xfce4-notifyd -p /theme -s Smoke;
notify-send --icon=dialog-warning -t 0 'Température SSD critique' "<span color='#FF0000' font='26px'><b> "$celsius" °C</b></span>";
####################################################alerte jaune: gif jaune#############################################################################
elif [ "$celsius" -gt "$alerte_jaune" ] && [ "$celsius" -lt "$alerte_rouge" ]; then
couleur=jaune;
function gestion_gif ($couleur)
#################################################température normale: gif bleu##########################################################################
else
couleur=bleu;
echo "<txt><span> SSD: </span><span foreground=\"#00FFFF\">"${celsius}"°C </span></txt>"
fi
NOTE : dans cette ligne :
convert -delay 20 $HOME/.scripts/frames_png/X*.png -loop 0 $HOME/.scripts/frames_png/gif_vide.gif;
ne faut il pas utiliser la variable $delay plutot que delay 20 ?
par exemple :
convert -delay "$delay" $HOME/.scripts/frames_png/X*.png -loop 0 $HOME/.scripts/frames_png/gif_vide.gif;
la variable "couleur_hexa" dans la fonction n ' est pas utilisée , est-ce normal ?
Dernière modification par iznobe (Le 02/09/2022, à 07:55)
retour COMPLET et utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#113 Le 02/09/2022, à 10:55
- jlfh0816
Re : Genmon: affichage température SSD dans le tableau de bord sur 22.04
Bonjour , je pense que , vu que dansun terminal cela fonctionne comme attendu , ce doit etre lié a Genmon et a ses specificités .
Bonjour iznobe,
Oui, je pense comme toi que c'est GenMon qui est le fauteur de troubles.
Ceci dit, même si le fonctionnement dans un terminal ne renvoie pas de messages d'erreur, on y découvre quand même de sérieuses anomalies dans ses réponses :
- pourquoi la fonction est-elle exécutée dans le cas des températures normales alors qu'on ne l'appelle pas ? C'est presque de la magie ! En tout cas, c'est ce comportement anormal qui entraîne un double affichage des températures normales;
- le nom des gifs est toujours tronqué : il manque systématiquement la couleur (celle de la variable $couleur).
cela dit j' ai relevé une erreur :
if [ ! -f $HOME/.scripts/gifs/frames_png ]; then mkdir $HOME/.scripts/frames_png/ 2>/dev/null; fi
pas un soucis là ?
ca ne devrait pas etre plutot :if [ ! -f $HOME/.scripts/frames_png ]; then mkdir $HOME/.scripts/frames_png/ 2>/dev/null; fi
Oui, j'avais moi aussi repéré cette erreur dans ma version du script sans fonction et je l'avais déjà corrigée (voir mon post #100)
sans parler du fait que " -f " c ' est pour un fichier , pour un repertoire tu devrais utiliser " -d "
bref , a mon avis il y a quand meme pas mal de chose a revoir .
tu as tout à fait raison, je n'avais pas repéré celle-ci.... désolé, je vais la corriger.
NOTE : dans cette ligne :
convert -delay 20 $HOME/.scripts/frames_png/X*.png -loop 0 $HOME/.scripts/frames_png/gif_vide.gif;
ne faut il pas utiliser la variable $delay plutot que delay 20 ?
par exemple :convert -delay "$delay" $HOME/.scripts/frames_png/X*.png -loop 0 $HOME/.scripts/frames_png/gif_vide.gif;
Oui, c'est ce que je fais systématiquement dans mes tests .
La variable $delay est donc utilisée (avec et sans les " ").
la variable "couleur_hexa" dans la fonction n ' est pas utilisée , est-ce normal ?
c'est pareil que pour la variable $delay: dans mes tests, je remplace systématiquement -fill "#FF0000" par -fill "$couleur_hexa"
La variable "$couleur_hexa" est donc elle aussi utilisée.
EDIT :
du coup j' ai corriger les erreurs repertoires ( -d ) et la faute pour le " gif " en trop dans le chemin .
j' ai aussi rendu plus clair en definnissant les chemins dans des variables en debut de fonction . y a peut etre des endroits ou il manque " $ " , a tester :
... / ...
J'ai donc testé ta nouvelle version.
Dans un terminal, j'ai le même comportement qu'avec la précédente version, cad pas de messages d'erreur mais toujours les anomalies déjà identifiées auparavant, notamment pourquoi la fonction est-elle activée dans le cas des températures normales (gif bleu) alors qu'elle n'est pas du tout appelée ? C'est vraiment un grand mystère pour moi ...
Et lorsque je fais exécuter ton code par GenMon, l'affichage est quasiment le même que dans les gifs d'illustration de mon post précédent #111 à la différence près que les chiffres sont cette fois tous écrits en blanc et que le clignotement est ultra-rapide (c'est le delay=01 qui est responsable, je pense)
Pour conclure, je vais chercher sur la toile des exemples de scripts écrits spécialement pour GenMon, je pense comme toi que c'est lui qui est au cœur du comportement si particulier et si rétif de l'affichage.
Un grand merci encore pour ton aide et tout le temps que tu y as consacré
Dernière modification par jlfh0816 (Le 02/09/2022, à 15:14)
Xubuntu - Voyager 18.04 et 22.04
Hors ligne
#114 Le 04/09/2022, à 16:51
- jlfh0816
Re : Genmon: affichage température SSD dans le tableau de bord sur 22.04
Bonjour,
Voilà, ça y est, après bien des prises de tête, j'ai enfin réussi à maîtriser cette foutue fonction.
Tout se déroule désormais correctement, aussi bien dans un terminal que dans le tableau de bord.
Au final, il y a donc 2 versions fonctionnelles de mon petit script (toutes deux recourant à drivetemp et non à hddtemp):
- au post #100, celle qui n'utilise pas de fonction;
- ci-dessous, celle qui utilise la fonction initiée par iznobe :
#!/bin/bash
#script permettant d'afficher la température du SSD dans le tableau de bord grâce au plugin Moniteur Générique GenMon
#source: https://forum.ubuntu-fr.org/viewtopic.php?pid=22595328#p22595328
celsius=$(cat "$(grep -l "Samsung SSD 860" /sys/class/scsi_disk/*/device/model | xargs dirname)"/hwmon/hwmon*/temp1_input | rev | cut -c4- | rev);
alerte_jaune=50;
alerte_rouge=70;
#ligne suivante à décommenter si on veut tester une température particulière de SSD
#celsius=95;
if [ "$celsius" -gt "$alerte_jaune" ] && [ "$celsius" -lt "$alerte_rouge" ]; then
couleur=jaune;
delay="-delay 20";
couleur_hexa="#FFFF00";
fi
if [ "$celsius" -ge "$alerte_rouge" ]; then
couleur=rouge;
delay="-delay 10";
couleur_hexa="#FF0000";
fi
function gestion_gif ()
{
font="/usr/share/fonts/truetype/ubuntu/Ubuntu-R.ttf";
phrase="attention la température du esse esse dé est très élevée";
rep_frames="$HOME"/.scripts/frames_png;
rep_gifs="$HOME"/.scripts/gifs;
nom_gif="$celsius""$couleur".gif;
complete_gif=$rep_gifs/"$celsius""$couleur".gif;
if [ ! -d $rep_frames ]; then
mkdir $rep_frames 2>/dev/null;
fi
if [ ! -d $rep_gifs ]; then
mkdir $rep_gifs 2>/dev/null;
fi
if [ -f $complete_gif ]; then
echo "<img>$complete_gif</img>";
else
#création du gif animé de base
convert -size 75x22 xc:transparent -font "$font" -pointsize 12 -fill white -draw "text 0,15 'SSD :'" $rep_frames/X1.png;
for i in {2..10} ; do cp $rep_frames/X1.png $rep_frames/X"$i".png ; done;
convert $delay $rep_frames/X*.png -loop 0 $rep_frames/gif_vide.gif;
#inscription de la température sur le gif animé de base
convert $rep_frames/gif_vide.gif -coalesce -geometry +20+40 -gravity East \
-font "$font" -pointsize 12 -fill "$couleur_hexa" \
\( -clone 0 -annotate 0 "$celsius °C " \) -swap 0 +delete \
\( -clone 1 -annotate 0 "$celsius °C " \) -swap 1 +delete \
\( -clone 2 -annotate 0 "$celsius °C " \) -swap 2 +delete \
\( -clone 3 -annotate 0 "$celsius °C " \) -swap 3 +delete \
\( -clone 4 -annotate 0 "$celsius °C " \) -swap 4 +delete \
-layers OptimizeFrame $complete_gif
#affichage du gif animé final
echo "<img>$complete_gif</img>"
fi
}
if [ "$celsius" -le "$alerte_jaune" ]; then
msg="<txt><span> SSD: </span><span foreground=\"#00FFFF\">"$celsius"°C </span></txt>";
echo "$msg"
fi
if [ "$celsius" -gt "$alerte_jaune" ] && [ "$celsius" -lt "$alerte_rouge" ]; then
gestion_gif
fi
if [ "$celsius" -ge "$alerte_rouge" ]; then
gestion_gif
aplay /usr/share/sounds/sound-icons/glass-water-1.wav;
spd-say -t female1 -l fr "$phrase";
xfconf-query -c xfce4-notifyd -p /theme -s special;
notify-send --icon=$HOME/.scripts/clef_vide.png 'Température SSD critique' "<span color='#FF0000' font='26px'><b> "$celsius" °C</b></span>";
sleep 11;
xfconf-query -c xfce4-notifyd -p /theme -s Smoke;
notify-send --icon=dialog-warning -t 0 'Température SSD critique' "<span color='#FF0000' font='26px'><b> "$celsius" °C</b></span>";
fi
Maintenant, juste pour l'esthétique, il me reste encore à essayer de résoudre le petit détail évoqué au post #103.
Si j'y parviens, je posterai le résultat.
Bonne soirée et encore merci à tous ceux qui m'ont aidé
EDIT:
pour faire fonctionner le script avec hddtemp au lieu de drivetemp, il suffit de remplacer la ligne :
celsius=$(cat "$(grep -l "Samsung SSD 860" /sys/class/scsi_disk/*/device/model | xargs dirname)"/hwmon/hwmon*/temp1_input | rev | cut -c4- | rev);
par celles-ci :
#partie du script d'après MicP [url]https://forum.ubuntu-fr.org/viewtopic.php?pid=22582392#p22582392[/url]
periph=/dev/disk/by-id/ata-Samsung_SSD_860_EVO_M.2_1TB_S415NR0R400914Z
maReg='[^[0-9]]*([0-9][0-9]{0,2})°C$' # Regex permettant l'extraction de la valeur numérique de la température.
[[ $(hddtemp "$periph") =~ $maReg ]] && celsius=${BASH_REMATCH[1]}
Dernière modification par jlfh0816 (Le 05/09/2022, à 22:06)
Xubuntu - Voyager 18.04 et 22.04
Hors ligne
#115 Le 11/09/2022, à 16:30
- jlfh0816
Re : Genmon: affichage température SSD dans le tableau de bord sur 22.04
Bonjour,
Au cours de mes recherches pour tenter de résoudre (en vain jusqu’à présent…) le petit problème signalé au post #103, je me suis rendu compte qu’on peut améliorer l’utilité du script grâce à des info-bulles ("tooltips" en anglais), ces petits textes qui n’apparaissent que lorsque le curseur survole le gif animé affiché dans le tableau de bord.
En effet, si le script rend bien compte de la température du SSD, il n’avance aucune explication dans le cas où celle-ci est anormalement élevée.
A priori, je ne vois que 2 causes possibles:
- soit le disque présente une défaillance matérielle, et là c’est quasi-impossible à corriger;
- soit un programme le sollicite trop (nombre très élevé de cycles lectures/écritures) et là, on peut peut-être essayer de débusquer le programme coupable et le stopper avant que les dégâts soient trop importants.
Après quelques recherches sur la toile, j’ai pensé que iotop peut être le logiciel qui permet d’identifier le coupable.
L’idée est donc que le script permette d’afficher une info-bulle qui contient un message incitant à cliquer sur le plugin du tableau de bord :
Le clic entraîne (au choix) :
- soit l’ouverture par Firefox de la page du constructeur du SSD, à l’endroit où celui-ci détaille et commente les caractéristiques techniques du disque et notamment les valeurs extrêmes de la température de fonctionnement;
- soit l’ouverture dans xterm du programme iotop lequel donne en temps réel et en clair les noms des processus qui sollicitent les cycles lecture/écriture. Comme ça, on a une chance de repérer celui qui est responsable du surcroît de travail demandé au SSD.
Le choix d’une action plutôt que l’autre (Firefox ou iotop) se fait dans le script, en commentant l’action qu’on ne souhaite pas utiliser.
Dans mon cas, je commente l’ouverture de Firefox car je souhaite privilégier l’exécution de iotop.
Voici à quoi ressemble l'écran de iotop lorsqu'il travaille :
et le lien direct
Iotop comporte de nombreuses options d’affichage (voir son man ou en saisissant iotop --help). Celles que j’ai trouvé les plus pratiques sont :
- iotop Po
- iotop -o (pour avoir les processus en temps réel… mais ça défile vite !)
- iotop -o -a (pour avoir le cumul des mêmes processus … c’est plus agréable à lire).
Pour info, le choix d’utiliser iotop a nécessité au préalable d’installer xterm et iotop car ceux-ci ne sont pas présents d’origine dans ma distribution (sudo apt install xterm et sudo apt install iotop).
Il est par ailleurs important de noter que l’exécution de iotop ne peut se faire qu’en mode administrateur, donc avec sudo et saisie du mot de passe.
J’ai bien trouvé quelques astuces sur le net qui permettent soi-disant de le faire fonctionner par un utilisateur normal (donc pas en mode administrateur) mais aucune n’a fonctionné (modification de sudoers, «setuidisation», modification directe des permissions dans les propriétés, etc…).
Du coup, je suis bien obligé d’utiliser iotop en mode administrateur...
Et donc, lorsqu’à l’invite de l'info-bulle on clique sur le gif animé, on obtient l’ouverture de xterm lequel demande de saisir le mot de passe pour sudo …
et le lien direct
A noter que pour quitter iotop, il suffit d’appuyer sur la touche Q : ça ferme à la fois iotop et la fenêtre de xterm.
Le code à ajouter au script est le suivant :
#PANEL+="<click>firefox --new-tab --url https://www.samsung.com/uk/memory-storage/sata-ssd/860-evo-sata-3-m-2-ssd-1tb-mz-n6e1t0bw/</click>"
PANEL+="<click>xterm +hold -e sudo iotop -o -a</click>"
TOOLTIP="<tool>"
TOOLTIP+="<span font='sans regular'>cliquez</span>\n"
TOOLTIP+="<span font='sans regular'>pour connaître</span>\n"
TOOLTIP+="<span font='sans regular'>les programmes qui</span>\n"
TOOLTIP+="<span font='sans regular'>sollicitent trop le SSD</span>"
TOOLTIP+="</tool>"
echo -e "${PANEL}"
echo -e "${TOOLTIP}"
Il doit être ajouté tout à la fin du script, après le dernier
fi
Par contre, lorsque la température du SSD est normale, <50°C, l'info-bulle ne sert pas à grand-chose. Du coup, elle n’affichera qu’un court message disant que la température est normale.
Voici ce que ça donne : et le lien direct
Le code à ajouter au script est le suivant :
TOOLTIP="<tool>"
TOOLTIP+="<span font='sans regular'>la température</span>\n"
TOOLTIP+="<span font='sans regular'>est normale !</span>"
TOOLTIP+="</tool>"
echo -e "${PANEL}"
echo -e "${TOOLTIP}"
Il doit être ajouté juste après la ligne :
echo "$msg"
Je vais continuer à chercher pour savoir s’il existe une alternative non root à iotop, en espérant qu’elle donne d’aussi bonnes indications.
Je vais également chercher s’il existe un programme qui permette de caractériser un problème cette fois purement matériel du SSD et, si possible, pas en mode administrateur.
Dernière modification par jlfh0816 (Le 13/09/2022, à 09:24)
Xubuntu - Voyager 18.04 et 22.04
Hors ligne
#116 Le 18/09/2022, à 17:13
- jlfh0816
Re : Genmon: affichage température SSD dans le tableau de bord sur 22.04
Bonjour,
Toujours pas trouvé d'alternative à iotop ni de solution à mon petit soucis du post #103...
Par contre, histoire de rendre un peu moins austère le message de l’infobulle, on peut lui ajouter un emoji (source).
Ainsi, lorsque la température du SSD est normale, on peut ajouter l’emoji U+2705 en remplaçant les deux lignes du post #115 :
TOOLTIP+="<span font='sans regular'>la température</span>\n"
TOOLTIP+="<span font='sans regular'>est normale !</span>"
par celles-ci :
TOOLTIP+="<span font='sans regular'>\U0002705 la température</span>\n"
TOOLTIP+="<span font='sans regular'> est normale !</span>"
Ce qui donne :
Et lorsque la température du SSD est anormale, on peut ajouter l’emoji U+1F198 en remplaçant les quatre lignes du post #115 :
TOOLTIP+="<span font='sans regular'>cliquez</span>\n"
TOOLTIP+="<span font='sans regular'>pour connaître</span>\n"
TOOLTIP+="<span font='sans regular'>les programmes qui</span>\n"
TOOLTIP+="<span font='sans regular'>sollicitent trop le SSD</span>"
par celles-ci :
TOOLTIP+="<span font='sans regular'>\U0001F198 cliquez</span>\n"
TOOLTIP+="<span font='sans regular'> pour connaître</span>\n"
TOOLTIP+="<span font='sans regular'> les programmes qui</span>\n"
TOOLTIP+="<span font='sans regular'> sollicitent trop le SSD</span>"
Ce qui donne :
Dernière modification par jlfh0816 (Le 18/09/2022, à 17:14)
Xubuntu - Voyager 18.04 et 22.04
Hors ligne