Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 13-01-2017 16:12:33

tramberlimpe
Membre
Distrib. : Debian Stretch
Noyau : Linux 4.8.0-2-amd64
(G)UI : i3
Inscription : 24-09-2012

[résolu] -Script de notifications pour la Batterie

Bonjour à tou-te-s,


en parcourant les internets, j'ai rédigé un petit script bash pour lancer des alertes batterie, lancé par un cronjob.
Mon WM est i3wm.

La notification pour la batterie pleine fonctionne bien. Celle pour les 15% aussi.

Je ne comprends pas, en revanche, pourquoi il lance la notification "critique" à 50%, alors que j'ai indiqué 5%.

Si vous avez des idées, merci.

Voici le script en question :

 #!/bin/bash

BATTINFO=`acpi -b`

#Information : 15% restant
if [[ `echo $BATTINFO | grep Discharging` && `echo $BATTINFO | cut -d , -f 2` < 15% ]] ; then
    DISPLAY=:0.0 DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/1000/bus" /usr/bin/notify-send -u low "Rebranche !"  -i /usr/share/icons/hicolor/48x48/status/xfpm-primary-020.png #"$BATTINFO"

and
fi


#Batterie : critique
if [[ `echo $BATTINFO | grep Discharging` && `echo $BATTINFO |  cut -d , -f 2` < 5% ]] ; then
    DISPLAY=:0.0 DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/1000/bus" /usr/bin/notify-send -u critical "Attention chérie, ça va couper !"  -i /home/tramber/.i3/citepeur.png #/usr/share/icons/hicolor/48x48/status/xfpm-primary-000.png #"$BATTINFO"

fi

#Batterie : Full
if [[ `echo $BATTINFO | grep Charging` && `echo $BATTINFO | cut -d , -f 2` > 95% ]] ; then
    DISPLAY=:0.0 DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/1000/bus" /usr/bin/notify-send -u low "Débranche tout !" "choubidou" -i /usr/share/icons/hicolor/48x48/status/xfpm-primary-100-charging.png #"$BATTINFO"

fi

 

Dernière modification par tramberlimpe (20-01-2017 00:43:58)


Ni dieu, ni maître, ni slogan !

Je pense donc Jessie.
Dura Stretch, sed Stretch.

Hors ligne

#2 17-01-2017 21:18:47

tramberlimpe
Membre
Distrib. : Debian Stretch
Noyau : Linux 4.8.0-2-amd64
(G)UI : i3
Inscription : 24-09-2012

Re : [résolu] -Script de notifications pour la Batterie

Un ptit up !

Ni dieu, ni maître, ni slogan !

Je pense donc Jessie.
Dura Stretch, sed Stretch.

Hors ligne

#3 17-01-2017 21:35:38

chalu
Modératrice
Lieu : Anjou
Distrib. : Debian Jessie (saveur Handylinux 2.5) à jour
Noyau : Linux 3.16.0-4-amd64
(G)UI : XFCE - xfwm4
Inscription : 11-03-2016

Re : [résolu] -Script de notifications pour la Batterie

Bonsoir smile
Totalement au pif je propose :
C'est quoi ce and en fin de premier if ?
As tu essayé avec une image située au même endroit que dans le cas 15% et 95% ?
Pourquoi un critical mais deux low dans les cas où ça marche.
Édit : réponse : critical la notification disparaît si on clique alors que low toute seule au bout d'un certain temps.
Il semble y avoir un espace de plus entre | et cut dans la ligne qui pose problème. à vérifier.

Bien débuter sur Debian :
->Les cahiers du débutant + le wiki Découvrir les principales commandes Linux
-> Le projet DFlinux (DebianFacileLinux) pour débutants: ISOs (i386 et amd64) basées sur Debian Jessie avec des outils facilitants
-> Retours et avis sur DFLinux dans ce fil

Hors ligne

#4 18-01-2017 15:29:28

tramberlimpe
Membre
Distrib. : Debian Stretch
Noyau : Linux 4.8.0-2-amd64
(G)UI : i3
Inscription : 24-09-2012

Re : [résolu] -Script de notifications pour la Batterie

