Contrôle vocal de votre maison avec Sara

Apple a mis à disposition une fonction géniale sur son iPhone 4S: Siri, qui est un véritable assistant vocal. Vous lui donnez des ordres, il vous répond, et les exécute avec brio. Siri est tellement intelligent qu'on a parfois l'impression de tenir une conversation avec quelqu'un.

Je vous avais présenté quelques cas où Siri était utilisé pour effectuer des contrôles domotiques. Malheureusement, Apple n'ayant pas ouvert cette fonctionnalité, il fallait ruser pour la détourner, en utilisant un serveur proxy, etc… Quelque chose d'assez lourd et pas vraiment à la portée du premier venu.

Parallèlement à cela, le milieu underground a travaillé sur une fonctionnalité équivalente, appelée SARA, disponible pour tous les iPhones, et pas seulement le 4S. En revanche, cela nécessite d'avoir un ibidule jailbreaké. Si le votre ne l'est pas, ce qui va suivre va sans doute vous en donner envie…

Pour présenter SARA en quelques mots, disons qu'à l'image de SIRI, il s'agit d'un assistant vocal: vous parlez, il exécute vos ordres. La force de SARA, c'est de donner la possibilité à n'importe qui de créer des plugins en quelques minutes, très facilement. Notre but ici: commander notre maison à la voix !

I. Prérequis

Comme je le disais, donc, il vous faudra un bidule (iPhone quelque soit le modèle, et même iPad ou iPod touch avec un micro externe) jailbreaké.

Pour ceux qui ne connaissent pas, le jailbreak consiste à “cracker” son iPhone afin de pouvoir y installer les applications qu'on souhaite, en dehors d'iTunes. Il faut savoir qu'Apple est très strict sur les applications acceptées dans l'Appstore, pourtant il existe énormément d'applications non validées par Apple disponibles via le jailbreak, vraiment très intéressantes. C'est le cas par exemple de SARA, qui vous ajoutera un assistant vocal sur votre ibidule.

Bon, le terme “jailbreak” peut faire peur, mais il existe aujourd'hui des applications très bien faites, qui vous font cela en moins de 5min sans aucun risque. C'est le cas par exemple de Redsn0w. Je ne vais pas vous expliquer ici comment jailbreaker votre ibidule, il y a des milliers de sites qui en parlent déjà. Vous pouvez déjà consulter celui ci, qui est très clair.

En faisant une sauvegarde de votre iPhone avant de le jailbreaker, il n'y a en général aucun problème. Seule chose à savoir: certaines application “légales” refusent parfois de fonctionner si votre ibidule est jailbreaké. C'est relativement rare, mais j'ai eu le coup par exemple avec l'application du Crédit Agricole, considérant qu'il s'agissait d'une faille de sécurité… Il faut donc le savoir.

II. Installation

Une fois votre iPhone jailbreaké, il va falloir installer SARA via l'application Cydia, qui est une sorte d'Appstore hors Apple.

Dans Cydia, il faut se rendre dans le menu “Gérer”, puis cliquer sur “Sources” et sur “Modifier” ( en haut à droite ), et enfin cliquer sur “Ajouter” ( en haut à gauche ), pour ajouter la source http://isoftjsc.com

  • Ensuite, installer le paquet Sara 0.2.2 – Build 1
  • Installer le paquet Sara SDK 0.1
  • Et enfin, installer le paquet Sara Dictation Keybaord ( Optionnel, c'est la Cerise sur le gâteau, grace à cela vous aurez la possibilité de dicter un SMS ou autre chose à la voix tout comme avec SIRI (Attention: Ne pas installer ce paquet sur l'iphone 4S car il dispose déjà de la dictée vocale ).

cydiaUne fois tout cela installé, redémarrez de préférence l'iphone, l'iPad ou l'iPod.

Vous retrouverez l'icone de SARA sur le “Springboard” (Ecran d'accueil, bureau de l'appareil)

springboard

1. Lancement de SARA par le bouton HOME

