Annoncer l’autonomie de la batterie

© Christian PAULUS. Document créé le 22 août 2010 , mis à jour le 11 août 2011.

Savoir où l'on veut aller, c'est très bien. Mais il faut encore montrer qu'on y va. Emile Zola

Accueil du site > Astuces > MacOSX > Annoncer l’autonomie de la batterie

Applescript / MacOsX 10.6 (Snow Leopard)

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 :

  • Vérification de l’accessibilité du poste ;
  • L’utilisation d’un script shell en tant que ressource. Le script est situé dans le répertoire Scripts du paquet ;
  • Récupération des propriétés au format JSON via un run script, sorte d’eval() Javascript ;
  • L’emploi d’une voix française si disponible, sinon utilisation d’une voix standard.

Obtenir les propriétés du portable

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).

L’application batterie_jusqua.app

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

La version complète, à décompresser pour usage :

Zip - 31.1 ko
Batterie_jusqua.app

Plussoyez !

Les forums sont fermés.

  • Annoncer l’autonomie de la batterie 21 décembre 2010 23:40, par 3Skiing

    Trés pratique et utile comme application pour surveiller la batterie de nos cher pc portable pommé.

    Toute fois je me permets de vous poser une question technique.

    Je suis depuis peu un Macuser grâce à l’achat d’un Macbook Unibody de 2010 (processeur Intel).

    Dans un souci de conserver au mieux l’état de la batterie je souhaite via AppleScript programmer des alertes batteries comme celle qui a d’origine dans le système quand la batterie est pratiquement déchargée.

    Exemple de fonctionnement voulu : Dés qu’il reste 40% d’autonomie un message apparaît pour me prévenir.

    Je suis bien sur intereser par votre application qui se nomme annoncer l’autonomie de la batterie qui à un fonctionnement proche de celui voulu.

    Malheureusement qui dit jeune Macuser dit novice dans AppleScript.

    Alors je vous écrit pour demander au concepteur de cette application s’il la gentillesse de m’indiquer la strucure du script qui répond à mes attentes.

    Merci d’avance pour votre aide.

    Les forums sont fermés.