©
. Document créé le 22 août 2010 , mis à jour le 11 août 2011.Il y a des moments où tout réussit. Il ne faut pas s'effrayer : ça passe. Jules Renard (Journal)
Accueil du site > Astuces > MacOSX > Annoncer l’autonomie de la batterie
Le script ci-dessous - en guise d’exercice - permet d’annoncer l’autonomie de la batterie du portable en précisant jusqu’à quelle heure vous pouvez travailler tranquillement. Enfin presque. Car bien sûr, cela dépend de l’utilisation du disque dur, de la luminosité de l’écran, des périphériques USB connectés, etc.
Télécharger l’application ? Le lien est en bas de page.
Le script illustre :
La commande ioreg (Input/Output Registry) affiche les propriétés nécessaires pour ce mini projet, celles de la batterie, grâce à l’option "-n AppleSmartBattery" :
#!/bin/sh
etatBatt=`ioreg -n AppleSmartBattery`
res="{"
for ii in ExternalConnected TimeRemaining InstantTimeToEmpty ExternalChargeCapable PermanentFailureStatus BatteryInvalidWakeSeconds AdapterInfo MaxCapacity Location CurrentCapacity BatteryInstalled AvgTimeToFull DesignCapacity ManufactureDate PostDischargeWaitSeconds Temperature MaxErr FullyCharged IsCharging PostChargeWaitSeconds AvgTimeToEmpty
do
prop=`echo "$etatBatt" | grep \"$ii\" | awk '{ print $5 }'`
res="$res $ii:\"$prop\","
done
res=`echo $res | sed "s/,$//g"`
res="$res }"
/bin/echo -n $res
Certaines propriétés ont été retirées de la liste, car sans aucun intérêt (numéro de série, etc.).
Toutes ces autres propriétés ne sont pas nécessaires ici. Elles sont conservées à titre d’information, ou pour une autre utilisation de ce script shell dans un autre script AppleScript
Enregister ce script sous le nom de batterie_etat.sh par exemple et donnez-lui les droits d’exécution nécessaire (chmod 755).
Le script AppleScript commence par vérifier s’il a accès aux ressources nécessaires. Il demande au script shell les propriétés du kit d’entrée sortie, principalement celles de la batterie.
Si la batterie est présente sur le système, et qu’elle n’est pas en charge, batterie_jusqua.app calcule grâce aux propriétés récupérées l’heure ultime de la charge disponible. Le résultat est annoncé avec la voix française définie dans le script, ou une voix système - anglaise - si cette voix française ne l’est pas.
(*
Annoncer l'autonomie de la batterie "Jusqu'à telle heure"
Copyright © 2010 Christian Paulus
http://www.quesaco.org/Annoncer-l-autonomie-de-la-batterie
You can use this code, redistribute it and/or modify it under
the terms of the GNU General Public License as published by
the Free Software Foundation version 3.
This code is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty
of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details
at http://www.gnu.org/licenses/gpl-3.0.html
@author: Christian Paulus
@see: http://www.quesaco.org
@version: Sun Aug 22 11:21:51 CEST 2010
*)
-- activer l'accessibilité
tell application "System Events" to set isUIScriptingEnabled ¬
to UI elements enabled
if isUIScriptingEnabled is false then
tell application "System Preferences"
-- affiche le panel des prefs pour l'accessibilité
activate
set current pane ¬
to pane "com.apple.preference.universalaccess"
display dialog "Votre système n'est pas correctement configuré pour ce script.
S'il vous plaît, sélectionnez \"Activer l'accès pour les périphériques d'aide\" puis renouvellez l'opération."
return
end tell
end if
-- le script compagnon est dans le dossier Scripts du paquet
set donnerEtat to POSIX path ¬
of (path to resource "batterie_etat.sh" in directory "Scripts")
-- demander les propriétés de la batterie
-- à ioreg via le terminal (ligne de commande)
set r to (do shell script donnerEtat as string)
-- récupérer les valeurs sous forme de liste (JSON)
-- sorte d'eval() du javascript
set props to run script ("set t to " & r)
set bientot to (current date)
-- ne travailler qu'avec ses propriétés
tell props
if BatteryInstalled of it is "Yes" then
if IsCharging of it is "Yes" then
set annonce to "Batterie: chargement en cours."
else
set minuts to TimeRemaining of it
set bientot to bientot + (minuts * minutes)
set heures to hours of bientot
set minuts to minutes of bientot
set annonce to heures & " heures"
if (minuts ≥ 1) then
set annonce to annonce & ¬
" et " & minuts & " minutes."
end if
set annonce to "Batterie: jusqu'à " & annonce
end if
else
set annonce to "Pas de batterie disponible"
end if
end tell
try
-- si dispo, voix française
say annonce using "Margaux Infovox iVox HQ"
on error
-- sinon, voix par défaut
say annonce using "Fred"
end try
Les forums sont fermés.