Bonjour,

Merci pour la réponse.

J'ai enlevé ce "and" intrusif. Mais ça ne change pas vraiment le problème.
Pour les images, ça fonctionne même si l'image est dans un autre dossier. J'ai essayé les notifications dans le terminal (notify-send bla bla) et ça marche.
J'ai le même problème sur deux ordis...

Pourquoi deux low ? Mais pour le fun, d'abord :-) !
Mais aussi : 15% pour garder la batterie en état et 5% pour vraiment voir être attentif à éteindre et sauvegarder ! Je sais c'est tout much mais j'apprends avec ce genre de petits scripts !

C'est toujours pareil : le low critical, sensé apparaître sous 5% apparaît à 50%. Si l'écris "05%" ça ne marche plus du tout.

Voilà, si vous avez des idées... Merci.

Ni dieu, ni maître, ni slogan !

Je pense donc Jessie.
Dura Stretch, sed Stretch.

Hors ligne

#5 18-01-2017 20:05:47

chalu
Modératrice
Lieu : Anjou
Distrib. : Debian Jessie (saveur Handylinux 2.5) à jour
Noyau : Linux 3.16.0-4-amd64
(G)UI : XFCE - xfwm4
Inscription : 11-03-2016

Re : [résolu] -Script de notifications pour la Batterie

Tu as vérifié pour l'espace en trop après cut dans la ligne avec critical ?

Autre idée par rapport au 5% : dans la ligne du 15% qui fonctionne si tu mets 5% sans rien changer d'autre, est-ce que ça marche ?
ça permettra d'éliminer le 5% comme cause

Bien débuter sur Debian :
->Les cahiers du débutant + le wiki Découvrir les principales commandes Linux
-> Le projet DFlinux (DebianFacileLinux) pour débutants: ISOs (i386 et amd64) basées sur Debian Jessie avec des outils facilitants
-> Retours et avis sur DFLinux dans ce fil

Hors ligne

#6 18-01-2017 20:48:19

tramberlimpe
Membre
Distrib. : Debian Stretch
Noyau : Linux 4.8.0-2-amd64
(G)UI : i3
Inscription : 24-09-2012

Re : [résolu] -Script de notifications pour la Batterie

Alors, je viens d'essayer 6%, et la notification est apparue à 59%. Y'a un lien !
(rappel : si je mets 5%, elle apparaît à 49%)

Le même scénario se produit quand je modifie pour les autres notifications (5% à la place du 15% comme proposé)

[edit] :
- j'ai aussi enlevé l'espace en trop.
- J'ai aussi constaté, si je mets "<10%", qu'il n'y a plus de modification quand la batterie n'affiche qu'un seul chiffre (9%, 6%, etc.)[

Dernière modification par tramberlimpe (19-01-2017 13:39:29)


Ni dieu, ni maître, ni slogan !

Je pense donc Jessie.
Dura Stretch, sed Stretch.

Hors ligne

#7 19-01-2017 15:54:41

Watael
Membre
Distrib. : Debian GNU/Linux 8.6 (jessie)
Noyau : Linux 3.16.0-4-amd64
(G)UI : xmonad, i3, dwm
Inscription : 19-01-2017

Re : [résolu] -Script de notifications pour la Batterie

salut,

est-ce qu'on pourrait avoir la sortie de `acpi -b` entre balises CODE, et la même sortie passée à od -c ?
je n'ai pas de portable pour faire des tests sad

n'oublie pas que l'opérateur > compare des chaînes, et non des nombres, ou des pourcentages.
et puis, il faut le protéger, sinon ça effectue une redirection.

pour comparer des nombres, enlève le signe % et utilise les opérateurs arithmétiques de la commande test : see `help test`.

Dernière modification par Watael (19-01-2017 15:57:20)

Hors ligne

#8 19-01-2017 19:13:25

frei
Membre
Lieu : Tours
Distrib. : Sid
Noyau : 4.9.0-1-amd64
(G)UI : Mate+Compiz
Inscription : 06-01-2017
Site Web

Re : [résolu] -Script de notifications pour la Batterie

essaye de mettre 05% à la place de 5%
ça reste un classement de String que tu fais là il me semble...

