Utilisation de la logique OU dans des contextes pour Tasker


23

Imaginons que je souhaite créer un contexte dans lequel le SSID d'une connexion WiFi est soit «ABC» soit «XYZ».

Je peux voir où je suis capable de créer 2 contextes, mais cela semble imposer une logique ET entre les deux, donc pour que les mots soient à proximité à la fois de 'ABC' et de 'XYZ'.

Comment faire en sorte que le contexte soit l'un, pas les deux?

Réponses:



20

Ou vous pouvez probablement utiliser des conditions "inversées" pour effectuer une tâche opposée?, Par exemple

Si vous souhaitez exécuter une tâche lorsque le WiFi est connecté OU lorsque le profil: A est inactif, vous pouvez à la place configurer des contextes pour «WiFi est déconnecté» ET «Profil: A est actif» avec la case «inversé» cochée, et configurez un tâche qui fait le contraire, si cela est possible.

Cela fonctionne essentiellement en raison de:

(A OR B) = NOT((NOT A) AND (NOT B))


3
Cette réponse est agréable car elle est plus générale. Autrement dit, il fonctionne avec des types de contexte autres que "Wifi connecté". Par exemple, je voulais créer un profil pour mettre mon téléphone en mode silencieux chaque fois qu'il est ancré ou connecté à ma montre Pebble. La façon la plus simple de le faire était de créer un profil "non connecté à Pebble et non ancré" qui désactive le mode silencieux à l'entrée et active le mode silencieux à la sortie. FTW de DeMorgan's Laws.
Laurence Gonsalves

4

Vous pouvez faire dépendre votre action d'une variable "% condition = true" puis créer deux profils différents:

  • profil a: définir la condition sur "true"
  • profil b: définir la condition sur "true"

votre profil: si la variable "condition" = true alors ... et votre tâche de sortie se poursuit

Mais ce serait bien si les auteurs amélioraient Tasker pour ça ... :)


2
Cette méthode pose des problèmes lorsque la condition peut être définie sur vrai ou faux par les profils a et b en même temps. Par exemple, je voulais activer le Bluetooth lors d'un appel ou dans l'application Contacts. J'ai défini% BluetoothNeeded = 1 dans les deux cas et effacé lorsque l'un des cas se termine. Pendant que je suis en communication, l'application Contacts devient en arrière-plan et est généralement suspendue pour économiser de la mémoire, ce qui efface% BluetoothNeeded afin que le Bluetooth se désactive, coupant mon casque Bluetooth pendant l'appel.
Chris Dragon

4

en affichant simplement ma solution à ce problème si quelqu'un vient ici:

créer un profil pour chaque condition dans l'instruction or lors de la saisie de% Raisons + = 1 à la sortie de% Raisons - = 1

créer un profil avec la condition% Raisons> 0 et les tâches d'entrée et de sortie requises

à votre santé!


2

Vous devrez créer un profil unique pour chaque contexte et le coupler à l'action individuellement.


3
Hm, cela signifie que je ne pourrai pas vraiment avoir une tâche de sortie?
Zombies

2

Pour prendre en charge mon casque Bluetooth, mon désir était d'activer le Bluetooth lorsque je suis dans l'application Contacts OU lors d'un appel. Je ne pouvais le faire que pendant un appel, mais je ne peux pas m'assurer que mon casque est connecté avant que l'autre partie décroche.

Aucune des solutions déjà publiées ne fonctionnerait. L'activation de% BluetoothNeeded dans les contacts ou dans l'appel signifie que lorsqu'un appel démarre, il active% BlueToothNeeded mais lorsque les contacts deviennent le fond de l'appel, il désactive% BlueToothNeeded et le Bluetooth se désactive. En utilisant l'opération inverse, désactivez le Bluetooth lorsqu'il n'est PAS dans les contacts ET PAS dans l'appel, mais activez le Bluetooth car une tâche de sortie fonctionne presque, mais apparemment, Tasker remarque la brève période où les contacts perd le statut de premier plan et l'appel n'a pas encore commencé et transforme le Bluetooth de.

Voici donc ce qui a fonctionné pour moi, basé sur ce blog :

  1. Créez une tâche appelée Dummyavec une action deTasks > Wait > 1ms
  2. Créez un profil appelé stateInCallavec une condition de State > Phone > Call > Type: Any. Associez-le à la Dummytâche.
  3. Créez un profil appelé stateInContactsavec une condition de State > Application > Contacts. Associez-le à la Dummytâche.
  4. Créez un profil appelé Bluetooth Neededavec une condition de State > Variable > Variable Value. Définissez Nom sur %PACTIVE, Op sur Matcheset Valeur sur *,stateInCall,*|*,stateInContacts,*. Selon les documents Tasker,% PACTIVE contient une liste de profils actifs séparés par des virgules, où la liste commence et se termine également par une virgule pour faciliter la correspondance. Liez ce profil à une tâche appelée Bluetooth Onqui active le Bluetooth à l'aide de l' Net > Bluetooth > Set: Onaction.
  5. Créez une tâche appelée Conditional Bluetooth Offavec les actions suivantes:
    1. Tâche> Attendre> 10 secondes
    2. Tâche> Si> %PACTIVEne correspond pas*,stateInCall,*|*,stateInContacts,*
    3. Net> Bluetooth> Définir: Désactivé
    4. Tâche> Fin si
  6. Appuyez longuement sur le Bluetooth Neededprofil puis choisissez Properties. Décochez Restore Settings.
  7. Appuyez rapidement sur le Bluetooth Neededprofil jusqu'à ce que la Bluetooth Ontâche apparaisse en dessous, dans la colonne de droite. Appuyez Bluetooth Onlonguement et choisissez Add Exit Task, puis choisissez Conditional Bluetooth Off.

Conditional Bluetooth Offattendra 10 secondes avant de vérifier que ni l'un stateInCallni l' autre ne stateInContactssont vrais, auquel cas il désactivera le Bluetooth. Sinon, il laisse le Bluetooth activé et lorsque les deux stateInCallet stateInContactssortent plus tard, il fera son attente de 10 secondes et vérifiera à nouveau.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.