#1 Le 28/07/2022, à 13:40
- jlfh0816
Genmon: affichage température SSD dans le tableau de bord sur 22.04
EDIT :
Pour gagner du temps et ne pas avoir à lire la centaine de posts de cette discussion, le script final qui fonctionne correctement est situé au post #114
******************************************************************************************************************************************************************************************************************************************************************************************
Bonjour,
Au cours de l’installation de ma nouvelle Voyager 22.04 (une Xubuntu personnalisée), j’ai rencontré un soucis avec le tableau de bord.
Sur mon ancienne 18.04, HDDtemp était installé et je pouvais donc faire afficher la température du SSD dans le tableau de bord, grâce au capteur «Disques durs» du greffon Capteurs.
Avec la 22.04, c’est devenu impossible car :
- le paquet HDDtemp n’est plus dans les dépôts officiels;
- le greffon «Capteurs» ne propose plus de capteur «Disques durs»
De fait, sur ma machine, seuls 4 modèles de capteurs sont proposés :
nct6779-isa-0290
acpitz-0
coretemp-isa-0000
ACPI
Le capteur appelé «Disques durs» a disparu de l’offre...
Du coup, j’ai tenté de contourner le problème en utilisant un autre capteur du tableau de bord, celui appelé «Moniteur générique» (xfce4-genmon-plugin dans la doc officielle de XFCE). Il est très intéressant car capable d’exécuter une commande ou un script.
Mais avant d’installer ce nouveau capteur dans le tableau de bord, il faut récupérer et installer le paquet HDDtemp désormais absent des distributions *ubuntu. Pour la récupération, c’est facile : il suffit de se rendre sur le site Debian Bullseye (ici) car il fait toujours partie intégrante de la nouvelle Debian 11 Bullseye. On l’installe dans la Voyager 22.04 grâce à l’installateur de paquets Gdebi. Ensuite, on le daemonise (désolé pour l’anglicisme) grâce à la commande :
sudo dpkg-reconfigure hddtemp
Et enfin on le rend accessible à tout utilisateur, sans droit d’administrateur :
sudo chmod u+s /usr/sbin/hddtemp
L’étape d’après consiste à déclarer le disque SSD (c’est un Samsung SSD 860 EVO SATA M.2 de 1 TB) dans la base de données de HDDtemp laquelle se trouve dans /etc/hddtemp.db
Le plus difficile et surtout le plus long dans cette étape a été de trouver sur le net la dénomination exacte qu’il faut faire figurer dans le fichier base de données car sinon HDDtemp ne reconnaît pas le SSD et n’affiche donc aucune température. Je l’ai finalement dénichée sur ce site
Dans le fichier /etc/hddtemp.db, il suffit alors d’ajouter la ligne :
"Samsung SSD 860 EVO" 190 C "Samsung SSD 860 EVO"
Après redémarrage, HDDtemp affiche désormais la température du SSD dans un terminal :
jlfh0816@Voyager2204:~$ hddtemp /dev/sda
/dev/sda: Samsung SSD 860 EVO M.2: 21°C
Reste maintenant à reporter cet affichage dans le tableau de bord. Pour cela, on ajoute à ce dernier un nouvel élément, le capteur «Moniteur générique».
On renseigne les propriétés de ce capteur comme suit :
- étiquette : SSD :
- commande : /home/jlfh0816/.scripts/SSDtemp (ne fonctionne qu’avec le chemin absolu)
Le script SSDtemp indiqué dans la commande est celui-ci (il est placé dans ~/.scripts) :
#!/bin/bash
var=$(hddtemp /dev/sda)
echo "<txt><span foreground=\"#00FFFF\">${var: -5} </span></txt>"
Au passage, on peut profiter du script pour coloriser la température grâce aux balises du langage Pango (ici, j'ai mis #00ffff pour du bleu turquoise).
Je précise également que, dans la ligne de l'echo, l'espace vide entre {var: -5} et </span>, c'est uniquement pour l'esthétique, pour faire un écart dans le tableau de bord, entre SSD: 24°C et fan2
Et au final, voici l’affichage obtenu dans le tableau de bord :
Je pense qu’on peut s’amuser à bidouiller les balises Pango du script pour personnaliser un peu plus encore l’affichage (taille, police, couleur du fond, couleur de la police, clignotement, …). Peut-être même peut-on ajouter une petite icône mais je n’ai pas testé. Si quelqu'un sait faire, je suis preneur !
Dernière modification par jlfh0816 (Le 24/10/2022, à 10:07)
Xubuntu - Voyager 18.04 et 22.04
Hors ligne
#2 Le 28/07/2022, à 18:50
- jlfh0816
Re : Genmon: affichage température SSD dans le tableau de bord sur 22.04
Je n’ai pas trouvé comment insérer une véritable icône mais, juste pour l’amusement, je me suis rendu compte qu’on peut malgré tout afficher un emoji représentant un thermomètre :
- soit dans l’étiquette du capteur (par exemple juste devant SSD)
- soit à côté de la température affichée
L’emoji (et bien d’autres) peut être récupéré ici mais il doit probablement exister d’autres sites que je ne connais pas.
Dans la pratique, un simple copier-coller de l’emoji suffit, directement dans l’étiquette du capteur ou dans le petit script.
Dans le cas de l’étiquette, cela se passe dans les propriétés du capteur :
Dans le cas du script, il faut l'insérer juste devant ${var: -5}, à la place du ? (car l'emoji n'est pas accepté dans les balises de ce forum, il est automatiquement remplacé par un ? ) :
#!/bin/bash
var=$(hddtemp /dev/sda)
echo "<txt><span foreground=\"#00FFFF\">$ ?️ ${var: -5} </span></txt>"
Dernière modification par jlfh0816 (Le 28/07/2022, à 20:28)
Xubuntu - Voyager 18.04 et 22.04
Hors ligne
#3 Le 01/08/2022, à 13:19
- jlfh0816
Re : Genmon: affichage température SSD dans le tableau de bord sur 22.04
Finalement, j'ai trouvé la solution pour insérer une icône : tout bêtement dans la documentation XFCE et son module xfce4-moniteur générique (dans le paragraphe XML tags ici).
Après avoir trouvé une icône de thermomètre sur la toile, il faut ramener sa taille à quelque chose de suffisamment petit pour tenir en entier dans le tableau de bord. La taille qui a été la bonne dans mon cas est 9 x 22 pixels (la mise à l'échelle est facile avec Gimp). Je l'ai appelée "thermomètre_icône.png" et elle a été placée dans le même dossier ~/.scripts que le script SSDtemp
Pour afficher cette icône, il faut:
- supprimer l'étiquette du moniteur générique (dans les propriétés, décocher "afficher");
- modifier le script comme suit :
#!/bin/bash
echo "<img>/home/jlfh0816/.scripts/thermomètre_icône.png</img>"
var=$(hddtemp /dev/sda)
echo "<txt><span> SSD:</span><span foreground=\"#00FFFF\">${var: -5} </span></txt>"
Au final, voici ce que ça donne :
Je voudrais maintenant essayer de modifier le script pour que l'affichage se mette à clignoter lorsque la température devient trop élevée (une alarme) mais je n'arrive pas à trouver de solution qui fonctionne. J'ai bien trouvé des commandes qui fonctionnent lorsqu'on les passe dans un terminal mais elles refusent de fonctionner dans le tableau de bord. Est-ce que quelqu'un aurait une idée sur au moins la faisabilité d'une telle alarme ?
Je précise que j'ai également tenté la vieille balise <blink> mais elle est classée un peu partout comme "obsolète" et, de toute façon, elle ne fonctionne pas non plus.
Dernière modification par jlfh0816 (Le 01/08/2022, à 13:32)
Xubuntu - Voyager 18.04 et 22.04
Hors ligne
#4 Le 01/08/2022, à 13:39
- iznobe
Re : Genmon: affichage température SSD dans le tableau de bord sur 22.04
Bonjour , pour faire clignoter une image , tu as la bonne vieille méthode :
tu prends par exemple un thermomètre rouge et un thermomètre blanc , puis lorsque la température atteint le seuil critique il suffit de faire une boucle while avec toutes les secondes afficher une image puis l' autre .
En pseudo code :
tant que temperature superieure a 65 ° c alors tu affiches thermometre rouge pendant une seconde , puis thermometre blanc pendant une seconde .
tu peux aussi faire la meme chose avec le texte : affiche => disparait en boucle pendant le temps desiré .
et modifié la couleur du thermometre en fonction de la temperature : temperature en dessous de 0 = thermo bleu
en dessous de 20 ° C = thermo blanc
en dessous de 30 °C thermo vert
en dessus de 65 ° C thermo rouge .
#!/bin/bash
var=$(hddtemp /dev/sda)
while [ $var -gt 65 ]
do
echo "<img>/home/jlfh0816/.scripts/thermomètre_icône_rouge.png</img>"
wait 1 # ou sleep 1
echo "<img>/home/jlfh0816/.scripts/thermomètre_icône_blanc.png</img>"
wait 1 # ou sleep 1
done
echo "<txt><span> SSD:</span><span foreground=\"#00FFFF\">${var: -5} </span></txt>"
fera clignoter le thermometre de rouge a blanc chaque seconde si la temperature recuperée depasse 65 ° C .
Code non testé !
un lien utile pour apprendre le bash : https://abs.traduc.org/abs-fr/ch07s03.html
Dernière modification par iznobe (Le 01/08/2022, à 13:53)
retour COMPLET et utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .
En ligne
#5 Le 01/08/2022, à 18:59
- jlfh0816
Re : Genmon: affichage température SSD dans le tableau de bord sur 22.04
@Iznobe
Merci beaucoup de ta réponse !
Je ne maîtrise pas du tout le script bash comme toi et j'avoue que je butte sur le problème de la variable.
En effet, celle de mon script est alphanumérique puisqu'il y a des chiffres et des lettres (26°C par exemple). Alors que la tienne ne contient que des chiffres ce qui te permet de la comparer facilement au seuil de 65.
Après bien des recherches, j'ai abouti à la ligne de commande ci-dessous qui donne cette fois une température avec uniquement des chiffres.
Ce n'est peut-être pas une bonne idée mais je redirige ensuite le résultat obtenu dans un fichier-texte.
var=$(hddtemp /dev/sda) | echo ${var: -5} | cut -c1-2 > /home/jlfh0816/.scripts/temperature.tmp
Le problème maintenant, c'est que je ne sais pas comment effectuer le trajet en sens inverse, c'est à dire obtenir une variable exploitable dans ton script en partant de la valeur consignée dans mon fichier texte.
Mais bon, je vais chercher d'autant que tu as eu la gentillesse de me communiquer un lien pour apprendre le bash.
Comme j'ai un peu de temps (ce sont les vacances ! ), je vais m'y plonger et je reviendrai poster lorsque j'aurai suffisamment progressé
Encore merci de ton aide.
Xubuntu - Voyager 18.04 et 22.04
Hors ligne
#6 Le 01/08/2022, à 19:18
- iznobe
Re : Genmon: affichage température SSD dans le tableau de bord sur 22.04
Si tu ne desires pas particulierment apprendre le bash , sache qu ' il existe deja des " trucs " qui font ce que tu cherches a realiser .
Par exemple cet article parle de psensors : https://www.malekal.com/mesurer-connait … ue-ubuntu/
Sinon si tu desires utiliser "cut " pour selectionner uniquement les 2 chiffres de la temperature :
dans mon cas la variable renvoie :
iznobe@iznobe-PC:~$ var=$(sudo hddtemp /dev/sdb); echo $var
/dev/sdb: WDC WD82PURZ-85TEUY0: 41°C
le sudo est exclusivement dans mon cas pour le test pour que je puisse via le terminal y aller par etape au lieu d' ecrire d ' un trait le script avec beaucoup d' erreurs je le laisse ici , mais je l' enleve dans le script final , puisque tu ne l' avais pas mis dans ton script , suite a la emarque de @MicP !
les caracteres a selectionner sont le 33 et 34 , ce qui donne du coup :
iznobe@iznobe-PC:~$ var=$(sudo hddtemp /dev/sdb); echo $var | cut -c33-34
42
iznobe@iznobe-PC:~$
Pour l' utiliser de la sorte directement dans le script , tu peux faire un truc du genre :
iznobe@iznobe-PC:~$ var=$(sudo hddtemp /dev/sdb); v=$( echo $var | cut -c33-34); echo $v
43
iznobe@iznobe-PC:~$
meme remarque pour sudo que precedemment .
le script devient alors par exemple :
#!/bin/bash
var=$(hddtemp /dev/sdb);
v=$(echo $var | cut -c33-34);
while [ $v -gt 65 ]
do
echo "<img>/home/jlfh0816/.scripts/thermomètre_icône_rouge.png</img>"
wait 1 # ou sleep 1
echo "<img>/home/jlfh0816/.scripts/thermomètre_icône_blanc.png</img>"
wait 1 # ou sleep 1
done
echo "<txt><span> SSD:</span><span foreground=\"#00FFFF\">${var: -5} </span></txt>"
il y a certainement mieux et plus compact , je me suis juste basé sur ce que tu connais et que tu as donné au depart .
Dernière modification par iznobe (Le 01/08/2022, à 20:36)
retour COMPLET et utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .
En ligne
#7 Le 01/08/2022, à 19:52
- MicP
Re : Genmon: affichage température SSD dans le tableau de bord sur 22.04
Bonjour
S'il est question d'utiliser sudo dans un script,
autant lancer tout le script avec la commande sudo
Et dans le script, on peut récupérer les 1 à 3 chiffres de la température
en n'utilisant seulement que la commande externe hddtemp
tout le reste peut se faire en utilisant seulement les fonctionnalités de bash
maReg='[^[0-9]]*([0-9][0-9]{0,2})°C$'
[[ $(hddtemp /dev/sdb) =~ $maReg ]] && maTemperature=${BASH_REMATCH[1]}
=======
Les noms des fichiers de périphérique (sda, sdb, etc.) peuvent changer,
mais un nom de lien qui est dans le répertoire /dev/by-id/ ne changera pas
et il sera toujours relié au "bon" disque puisqu'il contient dans son nom le numéro de série du disque concerné.
Donc, au lieu de :
hddtemp /dev/sdb
il vaudrait mieux utiliser :
hddtemp /dev/disk/by-id/nomDuFichierLienQuiPointeActuellementVersSDB
Ça évitera, en cas d'ajout ou suppression d'un disque, de ne plus très bien savoir de quel disque il s'agit.
Dernière modification par MicP (Le 01/08/2022, à 20:11)
Hors ligne
#8 Le 01/08/2022, à 20:32
- iznobe
Re : Genmon: affichage température SSD dans le tableau de bord sur 22.04
le sudo c ' est moi qui l' ai rajouté dans mes tests et oublier de l' enlever ... Merci MicP pour la remarque , je modifie mon message precedent .
retour COMPLET et utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .
En ligne
#9 Le 01/08/2022, à 21:05
- MicP
Re : Genmon: affichage température SSD dans le tableau de bord sur 22.04
Ok, j'avais bien compris que c'était pour arriver à tester les lignes de commandes,
mais je le rappelais juste pour que d'autres qui débutent ne mettent pas de commandes sudo dans un script,
parce qu'on on est souvent tenté de le faire quand on débute, et ça devient vite un casse tête
tant qu'on a pas réalisé qu'il suffit simplement de lancer le tout script avec la commande sudo
Hors ligne
#10 Le 01/08/2022, à 22:41
- jlfh0816
Re : Genmon: affichage température SSD dans le tableau de bord sur 22.04
Grand merci à tous deux, iznobe et MicP pour votre patience et votre aide bienveillante.
MicP, pour la question du sudo, je ne l’utilise pas puisque j’ai modifié les droits de hddtemp pour qu’il soit exécutable par tout utilisateur (la commande que j’ai utilisée pour ça est dans mon post #1).
iznobe : j’ai testé ta proposition de script (post #6) et il fonctionne après deux petites modifications :
1°) chez moi, les caractères à extraire de la chaîne sont 36 et 37 (au lieu de 33 et 34 chez toi)
2°) la commande wait entraîne le message d’erreur suivant :
./SSDtemp: ligne 10: wait : le processus n°10 n'est pas un fils de ce shell
<img>/home/jlfh0816/.scripts/thermomètre_icône_rouge.png</img>
./SSDtemp: ligne 8: wait : le processus n°10 n'est pas un fils de ce shell
<img>/home/jlfh0816/.scripts/thermomètre_icône_blanc</img>
Du coup, j’ai remplacé wait par sleep et, là, ça fonctionne, plus de message d’erreur.
Au final, le script qui paraît fonctionnel est le suivant (pour le tester, j’ai abaissé le seuil de déclenchement à 20 au lieu de 65) :
#!/bin/bash
var=$(hddtemp /dev/sda);
v=$(echo $var | cut -c36-37);
echo $v;
while [ $v -gt 20 ]
do
echo "<img>/home/jlfh0816/.scripts/thermomètre_icône_rouge.png</img>"
sleep 1
echo "<img>/home/jlfh0816/.scripts/thermomètre_icône_blanc.png</img>"
sleep 1
done
echo "<txt><span> SSD:</span><span foreground=\"#00FFFF\">${var: -5} </span></txt>"
Dans le terminal, tout se déroule impeccablement, les noms des icônes se succèdent bien toutes les secondes. C’est OK.
Par contre, dans le tableau de bord, il ne se passe rien : aucun affichage d’icône, il n’y a que l'indication de la température. De plus, le capteur «Moniteur générique» est figé : impossible d’accéder à ses propriétés pour modifier les réglages, notamment celui des rafraîchissements de la commande.
En fait, je suis obligé de fermer le fenêtre des réglages du «Moniteur générique» en utilisant la commande xkill du terminal. Ensuite je supprime le capteur dans le tableau de bord et j’en recrée tout de suite un autre avec un réglage de rafraîchissement différent.
D’origine, le rafraîchissement est à 30 secondes.
En testant différentes valeurs (de 0,75 à 30 secondes), le résultat ne change pas: capteur figé.
Au final, pour que le capteur «Moniteur générique» fonctionne, enfin seulement l’indication de la température, il m’a fallu commenter toute la boucle while … do, jusqu’à done :
while [ $v -gt 20 ]
do
echo "<img>/home/jlfh0816/.scripts/thermomètre_icône_rouge .png</img>"
sleep 1
echo "<img>/home/jlfh0816/.scripts/thermomètre_icône_blanc.png</img>"
sleep 1
done
Tout se passe comme si la commande exécutée par le capteur «Moniteur générique» refuse la boucle while : incompatibilité ?
Est-ce que l'usage de cette boucle est problématique ?
Dernière modification par jlfh0816 (Le 01/08/2022, à 22:44)
Xubuntu - Voyager 18.04 et 22.04
Hors ligne
#11 Le 01/08/2022, à 23:03
- MicP
Re : Genmon: affichage température SSD dans le tableau de bord sur 22.04
Dans ton script, la température n'est prise qu'une seule fois : au lancement du script <=> en dehors de la boucle
donc, la boucle continuera de tourner indéfiniment si la température qui a été mesurée au lancement du script dépasse (-gt) la valeur de consigne donnée (20) dans la condition while
puisque la valeur de la variable (v) testée dans la condition ne peut pas changer dans la boucle.
Dernière modification par MicP (Le 01/08/2022, à 23:08)
Hors ligne
#12 Le 01/08/2022, à 23:52
- iznobe
Re : Genmon: affichage température SSD dans le tableau de bord sur 22.04
effectivement @MicP a raison .
il faut integrer une mesure a intervalle regulier dans une boucle infinie : while true ( ou while [ 1 ] ) .
puis tu peux former d ' autres boucles while avec des seuils de temperatures differents et des couleurs differentes par exemple .
il est aussi possible de faire ( je suppose , car je ne connais pas bien le bash ) a la place de multiple boucle , une structure de type " switch case " qui permet une lecture ( ou ecriture ) du code certainement plus propre et facile , que tu integres dans la boucle infinie et tu supprimes alors la boucle while telle que dans le script .
quelques exemples ici de " switch case " : https://www.thegeekstuff.com/2010/07/ba … statement/ en anglais ...
pour un script plus basique a base de structure conditionnelle , sans tester le fonctionnement du code :
#!/bin/bash
while true
do
var=$(hddtemp /dev/sda);
v=$(echo $var | cut -c36-37);
echo $v;
if [ $v -gt 20 ]
then
echo "<img>/home/jlfh0816/.scripts/thermomètre_icône_rouge.png</img>"
sleep 1
echo "<img>/home/jlfh0816/.scripts/thermomètre_icône_blanc.png</img>"
sleep 1;
fi
if [ $v -gt 30 ] # ou elsif [ $v -gt 30 ]
then
....
....
done
Dernière modification par iznobe (Le 02/08/2022, à 00:04)
retour COMPLET et utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .
En ligne
#13 Le 02/08/2022, à 01:01
- MicP
Re : Genmon: affichage température SSD dans le tableau de bord sur 22.04
Dans le script qui suit,
il te faudrait remplacer la valeur /dev/sda par le chemin absolu du lien dans lequel il y a le numéro de série de ton disque
et que tu trouveras dans le répertoire /dev/disk/by-id/
en lançant la ligne de commande suivante :
ls -l /dev/disk/by-id/
Tu verras aussi ce même numéro de série affiché dans le retour de la ligne de commande suivante :
udisksctl status
Ci-dessous le script que je te propose dans lequel tu pourras ajuster les valeurs des trois premières variables
en fonction de ce que tu veux obtenir :
#!/bin/bash
#
# Script pour xfce4-genmon-plugin
# qui va permettre d'afficher la température interne d'un disque dur.
#
# Source : https://forum.ubuntu-fr.org/viewtopic.php?pid=22582392#p22582392
# Documentation : https://docs.xfce.org/panel-plugins/xfce4-genmon-plugin/start
#
periph=/dev/sda # À remplacer par le lien correspondant qui est dans le répertoire /dev/disk/by-id/
seuil=50 # Seuil de température (j'ai mis 50°C pour tester, mais il te faudra sans doute augmenter cette valeur)
periode=0.5 # Période du clignotement d'une demi seconde si la température dépasse le seuil.
iconPath="/home/jlfh0816/.scripts" # Chemin dans lequel sont les icônes
maReg='[^[0-9]]*([0-9][0-9]{0,2})°C$' # Regex pour l'extraction de la valeur numérique de la température.
[[ $(hddtemp $periph) =~ $maReg ]] && celsus=${BASH_REMATCH[1]}
msg="<txt><span> SSD:</span><span foreground=\"#00FFFF\">${celsus}°C </span></txt>"
if [ $celsus -lt $seuil ]; then
echo "<img>$iconPath/thermomètre_icône_blanc.png</img>$msg"
else
echo "<img>$iconPath/thermomètre_icône_rouge.png</img>$msg"
sleep $periode
echo "<img>$iconPath/thermomètre_icône_blanc.png</img>$msg"
sleep $periode
fi
N'oublie pas que ce script sera appelé très souvent et sans arrêt,
alors, moins tu utiliseras de commandes externe dans ce script
plus il te restera de ressources pour faire tourner tes programmes.
Dernière modification par MicP (Le 02/08/2022, à 01:47)
Hors ligne
#14 Le 02/08/2022, à 02:17
- Coeur Noir
Re : Genmon: affichage température SSD dans le tableau de bord sur 22.04
à propos du paquet HDDtemp :
⋅ https://bugs.launchpad.net/ubuntu/+sour … ug/1979320
Abandonné, apparemment.
Y compris sous Debian, semble-t-il.
Ils proposent d'utiliser lm-sensors à la place.
Mais ça reste possible de l'installer : https://askubuntu.com/a/1403901 ( la version hddtemp_0.3-beta15-53_amd64.deb de la 20.04 )
Dernière modification par Coeur Noir (Le 02/08/2022, à 02:35)
Débuter ⋅ Doc ⋅ Bien rédiger ⋅ Retour commande ⋅ Insérer image | illustrations & captures d'écran < ⋅ >
Hors ligne
#15 Le 02/08/2022, à 11:28
- jlfh0816
Re : Genmon: affichage température SSD dans le tableau de bord sur 22.04
@iznobe
merci de ta proposition de script basé sur "switch case". Je me renseigne sur le site anglophone du lien et je te tiens au courant (là, je suis un peu pris dans diverses occupations hors informatique et je teste le script de MicP).
@Coeur Noir
Si je n'ai pas raté un épisode, j'ai crû comprendre que le paquet hddtemp (version hddtemp_0.3-beta15-53_amd64.deb) était encore fourni avec la Debian 11.4 Bullseye. Mais peut-être suis-je dans l'erreur. En tout cas, dans mon post #1, j'ai mis le lien qui m'a permis de télécharger ce paquet depuis le site de Debian.
@MicP
merci beaucoup de ta proposition de script. J'ai adapté comme tu me le suggères (notamment /dev/disk/by-id/) et voici donc ton script (que j'ai appelé SSDtemp) tel que je l'ai testé sur ma machine :
#!/bin/bash
#
# Script pour xfce4-genmon-plugin
# qui va permettre d'afficher la température interne d'un disque dur.
#
# Source : https://forum.ubuntu-fr.org/viewtopic.php?pid=22582392#p22582392
# Documentation : https://docs.xfce.org/panel-plugins/xfce4-genmon-plugin/start
#
periph=/dev/disk/by-id/ata-Samsung_SSD_860_EVO_M.2_1TB_S415NR0R400914Z
#periph=/dev/sda # À remplacer par le lien correspondant qui est dans le répertoire /dev/disk/by-id/
seuil=20 # Seuil de température (j'ai mis 50°C pour tester, mais il te faudra sans doute augmenter cette valeur)
periode=0.5 # Période du clignotement d'une demi seconde si la température dépasse le seuil.
iconPath="/home/jlfh0816/.scripts" # Chemin dans lequel sont les icônes
maReg='[^[0-9]]*([0-9][0-9]{0,2})°C$' # Regex pour l'extraction de la valeur numérique de la température.
[[ $(hddtemp $periph) =~ $maReg ]] && celsius=${BASH_REMATCH[1]}
msg="<txt><span> SSD:</span><span foreground=\"#00FFFF\">${celsius}°C </span></txt>"
if [ $celsius -lt $seuil ]; then
echo "<img>$iconPath/thermomètre_icône_blanc.png</img>$msg"
else
echo "<img>$iconPath/thermomètre_icône_rouge.png</img>$msg"
sleep $periode
echo "<img>$iconPath/thermomètre_icône_blanc.png</img>$msg"
sleep $periode
fi
Si je l'exécute dans un terminal, il n'y a pas de message d'erreur mais le script s'arrête au bout d'une seconde. Voici ce que ça donne :
jlfh0816@Voyager2204:~/.scripts$ ./SSDtemp
<img>/home/jlfh0816/.scripts/thermomètre_icône_rouge.png</img><txt><span> SSD:</span><span foreground="#00FFFF">25°C </span></txt>
<img>/home/jlfh0816/.scripts/thermomètre_icône_blanc.png</img><txt><span> SSD:</span><span foreground="#00FFFF">25°C </span></txt>
jlfh0816@Voyager2204:~/.scripts$
Par contre, si je le fais s'exécuter dans la commande du plugin "Moniteur générique" du tableau de bord, j'obtiens le même affichage que celui dans mon post #3 c'est à dire fixe, non clignotant (et icône de thermomètre rouge).
Du coup, je me demande si le problème ne vient pas de la période que l'on renseigne "à la main" dans la petite fenêtre de configuration du "Moniteur générique" (celle de mon post #2). J'ai essayé plusieurs valeurs de 1 à 30 secondes : aucun effet. et si je descends à 0,5 seconde, l'écran se fige et je dois redémarrer le PC puis supprimer le capteur "Moniteur générique" fautif.
Qu'en penses-tu ? Est-ce à ce niveau que se trouve le soucis ?
Dernière modification par jlfh0816 (Le 02/08/2022, à 11:31)
Xubuntu - Voyager 18.04 et 22.04
Hors ligne
#16 Le 02/08/2022, à 11:31
- iznobe
Re : Genmon: affichage température SSD dans le tableau de bord sur 22.04
Si je l'exécute dans un terminal, il n'y a pas de message d'erreur mais le script s'arrête au bout d'une seconde
Normal , il n' y a pas de boucle infinie dans le script de @MicP
Soit tu lances le script en passant par une tache cron avec pour depart @reboot , et en incluant une esperluette ( & ) a la fin de la commande pour indiquer qu ' il doit tourner en boucle , soit tu mets le script a l' interieur d ' une boucle infinie et tu le lance manuellement ou automatiquement par exemple avec cette methode :
https://www.clubic.com/tutoriels/articl … buntu.html
la doc a ce propos : https://doc.ubuntu-fr.org/tutoriel/appl … _demarrage
encore une autre methode pour lancer un script au demarrage : utiliser le fichier rc.local : https://linuxhint.com/use-etc-rc-local-boot/
Dernière modification par iznobe (Le 02/08/2022, à 11:39)
retour COMPLET et utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .
En ligne
#17 Le 02/08/2022, à 11:47
- MicP
Re : Genmon: affichage température SSD dans le tableau de bord sur 22.04
@iznobe: Non, il n'y a pas besoin de boucle car c'est le plugin Genmon qui lance régulièrement le script
Voir : xfce4-genmon-plugin - Genmon
… This plugin cyclically spawns the indicated script/program, captures its output (stdout) and displays the resulting string into the panel. …
À mon avis, la sortie du script n'est acceptée qu'une seule fois => après le premier echo, plus rien n'est envoyé dans le panel
Donc, il va falloir trouver une autre méthode pour faire clignoter l'icône affichée dans le panel
Dernière modification par MicP (Le 02/08/2022, à 12:43)
Hors ligne
#18 Le 02/08/2022, à 11:55
- iznobe
Re : Genmon: affichage température SSD dans le tableau de bord sur 22.04
ben on ne sait pas ( ou je n' ai pas vu ) comment le script est lancé pour les tests . je supposais que c' etait fait manuellement .
et je remet tout de meme la citation du demandeur de mon post precedent :
Si je l'exécute dans un terminal, il n'y a pas de message d'erreur mais le script s'arrête au bout d'une seconde
Du coup on peut largement supposer qu ' avec genmon cela fonctionne correctement . mais pas en le lancant manuellement dans le terminal ( puisque pas de boucle infinie ) .
Dernière modification par iznobe (Le 02/08/2022, à 12:01)
retour COMPLET et utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .
En ligne
#19 Le 02/08/2022, à 12:10
- MicP
Re : Genmon: affichage température SSD dans le tableau de bord sur 22.04
Essaye avec le script suivant,
et si la température du disque dépasse 20°C
alors la couleur du thermomètre va changer à chaque lancement du script.
Donc, la fréquence du clignotement dépendra de la fréquence à laquelle le plugin va lancer le script.
Après tu n'auras qu'à ajuster le seuil de température dans le script
#!/bin/bash
#
# Script pour xfce4-genmon-plugin
# qui va permettre d'afficher la température interne d'un disque dur.
#
# Source : https://forum.ubuntu-fr.org/viewtopic.php?pid=22582503#p22582503
#
# Documentation : https://docs.xfce.org/panel-plugins/xfce4-genmon-plugin/start
#
# La variable 'periph' contiendra le nom du fichier lien permettant d'identifier et d'accéder au disque concerné
periph=/dev/disk/by-id/ata-Samsung_SSD_860_EVO_M.2_1TB_S415NR0R400914Z
seuil=20 # Seuil de température en degré celsius
iconPath="/home/jlfh0816/.scripts" # Chemin dans lequel sont les fichiers icônes et le fichier "couleurThermo"
if [ ! -f "$iconPath/couleurThermo" ]; then # Si le fichier "$iconPath/couleurThermo" n'existe pas encore
echo "blanc" > "$iconPath/couleurThermo" # alors créer le fichier "$iconPath/couleurThermo" en y écrivant le mot "blanc"
fi
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]}
if [ $celsius -lt $seuil ]; then
echo "blanc" > "$iconPath/couleurThermo"
else
if [ $(<couleurThermo) = "blanc" ]; then
echo "rouge" > "$iconPath/couleurThermo"
else
echo "blanc" > "$iconPath/couleurThermo"
fi
fi
msg="<txt><span> SSD:</span><span foreground=\"#00FFFF\">${celsius}°C </span></txt>"
echo "<img>$iconPath/thermomètre_icône_$(<$iconPath/couleurThermo).png</img>$msg"
Dernière modification par MicP (Le 02/08/2022, à 16:24)
Hors ligne
#20 Le 02/08/2022, à 14:15
- jlfh0816
Re : Genmon: affichage température SSD dans le tableau de bord sur 22.04
@MicP et @iznobe
Tout d'abord, un grand merci pour votre patience !
MicP, j'ai testé ta dernière version du script et j'avoue que le résultat est bizarre. Je m'explique :
- si le script est lancé dans un terminal, il n'y a pas de message d'erreur dans son exécution et il s'arrête au bout d'une seconde après avoir affiché la ligne correspondant à l'icône du thermomètre rouge.
jlfh0816@Voyager2204:~/.scripts$ ./SSDtemp
<img>/home/jlfh0816/.scripts/thermomètre_icône_rouge.png</img><txt><span> SSD:</span><span foreground="#00FFFF">25°C </span></txt>
jlfh0816@Voyager2204:~/.scripts$
- par contre, si le script est lancé dans le tableau de bord par l'intermédiaire de la commande interne du "Moniteur générique" (avec une période fixée arbitrairement à 1 seconde dans sa fenêtre de configuration), alors c'est l'icône du thermomètre blanc qui est affichée à côté de la température. Et rien ne clignote.
J'avoue ne pas comprendre pourquoi la couleur des icônes est différente selon que le script est lancé par le terminal ou par le "Moniteur générique" ?
Peut-être parce qu'il n'y a pas de boucle infinie si c'est un lancement par le terminal ?
PS: Je te précise que j'ai bien pris la précaution de créer auparavant le fichier texte /home/jlfh0816/.scripts/couleurThermo grâce à la commande que tu m'as indiquée. Par curiosité, j'ai ouvert ce fichier et il contient toujours le mot blanc, que le script soit lancé dans un terminal ou par le "Moniteur générique".
Dernière modification par jlfh0816 (Le 02/08/2022, à 14:22)
Xubuntu - Voyager 18.04 et 22.04
Hors ligne
#21 Le 02/08/2022, à 14:49
- iznobe
Re : Genmon: affichage température SSD dans le tableau de bord sur 22.04
ces conditions me parraissent suspectent :
if [ $celsius -lt $seuil ]; then
echo "blanc" > $iconPath/couleurThermo
else
if [ $(<couleurThermo) = "blanc" ]; then
echo "rouge" > $iconPath/couleurThermo
else
echo "blanc" > $iconPath/couleurThermo
fi
fi
je traduis en pseudo code , pour ma comprehension perso :
si variable celsius est plus petite que variable seuil alors on ecrit blanc dans couleurThermo .
sinon si couleurThermo est egal a blanc ( ??? pas sur que le code corresponde a cela mais bon . ) alors on ecrit rouge dans couleurThermo .
sinon on ecrit blanc dans couleurThermo .
pour simplifier encore d' un cran : on ecrit blanc dans thermo si la temperature est plus petite que le seuil .
sinon on fait clignoter de rouge a blanc .
Personellement , je prefere directement mettre le nom de fichier dans une variable avec l' icone correspondante , je trouve cela plus lisible .
Par exemple , une icone thermoblanc , thermorouge , thermovert .
et dans le code ne pas utiliser de fichier suplementaire pour y ecrire le nom a afficher . juste stocker la couleur dans une variable tout simplement .
Dernière modification par iznobe (Le 02/08/2022, à 15:04)
retour COMPLET et utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .
En ligne
#22 Le 02/08/2022, à 15:03
- kamaris
Re : Genmon: affichage température SSD dans le tableau de bord sur 22.04
Avec un gif animé ça ne pourrait pas le faire ?
Hors ligne
#23 Le 02/08/2022, à 15:10
- iznobe
Re : Genmon: affichage température SSD dans le tableau de bord sur 22.04
c ' est aussi une solution , mais c ' est pas vraiment necessaire dans un script.
le truc c' est que ne connaissant pas le fonctionnement exact de genmon , c ' est pas simple de deviner comment il faut gerer le code de façon a ce que ca passe correctement .
un gif animé serait peut etre au final bien plus simple , puisque pas de clignotement a gerer au travers du code dont on ne sait pas vraiment comment il est lu ni a quel intervalle .
Dans le code de @MicP les conditions que j' ai traduites , il affiche un clignotement mais sans tempo d' affichage (on ne sait pas si genom gere cela ou pas ) du coup on ne peut pas voir une animation , si le code fonctionne .
essaie de transformer cette partie de code :
EDIT : suppression apres reflexion .
des fois que ca fasse le taf
EDIT : pfff , je dis nimp ca ne marchera pas non plus .
ce n' est pas là qu ' il faut mettre une tempo .
c ' est sur la derniere ligne l ' affichage .
Dernière modification par iznobe (Le 02/08/2022, à 16:25)
retour COMPLET et utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .
En ligne
#24 Le 02/08/2022, à 15:37
- iznobe
Re : Genmon: affichage température SSD dans le tableau de bord sur 22.04
bon apres consultation du lien de genmon donné par @MicP , essaie le script suivant , je n' ai changer que les 2 dernieres lignes dont les tags pour genmon ne sont pas bon :
#!/bin/bash
#
# Script pour xfce4-genmon-plugin
# qui va permettre d'afficher la température interne d'un disque dur.
#
# Source : https://forum.ubuntu-fr.org/viewtopic.php?pid=22582503#p22582503
#
# Documentation : https://docs.xfce.org/panel-plugins/xfce4-genmon-plugin/start
#
# La variabe 'periph' contiendra le nom du fichier lien permettant d'identifier et d'accéder au disque concerné
periph=/dev/disk/by-id/ata-Samsung_SSD_860_EVO_M.2_1TB_S415NR0R400914Z
seuil=20 # Seuil de température en degré celsius
iconPath="/home/jlfh0816/.scripts" # Chemin dans lequel sont les icônes et le fichier "couleurThermo"
if [ ! -f $iconPath/couleurThermo ]; then # Si le fichier $iconPath/couleurThermo n'existe pas encore
echo "blanc" > $iconPath/couleurThermo
fi
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]}
if [ $celsius -lt $seuil ]; then
echo "blanc" > $iconPath/couleurThermo
else
if [ $(<couleurThermo) = "blanc" ]; then
echo "rouge" > $iconPath/couleurThermo
else
echo "blanc" > $iconPath/couleurThermo
fi
fi
# genmon
echo "<txt> SSD: $celsius ° C </txt>"
echo "<icon>$iconPath/thermomètre_icône_$(<$iconPath/couleurThermo).png</icon>"
eet meme si ce n' est pas des plus jolis , dis si ca marche en le lancant via l' outil adequate *( pas dans le terminal car les dernieres lignes ne sont pas du bash et devrait provoquer une erreur ) .
Pour info , tiré du lien donné par @ MicP :
The XML tags which can be used:
<txt>Text to display</txt>
<img>Path to the image to display</img>
<tool>Tooltip text</tool>
<bar>Pourcentage to display in the bar</bar>
<click>The command to be executed when clicking on the image</click>
<txtclick>The command to be executed when clicking on the text</txtclick>
<icon>Themed icon to be displayed</icon>
<iconclick>The command to be executed when clicking on the icon</click>The <icon> tag allows the following functionality:
image changes with the icon theme
supports panel's Adjust Icon Size Automatically functionality
supports light/dark symbolic icon auto-colour changes
pas de tag <span> ni de tag <foreground> !
Dernière modification par iznobe (Le 02/08/2022, à 18:36)
retour COMPLET et utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .
En ligne
#25 Le 02/08/2022, à 15:55
- MicP
Re : Genmon: affichage température SSD dans le tableau de bord sur 22.04
Le plugin relance le script régulièrement, et ce qui est envoyé par le script sur stdout est redirigé par le plugin vers le panel pour y être affiché.
Mais le plugin ne peut faire qu'une seule redirection vers le panel
Donc il est impossible (comme cela a déjà été constaté) d'utiliser une boucle pour écrire a nouveau dans le panel depuis une seule exécution du script.
=======
Si la température dépasse la valeur de seuil :
mon script commence par lire le mot qui est dans le fichier couleurThermo
et aussitôt après l'avoir lu, il écrit dans le fichier couleurThermo le mot complémentaire.
Donc, si la première fois que le script est lancé, il lit le mot "blanc" qui est inscrit dans le fichier couleurThermo
donc il va écrire le mot "rouge" dans le fichier couleurThermo
au lancement suivant du script il lira ce qu'il avait écrit la fois précédente : "rouge"
donc il va écrire le mot "blanc" dans le fichier couleurThermo
Ci-dessous, après avoir mis une valeur de température au dessus de la valeur de seuil,
à chaque fois que je relance le script, le nom du fichier icône est changé :
michel@deb114x1t:~/aeff/jlfh0816$ ./scr2.sh
<img>./thermomètre_icône_rouge.png</img><txt><span> SSD:</span><span foreground="#00FFFF">°C </span></txt>
michel@deb114x1t:~/aeff/jlfh0816$ ./scr2.sh
<img>./thermomètre_icône_blanc.png</img><txt><span> SSD:</span><span foreground="#00FFFF">°C </span></txt>
michel@deb114x1t:~/aeff/jlfh0816$ ./scr2.sh
<img>./thermomètre_icône_rouge.png</img><txt><span> SSD:</span><span foreground="#00FFFF">°C </span></txt>
michel@deb114x1t:~/aeff/jlfh0816$ ./scr2.sh
<img>./thermomètre_icône_blanc.png</img><txt><span> SSD:</span><span foreground="#00FFFF">°C </span></txt>
michel@deb114x1t:~/aeff/jlfh0816$
=======
Si la température NE dépasse PAS la valeur de seuil :
alors mon script écrit le mot "blanc" dans le fichier couleurThermo
Ci-dessous, après avoir mis une valeur de température en dessous de la valeur de seuil,
à chaque fois que je relance le script, le nom du fichier icône reste celui du thermomètre de couleur blanche :
michel@deb114x1t:~/aeff/jlfh0816$ ./scr2.sh
<img>./thermomètre_icône_blanc.png</img><txt><span> SSD:</span><span foreground="#00FFFF">°C </span></txt>
michel@deb114x1t:~/aeff/jlfh0816$ ./scr2.sh
<img>./thermomètre_icône_blanc.png</img><txt><span> SSD:</span><span foreground="#00FFFF">°C </span></txt>
michel@deb114x1t:~/aeff/jlfh0816$ ./scr2.sh
<img>./thermomètre_icône_blanc.png</img><txt><span> SSD:</span><span foreground="#00FFFF">°C </span></txt>
michel@deb114x1t:~/aeff/jlfh0816$ ./scr2.sh
=======
Dans les deux cas, l'icône affichée dépendra du mot qui aura été inscrit dans le fichier couleurThermo
Dernière modification par MicP (Le 02/08/2022, à 16:30)
Hors ligne