Version imprimable du sujet

Cliquez ici pour voir ce sujet dans son format original

Forums MacBidouille _ Technologies Apple _ Alerte et notification sur le niveau batterie de la souris

Écrit par : YF-alubook 4 Mar 2017, 13:55

Bonjour tous,

J'ai un hackinstosh depuis 2014 (voir ici : http://forum.macbidouille.com/index.php?showtopic=377566) et il est super stable. La SEULE chose qui le fait planter : le bluetooth qui part en vrille quand la batterie de la souris (une Magic Mouse) est à plat. A tout les coups : freeze et hard reboot.

Ca fait des mois que je me dis qu'il faut que je mette en place un script pour surveiller le niveau de batterie et m'alerter quand il passe en-dessous d'un certain seuil. D'autant plus que comme j'utilise des piles rechargeables, la vitesse de décharge est très hétérogène.

Voici donc le script bash qui produit une notification si le %age de batterie est < à 25 % et affiche un message Finder si ça passe en-dessous de 15 %, pour une action immédaite.

Code
#!/bin/sh

# https://developer.apple.com/library/content/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_cmds.html#//apple_ref/doc/uid/TP40000983-CH216-SW224
# https://abs.traduc.org/abs-fr/ch07s03.html

warning_title="Alerte batterie"
warning_msg="Il faut changer les piles de la souris !"

# get a string with the percent level
#ioreg -c BNBMouseDevice | grep '"BatteryPercent" = ' | tr -cd [:digit:]
batt_level=$( ioreg -c BNBMouseDevice | grep '"BatteryPercent" = ' | tr -cd [:digit:] )

# for testing
#batt_level=20

echo "batterie souris = $batt_level %"
warning_msg="$warning_msg \n $batt_level %"

# test -le -> <=
if [[ $batt_level -le 15 ]]; then
    # display Finder warning
    #osascript -e 'tell app "Finder" to display dialog "un message"'
    osascript -e 'tell app "Finder" to display alert "'"$warning_msg"'" with title "'"$warning_title"'" buttons {"OK"} with icon caution'
    #
elif [[ $batt_level -le 20 ]]; then
    # display notification
    #osascript -e 'display notification "une notification"'
    osascript -e 'display notification "'"$warning_msg"'" with title "'"$warning_title"'" sound name "Purr"'
    #
fi


Ensuite, avec le logiciel LaunchControl j'ai créé un cron "local.check_batt.job" de type "Global Agents". Il lance le script toutes les heures (3600 s).


Une évolution intéressante serait d'automatiquement éteindre le bluetooth si la charge est < à 15 %. AU moins comme ça : ça appelle une action et éviterait un plantage du mhack.

Propulsé par Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)