Si vous avez installé PAW, ou si vous avez parcouru les articles du blog traitant du sujet, vous n’êtes pas sans savoir que ce logiciel installé sur un Smartphone Android est capable d’envoyer des SMS, de faire de la reconnaissance vocale, de faire de la synthèse vocale, de lire des MP3,… L’un des intérêt également de ce produit est de proposer la possibilité d’exécuter des actions à la réception de SMS. Cela peut être très intéressant pour un système domotique. Voyons un petit peu comment ça marche.
Le principe de ce que l’on souhaite réaliser est simple : à partir de son téléphone on envoi un SMS à la maison au smartphone muni de PAW en lui indiquant dans le corps du message une action à effectuer. Cela permet par exemple de piloter sa domotique via SMS, de recevoir des informations en réponse à une question reçue par SMS, de synthétiser à haute voix un message envoyé par SMS….
Des Actions et des Scripts
Pour que PAW puisse agir en fonction de la réception d’un SMS, on doit déclarer, auprès du smartphone sur lequel il est installé, que tout SMS reçu doit lui être communiqué. En fonction du mode de transmission souhaité, on pourra filtré les SMS reçus par votre smartphone en fonction d’un couple login/mot de passe contenu dans le corps du message. C’est utile pour éviter les blagues…
Pour ce faire il existe 2 fonctionnalités différentes :
- les “SMS Scripts“: il s’agit de scripts qui sont exécutés dans l’ordre alphabétique à chaque fois qu’un message SMS arrive. Aucun filtrage de SMS n’est possible avec cette fonctionnalité
- les “SMS Actions“: il s’agit la encore de scripts qui sont qui sont exécutés quand un message SMS est reçu. Cependant les SMS doivent obligatoirement contenir dans le corps du message une combinaison login/mot de passe préalablement déclarée. Dans la documentation PAW le login est appelé ‘Name’ et le mot de passe ‘PIN’.
Le SMS Script est moins contraignant lorsque l’on écrit son SMS. On n’a pas à inscrire dans le corps du SMS autre chose que l’ordre à exécuter. Le SMS Script n’assure pas le fait de faire du filtrage de SMS en fonction d’un login/mot de passe.
Le SMS Action doit contenir dans le corps du message le couple Name/PI pour être accepté par PAW et exécuté. On apporte un peu plus de sécurité exigeant que l’expéditeur précise ce login/mot de passe. On peut également utiliser ce login afin comme paramètre dans la discussion:
- le login ‘VOIX’ permettra de synthétiser le message contenu dans le SMS,
- le login ‘DOMO’ permettra de communiquer l’ordre au serveur domotique
- le login ….
La commande qui est ensuite exécutée aura accès au numéro de téléphone de l’expéditeur ainsi qu’au corps du message. Dans le cas de SMS Actions le couple login/mot de passe n’est pas utilisable par la suite.
Enregistrer ses commandes
Que l’on utilise l’une ou l’autre des méthodes, il faut que PAW se fasse connaître du Smartphone sur lequel il est installé afin que celui-ci sache qu’il faut qu’il lui communique les SMS reçu. On dit que PAW enregistre des SMS Actions ou des SMS Scripts:
- Pour les SMS Actions l’enregistrement d’une action se fait via la commande: registerAction.
- Pour les SMS Scripts l’enregistrement d’un script se fait via la commande: registerScript.
Afin de gérer ces enregistrements PAW propose des commandes pour les modifier, les supprimer, en obtenir la liste, les tester…
Pour les SMS Actions on aura:
- registerAction: enregistre une nouvelle Action.
- updateAction: modifie une Action existante
- removeAction: supprime une Action existante
- getActions: permet d’obtenir la liste des Actions enregistrées auprès du téléphone
- clearActions: efface toutes les Action.
- testMessage: Teste une Action
Pour les SMS Scripts on aura:
- registerScript: enregistre un nouveau Script
- updateScript: modifie un Script existant
- removeScript: supprime un Script existant
- getScripts: permet d’obtenir la liste des Scripts enregistrés auprès du téléphone
- clearScripts: efface tous les Scripts.
- testMessage: Teste un Script
Démarrage automatique
Comme on souhaite ne pas avoir à effectuer les enregistrements des Actions ou des Scripts manuellement à chaque fois que le téléphone démarre ou bien à chaque fois que PAW est lancé, on utilisera la fonctionnalité nommée Autostart. Signifiant “démarrage automatique”, cette fonctionnalité de PAW permet d’exécuter du code (écrit en Beanshell uniquement) lors du démarrage du serveur. Comme PAW peut être démarrer automatiquement lors du démarrage du téléphone… la boucle est bouclée.
Le démarrage de PAW lorsque le téléphone est allumé se fait dans les paramétrage de l’application:
- Lancer PAW sur votre smartphone
- Cocher l’option dans le paramétrage de PAW appelée “Automatic Startup”
Le lancement de scripts Beanshell au démarrage de PAW se fait tout simplement ensuite en plaçant le fichier contenant le script dans le répertoire autostart. Les scripts présents dans ce répertoire seront exécutés par ordre alphabétique.
- Lancer la console d’administration de PAW sur votre ordinateur et connectez-vous sur PAW
- Via Média=> File Manager, créer le répertoire autostart (tout en minuscule) dans le répertoire /sdcard/paw/.
- Placez dans le répertoire autostart, le fichier de script devant être lancé au démarrage de PAW.
- Activez la prise en compte des script Autostart dans les paramétrages du serveur : Server=>Settings=>Autostart Scripts
- Via le Smartphone, arrêter PAW et redémarrez-le à nouveau en appuyant sur le bouton STOP puis START.
C’est dans ce script en langage BeanShell que vous demanderez au Smartphone de communiquer les SMS reçus à PAW.
Exercices pratiques
Afin d’illustrer la théorie précédente je vous propose maintenant 2 exercices pratiques afin de tester le fonctionnement des SMS Actions et des SMS Scripts.
Exercice 1: Faire vibrer le téléphone à la réception d’un SMS
Cet exercice n’a rien de révolutionnaire. Les téléphones font tous cela en standard lorsque l’on est en mode silencieux par exemple. Voici comment le faire avec PAW. On utilisera ici les SMS Scripts.
- créer un fichier init.bsh avec le code suivant:
import de.fun2code.android.pawserver.listener.*; SmsListener.registerScript("test", "vibrate(3000);");
- placer ce fichier dans le répertoire autostart
- Via le Smartphone, arrêter PAW et redémarrer-le à nouveau en appuyant sur le bouton STOP puis START
C’est tout. Il vous suffit d’envoyer ensuite un SMS avec n’importe quel message au smartphone hébergeant PAW pour le faire vibrer pendant 3 secondes.
Exercice 2: Faire énoncer le contenu du SMS par synthèse vocale
Cet exercice semble un peu plus complexe, mais il n’en est rien. Voici comment le faire avec PAW. On utilisera ici les SMS Actions.
- créer un fichier init.bsh avec le code suivant:
import de.fun2code.android.pawserver.listener.*; SmsListener.registerAction("Voix", "123", "speak(\"Nouveau message:\" + smsArgs , new Locale(\"fr\", \"FR\"));");
- placez ce fichier dans le répertoire autostart
- Via le Smartphone, arrêter PAW et redémarrer-le à nouveau en appuyant sur le bouton STOP puis START
C’est tout. Il vous suffit d’envoyer ensuite un SMS avec le message voulu au smartphone hébergeant PAW pour qu’il le lise à haute voix. Le message devra suivre la syntaxe suivante:
Voix:123:Ceci est mon exemple
Prenez garde aux majuscules/minuscules : si vous utilisez dans le sms le mot “voix” cela ne marchera pas car c’est “Voix” qui a été déclaré…
Conclusion
Ceci est un aperçu de ce qu’il est possible de faire avec PAW lors de la réception de SMS. Le choix de la méthode SMS Actions ou SMS Scripts dépendra bien entendu de ce que vous souhaitez mettre en œuvre mais également de ce que vous souhaitez faire en termes de sécurisation de la commande via SMS d’actions dans votre maison.
Il nous reste à utiliser ce que nous venons de voir afin de communiquer le contenu du SMS à une box domotique. Rendez-vous dans un prochain article!
vivement la suite
Merci
marrant d’utiliser le logo iphone pour un systeme utilisable exclusivement sur android :p
J’aime bien aussi 😉
Bonsoir,
est il possible avec PAW de lancer un appel et faire lire un fichier MP3 sur décrochage ?
D’avance merci
Cdlt,
Martial