Jarvis@Home : contrôle vocal de Domoticz depuis smartphone

Vous connaissez des applis Android ou Apple sympa, vous avez un problème de config, postez ici
fratton
Messages : 116
Inscription : 19 août 2015, 16:38

Jarvis@Home : contrôle vocal de Domoticz depuis smartphone

Messagepar fratton » 06 avr. 2017, 09:03

Une mise à jour a été faite par le développer qui rends caduc le tuto ci dessous : https://easydomoticz.com/forum/viewtopic.php?p=38128#p38125


Je souhaitais faire un contrôle vocal de ma domotique comme dans le tuto https://easydomoticz.com/commandes-vocales-via-jarvis/ mais :
- Je n'ai pas de micro et haut parleur pour le raspberry pi.
- Le raspberry pi est dans le garage
- Je ne veux rien installer de plus sur le raspberry pi car il est déjà bien chargé avec motion pour la surveillance vidéo, et serveur web (lighttp & php)
- Je ne veut pas une usine à gaz, le but étant seulement d'allumer ou éteindre le lampadaire du salon pour l'instant et j'aime bien comprendre ce que je fait.
- Je ne souhaite rien acheter car c'est plus pour le fun.

J'ai donc utilisé la solution suivante :
- Un vieux smatphone android avec l'appli Jarvis@Home Free : https://play.google.com/store/apps/details?id=com.emily.jarvis.home&hl=fr fait la reconnaissance vocal et envoi la commande sur une url.
ImageImage
La configuration est simple, il suffit d'entrer l'URL qui doit exécuter la commande, pour moi :

Code : Tout sélectionner

http://192.168.1.100/jarvis.php?command=#COMMAND#


- un script php ( jarvis.php ) sur un serveur web/php allume ou éteint le lampadaire (il suffit de mettre l'url du json de domoticz avec le bon idx).

Code : Tout sélectionner

<?php
if (isset($_GET['command'])) {
        $command=$_GET['command'];

      // allumer le lampadaire
        if ($command=="allume le lampadaire" or $command=="allumer le lampadaire") {
                $curl = curl_init("http://192.168.1.100:8080/json.htm?type=command&param=switchlight&idx=35&switchcmd=On");
                curl_setopt($curl, CURLOPT_TIMEOUT, 5);
                curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5);
                curl_setopt($curl, CURLOPT_HEADER, 1);
                curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
                $result = curl_exec($curl);
                $json = json_decode($result);
                echo $command;

      // éteindre le lampadaire
        } elseif ($command=="éteins le lampadaire" or $command=="éteindre le lampadaire") {
                $curl = curl_init("http://192.168.1.100:8080/json.htm?type=command&param=switchlight&idx=35&switchcmd=Off");
                curl_setopt($curl, CURLOPT_TIMEOUT, 5);
                curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5);
                curl_setopt($curl, CURLOPT_HEADER, 1);
                curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
                $result = curl_exec($curl);
                $json = json_decode($result);
                echo $command;

      // sinon
        } else {
                echo "Désolé, je n'ai pas compris.";
        }
}


Maintenant il ne reste plus qu'a bricoler le php pour faire reconnaître les commande que l'on veux, comme "Jarvis" "Température du salon", la page jarvis.php affichera juste le texte "Il fait 21.5 degrés dans le salon" et l'appli android fera un TTS de ce texte.

Les avantages:
- Rien a installer sur le raspberry pi, cela fonctionne même avec un windows ou si on a déjà un serveur web/php sur son nas par exemple.
- La reconnaissance Jarvis@Home/Google fonctionne même si l'on a pas de connexion internet.
- On peut placer le smartphone ou l'on veut.
- On peut utiliser autre chose que php si on veut.
- cout 0€ si l'on a une vielle tablette android ou un vieux smartphone.

Inconvénient :
- Le smartphone est toujours actif pour la reconnaissance vocal, donc sur secteur.
- il y a un délais d'attente entre la prononciation du mot clé "Jarvis" et de la commande "Eteins le lampadaire", il faut attendre le dig dig de google.
- la voix est féminine, mais ça ce change.

