Le Helios64 étant équipé d’une batterie, voici un petit tuto pour que la machine s’éteigne proprement et sans tout casser.

Disclaimer : Je ne suis qu’un Ours, et pas un expert en informatique. Ce qui suit n’est que le résultat de mes pérégrinations sur les internets pour essayer de comprendre comment ça fonctionne. Mes grosses papates velues ne garantissent aucun résultat.

En cas de coupure de courant, votre Helios64 pourrait s’éteindre brusquement, et ça c’est jamais vraiment bon. Il vaut mieux qu’il s’éteigne proprement pour éviter des pertes de données par exemple.

Heureusement, on peut brancher une batterie dans le Helios64 (et dans mon cas, j’avais choisis cette option donc la batterie était fourni avec). La voici :

L’idée, c’est de vérifier à intervalle régulier que la batterie n’est pas en train de se décharger, et que si c’est le cas, il faut éteindre proprement l’ordinateur. J’imagine qu’il y a tout plein de manière de faire ça, avec un système de monitoring par exemple. Mais pour ma part, j’ai choisis de faire ça avec une tâche Cron. On en a déjà parlé dans cet article.

Je vais donc essayer de vérifier une fois toutes les cinq minutes (c’est arbitraire mais ça me semble bien) que la batterie n’est pas en dessous d’un certains seuil de charge. En effet, si Helios64 est alimenté normalement, alors la batterie sera à 100% de sa capacité et ne sera pas utilisée. En cas de panne électrique, la batterie va se décharger lentement, et il faudra arrêter le système sous un certain seuil de charge.

Pour déterminer ce seuil,  je me suis basé des explications qui est donné sur la page officielle de Kobol.

Il faut donc vérifier que le voltage de la batterie ne descende pas sous les 7.0 V soit 916 mV.

La valeur ADC correspond à Analog to Digital Converter ou Convertisseur Analogique Numérique (dans la langue de Michel Drucker). Les composants électroniques fournissent en effet des valeurs brutes, que l’on convertit pour avoir des valeurs numériques que l’on peut manipuler plus aisément. Bon, j’ai pas tout compris sur le plan électrique et électronique, mais ce que je comprends et qu’il faut retenir : si ça descend sous 916, alors il faut éteindre.

Via le wiki , on apprend que la formule est :

adc = in_voltage2_raw * in_voltage_scale

Et que ces valeurs sont stockées dans :

/sys/bus/iio/devices/iio:device0/

Création du script

Créez un fichier battery.sh à un emplacement de votre choix (perso c’est /usr/local/sbin) : nano /usr/local/sbin/battery.sh

#!/usr/bin/env sh

# Script qui éteint proprement la machine quand la batterie descend sous un certain niveau
# on récupére les valeurs brutes
a=`cat /sys/bus/iio/devices/iio:device0/in_voltage2_raw`
b=`cat /sys/bus/iio/devices/iio:device0/in_voltage_scale`

# on les convertis dans des valeurs compréhensible en mV
x=`echo « $a*$b » | bc`

# on récupére la date pour garder une trace dans les logs
now=$(date)

# on vérifie si on est en dessous de 960 mV
# si oui on redémarre
if [ x<=960 ]
then
echo « $now » $x « /!\ LOW BATTERY »
/sbin/shutdown
else
echo « $now » $x
fi

J’ai mis des echo pour récupérer dans les logs ce qui se passe. A l’avenir je ferai un systeme pour roller les logs pour pas qu’ils ne prennent trop de place.
J’ai choisis 960 mV plutot que 916 mv (~ +5%) pour avoir un peu de marge.

 

Création de la tâche cron

On tape la commande suivante pour accéder à la liste des tâches cron :

crontab -e

Et on ajoute cette petite régle, qui va lancer notre script toutes les 5 minutes, et enregistrer les logs dans un fichier log.

#CHECK BATTERY toutes les 5 minutes
5 * * * * bash /usr/local/sbin/battery.sh >> /var/log/battery.log 2>&1

 

Petit test

Il suffit alors de couper l’alimentation de notre Helios64 et d’attendre quelques heures pour voir si il se coupe proprement.

 

Conclusion

Voilà, j’espere que ca vous servira. Evidemment c’est optimisable et je sens bien que c’est une « solution de bourrin » mais en attendant : ça marche.

A bientot 😀