Contenu | Rechercher | Menus

Annonce

DVD, clés USB et t-shirts Ubuntu-fr disponibles sur la boutique En Vente Libre

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 wink

Dernière modification par iznobe (Le 01/09/2022, à 16:11)


retour 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 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 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 !  tongue

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 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 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

iznobe a écrit :

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 wink  je n ' ai pas inclus tes dernieres modifs ni tester .

Dernière modification par iznobe (Le 01/09/2022, à 18:38)


retour 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

iznobe a écrit :

essaie ce code :

... / ...

il devrait , avec un peu de chance , fonctionner et régler quelque soucis wink  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 : wu3z.gif

- en attribuant une température de 56°C : 0q49.gif

- en attribuant une température de 96°C : hcr3.gif


En fait, ce sont toujours les mêmes erreurs d'affichage que précédemment...  à vraiment ne rien y comprendre ??? roll

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 " roll
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 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

iznobe a écrit :

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).


iznobe a écrit :

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)


iznobe a écrit :

sans parler du fait que " -f " c ' est pour un fichier , pour un repertoire tu devrais utiliser " -d " roll
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.


iznobe a écrit :

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 "  ").


iznobe a écrit :

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.


iznobe a écrit :

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é  smile

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é  smile



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 :  etax.gif
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 :
wkp9.png 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
4umq.png 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 : ymmj.png 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 :

4eds.png


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 :

msaq.png

Dernière modification par jlfh0816 (Le 18/09/2022, à 17:14)


Xubuntu - Voyager 18.04 et 22.04

Hors ligne