Alors, pour ce qui est de trouver un moyen d'arriver à tous les coups sur le bon menu.. j'ai pas trouvé moyen de faire sur l'Alice comme sur la Free :/
... quand la frappe chirurgicale ne marche pas, il reste la "méthode bourrin", aussi appelée "tuage de mouche au bazooka" 😛
En effet, on a que 4 menus, donc même sans savoir où on est, si on se déplace et qu'on lance la séquence à chaque fois, on est sur de passer où il faut.
Par contre, l'idée c'est de ne pas tout péter en lançant la séquence de touche du reboot, sans être dans le bon menu, et c'est là qu'il faut la jouer fine:
- certain sous-menu, quittent le menu lors d'un appui sur "rouge"
- le sous-menu "mon abonnement", du même menu que "infos réseaux", ne quitte pas lors d'un appui sur rouge (ça c'est cool)
- du coup, en utilisant la touche, "rouge", j'arrive à quitter 2 des 3 menus qui ne sont pas les bons, avant de lancer ma séquence de touche, qui n'a alors aucun effet (cool aussi)
- il reste juste le menu de la VOD, dans lequel je vais naviguer pour rien sans le savoir, mais sans faire de dégâts non plus (pas chez moi en tout cas)
==> c'est gagné !!! je lance le reboot dans les 4 menus, et dans les 3 qui ne sont pas bons, je ne fais pas de connerie pour autant ("la mouche est tuée, et le bazooka ne fais pas de dommages collatéraux").
J'ai repris le principe de la freebox, ne pouvant pas savoir si le décodeur est allumé ou éteint, je lance 2 reboot avec un power entre les 2.
J'ai testé les 2 cas extrêmes:
- décodeur déjà allumé (donc le script commence par l'éteindre) et avec le bon menu atteint en dernier
- décodeur éteint au départ et le bon menu atteint en premier
Pas de gros soucis, ça marche dans le 2 cas, par contre, dans le 2ème cas (toutes les bonnes conditions réunies au départ), j'ai retrouvé la connexion avant la fin du script, donc ça a lancé un 2ème reboot.
Donc voilà, à tous les coups ça marche, des fois, ça marche trop bien... 😉
#!/bin/sh
# Code télécommande
CODE_ALICEBOX=12345678
# Identifiant du boîtier HD
ID_BOITIER=1
# Simule un appui sur la touche $1
# Simule un appui long si $2 vaut "long"
# Liste keys :
# power : la touche rouge on/off
# ok : touche OK
# up, right, down, left : les touches directionnelles entourant le OK
# home : la touche free
# red : le bouton rouge
simulerAppui() {
if [ "$#" -eq 1 ]
then
isLong=false
else
if [ "$#" -eq 2 ]
then
isLong=true
else
echo "Usage : simulerAppui <key> [long]"
return 2
fi
fi
wget -q -O /dev/null "http://hd${ID_BOITIER}.freebox.fr/pub/remote_control?code=${CODE_ALICEBOX}&key=${1}&long=${isLong}"
}
# enchaine une séquence "menu" "<-" "OK" "rouge"
# le déplacement permet d'avoir un nouveau menu à chaque fois (en 4 appels, on est sur d'être passé où il faut)
# et permet surtout d'être replacé sur le 1er élément du menu précédent
# le "OK" puis "rouge" pemet de ressortir du menu avant de lancer le reboot si pas au bon endroit
# sauf depuis l'écran de la VOD mais rien de grave ne se passera (en tout cas, no soucy chez moi)
sequence_deplace() {
simulerAppui home
sleep 3
simulerAppui left
sleep 1
simulerAppui ok
sleep 1
simulerAppui red
}
# enchaine une séquence "haut" "OK" "bas" "OK"
# on se délace sur le dernier sous-menu (infos réseau) et on entre
# puis on descend et on valide ==> le reboot est lancé (si on était das le bon menu)
sequence_reboot() {
simulerAppui up
sleep 1
simulerAppui ok
sleep 3
simulerAppui down
sleep 1
simulerAppui ok
}
# Redemarre le modem adsl
# en faisant 4 "déplacement + reboot"
# pour être sur de passer au moins une fois sur le bon menu
redemarrerAdsl() {
sequence_deplace
sleep 1
sequence_reboot
sleep 1
sequence_deplace
sleep 1
sequence_reboot
sleep 1
sequence_deplace
sleep 1
sequence_reboot
sleep 1
sequence_deplace
sleep 1
sequence_reboot
}
case $1 in
rebootAdsl)
#cas 1: on allume le décodeur
# cas 2: on éteind le décodeur
simulerAppui power
sleep 10
# cas 1: on vient d'allumer, on lance le reboot
# cas 2: on vient d'éteindre, le lancement de reboot se fait dans le gaz
redemarrerAdsl
sleep 1
# cas 1: box en train de rebooter
# cas 2: on avait éteind t là on rallume
simulerAppui power
sleep 10
# cas 1: box en train de rebooter
# cas 2: on vient d'allumer, on lance le reboot
redemarrerAdsl
sleep 1
;;
*)
$0 rebootAdsl
;;
esac
Donc voilà, je vous laisse le tester, J'y ai passé tout l'après-midi à bidouiller ma télécommande pour tester des combinaisons de touches.
En espérant que ça pourra vous servir 😉