Yana : ajoutez vos propres commandes sans développer…

On m’a souvent reproché, et à juste titre je l’admets, d’avoir pensé ma plateforme
domotique Yana plus pour les développeurs que pour les utilisateurs « non avertis ».

Il est vrai que certaines customisations qui peuvent paraitre « basiques » ne sont, à l’heure actuelle,
accessibles que par le développement d’un plugin.

C’est dans le but de me rattraper en partie sur ce point que j’ai développé un nouveau ptit plugin consacré exclusivement aux non développeurs et/ou aux développeurs un peu feignasses :D.

Speech commands, comme son nom l’indique, est un plugin pour yana server permettant l’ajout de commandes vocales personnalisées depuis l’administration.

preview

Chacune de ces commandes peut exécuter un « type » d’action lorsque la phrase indiquée est prononcée, les types disponibles sont les suivants :

– Prononciation d’une phrase sur yana-client
– Changer l’état d’un port GPIO sur yana-server
– Exécuter une adresse web depuis yana server vers l’url indiquée
– Exécution d’une commande système sur yana serveur (potentiellement : le raspberry pi sur lequel il est installé)
– Exécution d’une commande système sur yana client (potentiellement : le Windows, l’android ou autre Os sur lequel il est installé)
– Jouer un bruit sur yana-client (situé dans le répertoire « son » de l’applicatif client)

L’utilisation et la configuration de ce plugin ne nécessite aucune ligne de code il est donc possible a tout un chacun de customiser
un peu les commandes vocales sans avoir à « mettre les mains dans le cambouis ».

Le plugin étant en bêta test actuellement, je ne l’ai pas encore intégré en natif, cependant vous pouvez le télécharger sur le market yana ou directement depuis la section plugin de votre yana en tapant « Speech commands » dans le moteur de recherche plugin.

N’hésitez pas à me faire vos retours de bugs / remarques sur le plugin, bien qu’il fonctionne  en dev, je n’ai pas pu le tester en environnement réel à cause de mon déménagement (il faut que je retrouve le carton ou j’ai planqué les rpi).

Dans l’absolu, je fusionnerais ce plugin avec le gestionnaire d’événements, je manque encore de temps pour le faire, mais ce plugin devrait répondre au besoin en attendant.

Papouilles,
Idle

Article rédigé par Idleman

30 réflexions au sujet de « Yana : ajoutez vos propres commandes sans développer… »

  1. Timothé

    Je n’arrive pas à faire fonctionner le speech command … Je met bien le plugin dans le bon dossier mais après je ne le retrouve pas sur l’interface de yana-server
    Je ne peux donc pas l’activer ..

    Merci de m’aider !

    Répondre
    1. jean michel crapaud

      Pareil ici.

      Le plugin ne s’installe pas depuis le market intégré (Il ne passse pas l’étape Renommage) et n’apparait pas dans la liste des plugins inactifs. Pareil quand j’ai essayé de l’installer manuellement.

      Ca serait bien que tu te sorte les doigts du cul et que tu intègre fissa cette fonctionnalité qui me semble FOUTREMENT essentielle à toute application de reconnaissance vocale merde quoi

      :-( :-( :-( :-( :-( :-( :-(

      Répondre
      1. Idleman Auteur de l’article

        Il n’y a pas besoin d’installer ce plugin, il est nativement installé.

        Répondre
  2. Huhra

    Salut idleman,

    J’ai eu un petit souci sur le client windows quand j’ai voulu exécuter des commandes Windows avec des paramètres. Dans mon cas je voulais exécuter des commandes NirCmd pour éteindre et allumer mon moniteur ainsi que controler le volume de mon PC. Étant developpeur C# j’ai modifié le client mais j’ai préféré ne pas commit étant pas certain d’avoir la dernière version de yana sur mon raspberry. :D

    Actuellement je me suis lancé dans la réécriture du client Windows pour avoir quelque chose plus stable.

    Sinon je me suis aussi amusé à faire une modification pour pouvoir parler a yana dans ma chambre et jarvis dans mon salon parce que vu la taille de mon appart parfois ils me répondaient en même temps et j’avais l’impression de devenir fou oO

    Huhra

    Répondre
  3. Adam

    Salut idle !
    Merci pour cette interface plus simple ! :)

    Mais … je préfère Yuri ( même si desfois elle fait n’importe quoi alors que j’ai rien demandé ) alors comment faire pour rajouter des options vocales à yuri ?

    Bye ! :)

    Répondre
  4. Alomamabobo

    Pas à publier mais joli boulot et bienvenue de retour sur YANA !
    En espérant que ta tranchée et toi vont bien ;)

    Répondre
  5. Astryder

    Bonjour Idle !

    Merci pour ce super ajout§

    Cela marche parfaitement pour les commandes avec le client mais j’ai des difficultés avec le serveur.

    Je cherche désespérément à utiliser un fichier bash:
    YANA, test 0.8 server_command sudo /var/www/vesta/./speech4.sh Actif

    Rien à faire, elle reste muette, alors que la commande:
    sudo /var/www/vesta/./speech4.sh
    Fonctionne très bien en invite de commande.

    Et pour le python? Je n’ai pas encore testé mais ça va venir, c’est pareil?
    Pour le mpg123 aussi?
    Merci beaucoup d’avance et pour tout ce que tu peux faire pour la communauté.

    Répondre
    1. Astryder

      le « YANA, test 0.8 server_command sudo /var/www/vesta/./speech4.sh Actif »
      Correspond à ma ligne du speech command, mais annoncé comme je l’ai fait, cela n’était peut-être pas très clair… Désolé….

      YANA, test 0.8 server_command sudo /var/www/vesta/./speech4.sh Actif

      Répondre
      1. Idleman Auteur de l’article

        php n’a pas le drtoi de faire des sudo sans fournir le mdp root, c’est pourquoi ta commande ne fonctionne pas. Essaye sans le sudo.

        Répondre
        1. Astryder

          Sans le sudo, ça ne marche pas non plus…
          Il n’y a pas de « exec » à mettre avant? ou tout autre chose? voir un « ; » à mettre à la fin?

          Tu pourras mettre une exemple type si c’est possible, stp? avec un python, MPG123, bash …
          Ce que je ne comprends pas c’est que je démarre d’une Yana propre et à jour… T_T

          Répondre
          1. Astryder

            Désolé pour le double post

            après avoir demandé à Yana d’exécuter la commande suivante qui fonctionne en invite de commande:
            mpg123 /home/pi/Hello.mp3

            Elle me donne ce message d’erreur:

            30/03/2015 21:10:28 Reponse :
            Fatal error: Uncaught exception ‘ErrorException’ with message ‘include(classes/Personality.class.php): failed to open stream: No such file or directory’ in /var/www/yana-server/common.php:35 Stack trace: #0 /var/www/yana-server/common.php(35): {closure}(2, ‘include(classes…’, ‘/var/www/yana-s…’, 35, Array) #1 /var/www/yana-server/common.php(35): __autoload() #2 /var/www/yana-server/plugins/speechcommands/speechcommands.plugin.php(134): __autoload(‘Personality’) #3 [internal function]: speechcommands_action() #4 /var/www/yana-server/classes/Plugin.class.php(189): call_user_func_array(‘speechcommands_…’, Array) #5 /var/www/yana-server/action.php(381): Plugin::callHook(‘action_post_cas…’, Array) #6 {main} thrown in /var/www/yana-server/common.php on line 35

            30/03/2015 21:10:28 ERREUR: Impossible de parser la réponse: Unexpected character encountered while parsing value: <. Path '', line 1, position 1.
            30/03/2015 21:10:28ERREUR: Impossible de parser la réponse: Unexpected character encountered while parsing value: <. Path '', line 1, position 1.

        2. Astryder

          Promis après j’arrête^^

          alors, j’ai :
          – formaté ma carte,
          – fait une apt-get update et upgrade
          – installé mpg123
          – installé yana via installation « facile »: install.sh
          – yana for windows est bien reconnue
          – j’ajoute ton nouveau plugin
          – je choisis « exécuter une commande sur le serveur » et « mpg123 /home/pi/Hello.mp3 » comme commande à exécuter

          Elle reste muette… (mais aucun problème en invite de commande en SSH)

          – j’obtiens cette erreur dans Yanan for windows :
          « ERREUR: Impossible de parser la réponse: Error reading JObject from JsonReader. Path  », line 1, position 1.

          A moins que je sois passé à côté de quelque chose, tu as une idée?
          Avec la peur de me répéter, histoire de ne t’ennuyer qu’une fois, pourrais-tu mettre un exemple pour le lancement d’un fichier bash et/ou python, stp?

          Merci encore Idle pour ta patience et de nous faire partager ta passion. Entre ton taf et la gestion de ton site, ça ne doit pas être de tout repos… oO

          A te lire

          Répondre
          1. Idleman Auteur de l’article

            Tu as quoi dans ton fichier de logs ? (logs/.log) ?
            Verifie que tu as bien la classe personality.class.php dans classes.
            De plus fais un git pull pour etre sur que tu es a jour :)

          2. Tony

            Salut,

            J’ai le même souci que toi. Avec ou sans sudo, c’est le même résultat.
            Dans le fichier .logs.txt, j’ai bien la commande qui est exécute mais le client reste muet comme une tombe :)

          3. fred

            Même problème, même message
            error reading jobject from jsonreader Path » », line1, position 1
            Ou cela peut il planter ?
            Merci
            ingfred

          4. Idleman Auteur de l’article

            Tu as quoi dans ton fichier de logs ? (logs/.log) ?

          5. fred

            Toujours le même message impossible de parser la réponse, mais mon petit script test.sh pour éteindre/allumer toute les prises siplec fonctionne bien
            Je l’ai placé dans le dossier du plugin siplec et lui ai collé les même droits que radioemission.
            test.sh:
            #!/bin/sh
            /var/www/yana-server/plugins/siplec/radioEmission 2 1414 1 $1
            /var/www/yana-server/plugins/siplec/radioEmission 2 1414 2 $1
            /var/www/yana-server/plugins/siplec/radioEmission 2 1414 3 $1

  6. Lauzin

    Félicitation et bon boulot, cela fait plaisir de voir des alternatives émerger.
    Sauf erreur de ma part, je n’ai pas vu la licence accordée à votre projet, pourriez-vous en dire plus ?
    Cordialement

    Répondre
    1. Idleman Auteur de l’article

      CC by nc sa :), je sais c’est bizarre mais c’est la seule que je connaisse qui permette de tout faire sauf de se faire du blé sur le dos des bénévoles.

      Répondre
  7. Astryder

    voici ce qui se trouve dans mon fichier .log

    30-03-2015 23:17:08 – [notice] :Launch system command (without output): cat /proc/cpuinfo
    30-03-2015 23:17:37 – [notice] :Launch system command (without output): cat /proc/cpuinfo
    30-03-2015 23:23:32 – [notice] :Launch system command (without output): cat /proc/cpuinfo
    30-03-2015 23:31:14 – [notice] :Launch system command (without output): mpg123 /home/pi/Hello.mp3
    30-03-2015 23:32:23 – [notice] :Launch system command (without output): exec ("mpg123 /home/pi/Hello.mp3")
    30-03-2015 23:33:30 – [notice] :Launch system command (without output): mpg123 /home/pi/Hello.mp3
    30-03-2015 23:38:36 – [notice] :Launch system command (without output): mpg123 /home/pi/Hello.mp3
    31-03-2015 19:21:31 – [notice] :Launch system command (without output): cat /proc/cpuinfo
    31-03-2015 19:22:12 – [notice] :Launch system command (without output): cat /proc/cpuinfo
    31-03-2015 19:23:18 – [notice] :Launch system command (without output): mpg123 /home/pi/Hello.mp3
    31-03-2015 19:23:28 – [notice] :Launch system command (without output): mpg123 /home/pi/Hello.mp3
    31-03-2015 20:46:21 – [notice] :Launch system command (without output): cat /proc/cpuinfo
    31-03-2015 20:46:54 – [notice] :Launch system command (without output): mpg123 /home/pi/Hello.mp3

    Tu peux le constater, j’ai testé plusieurs possibilités^^ (c’est le without output qui pose pb?)

    j’ai effectivement le fichier personality… Il commence par:
    <?php
    /**
    * Classe de simulation de la personalité etc…

    Je viens de faire un hard git pull au cas où…

    Rien n'y fait… Xo

    Répondre
  8. krogor2

    Ahh Super ! pile ce que je recherchez afin de faire dire des sautises personnalisé à mon rpi ^^

    Répondre
  9. jimmylibilibob

    Juste MERCI ! :) <3

    Répondre
  10. TheDreamer

    J’ai essayer de créer une commande pour éteindre la RPI (avec halt et shutdown) : elle est reconnue par le client Windows, mais ne s’exécute pas.
    Quelqu’un peut m’aider ?

    Répondre
  11. Chrys

    Bonjour, voila un bon moment ou je suis ton blog (surtout la partie domotic) et voila plus de 2 ans où grâce a toi j’ai créé une interface web qui commande mon éclairage de la maison (chacon et phenix) j’ai même fait fonctionner S.A.R.A.H. mais aujourd’hui je voulais faire fonctionner Y.A.N.A car elle me semble plus accessible par contre je ne suis pas développeur et je voulais appeler ma page PHP via YANA pour allumer et éteindre mon éclairage ainsi qu’une gestion de l’ensemble. point sombre sur le tableau je suis qu’un simple autodidacte donc je risque d’avoir des questions a la C** a te poser. :siffle:
    en tout cas tu as fais (aussi que tout tes contributeurs) un super boulot Félicitation !!!! et chapeau bas. :D

    Répondre
  12. dgemily

    Merci Idelman pour tes partages et tutos !!! je me suis régalé ce week-end
    Vraiment une très agréable découverte ce Yana. Je l’ai testé ( pour le moment…) pour émettre et recevoir des ordres Infrarouge et contrôler la freebox.
    l’ajout de ce plugin est un gros + , n’étant pas développeur, sans ce plugin je serais assez limité …. donc MERCI pour ce dernier ajout!!!!

    un petit feeback quand même:
    j’ai créé une commande qui execute une commande sur le serveur type:  » irsend SEND_ONCE audio1 KEY_MUTE“, la commande s’exécute bien mais j’ai un message d’erreur dans les logs du client windows (même message d’erreur que Astryder):
    ERREUR: Impossible de parser la réponse: Error reading JObject from JsonReader. Path  », line 1, position 1.
    ça ne me pose pas de problème puisque la commande s’exécute bien mais je remonte l’info.

    Répondre
  13. Chrys

    Super cette nouvelle version de plugin j’arrive a contrôler mes prises.
    par hasard aurais tu un moyen de retour d’info du style  » yana allume la lumiere » yana répond:  » lumière allumée ». et configurable si possible?

    ou m’indiqué ou l’on peut effectuer cette modif.

    en tout cas super boulot tu assure !
    merci pour ce partage !
    :D

    Répondre
    1. Idleman Auteur de l’article

      Pour le moment ce n’est pas encore possible a moins de mettre les pattes dans le code du plugin, cela dit c’est une bonne suggestion d’amélioration.

      Si tu as le temps, met le en suggestion sur github que je pense a l’ajouter :)

      Répondre
  14. azatote

    bonjour tous d’abord UN GRAND MERCI! je me me suis tourner vers Y.A.N.A. car c’est vraiment très bien fait ,elle correspond a 100% a mes attentes de mon petit PI.(et même plus).
    sauf que voila on prend gout a des petits plus que l’on n’aurait meme pas eu idée de penser….comme commander ça FREEBOX a la voix ,tous marchait bien jusqu’a …..
    —————————————————
    05/09/2015 00:00:24 Url à lancer : http://mon.ip:80/yana-server/action.php?action=KEY_TV
    05/09/2015 00:00:25 Reponse :
    05/09/2015 00:00:25 ERREUR: Impossible de parser la réponse: Error reading JObject from JsonReader. Path  », line 1, position 1.
    05/09/2015 00:00:25ERREUR: Impossible de parser la réponse: Error reading JObject from JsonReader. Path  », line 1, position 1.
    —————————————————
    avez vous un solution? j’ai rebooter le serveur …rien ,réinstaller le plugin FREEBOX …rien
    en attendant encore MERCI

    Répondre
  15. mila

    hello, i want to use YANA to control an autonomous robot based on my RPI2, i want to make YANA execute a command line on the PI to start the robot python program but i can’t. i used the speech commands to add the command i wanted but even if YANA hears what i say it does nothing.
    in order to see if i am right or wrong i tried to add other talk commands and they work fine, i tried to add a client command to open notepad on windows but i can’t see anything happening, maybe i don’t really get how YANA works. can anyone explain to me how YANA should respond if i ask for example to execute the terminal command « ls » should i see anything happening ??

    Répondre

Laisser un commentaire

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

Xo ^_^ :siffle: :p :-( :evil: oO :) T_T <3 :D more »