Forum Linux.debian/ubuntu [Résolu] Script de mise en veille en cas de batterie presque vide

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes : aucune
0
7
mar.
2025

Bonjour,

Sur mon ancien PC, quand la batterie atteignait 15 %, la mise en veille se produisait.
Avec mon nouveau PC, la mise en veille ne se produit que rarement.

Aussi j'ai cherché un script pour pallier ce souci, mais n'en ai trouvé que deux (https://forums.linuxmint.com/viewtopic.php?t=195456), qui ne fonctionnent pas, car mon Xubuntu 22.04 n'a pas de /etc/rc.local.

Donc si quelqu'un a un script sous la main, je suis preneur, car le problème que je connais est un gros problème. Merci.

  • # Trouvé !

    Posté par  (site web personnel) . Évalué à 3 (+2/-0).

    Je réalise toujours mes recherches avec Google. Je ne sais pas ce qui m'a pris, j'ai cherché avec DuckDuckGo, et j'ai trouvé un script qui fonctionne. Mais il y a des choses qui ne marchent pas, je dois le modifier. Je posterai le script retravaillé pour ceux que ça intéressent.

    Quelques trucs pour Linux : https://tux.alwaysdata.net

  • # UPower

    Posté par  . Évalué à 3 (+1/-0).

    Il y a aussi UPower qui peut faire ça.

    https://gitlab.freedesktop.org/upower/upower

    • [^] # Re: UPower

      Posté par  (site web personnel) . Évalué à 1 (+0/-0).

      Je m'étais intéressé à ce fichier, mais ça n'avait rien donné.

      Quelques trucs pour Linux : https://tux.alwaysdata.net

  • # Verification comportement

    Posté par  . Évalué à 1 (+0/-0).

    echo -n disk > /sys/power/state

    Voir si avec cette commande en su
    Si votre pc et linux se restore correctement

    Alors le problème viendrai d,un bug de version de la gestion batterie
    Un upgrade…ou downgrade devrai solutionner

    • [^] # Re: Verification comportement

      Posté par  (site web personnel) . Évalué à 1 (+0/-0).

      Dans /sys/power/state, j'ai juste ça : freeze mem disk

      Quelques trucs pour Linux : https://tux.alwaysdata.net

      • [^] # Re: Verification comportement

        Posté par  . Évalué à 1 (+0/-0).

        C,est bon

        Il faut taper cette commande en root ou su ou sudo

        echo -n disk > /sys/power/state
        Essayer sans -n

        echo mem > /sys/power/state

        Mem c,est sauvegarde de contexte en ram…il faut en avoir assez

        Disk c,est sauvegarde l,espace swap
        Il faut que,il soit actif

        • [^] # Re: Verification comportement

          Posté par  (site web personnel) . Évalué à 1 (+0/-0).

          Mon PC refusant de s'hiberner et étant pourvu de 16 go de ram… j'ai supprimé le swap.

          J'ai néanmoins exécuté tes commandes, qui ont donné :

          bash: /sys/power/state: Permission non accordée

          hormis la commande "echo -n disk > /sys/power/state" (en root), qui a donné après un écran noir :

          bash: echo: erreur d'écriture : Aucun périphérique de ce type

          Quelques trucs pour Linux : https://tux.alwaysdata.net

  • # Les scripts

    Posté par  (site web personnel) . Évalué à 2 (+1/-0).

    Le script de mise en veille que j'ai retravaillé :

    #!/bin/bash
    
        battery_level=$(cat /sys/class/power_supply/BAT0/capacity)
        battery_status=$(cat /sys/class/power_supply/BAT0/status)
    if
        [ "${battery_status}" != "Discharging" ]
    then
    exit 0
    fi
        battery_percentage=20
    if
        [ "${battery_level}" -le "${battery_percentage}" ]
    then
        systemctl suspend
    exit 0
    fi
    

    Script à enregistrer dans un fichier .sh, genre veille.sh.
    Le rendre exécutable, genre "chmod +x /home/machin/veille.sh".
    Ajouter dans /etc/cron.d/anacron, genre "*/5 * * * * root /home/machin/veille.sh".

    Et puisque c'est mieux d'être averti, voici ce script :

    #!/bin/bash
    
    while
        true
    do
        battery_level=$(cat /sys/class/power_supply/BAT0/capacity)
    if
        [ "${battery_level}" -lt 25 ]
    then
        notify-send -i "/usr/share/icons/Papirus-Tux/48x48/status/battery-ac-adapter.svg" "Alerte Batterie !" "Niveau de charge critique ($battery_level%)"
        paplay "/snap/gtk-common-themes/current/share/sounds/Yaru/stereo/battery-low.oga"
    fi
        sleep 300
    done
    

    Script à enregistrer dans un fichier .sh, genre notification.sh.
    Le rendre exécutable, genre "chmod +x /home/machin/notification.sh".
    L'ajouter dans "Session et démarrage" > "Démarrage automatique d'application".
    Redémarrer le PC.

    Les deux scripts fonctionnent parfaitement sur Xubuntu 22.04.5.

    -i "/usr/share/icons/Papirus-Tux/48x48/status/battery-ac-adapter.svg" : peut être supprimé ou remplacé par l'icône de votre choix.

    paplay "/snap/gtk-common-themes/current/share/sounds/Yaru/stereo/battery-low.oga" : peut être supprimé ou remplacé par le son de votre choix.

    Quelques trucs pour Linux : https://tux.alwaysdata.net

  • # Toutes les notifications

    Posté par  (site web personnel) . Évalué à 1 (+0/-0).

    En fait, je me suis servi de scripts pour créer des notifications de batterie chargée ou faible, de batterie en charge ou en décharge, et un script de mise en veille. Tout est installable facilement depuis mon site : Notifications de batterie chargée, faible…

    Sinon les scripts sont ci-dessous…

    Notifications "Branchez le PC sur le secteur" ou "Débranchez le PC du secteur", à nommer avec l'extension .sh, à rendre exécutable, à lancer via autostart :

    #!/bin/bash
    
        battery=$(upower -e | grep 'BAT')
    while :
    do
        cable=$(upower -d | grep -n2 line-power | grep online | awk '{ print $3 }')
        percentage=$(upower -i $battery | grep percentage | awk '{ print $2 }' | sed s/'%'/''/g)
    if
        [[ "$cable" = "no" && "$percentage" -le 25 ]]
    then
        notify-send -i "/home/$USER/.batterie/icône.svg" "Branchez le PC sur le secteur" "Niveau de charge de la batterie : $percentage %"
        paplay "/home/$USER/.batterie/son.oga"
    elif
        [[ "$cable" = "yes" && "$percentage" -ge 100 ]]
    then
        notify-send -i "/home/$USER/.batterie/icône.svg" "Débranchez le PC du secteur" "Niveau de charge de la batterie : $percentage %"
        paplay "/home/$USER/.batterie/son.oga"
    fi
        sleep 60
    done
    

    Notifications "La batterie se charge…" ou "La batterie se décharge…", à nommer avec l'extension .sh, à rendre exécutable, à lancer via autostart :

    #!/bin/bash
    
        battery=$(upower -e | grep 'BAT')
        status(){
                upower -i $battery | grep state | awk '{ print $2 }'
                }
        previous=$(status)
    while
        true
    do
        current=$(status)
        percentage=$(upower -i $battery | grep percentage | awk '{ print $2 }' | sed s/'%'/''/g)
    if
        [[ "$current" != "$previous" ]]
    then
    if
        [[ "$current" == "charging" ]]
    then
        notify-send -i "/home/$USER/.batterie/icône.svg" "La batterie se charge..." "Niveau de charge de la batterie : $percentage %"
        paplay "/home/$USER/.batterie/son.oga"
    elif
        [[ "$current" == "discharging" ]]
    then
        notify-send -i "/home/$USER/.batterie/icône.svg" "La batterie se décharge..." "Niveau de charge de la batterie : $percentage %"
        paplay "/home/$USER/.batterie/son.oga"
    fi
        previous="$current"
    fi
        sleep 5
    done
    

    Mise en veille lorsque la batterie est trop faible, à nommer avec l'extension .sh, à rendre exécutable, à lancer via cron du style "@reboot root /home/nom d'utilisateur/fichier.sh" :

    #!/bin/bash
    
        battery=$(upower -e | grep 'BAT')
    while :
    do
        cable=$(upower -d | grep -n2 line-power | grep online | awk '{ print $3 }')
        percentage=$(upower -i $battery | grep percentage | awk '{ print $2 }' | sed s/'%'/''/g)
    if
        [[ "$cable" = "no" && "$percentage" -le 20 ]]
    then
        sleep 60 && systemctl suspend
    fi
        sleep 240
    done
    

    Quelques trucs pour Linux : https://tux.alwaysdata.net

  • # top

    Posté par  . Évalué à 1 (+0/-0).

    super si tu t'en sorti !
    je n'aurai pas pu te supporter jusqu'a un tel détail

Envoyer un commentaire

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.