Outils pour utilisateurs

Outils du site


automate

Automate

Cette page est une ébauche.

Automate est une application qui permet d'automatiser des choses sous Android. Par exemple activer le Wifi quand vous arrivez chez vous, prononcer à voix haute un SMS reçu quand vous êtes en voiture, ou encore prendre une photo si quelqu'un essaie de déverrouiller votre téléphone avec le mauvais code. Les possibilités sont assez étendues.

La construction ne se fait pas par programme ou script, mais en assemblant graphiquement des blocs. Voici les quelques notions qu'Automate utilise (j'essaie de mettre entre parenthèses la notion correspondante en programmation traditionnelle):

  • Bloc (aka "instruction") : un bloc fournit une opération élémentaire (activer le Wifi, voir si le téléphone est connecté à un appareil bluetooth, attendre la réception d'un SMS, afficher une notification, prendre une photo, modifier une variable, envoyer une requête HTTP…). Voici la liste des blocs.
  • Flow (aka "programme") : un flow est un ensemble de blocs reliés entre eux. On peut assimiler cela à un "programme". Vous pouvez avoir plusieurs flows, et différents flows peuvent être actifs en même temps.
  • Variable : Les blocs peuvent créer, modifier ou lire des variables. Les variables sont partagées entre blocs. Elles ne sont pas partagées entre flow.
  • Les variables peuvent être manipulées avec des expressions et des fonctions.
  • Fiber (aka "processus") : On peut assimiler cela à un processus: Il s'agit d'un flow en train de s'exécuter (note : les Flows peuvent forker : on peut donc avoir potentiellement plusieurs fibers pour un même flow.)
    • Note: Pour être tout à fait exact, les variables sont locales à un fiber et non à un flow. Donc chaque fiber possède son lot de variables. Ceci étant dit, on peut échanger des valeurs entre fibers avec certains blocs (voir la section Concurrency des blocs).

Voici un exemple simplifié : Quand on reçoit un SMS, si on est connecté au bluetooth de la voiture, alors on fait prononcer le SMS à voix haute (le bloc "SMS received" attend la réception d'un SMS):

Cet exemple est assez facile à comprendre, mais on peut bien entendu construire des choses beaucoup plus complexes. Les possibilités sont assez étendues, mais l'application n'est pas forcément simple à comprendre. Chaque bloc a son comportement particulier, mais une documentation facilement accessible est attachée à chaque bloc. N'hésitez pas à la lire.

Il est à noter que même si un bloc existe, cela ne veut pas dire que vous pourrez l'utiliser : Certains blocs ne fonctionnent que sous certaines versions d'Android (à cause des limitations de Google) ou nécessitent un téléphone rooté. Par exemple, le bloc qui permet d'activer/désactiver les données mobiles ne fonctionne que sur les anciennes versions d'Android (Dans les versions récentes d'Android, Google a interdit aux applications de toucher au status des données mobiles). Ce bloc n'est donc utilisable sur les Androids récents que si votre téléphone est rooté.

Pour savoir si un bloc fonctionnera sur votre téléphone, rien de mieux que de tester vous-même. (D'autant que chaque fabricant de smartphone bidouille Android à sa façon. Les comportements ne sont donc pas forcément les mêmes sur chaque téléphone.)

Notez que l'application est fournie avec une fonction d'accès à la communauté : Des centaines de scripts, du plus simple au plus complexe, sont accessibles directement dans l'application. C'est une très bonne source d'exemples.


Versions gratuite/payante

Automate est gratuit à la base, mais avec certaines limites:

  • Vous avez accès à la totalité des blocs et fonctions.
  • Mais vous êtes limité·e à 30 blocs en fonctionnement simultané, tous flows confondus. (Par exemple 1 flow avec 30 blocs, ou deux flow avec 15 blocs, etc.)

Cela permet déjà de tout tester et de faire pas mal de choses, sans compter que la version gratuite ne vous embêtera jamais avec des popups pour vous proposer la version payante.

La version sans limite ne coûte que 3,90€. Vous aurez accès à toutes les mises à jour futures du logiciel. Il y a plusieurs mises à jour par an avec des corrections de bugs et ajouts de fonctionnalités, et cela permet de soutenir l'éditeur (c'est un petit éditeur). PS: L'application payante n'est accessible que via GooglePlay, l'éditeur ne permet de l'acheter en dehors.


Exemples de blocs

Chaque bloc a les caractéristiques suivantes :

  • Une seule entrée (rond en haut du bloc : IN)
  • Une ou plusieurs sorties (ronds en dessous ou sur le côté droit du bloc (OK/YES/NO…))
  • Des paramètres en entrée (optionnels ou non)
  • Des variables en sortie (optionnelles)

De plus, un bloc peut être bloquant ou non-bloquant:

  • Un bloc en mode "bloquant" arrêtera l'exécution jusqu'à ce qu'une condition soit remplie.
  • Un bloc non bloquant continuera immédiatement.

Certains blocs sont bloquants, d'autres non-bloquants, et pour certains c'est paramétrable.

Nous allons prendre deux blocs en exemple pour illustrer ces différences. La quasi-totalité des autres blocs fonctionnent sur les mêmes principes.

Exemple de bloc : SMS received

Ce bloc attend la réception d'un SMS: Une fois entré dans le bloc (rond "IN"), il va attendre la réception d'un SMS. Quand un SMS est reçu il sort alors par le "OK" et poursuit l'exécution du flow. Ce bloc est donc toujours bloquant.

Il possède des paramètres en entrée (Input arguments) et des données en sortie (Output variables):

Paramètres en entrée:

  • Si vous laissez les paramètres vides, le bloc réagira à l'arrivée de n'importe quel SMS.
  • Si vous précisez le paramètre "Phone number", il ne réagira qu'à l'arrivée des SMS en provenance de ce numéro.
  • Si vous précisez le paramètre "Subscription id", il ne réagira qu'à l'arrivée des SMS sur la carte SIM sélectionnée.

Données en sortie:

  • Si vous laissez tout vide, vous ne récupèrerez pas de données, ce qui n'est pas très intéressant, on peut donc mettre:
  • Dans Sender phone number, vous pouvez mettre numero pour récupérer le numéro de l'expéditeur du SMS dans la variable numero.
  • Dans Message, vous pouvez mettre par exemple message pour récupérer le contenu du SMS.
  • Il y a deux autres données en sortie : la date/heure de réception du SMS et la carte SIM par laquelle il est arrivé. Vous pouvez bien entendu aussi les récupérer si vous en avez besoin.

Exemple de récupération des données en sortie:

Cela va donc créer deux variables dans votre flow (numero et message) qui pourront être utilisées en entrée dans d'autres blocs.


Exemple de bloc : Bluetooth device connected

Ce bloc permet de tester si le téléphone est connecté à un périphérique bluetooth précis.

Il a 2 sorties différentes:

  • YES, par laquelle il sortira s'il est connecté au périphérique en question.
  • NO sinon.

Pour fonctionner, ce bloc doit être paramétré : Allez dans la configuration du bloc et taper sur "PICK DEVICE" pour choisir le périphérique bluetooth sur lequel il doit réagir. Cela va automatiquement remplir les variables en entrée (C'est plus pratique que rentrer manuellement l'adresse MAC du périphérique bluetooth, mais cela reste possible si vous le souhaitez).

Notez que dans les paramètres de ce bloc on peut le mettre l'option Proceed en Immediately ou When changed :

  • Avec Immediately, le bloc n'est pas bloquant: Il sortira immédiatement du bloc par YES si le périphérique en question est actuellement connecté, et par NON dans le cas contraire.
  • Avec When changed, ce bloc devient bloquant, il va attendre dans ce bloc:
    • Il sortira par YES au moment où le périphérique en question sera connecté.
    • Il sortira par NO au moment où le périphérique en question sera déconnecté.
Important à comprendre: Le mode When changed sert donc généralement à attendre un évènement particulier, tandis que le mode Immediately sert à tester l'état à un moment donné.

  • FIXME : expliquer la manipulation des blocs (ajouter/dupliquer/copier/coller/supprimer, lier/délier les blocs…)
  • FIXME : parler des logs, comment les lire, comment les désactiver.
  • FIXME : parler des droits activés à la demande.
  • FIXME : parler de la consommation de certains blocs (indiqué par le logiciel)
  • FIXME : parler des sauvegardes/exports
  • FIXME : parler des précautions à prendre (pas de boucles au début pour éviter un blocage du téléphone, décocher "Run on system startup" quand on expérimente)
  • FIXME : expliquer la raison de la notification permanente.
  • FIXME : Donner un exemple d'appel un flow à partir d'un autre flow
  • FIXME : parler des sécurités (limites SMS,MMS…)
  • FIXME : expliquer les limitations sur les envois de mails.
  • FIXME : expliquer le bloc Catch failure et son utilisation.

Exemples de flows

Cette liste est juste à titre indicatif, elle sera sans doute modifiée:

Activer le Wifi quand on arrive à la maison (basé sur les tours GSM)

Retrouver la position GPS du téléphone en lui envoyant un SMS

Faire sonner le téléphone en lui envoyant un SMS

Flasher à la réception d'un SMS

Prononcer un SMS à voix haute quand il est relié à un périphérique bluetooth (voiture)

Réagir à la réception d'un message Signal

Afficher une alerte si la température du téléphone dépasse un certain seuil

automate.txt · Dernière modification : 2024/04/11 10:16 de sebsauvage