3 votes

Désactiver automatiquement le hotspot mobile lorsqu'aucun appareil n'est connecté, à l'aide de Tasker

J'essaie de créer une tâche qui désactive automatiquement le hotspot mobile (tethering) lorsqu'aucun appareil n'est connecté. J'ai réussi à créer des tâches similaires pour bluetooth et wifi, mais pour wifi mobile hotspot je ne semble pas pouvoir obtenir d'informations sur la façon de vérifier si des clients sont actuellement connectés ou si aucun client n'est connecté. J'ai fait quelques recherches et j'ai obtenu une indication que ce code :

ip neigh show dev wlan0  | grep -i -e reachable -e delay | grep 

peut donner des informations sur les clients actuellement connectés au hotspot.

C'était la sortie dans le terminal :

u0_a209@hws8701:/ $ su
 -i -e reachable -e delay | grep -o' ..\:..\:..'                              <
unknown option --  usage: grep [-abcDEFGHhIiJLlmnOoPqRSsUVvwxZz] [-A num] [-B num] [-C[num]]
        [-e pattern] [-f file] [--binary-files=value] [--color=when]
        [-e pattern] [-f file] [--binary-files=value] [--color=when]
        [--context[=num]] [--directories=action] [--label] [--line-buffered]
        [pattern] [file ...]
[1] + Done                 ip neigh show dev wlan0 |
      Stopped (signal)     grep -i -e reachable -e delay |
      Done (2)             grep -o" ..\\:..\\:.."
2|root@hws8701:/ #

cependant je ne sais pas comment manipuler ce code pour obtenir des informations plus utiles pour créer une variable pour zéro client connecté .

1voto

Sree Menon Points 11

Je sais que c'est un vieux fil de discussion, mais je n'ai pas trouvé de solution nulle part quand j'ai voulu. Donc je poste juste la solution pour les autres enthousiastes.

Ok, je viens d'ajouter un profil temporel avec un intervalle de 5 minutes (choisissez le temps qui vous convient le mieux) comme déclencheur.

J'ai ajouté une nouvelle tâche avec les actions suivantes :

A1:-

    Code > Run Shell

    Command:                     ip neigh show dev wlan0
    Store Output In:             %ipneigh
    Store Errors In:             %ipneigherr
    Continue Task after error:   Yes

A2:-

    Net > Wifi Tether

    Set:                         Off
    IF:
         %ipneigh !~ *REACHABLE*   AND
         %ipneigh !~ *STALE*       AND
         %ipneigh !~ *PROBE*       AND
         %ipneigh !~ *DELAY*   

PS : Je ne connais pas les rouages de ip neigh commandement. J'ai mis en œuvre cette commande par tâtonnement. Mais cela fonctionne pour moi et je ne suis pas sûr qu'il y ait encore des bugs. Je mettrai à jour les modifications si je les rencontre ou si quelqu'un les commente.

0voto

xavier_fakerat Points 9582

J'ai trouvé une solution partiellement fonctionnelle à cette question.

Vous verrez pourquoi je dis partiel :

Voici la tâche pour la désactivation automatique du hotspot mobile, par exemple Hotspot Control.

  • A1 : Code >> Exécuter Shell >> [Commande : ip -s -s neigh flush all ] (Effacer le cache ARP)
  • A2 : Task >> Wait [Time : 15 Seconds] (Attendre que les appareils connectés renvoient un ping)
  • A3 : Code >> Exécuter Shell >> [Commande : ip neigh show dev wlan0 (Stocker la sortie dans : %Clients Stocker les erreurs dans : %Error )]
  • A4 : Tâche >> Si [Condition : %Clients n'est pas réglé] (aucun appareil connecté)
  • A5 : Net >> WiFi Tether >> [Régler : Off].
  • A6 : Tâche >> Else (ne pas désactiver le hotspot mobile)
  • A7 : Task >> Stop
  • A8 : Variables >> Effacement des variables [Nom : %Clients ]
  • A9 : Task >> End If

enter image description here

Capture d'écran (cliquez sur l'image pour l'agrandir)

Maintenant, pour le profil/déclencheur, j'ai rencontré de petits problèmes et j'ai finalement décidé de l'essayer en version bêta :

Premier

  • État >> Variables >> Valeur de la variable [Conditions : %Tether ~ * wifi* ] (Si le tethering wifi est actif)

Tâche d'entrée : Contrôle du hotspot

Exit Task : Tâche anonyme (Set WiFi Tether Off)

Profil alternatif

  • Temps >> 5 minutes
  • Valeur variable : %Error est réglé (c.-à-d. Vérifier si aucun appareil n'est connecté au hotspot toutes les 5 minutes)

Limites

  • La tâche fonctionne parfaitement (c'est-à-dire qu'elle désactive automatiquement le hotspot lorsqu'aucun appareil n'est connecté) mais uniquement à la première occurrence. Une fois que le %Clients est remplie, les déclencheurs suivants ne fonctionneront pas même si j'ai explicitement inclus la fonction d'effacement des variables ( Action 8 ci-dessus)

  • Je n'ai pas trouvé de profil approprié, mais en attendant, le premier profil fonctionne, bien que parfois bogué.

J'essaie toujours de trouver la meilleure façon (non-buggy) de le faire, donc je mets juste ceci comme une solution partielle, je suis toujours en attente de meilleures réponses donc Je ne l'accepterai pas :)

Crédits spéciaux et gratitude

Ce travail a été grandement inspiré par utilisateur341464 , Squidly y Maître du feu (J'ai dû apprendre de leurs tutoriels, et faire de légers ajustements pour répondre à des besoins spécifiques, mais ce n'est pas encore parfait).

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X