Vidéo du dévloppeur Français Pascal Emily qui lui utilise JeeDom : https://www.youtube.com/watch?v=QyYJ0afcpmE
Dernière édition par fratton le 03 juil. 2017, 08:46, édité 2 fois.
Raspberry Pi B+ / RF-Link 433MHz / divers device maison 433MHz et Wifi

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Doume
Messages : 294
Inscription : 28 déc. 2014, 10:27
Localisation : Nord (59)
Contact :

Re: Jarvis@Home : contrôle vocal de domoticz depuis smartphone

Messagepar Doume » 07 avr. 2017, 19:25

Bonne trouvaille, ce truc.
Ca marche pas mal, une fois que l'on a bien paramétré le smartphone ou la tablette avec les outils de synthèse vocale hors connexion.
Reste à développer le script php sur le serveur Web, pour pouvoir commander une panoplie d'objets.

Merci pour l'info
Dernière édition par Doume le 10 avr. 2017, 18:34, édité 1 fois.

deennoo
Messages : 3900
Inscription : 25 janv. 2015, 02:00

Re: Jarvis@Home : contrôle vocal de domoticz depuis smatphone

Messagepar deennoo » 07 avr. 2017, 22:17

Un plugin python pour Domoticz ?
De quoi se faire Plaisir et essayer d'aider...
http://www.domo-attitude.fr

Doume
Messages : 294
Inscription : 28 déc. 2014, 10:27
Localisation : Nord (59)
Contact :

Re: Jarvis@Home : contrôle vocal de domoticz depuis smartphone

Messagepar Doume » 08 avr. 2017, 11:21

Non, pour l'instant j'ai simplement installé un script php sur mon serveur Web qui avait déjà PHP
Jarvis appelle ce .php à chaque détection de commande vocale, et lui passe la commande
Ensuite, le .php invoque le serveur Domoticz via curl / http
La commande http est le résultat d'un décodage de la commande jarvis
allumes, allumer, activer, commande ==> switch "On"
eteins, éteindre, arrêter ==> swiitch "Off"
"radiateur salon" ==> idx=64
"portail" ==> idx=32
Les mots comme 'le', 'la', etc sont ignorés

Ainsi, si Jarvis détecte "Commande le portail", le script envoie On sur l'index 32 (Domoticz le transforme en impulsion)
Si Jarvis détecte "Allumes le radiateur salon", le script envoie On sur l'index 64
et ainsi de suite.....
Dernière édition par Doume le 10 avr. 2017, 17:16, édité 1 fois.

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


vil1driver
Messages : 4004
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Jarvis@Home : contrôle vocal de domoticz depuis smatphone

Messagepar vil1driver » 08 avr. 2017, 11:32

salut,
tu pourrais aussi faire ce décodage en lua

jarvis envoyant la commande dans une variable utilisateur via l'api domoticz
ce serait peut-être plus simple à gérer modifier ? je ne sais pas..

Domoticz v3.8158 (ubuntu server) OpenZwave v1.4-2503 (zwave+ sigma designs) mysensors v1.5 (serial gateway) rfxtrx433 fw1015T1

433mhz : thgn800, ms13e2, phenix, Di.O, zk1pa, creasol sender
868mhz : fgms-001, fgfs-101, dsd37-zweu
2.4ghz : RGB-3D

modules.lua

Doume
Messages : 294
Inscription : 28 déc. 2014, 10:27
Localisation : Nord (59)
Contact :

Re: Jarvis@Home : contrôle vocal de domoticz depuis smartphone

Messagepar Doume » 08 avr. 2017, 12:09

Bien sûr, il y a toujours plusieurs approches possibles, pour résoudre une problématique.
Mais les scripts shell ou php sur serveur Apache me semblent bien plus réactifs que le LUA
De plus, je souhaitais charger le moins possible le Raspberry PI executant Domoticz.
Dernière édition par Doume le 10 avr. 2017, 17:17, édité 1 fois.

fratton
Messages : 116
Inscription : 19 août 2015, 16:38

Re: Jarvis@Home : contrôle vocal de domoticz depuis smartphone

Messagepar fratton » 10 avr. 2017, 11:31

Doume a écrit :Non, pour l'instant j'ai simplement installé un script python sur mon serveur Web qui avait déjà PHP
Jarvis appelle ce .php à chaque détection de commande vocale, et lui passe la commande
Ensuite, le .php invoque le serveur Domoticz via curl / http


Je ne comprends pas ou tu utilise du python là ? Je crains que tu ne confondes PHP et Python qui sont 2 langages différents.
Raspberry Pi B+ / RF-Link 433MHz / divers device maison 433MHz et Wifi