Si on souhaite par exemple lancer SARA par un appui long sur le bouton Home, comme le vrai SIRI, ce qui facilite beaucoup son accès, il faudra utiliser Activator (ceci est optionnel, on peut lancer SARA via l'icone présente sur le Springboard).

Lancez Cydia et installez “Activator” si il n'est pas déja présent sur votre appareil.

Lancez activator, cliquez sur “Partout” puis dans la section “Bouton d'accueil” sélectionnez “Maintenir” puis choisissez dans la liste l'application “SARA”. (Cela aura pour effet d'avoir le même fonctionnement qu'avec SIRI, c'est à dire un lancement de SARA en restant appuyé sur le bouton HOME de l'iPhone, iPad, iPod )

NOTA : Pour les iPhone 4S, activez SARA par un triple appui sur le bouton “HOME” afin de pouvoir toujours utiliser SIRI normalement.

activatorUne fois cela fait, restez appuyé sur le bouton HOME de l'iPhone, cela lancera SARA

2. Réglage de SARA

Il faut au préalable configurer SARA pour utiliser le français, et au passage indiquer votre prénom pour personnaliser les phrases:

accsrglage

rglagesv

III. Création des plugins

Maintenant il faut configurer SARA selon vos besoins avec l'aide du SDK en créant des Plug-in codés en PHP.

Pour ce faire, il faut accéder au SDK de SARA installé sur l'iPhone, l'iPad ou l'iPod à partir d'un navigateur WEB sur le même réseau WIFI en tapant l'adresse IP de l'iPhone, de l'Ipad ou de l'iPod.

Une fois arrivé sur la page, renseignez le mot de passe “sara” ( en minuscule et sans les guillements ).

A partir de là, il est très simple de créer un plug-in: dans la zone “Create New Plug-in” tout en bas, rajoutez le nom de votre plug-in après le “com.”, puis cliquez sur “Create”.

sdk01Dans la fenêtre qui s'ouvre, il suffit de coder la fonction voulue en PHP.

1. Exemple avec l'IPX800

C'est Jonathan qui a ouvert la voie avec un exemple d'application avec SARA et l'IPX800. Par exemple, dans son cas il a voulu exécuter une URL pour commander un relais de son IPX800.

Exemple du code qu'il utilise pour fermer ses stores électriques à partir de son IPX800 commandée par une URL:

<?
if($request == “stopper les volets”){
$response->say(“Les volets sont stopper”);
$ret = file(“http://192.168.1.250/preset.htm?RLY7=1”);
$response->exitContext();
ok();
}

Petite explication:

<?
if($request == “ici on indique la phrase a dicter à SARA sans accents”){
$response->say(“ici on indique la reponse donne par SARA sans accents”);
$ret = file(“renseigner l'URL à exécuter”);;
$response->exitContext();
ok();
}

}

Une fois le code entré, cliquez sur “save” et c'est terminé, le plug-in est codé et SARA peut l'interpréter

sdk02Voici ce qu'on obtient à l'utilisation:

lancementsara

Lancement de SARA, avec message d'accueil

ouvrirvoletslrk

Demande d'ouverture des volets

stoppervolet

Demande de stopper les volets

fermervolets

Et demande de fermer les volets

Note: vous remarquerez les fautes d'orthographe, volontaires, car SARA ne gère pas encore correctement les accents. Il faut donc ruser pour qu'à l'oral cela sonne correctement…

Voici une petite vidéo de son iPhone 4S dans lequel il active SARA par un triple appui sur le bouton “HOME” (afin de pouvoir toujours utiliser SIRI normalement) et où il contrôle ses volets:

2. Exemple avec l'eedomus

L'eedomus disposant d'une API via des requêtes HTTP, il est tout à fait possible de la piloter comme l'IPX800. Sur le même modèle que l'exemple précédent, on peut faire un plugin de ce genre:

<?
if($request == “on a de la visite”){
$response->say(“OK, je passe la maison en mode visiteurs.”);
$ret=file(“http://api.eedomus.com/set?action=periph.value&periph_id=IDPERIPHERIQUE&value=1&api_user=CODEUSER&api_secret=CODESECRET”);
$response->exitContext();
ok();
}

Remplacez bien sûr l'ID périphérique par votre module à contrôler, et le code user et code secret par les vôtres.

Avec ce plugin, il suffit que je dise “on a de la visite” pour que SARA passe la maison en mode visiteurs (ce qui dans mon cas désactive certains automatismes pour ne pas effrayer les invités :p)

visiteursOn peut tout aussi bien activer l'alarme, allumer une lampe, etc…

Après avoir découvert les possibilités de SARA, autant dire que nous nous sommes bien amusés avec. Ainsi, avec Jonathan, mais également Mickael, de Planète Domotique, nous avons testé différentes choses. Et ce dernier nous a rapidement concocté un petit plugin pour l'eedomus très sympa !

<?
//////////////////////////////////////////////////////////////////////////////////////////
// Plugin Sara pour eeDomus
// Pilotez votre box eeDomus pas la voix…
// Création : Mickael VIALAT – http://www.planete-domotique.com// Renseigner le API USER et API SECRET de votre box eeDomus

$api_user = “xxxxxx”;
$api_secret = “xxxxxxx”;

// Défini les différentes actions possibles
define(“UNKNOWN”, 0);
define(“ALLUMER_LAMPE”, 1);
define(“ETEINDRE_LAMPE”, 2);
define(“OUVERTURE_VOLET”, 3);
define(“FERMETURE_VOLET”, 4);

// id d'extraction du mot clef
define(“IDEXTRACT”, 2);

$action = UNKNOWN;

if ($request==”domotique”)
{
$response->call(“DISPLAY_BIG_WEBPAGE”,”eeDomus”,”http://mobile.eedomus.com“);
$response->exitContext();
ok();
}
else

// On défini un ensemble de masque, les * peuvent être remplacé par n'importe quelle chaine de caractère
// On peut donc avoir “Merci d'allumer la lampe du salon”, “Allumer lampe salon”, “Allumer une lampe du salon” …
if ($request->match(“*allumer *lampe*”)) $action = ALLUMER_LAMPE;
else
if ( $request->match(“*teindre *lampe*”)) $action = ETEINDRE_LAMPE;
else
if ( $request->match(“*ouverture *volet*”)) $action = OUVERTURE_VOLET;
else
if ( $request->match(“*fermeture *volet*”)) $action = FERMETURE_VOLET;

if($action != UNKNOWN)
{
$periph_id=0;

// En fonction de la commande et de la pièce, on cherche le périphérique
if ($action==ALLUMER_LAMPE || $action==ETEINDRE_LAMPE)
{
// strpos permet de traiter “du salon”, “salon”, “de mon salon”…

if (strpos($request->data[IDEXTRACT], “salon”)!==false)
$periph_id= 4196;
else
if (strpos($request->data[IDEXTRACT], “cuisine”)!==false)

$periph_id= 4158;
}
else
if ($action==OUVERTURE_VOLET || $action==FERMETURE_VOLET)
{
// strpos permet de traiter “du salon”, “salon”, “de mon salon”…

if (strpos($request->data[IDEXTRACT], “salon”)!==false)
$periph_id= 4196;
else
if (strpos($request->data[IDEXTRACT], “cuisine”)!==false)

$periph_id= 4158;
}// En fonction de la commande, on défini la valeur du composant
if ($action==ALLUMER_LAMPE || $action==OUVERTURE_VOLET)
$value = 100;
else
$value = 0;if ($periph_id!=0)
{
$ret = file(“http://api.eedomus.com/set?action=periph.value&periph_id=“.$periph_id.”&value=”.$value.”&api_user=”.$api_user.”&api_secret=”.$api_secret);

switch ($action)
{
case ALLUMER_LAMPE:

$response->say(“J'allume la lampe “.$request->data[IDEXTRACT]);
break;
case ETEINDRE_LAMPE:
$response->say(utf8_encode(“J'éteind la lampe “).$request->data[IDEXTRACT]);
break;
case OUVERTURE_VOLET:
$response->say(“J'ouvre le volet “.$request->data[IDEXTRACT]);
break;
case FERMETURE_VOLET:
$response->say(“Je ferme le volet “.$request->data[IDEXTRACT]);
break;
}

}
else
$response->say(“Je ne connais pas “.$request->data[IDEXTRACT]);

$response->exitContext();
ok();
}

Ce plugin est très flexible et peut accepter de nombreuses commandes.

En pronancant “domotique”, SARA lancera automatiquement l'interface mobile de l'eedomus.

Ensuite, en prononcant une phrase comme “Merci d'allumer la lampe du salon”, “Allumer lampe salon”, “Allumer une lampe du salon”, SARA exécutera automatiquement la commande. Grâce aux masques utilisés dans ce plugin, SARA ne recherche pas une phrase exacte, mais va juste rechercher ici “allumer”, “lampe” “salon”, afin de connaitre l'action à exécuter.

allumerlampe

eteindrelampeIl suffit de lire un peu le code pour comprendre le fonctionnement, applicable pour les lumières, les volets, etc… Il vous suffira d'indiquer votre code user et votre code secret au tout début du code, puis ensuite de remplacer les ID des périphériques ($periph_id) par les ID des vôtres.

La reconnaissance vocale fonctionne plutôt pas mal, et les ordres sont exécutés rapidement ! Le code peut bien sûr être complété selon vos besoins, très facilement. Je ne vous cache pas qu'on devient vite accro à SARA :D

D'ailleurs, je vous invite à lire un peu la documentation du SDK de SARA ici afin de voir les fonctions disponibles. Il y en a de très intéressantes, comme par exemple l'utilisation des contexts: ils permettent à SARA de vous répondre par une autre question afin de préciser votre choix.

J'ai fait un test pour désactiver l'alarme, par exemple: je demande la désactivation de l'alarme, SARA me répond en me demandant le code de désactivation, je donne le code, et alors seulement SARA désactive l'alarme si le code est bon. Le principe est assez simple. On crée un plugin comme précédemment avec par exemple ce code:

<?
if($request == “coupe l'alarme”){
$response->say(“pouvez vous me confirmer le code de desactivation ?”);
$response->enterContext(“demande_code_deverouillage”);
ok();
}
Ensuite, sur la gauche de l'interface web du SDK, on crée un nouveau context nommé “demande_code_deverouillage”
Dans ce contexte (qu'on peut assimiler à un sous programme), on met le code:
<?
if($request == “tu tu”){
$response->say(“Merci, je desactive l'alarme”);
$response->exitContext();
ok();
}else{
$response->say(“Desoler, ce n'est pas le bon code”);
$response->exitContext();
ok();
}

On obtient alors un vrai “dialogue” avec SARA:

alarmeBref, c'est vraiment très puissant ! Ce ne sont là bien sûr que quelques exemples. Les plugins peuvent être encore plus complets, et ils peuvent être adaptés facilement pour les autres solutions domotiques pouvant être pilotées via une URL: Zibase, Vera, Homeseer, etc… Les possibilités sont immenses !

De nombreux plugins existent déjà, pour piloter sa Freebox, consulter le programme TV, envoyer un mail, etc… Une recherche sur Google vous donnera de nombreux résultats mais vous pouvez déjà consulter ces deux sites:

N'hésitez pas à venir partager avec nous les codes que vous pourriez mettre au point de votre côté !

Je tiens à remercier encore une fois Jonathan et Mickael pour les échanges que nous avons eu sur cette solution vraiment géniale, qui nous ont permis d'avancer très rapidement avec SARA ;-)

PS: pour ceux qui malgré cela ne souhaiteraient pas jailbreaker leur iPhone, la seule solution de contrôle vocal qui s'en approche est l'application DomoVoice, que je vous ai présentée il y a quelques jours. Bon week end à vous !

Pour information, cet article peut contenir des liens affiliés, sans aucun impact sur ce que vous gagnez vous même ou le prix que vous pouvez payer pour le produit. Passer par ce lien vous permet de me remercier pour le travail effectué sur le blog chaque jour, et d'aider à couvrir les dépenses du site (hébergement, frais de port pour les concours, etc.). Ca ne vous coute rien, mais ca m'aide beaucoup ! Merci donc à ceux qui joueront le jeu !

Inscrivez vous à notre newsletter !

Ne ratez plus aucun article, test de produit ou guide, grâce à un mail dans votre boite chaque vendredi !

Tags :

3 Commentaires
  1. Impossible d’acceder à la source, existe elle encore <?

  2. Bonjour,

    Moi aussi je suis a la recherche !! car source non valide snif !!

  3. est-ce que vous avez trouver un autre repo? car http://isoftjsc.com n’existe apparament plus :( Merci

Laisser un commentaire

Maison et Domotique
Logo
Register New Account
Enregistrez vous, et stockez vos articles préférés sur votre compte pour les retrouver n'importe où, n'importe quand !
Compare items
  • Casques Audio (0)
  • Sondes de Piscine Connectées (0)
  • Smartphones (0)
Compare