"Glory. Rotting flower." John Tardy 1989

Hors ligne

#9 19-01-2017 19:57:06

chalu
Modératrice
Lieu : Anjou
Distrib. : Debian Jessie (saveur Handylinux 2.5) à jour
Noyau : Linux 3.16.0-4-amd64
(G)UI : XFCE - xfwm4
Inscription : 11-03-2016

Re : [résolu] -Script de notifications pour la Batterie

Non je lui ai proposé plus haut et ça ne marche pas. D'un autre côté si c'est basé sur la reconnaissance de caractère, c'est normal

tramberlimpe a écrit :

Si l'écris "05%" ça ne marche plus du tout.



Watael a écrit :

n'oublie pas que l'opérateur > compare des chaînes, et non des nombres, ou des pourcentages.


Du coup je me suis demandé quel pouvait être l'ordre des caractères et j'ai trouvé ça mais je ne sais pas si ça convient
https://fr.wikibooks.org/wiki/Les_ASCII … lgorithmes
Il est indiqué :

Les nombres sont triés naïvement comme des mots par exemple « 10 » précède « 2 ».


Je me dis que ça pourrait expliquer pourquoi tu n'as plus de modification si tu mets 10% puisque 6% est considéré plus grand.
Dans le cas où la notification apparaît à 50% quand tu mets 5%, je verrais bien que 0 est plus petit que % et donc ça se déclenche.


Bien débuter sur Debian :
->Les cahiers du débutant + le wiki Découvrir les principales commandes Linux
-> Le projet DFlinux (DebianFacileLinux) pour débutants: ISOs (i386 et amd64) basées sur Debian Jessie avec des outils facilitants
-> Retours et avis sur DFLinux dans ce fil

Hors ligne

#10 19-01-2017 20:51:14

frei
Membre
Lieu : Tours
Distrib. : Sid
Noyau : 4.9.0-1-amd64
(G)UI : Mate+Compiz
Inscription : 06-01-2017
Site Web

Re : [résolu] -Script de notifications pour la Batterie

enlève le %

To replace the first match of $substring with $replacement:

mod=${$BATTINFO/[%]/}

force une base 10

var=$((10#$mod))

et compare $var à tes valeurs

"Glory. Rotting flower." John Tardy 1989

Hors ligne

#11 19-01-2017 21:16:49

MicP
Membre
Distrib. : debian stable
Noyau : Linux 3.16.0-4-amd64
(G)UI : Xfce
Inscription : 29-02-2016

Re : [résolu] -Script de notifications pour la Batterie

Watael #7 a écrit :

…est-ce qu'on pourrait avoir la sortie de `acpi -b` entre balises CODE, et la même sortie passée à od -c ?…

acpi -b

Battery 0: Discharging, 97%, 02:52:59 remaining


acpi -b | od -c

0000000   B   a   t   t   e   r   y       0   :       D   i   s   c   h
0000020   a   r   g   i   n   g   ,       9   7   %   ,       0   2   :
0000040   5   2   :   5   9       r   e   m   a   i   n   i   n   g  \n
0000060


=======
Suivant l'état de la batterie, les valeurs retournées dans la liste utilisent :
Charging
Discharging
Unknow

Dernière modification par MicP (19-01-2017 21:34:36)

Hors ligne

#12 19-01-2017 21:53:36

frei
Membre
Lieu : Tours
Distrib. : Sid
Noyau : 4.9.0-1-amd64
(G)UI : Mate+Compiz
Inscription : 06-01-2017
Site Web

Re : [résolu] -Script de notifications pour la Batterie

upower -i $(upower -e | grep BAT) | grep -E percentage|xargs|cut -d' ' -f2|sed s/%//


100



BATTINFO=upower -i $(upower -e | grep BAT) | grep -E percentage|xargs|cut -d' ' -f2|sed s/%//



Ensuite

if (( $BATTINFO < 5 )); then...



etc smile


"Glory. Rotting flower." John Tardy 1989

Hors ligne

#13 19-01-2017 21:58:21

chalu
Modératrice
Lieu : Anjou
Distrib. : Debian Jessie (saveur Handylinux 2.5) à jour
Noyau : Linux 3.16.0-4-amd64
(G)UI : XFCE - xfwm4
Inscription : 11-03-2016

Re : [résolu] -Script de notifications pour la Batterie

Ce sera une valeur entière la variable ? Dans ce cas ça ne sera pas < d'après le post plus haut c'est pour les chaînes
le peut être ?

Bien débuter sur Debian :
->Les cahiers du débutant + le wiki Découvrir les principales commandes Linux
-> Le projet DFlinux (DebianFacileLinux) pour débutants: ISOs (i386 et amd64) basées sur Debian Jessie avec des outils facilitants
-> Retours et avis sur DFLinux dans ce fil

Hors ligne

#14 19-01-2017 22:04:53

frei
Membre
Lieu : Tours
Distrib. : Sid
Noyau : 4.9.0-1-amd64
(G)UI : Mate+Compiz
Inscription : 06-01-2017
Site Web

Re : [résolu] -Script de notifications pour la Batterie

Oui je pense Chalu, à moins de faire une opération dessus le niveau de batterie sera toujours un Integer
Et même en faisant une opération je crois qu'il faut forcer si tu veux du Float.

Bon d'un autre côté j'ai commencé le bash y'a une heure en lisant la question alors big_smile


//edit
Ce qu'il dit là haut c'est que tu peux comparer des Strings avec ce signe et que par défaut c'est ce qui va se passer
mais si tu mets ton expression entre doubles parenthèse ça devient une lecture arithmétique.

Il faut juste être certain de comparer des valeurs chiffrées, sinon ça pête smile

Dernière modification par frei (19-01-2017 22:08:43)


"Glory. Rotting flower." John Tardy 1989

Hors ligne

#15 19-01-2017 22:24:20

Watael
Membre
Distrib. : Debian GNU/Linux 8.6 (jessie)
Noyau : Linux 3.16.0-4-amd64
(G)UI : xmonad, i3, dwm
Inscription : 19-01-2017

Re : [résolu] -Script de notifications pour la Batterie

#!/bin/bash

export DISPLAY=:0.0
rgxOUT='Discharging, ([^%]*)%.*'
rgxIN='Charging, ([^%]*)%.*'
msgSend() {
    msg="$1"
    img="$2"
    DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/1000/bus" /usr/bin/notify-send -u critical "$msg"  -i "$img"
}

read battCharge < <(acpi-b)

if [[ $battCharge =~ $rgxOUT ]]
then
    test ${BASH_REMATCH[1]} -lt 15 && msgSend "Rebranche !" "/usr/share/icons/hicolor/48x48/status/xfpm-primary-020.png"
    test ${BASH_REMATCH[1]} -lt 5  && msgSend "Attention chérie, ça va couper !" "/home/tramber/.i3/citepeur.png"
elif [[ $battCharge =~ $rgxIN ]]
then
    test ${BASH_REMATCH[1]} -gt 95 && msgSend  "Débranche tout ! choubidou" "/usr/share/icons/hicolor/48x48/status/xfpm-primary-100-charging.png"
fi

comme je l'ai dit, je ne peux pas testé...

Hors ligne

#16 19-01-2017 22:58:50

tramberlimpe
Membre
Distrib. : Debian Stretch
Noyau : Linux 4.8.0-2-amd64
(G)UI : i3
Inscription : 24-09-2012

Re : [résolu] -Script de notifications pour la Batterie

Merci Frei !

Ce script fonctionne

#!/bin/bash

BATTINFO1=`upower -i $(upower -e | grep BAT) | grep -E percentage|xargs|cut -d' ' -f2|sed s/%//`

#Information : 15% restant
if (($BATTINFO1 < 15 )) ; then
    DISPLAY=:0.0 DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/1000/bus" /usr/bin/notify-send -u low "Rebranche !"  -i /usr/share/icons/hicolor/48x48/status/xfpm-primary-020.png #"$BATTINFO"

fi


#Batterie : critique
if (($BATTINFO1 < 5 )) ; then
    DISPLAY=:0.0 DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/1000/bus" /usr/bin/notify-send -u critical "Attention chérie, ça va couper !"  -i /home/tramber/.i3/citepeur.png #/usr/share/icons/hicolor/48x48/status/xfpm-primary-000.png #"$BATTINFO"

fi

#Batterie : Full
if (($BATTINFO1 > 99 )) ; then
    DISPLAY=:0.0 DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/1000/bus" /usr/bin/notify-send -u low "Débranche tout !" "choubidou" -i /usr/share/icons/hicolor/48x48/status/xfpm-primary-100-charging.png #"$BATTINFO"

fi



Mais il ne tient pas compte du branchement ou non de l'appareil.


Ni dieu, ni maître, ni slogan !

Je pense donc Jessie.
Dura Stretch, sed Stretch.

Hors ligne

#17 19-01-2017 23:15:19

tramberlimpe
Membre
Distrib. : Debian Stretch
Noyau : Linux 4.8.0-2-amd64
(G)UI : i3
Inscription : 24-09-2012

Re : [résolu] -Script de notifications pour la Batterie

Merci Watael !!

Ça fonctionne tout comme je voudais !!!

Pour ceux qui voudraient avoir un message avec une notification batterie à 15% pour rebrancher (notification normale), une notification à 5% (notification critique, d'où le msgSendCrit) et une notification à 95% (notification normale)  pour débrancher, voilà ce que ça donnerait... (j'aurais aimé avoir ça, même si je ne comprends pas encore tout !)

#!/bin/bash

export DISPLAY=:0.0
rgxOUT='Discharging, ([^%]*)%.*'
rgxIN='Charging, ([^%]*)%.*'
msgSend() {
    msg="$1"
    img="$2"
    DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/1000/bus" /usr/bin/notify-send  "$msg"  -i "$img"
}

msgSendCrit() {
    msg="$1"
    img="$2"
    DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/1000/bus" /usr/bin/notify-send -u critical  "$msg"  -i "$img"
}

read battCharge < <(acpi -b)

if [[ $battCharge =~ $rgxOUT ]]
then
    test ${BASH_REMATCH[1]} -lt 15 && msgSend "Rebranche !" "/usr/share/icons/hicolor/48x48/<chemin/vers/image.png>"
    test ${BASH_REMATCH[1]} -lt 5 && msgSendCrit "Ça va couper !" "/chemin/vers/image.png"
elif [[ $battCharge =~ $rgxIN ]]
then
    test ${BASH_REMATCH[1]} -gt 95 && msgSend  "Débranche !" "/chemin/vers/image.png"
fi
 



Les chemins sont vers des images au format png. On en trouve dans /usr/share/icons/ mais ça peut être les siennes (comme moi, issue du film la Cité de la peur mrgreen.gif)

Ré-so-lu !
Merci à tou-te-s !

Dernière modification par tramberlimpe (19-01-2017 23:39:40)


Ni dieu, ni maître, ni slogan !

Je pense donc Jessie.
Dura Stretch, sed Stretch.

Hors ligne

#18 19-01-2017 23:23:22

frei
Membre
Lieu : Tours
Distrib. : Sid
Noyau : 4.9.0-1-amd64
(G)UI : Mate+Compiz
Inscription : 06-01-2017
Site Web

Re : [résolu] -Script de notifications pour la Batterie

Cool smile

"Glory. Rotting flower." John Tardy 1989

Hors ligne

#19 20-01-2017 01:57:50

MicP
Membre
Distrib. : debian stable
Noyau : Linux 3.16.0-4-amd64
(G)UI : Xfce
Inscription : 29-02-2016

Re : [résolu] -Script de notifications pour la Batterie

Cette batterie ne va sans doute pas tenir très longtemps si elle est souvent déchargée jusqu'à 5% de sa capacité, si tant est que la machine ne se soit pas arrêtée avant cette valeur de 5%, et si elle est constituée d'éléments lithium-ion.

=======
Tant qu'une alimentation secteur est disponible, il vaut mieux garder la machine connectée au secteur,
et laisser les circuits électroniques intégrés dans la batterie (BMC <=> Battery Management System)
réguler le courant et la tension de charge et arrêter la charge quand la mesure d'impédance des cellules indique qu'elles sont chargées à leur maximum possible.

Dernière modification par MicP (26-01-2017 04:23:02)

Hors ligne

#20 20-01-2017 09:13:57

Watael
Membre
Distrib. : Debian GNU/Linux 8.6 (jessie)
Noyau : Linux 3.16.0-4-amd64
(G)UI : xmonad, i3, dwm
Inscription : 19-01-2017

Re : [résolu] -Script de notifications pour la Batterie

il n'est pas nécessaire de créer une nouvelle fonction pour ajouter un paramètre; modifie simplement celle que j'ai donnée pour qu'elle en accepte davantage.
placé en dernier, ce paramètre de criticité peut ne pas figurer dans l'appel de la fonction et avoir une valeur par défaut fixée à "normal".

Hors ligne

#21 24-01-2017 00:50:36

tramberlimpe
Membre
Distrib. : Debian Stretch
Noyau : Linux 4.8.0-2-amd64
(G)UI : i3
Inscription : 24-09-2012

Re : [résolu] -Script de notifications pour la Batterie

c'est à dire ? Je n'ai pas bien compris les deux dernières interventions...

Mon réglage correspond à ce que m'avait dit le vendeur de LDLC.

Ni dieu, ni maître, ni slogan !

Je pense donc Jessie.
Dura Stretch, sed Stretch.

Hors ligne

#22 24-01-2017 02:18:14

Watael
Membre
Distrib. : Debian GNU/Linux 8.6 (jessie)
Noyau : Linux 3.16.0-4-amd64
(G)UI : xmonad, i3, dwm
Inscription : 19-01-2017

Re : [résolu] -Script de notifications pour la Batterie

concernant la fonction ?
une fonction est utilisée pour écrire une seule fois du code qui devra être réutilisé plusieurs fois.
on n'y met que les termes invariables, si une partie est susceptible de modification au long du script on la "variabilise", et on la passe en paramètre.

msgSend() {
    test -n "$3" && urgence="$3" || urgence="normal"
    msg="$1"
    img="$2"
    DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/1000/bus" /usr/bin/notify-send -u "$urgence"  "$msg"  -i "$img"
}

msgSend "bla bla" "/chemin/img.png" # ici, il n'y a pas de troisième paramètre : l'urgence sera 'normal'

msgSend "bla bla" "/chemin/img.png" "critical" # ici, il y a pas un troisième paramètre : l'urgence sera 'critical'
msgSend "bla bla" "/chemin/img.png" "normal" # ici, il y a pas un troisième paramètre : l'urgence sera 'normal'

Hors ligne

#23 26-01-2017 04:30:43

MicP
Membre
Distrib. : debian stable
Noyau : Linux 3.16.0-4-amd64
(G)UI : Xfce
Inscription : 29-02-2016

Re : [résolu] -Script de notifications pour la Batterie

Bonjour

Pour reformuler ce que je disais dans mon précédent message, je dirais que les packs de batterie ont un circuit électronique intégré dans le pack qui régule tout seul la charge de façon optimale, et qui coupe lui même la charge au bon moment sans avoir besoin de débrancher le cordon secteur de la machine quand la batterie est chargée.

Une batterie s'usera d'autant plus vite qu'elle effectuera de cycles de charge/décharge

Une batterie qui reste chargée à 5% même si elle n'est pas utilisée risque de se retrouver inutilisable.

Dernière modification par MicP (26-01-2017 18:09:39)

Hors ligne

#24 30-01-2017 16:20:33

tramberlimpe
Membre
Distrib. : Debian Stretch
Noyau : Linux 4.8.0-2-amd64
(G)UI : i3
Inscription : 24-09-2012

Re : [résolu] -Script de notifications pour la Batterie

La personne du SAV de LDLC m'a assuré que pour une durée optimale de batterie, il faut s'en servir comme pour un téléphone portable : charger / décharger / recharge à partir de 15%.

Ni dieu, ni maître, ni slogan !

Je pense donc Jessie.
Dura Stretch, sed Stretch.

Hors ligne

Pied de page des forums