Doume
Messages : 294
Inscription : 28 déc. 2014, 10:27
Localisation : Nord (59)
Contact :

Re: Jarvis@Home : contrôle vocal de domoticz depuis smatphone

Messagepar Doume » 10 avr. 2017, 17:14

Je me suis rendu compte de ma connerie en retravaillant un peu le script
Je pensais PHP, et j'ai écrit Python, je ne sais pas pourquoi ( l'âge, sans doute)
Bien entendu c'est en PHP.....
Nota : j'ai corrigé mes posts précédents....

deennoo
Messages : 3900
Inscription : 25 janv. 2015, 02:00

Re: Jarvis@Home : contrôle vocal de domoticz depuis smatphone

Messagepar deennoo » 10 avr. 2017, 17:40

Pk le LUA serait plus long ? C'est le langage de script natif de Domoticz.

L'idée de Vil1d est bonne et simple.

Une ou deux requête http qui met à jour une/deux variable utilisateur et un script_variable_jarvis.lua qui scrute cette/ces variable. (Variable de nom et variable d'action)

Pas de serveur http, ni d'environnement PHP/python à mettre en place.

Est ce que Jarvis/android permet l'inverse ? Le tts ?

Envoyé de mon H60-L12 en utilisant Tapatalk
De quoi se faire Plaisir et essayer d'aider...
http://www.domo-attitude.fr

Doume
Messages : 294
Inscription : 28 déc. 2014, 10:27
Localisation : Nord (59)
Contact :

Re: Jarvis@Home : contrôle vocal de domoticz depuis smartphone

Messagepar Doume » 10 avr. 2017, 18:37

Oui, l'appli jarvis sous Android transforme en vocal le texte que lui renvoie le serveur
Donc si le PHP retourne
echo "Désolé, je n'ai pas compris"
ce message vocal est restitué par le téléphone ou la tablette

Pour info, voici l'état de mon script installé sur le serveur Web (c'est un Raspberry 2 distinct de Domoticz, qui sert déjà de serveur Web, serveur Emoncms, de serveur mail, serveur DHCP et DNS pour mon LAN)

Avec ce script, je peux utiliser les mots-clé active, activer, allumes, allumer ou encore éteins, éteindre, arrêt ,arrêter
La phrase peut contenir les articles 'le', 'la' ou aucun article

exemples :
active le radiateur atelier
allume le radiateur atelier
arrête radiateur atelier
éteins radiateur atelier
portail
( la cde est toujours 'On' sur l'interrupteur à impulsion de Domoticz, donc les mots 'active' ou 'ouvre' sont inutiles, et ignorés)

Code : Tout sélectionner

<?php
if (isset($_GET['command'])) {
        $initial=$_GET['command'];
   $dz_ip="192.168.2.31";
   $dz_port="8080";
   $idx="";
   $action="";
   //to avoid confusion between pointer to 0 and 'false'
   $order = "Jarvis : " . $initial;
       
   //search order type
        if(strpos($order, 'allume') ) {
      $action="On";
   } elseif (strpos($order, 'active') ) {
      $action="On";
   } elseif (strpos($order, 'étein') ) {
                $action="Off";
        } elseif (strpos($order, 'arrêt') ) {
                $action="Off";
        } elseif (strpos($order, 'ferme') ) {
                $action="Off";
        }
   // search known equipment....
        if(strpos($order,'portail') ) {
      $idx="66";
      $action="On";
   } elseif (strpos($order, 'radiateur atelier')) {
      $idx="67";
   }
   if($idx != "" and $action != "") {
                $curl = curl_init("http://" . $dz_ip . ":" . $dz_port ."/json.htm?type=command&param=switchlight&idx=" . $idx . "&switchcmd=" . $action);
                curl_setopt($curl, CURLOPT_TIMEOUT, 5);
                curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5);
                curl_setopt($curl, CURLOPT_HEADER, 1);
                curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
                $result = curl_exec($curl);
                $json = json_decode($result);
                echo $initial;
        } else {
                echo "Désolé, je n'ai pas compris.";
        }
}
Dernière édition par Doume le 10 avr. 2017, 19:19, édité 4 fois.

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.



Revenir vers « Applis Android et Apple »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité