Démarrer / éteindre le WiFi

Etant sensible au bien-être des occupants de ma maison, j'ai décidé de n'activer le WiFi que lorsque c'est nécessaire.

De ce fait, le WiFi est disabled par défaut sur le routeur et deux solutions seront utilisées pour l'activer ou le désactiver.

  1. La première solution est de faire usage du bouton EZSetup qui est placé derrière le routeur.
  2. La deuxième est de pouvoir l'activer par l'interface web du routeur qui est autant accescible à la maison qu'à distance lorsqu'on est à l'étranger.

Cela permet alors de ne plus devoir systématiquement connecter un ordinateur au routeur afin d'en activer le WiFi. Et ce en afin qu'une tablette, devenue un outil d'utilisation journalière, puisse plus facilement être connectée à internet.

Pour ce faire, j'ai suivi des instructions qui se résume comme ceci :

  1. Dans le fichier /etc/hotplug2.rules, retirer le caractère '^' qui est placé devant le mot "button$".
  2. Ensuite, il faut découvrir le nom des boutons disponible sur votre routeur. Pour se faire, il faut créer un fichier 00-bouton dans le répertoire que vous allez créer avec les commandes en ligne suivante :
          mkdir -p /etc/hotplug.d/button
          touch 00-buttons   (à taper lorsque vous vous êtes rendu
                                         dans le répertoire créé ci-dessus)
          collez ces trois lignes dans ce fichier 00-button :
               #!/bin/sh
               logger $BUTTON
               logger $ACTION
  3. Après avoir redémarré le routeur et vous être connecté dessus avec un terminal, lancez la commande logread avant puis après avoir cliqué sur lesdits boutons. Les noms de ceux-ci apparaîtront alors dans l'ordre où vous les avez pressés et vous pourrez alors continuer avec ce qui suit.
  4. Maintenant il faut remplacer le contenu du fichier 00-button avec ceci :
         #!/bin/sh
         . /etc/functions.sh
               do_button () {
                   local button
                   local action
                   local handler
                   local min
                   local max

                   config_get button $1 button
                   config_get action $1 action
                   config_get handler $1 handler
                   config_get min $1 min
                   config_get max $1 max

                   [ "$ACTION" = "$action" -a "$BUTTON" = "$button" -a -n "$handler" ] && {
                         [ -z "$min" -o -z "$max" ] && eval $handler
                         [ -n "$min" -a -n "$max" ] && {
                                [ $min -le $SEEN -a $max -ge $SEEN ] && eval $handler
                         }
                    }
                }

         config_load system
         config_foreach do_button button

  5. Créer un fichier /usr/bin/wifionoff qui contient ce code et qui permettra alors d'être lancé lors de l'action sur ledit bouton ou en utilisant l'interface web du routeur :
         #!/bin/sh
         STATEFILE="/tmp/wifionoff.state"

         if [ $# -eq 1 ]; then
           case $1 in
             "up"|"on")
               STATE=off
               ;;
             "down"|"off")
               STATE=on
               ;;
           esac
         else
           if [ ! -e ${STATEFILE} ]; then
             STATE=on
           else
             . ${STATEFILE}
           fi
         fi
         if [ -z ${STATE} ]; then
           STATE=on
         fi

         if [ ${STATE} == "on" ]; then
           /sbin/wifi down
           STATE=off
           logger "WifiToggle: WiFi down"
         else
           /sbin/wifi up
           STATE=on
           logger "WifiToggle: WiFi up"
         fi
     
         echo "STATE=${STATE}" > ${STATEFILE}
  6. Petite cerise sur le gâteau, il est possible de différencier une pression courte ou longue sur les boutons. Cela permet alors de faire effectuer des actions différentes.
    Pour ce faire, voici un exemple de ce qu'il faut ajouter dans le bas du fichier /etc/config/system :
         config button 'wifionoff'
             option 'button' 'ses'
             option 'action' 'released'
             option 'handler' '/usr/bin/wifionoff'
             option 'min' '0'
             option 'max' '1'

         config button 'halt'
             option 'button' 'reset'
             option 'action' 'released'
             option 'handler' 'halt'
             option 'min' '3'
             option 'max' '10'

         config button 'reset'
             option 'button' 'reset'
             option 'action' 'released'
             option 'handler' 'firstboot && reboot'
             option 'min' '30'
             option 'max' '60'

    Ce choix me permet alors de :
         via le bouton EZSetup ;
             - soit activer / désactiver le WiFi
             - soit activer / désactiver la vidéosurveillance

         via le bouton Restore ;
             - soit arrêter le routeur proprement
             - soit le redémarrer