Je veux que mon ordinateur joue un fichier son personnalisé lorsque ma batterie est faible (disons 10%). Comment puis-je faire ceci? Merci
Je veux que mon ordinateur joue un fichier son personnalisé lorsque ma batterie est faible (disons 10%). Comment puis-je faire ceci? Merci
Je voulais juste répondre car j'ai utilisé les conseils de cette page pour configurer mon propre crontab -e
travail.
Je dirige Lubuntu (fidèle) et ce qui précède n'a pas fonctionné pour moi, mais avec un petit ajustement, cela a fonctionné. Mon niveau d'expérience (in) est que je suis relativement capable de lire des scripts et des commandes de base, mais moins capable de les écrire à partir de zéro dans les disto de Linux. Je mentionne cela parce que si je peux bricoler une alarme de batterie qui fonctionne, la plupart d'entre vous qui lisez ceci devraient également pouvoir!
SO .... le script et une explication de base ....
Selon les articles ci-dessus de Glutanimate et Scott Goodgame (merci les gars!), J'ai essentiellement fait ce qui suit:
Pour obtenir mpg123 et pouvoir lire de l'audio:
sudo apt-get install acpi mpg123
Fichier à ouvrir pour écrire la commande:
crontab -e
Commande à saisir à la fin du fichier:
*/1 * * * * if [ `acpi -b | awk ' { print ( $(NF-2)-0)}'` -lt "15" ] ; then mpg123 /home/andy/Alarm.mp3 ; fi
Astérisques au début
Les cinq astérisques représentent la fréquence à laquelle exécuter les commandes.
*/1 * * * *
signifie «exécuter cela toutes les minutes».
SI / ALORS / FI:
IF [ stuff inside these brackets ] ; THEN do something ; FI
J'imagine que la plupart d'entre vous connaissent très bien les déclarations IF / THEN. L'IF à la fin conclut la déclaration du CI
Lecture de l'audio:
mpg123 /home/andy/Alarm.mp3
cela permet simplement mpg123
de lire un fichier appelé Alarm.mp3
situé dans mon répertoire personnel /home/andy/
.
Informations sur la batterie de sortie:
acpi -b
cela émet simplement l'état de la batterie. Sur mon ordinateur portable, cela donne des résultats tels que:
Battery 0: Discharging, 74%, 02:35:18 remaining
Commande Pipe to awk
| awk ' { print ( $(NF-2)-0)}'` -lt "15"
D'accord, nous canalisons la sortie de l'état de la batterie ci-dessus et imprimons la deuxième valeur de fin (NF-2) qui dans l'exemple ci-dessus est '74% '. Cependant, nous devons supprimer le «pourcentage» -0 . Nous voulons comparer la valeur actuelle avec la valeur 15 -lt "15" . Donc, pour résumer en anglais simple,
SI la valeur de la batterie est inférieure à 15% ALORS lire un fichier audio
J'apprécie de l'avoir un peu abruti et peut-être que mon explication pourrait être améliorée, mais j'espère que cela aidera quelqu'un d'autre à comprendre comment ajouter une alarme pour la batterie et éviter que leurs ordinateurs portables ne s'éteignent tout d'un coup!
Bonne chance!
D'accord ... il s'avère donc que lorsque mon ordinateur portable est en charge, la sortie de
acpi -b
est:
Battery 0: Charging, 35%, 01:04:08 until charged
tandis que sur batterie est
Battery 0: Discharging, 36%, 01:22:36 remaining
donc en utilisant le paramètre mentionné initialement
print ( $(NF-2)-0)
génère des résultats différents, car rappelez-vous, le bit de valeur NF spécifie le nombre d'éléments vers l'arrière depuis la fin de la sortie à afficher, donc avec la sortie sur batterie de
Battery 0: Discharging, 36%, 01:22:36 remaining
$(NF-2)
produit "36%" alors qu'avec l'ordinateur portable en charge,
Battery 0: Charging, 35%, 01:04:08 until charged
$(NF-2)
sorties '00: 50: 12 ', c'est-à-dire le temps restant avant la charge.
L' -0
après $(NF-2)
réduit zéro de la valeur, donc lorsque la valeur est un pourcentage -0
, elle passe de quelque chose comme '36% 'à' 36 '. Lorsque la valeur de sortie est perçue comme non numérique, telle que la sortie de temps de '01: 04: 08 'comme ci-dessus, la valeur -0
renvoyée est' 0 '. Vous pouvez donc voir mon problème - lorsque mon ordinateur portable est en charge, la valeur de sortie est toujours «0». Comme je veux jouer une alarme lorsque la valeur de sortie est inférieure à 15, cela se traduit par une alarme de batterie qui se déclenche toutes les minutes lorsqu'il est en charge!
J'ai lu un peu plus sur la sortie de la awk
commande et il s'est avéré que je n'avais pas besoin de lui faire lire la deuxième valeur depuis la fin, je pouvais commencer depuis le début de la sortie et avancer. C'est beaucoup mieux car l'état de ma batterie commence de la même manière, qu'il soit en charge ou sur batterie en termes de nombre de paramètres, c'est-à-dire que le quatrième paramètre depuis le début est toujours la valeur de charge en pourcentage.
SO ... pour lui faire lire la quatrième valeur, la commande passe de
awk ' { print ($(NF-2)-0)}'
à
awk ' { print ($4)-0}'
ou dans toute sa splendeur:
*/1 * * * * if [ `acpi -b | awk ' { print ($4)-0}'` -lt "15" ] ; then mpg123 /home/andy/Alarm.mp3 ; fi
Encore une fois, j'espère que cela aide quelqu'un! Bonne chance et merci pour la lecture!
D'accord, donc un peu de fouille supplémentaire et j'ai également trouvé comment régler le volume à 100% et réactiver le son avant de jouer l'alarme - car avouons-le, à quoi sert une alarme de batterie si vous ne pouvez pas l'entendre parce que vous '' ai-je réglé le volume sur faible ou coupé?!
Quoi qu'il en soit, la commande dont vous avez besoin est:
*/1 * * * * if [ `acpi -b | awk ' { print ($4)-0}'` -lt "15" ] ; then pactl set-sink-volume 0 100% && pactl set-sink-mute 0 0 && mpg123 /home/andy/Alarm.mp3 ; fi
comme vous pouvez le voir, tout ce que j'ai fait est inséré la chaîne de commande
pactl set-sink-volume 0 100% && pactl set-sink-mute 0 0 &&
(il &&
suffit de lier plusieurs commandes ensemble)
Encore une fois, bonne chance à tous!
D'accord, donc ... une dernière édition (espérons-le!) ... apparemment, le signe de pourcentage est un signe spécial lors de l'exécution de tâches cron. Par conséquent, vous devez «échapper» au signe de pourcentage en plaçant une barre oblique inverse ( \
) devant chacun %
afin qu'il ne soit pas (mal) interprété par le shell.
Donc, en gros, remplacez
100%
avec
100\%
Par conséquent, la commande dont vous avez vraiment VRAIMENT besoin est:
*/1 * * * * if [ `acpi -b | awk ' { print ($4)-0}'` -lt "15" ] ; then pactl set-sink-volume 0 100\% && pactl set-sink-mute 0 0 && mpg123 /home/andy/Alarm.mp3 ; fi
ouf j'espère que ça le trie pour vous comme ça l'a fait pour moi !! (finalement!)
Vous pouvez configurer une tâche cron qui vérifiera l'état de la batterie toutes les 5/10 minutes, puis en fonction du pourcentage de la batterie, un son sera émis.
Pour jouer le son, vous pouvez utiliser
mpg123
filename.mp3Pour l'installer
sudo apt-get install mpg123
Pour obtenir l'état de la batterie à partir de la ligne de commande, vous pouvez utiliser cette commande
upower -i /org/freedesktop/UPower/devices/battery_BAT0
en utilisant,
grep
vous pouvez extraire les informations exactes comme suitupower -i /org/freedesktop/UPower/devices/battery_BAT0| grep -E "state|to\ full|percentage"
Maintenant, vous pouvez mettre toutes ces choses dans un script shell (et également une
if
condition pour vérifier si l'état de la batterie est inférieur à 10%) et donner simplement le chemin de ce script shell au travail cron.donc toutes les 5 minutes (vous pouvez modifier cet intervalle), l'état de votre batterie sera vérifié et si la batterie est inférieure à 10%, votre fichier audio fourni sera lu!
J'espère que cela t'aides!
la source
Une façon simple de le faire est d'ajouter une simple vérification à votre crontab (cron est un système pour exécuter les choses sur une base régulière définie par l'utilisateur en arrière-plan.)
Vous devez d'abord installer un lecteur mp3 en ligne de commande et acpi pour pouvoir lire l'état de la batterie.
À partir d'un terminal, exécutez ce qui suit pour installer les packages.
Ensuite, pendant que vous êtes encore dans le terminal, saisissez
crontab -e
et entrez ce qui suit à la fin du fichier. Modifiez simplement l'utilisateur par votre nom d'utilisateur et le .mp3 par votre nom de fichier dans votre répertoire personnel.Appuyez sur Control-O (la lettre) et Entrée pour enregistrer. Appuyez sur Control-x pour quitter
Des trucs supplémentaires que vous voudrez peut-être lire ...
Ubuntu CronHowto
Guide Ubuntu
la source
acpi |awk '{print substr($NF, 0, length($NF)-1)}'
-lt "10"]; puis aplay /home/felipelalli/Music/siren.wav; fi [: expression entière attendue: restant dans ➜ ~ acpi Batterie 0: Décharge, 9%, 00:17:56 restanteEn fait, j'ai utilisé la réponse d' Andy Pyne mais cela n'a pas fonctionné pour moi. Le cron a exécuté le code, mais il n'a pas joué le son. Enfin, j'ai trouvé la solution et je la partage ici:
Étape 1: installez mpg3
Étape 2: enregistrez la commande suivante dans
~/bin/battery_alert
Ce script joue battery_low.mp3 si l'ordinateur portable se décharge et que la charge est inférieure ou égale à 15%. (Si l'alimentation secteur est connectée, elle ne vous alertera pas). Ce code vous avertit également, si la charge est de 100%. Si vous ne voulez pas d'alerte pour l'état complètement chargé, supprimez la partie else de ce code.
Étape 3: rendez le fichier exécutable à l'aide de la commande suivante.
Étape 4: exécutez ce fichier à l'aide de cron en ajoutant la commande suivante à la fin du fichier opend by
crontrab -e
command.(N'oubliez pas d'avoir une ligne vide après cette commande)
la source