PAW: Levée de doutes audio par appel téléphonique sous Android

Le deuxième exercice lié à PAW consiste a faire une levée de doutes en cas d’effraction ou autre besoin de ce style.  Le principe est simple.  Au lieu de lancer une caméra afin de voir ce qu’il se passe à la maison on lance un appel téléphonique afin d’écouter ce qu’il se passe.  Cette fonctionnalité doit être déclenchable automatiquement je recevrai donc un appel de la maison.  Je dois également pouvoir volontairement me faire appeler par le système domotique. Paw permet cela et toujours via une commande HTTP.

Le script du jour propose les spécificités suivantes:

  • Pouvoir être appelé par une simple requête HTTP
  • Pouvoir passer en paramètre le numéro de téléphone à appeler
  • Raccrocher automatiquement la communication téléphonique à la maison dès que je raccroche.

Pour obtenir le service attendu encore une fois il suffit de placer le script sur le serveur et le tour est joué.

Voici le script que je vous propose:

<html>
<head>
<title>Appel téléphonique</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>

</head>
<body>

<h1>Appel téléphonique</h1>
<bsh>
import android.app.Service;
import android.content.Intent;
import android.net.Uri;

service = (Service) server.props.get("serviceContext");

numero = parameters.get("numero");

if(numero != null && !numero.equals("")) {
	intent = new Intent(Intent.ACTION_CALL);
	intent.setData(Uri.parse("tel:" + numero));
	intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

	//on lance l'appel
	service.startActivity(intent);
}
</bsh>
<h2>Paramètres</h2>
<p>
La page prend en paramètre d'entrée les éléments suivants:<br>
numero : le numéro de téléphone à appeler<br>
</p>

<h2>Fonctionnement</h2>
<p>
L'appel se fera donc de la manière suivante: <br>

http://192.168.0.10:8080/scripts/dial.xhtml?numero=0102030405<br>

</p>
<h2>Valeurs</h2>
<p>
En train d'appeler le tél : <bsh>$$.print(numero); </bsh><br>
</p>
</body>
</html>

Encore une fois le script n’est pas trop compliqué grâce au fait que l’on utilise des fonctionnalités existantes sur Android et présentées de manière packagées en BeanShell dans PAW.

L’installation se fait de la même manière que pour le script concernant la reconnaissance vocale.  Le prérequis est bien entendu d’avoir installé au préalable le serveur PAW sur votre téléphone Android comme présenté dans le précédent article:

  • Télécharger le code précédent et le sauvegarder le sur votre disque dur dans un fichier appelé : « dial.xhtml »
  • Se connecter au serveur PAW.
  • Accéder au gestionnaire de fichiers : Menu Media->File manager
  • Dans le répertoire /sdcard/paw/html de votre téléphone créer le répertoire « actions » s’il n’existe pas encore

  • Indiquer l’endroit de votre disque dur où se trouve le script à uploader sur le serveur PAW en cliquant sur « Parcourir ».
  • Sélectionner le fichier « dial.xhtml » et cliquer sur « Open ».
  • Effectuer l’upload en cliquant sur « Upload ».
  • Le message suivant vous confirme le chargement du script sur le serveur.

Il ne vous reste plus qu’à renseigner l’URL adéquate dans un scénario pour une Zibase ou bien dans un périphérique HTTP sur un serveur eedomus.

L’URL simplifiée à renseigner sera de la forme:

http://192.168.0.10:8080/actions/dial.xhtml?numero=0102030405

En modifiant « 192.168.0.10 » par l’adresse IP de votre serveur PAW et « 0102030405 » par le numéro de téléphone que vous souhaitez faire appeler.

Je n’ai rien dû faire de particulier pour que le téléphone – serveur PAW raccroche.  Lorsqu’il m’appelle et que je mets fin à la conversation, cela met également un terme à l’appel du téléphone appelant.

Cette méthode à toutefois une limite: la qualité du micro de votre téléphone.  En effet ils sont fabriqués pour ne pas trop capter les bruits environnants alors que dans le cas présent c’est plutôt cela qui serait souhaitable!  C’est l’occasion de recycler un kit main libre ou un kit Bluetooth…

Cette méthode peut être utilisés par contre pour que des personnes dépendantes puissent appeler un proche facilement en appuyant par exemple sur un gros bouton que vous aurez mis à sa disposition.  Le bouton doté d’un actionneur déclencherait le scénario préparé à l’avance pour vous appeler.

Auriez-vous une utilité à soumettre?

Ceci pourrait vous intéresser:

6 commentaires

  1. Thomas a dit:

    Est-il possible de lancer l’appel en mode haut parleur ? merci

    25 mars 2013
    Répondre
  2. Pierre a dit:

    Je découvre cet outil depuis le boulot. J’ai fait quelques tests sur l’heure de midi, mais dans les prochains jours je vais creuser GRAVE !
    Pour le mode haut parleur, apparemment PAW ne gère pas.
    Par contre, il envoi des notifications et il peut les supprimer. Tasker quand à lui détecte les notifications et peut mettre le mode haut parleur en fonction. Je crois que c’est à creuser.
    PAW : appel + sleep(1 ou 2s) + notification
    Tasker : détection de notif de PAW avec texte spécifique –> haut parleur

    15 septembre 2014
    Répondre
  3. Marty a dit:

    Bonjour,

    Est il possible d’attribuer une @IP fixe à PAW afin qu’à chaque démarrage il garde toujours la même adresse IP ?

    D’avance merci

    3 octobre 2014
    Répondre
    • Hervé a dit:

      Bonjour,
      Oui et c’est même recommandé. Il faut que ta box lui attribue cette fameuse IP Fixe en se basant sur son code MAC.

      4 octobre 2014
      Répondre
      • Marty a dit:

        Merci.
        Mais peut on spécifier cette adresse dans un fichier de conf de PAW.
        Perso je peux être amené à l’utiliser dans une maison secondaire sans box ADSL et se serait mon smartphone qui ferait office de routeur avec la fonction de partage connexion wifi.
        Déjà testé et ça fonctionne très bien.

        merci
        Martial

        17 octobre 2014
        Répondre
        • Hervé a dit:

          Dans ce cas là ce n’est pas PAW qui aurait une adresse IP fixe mais le téléphone. Cette adresse est à figer dans les paramétrages Android.

          17 octobre 2014
          Répondre

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *


1 − = 0