PROJET AUTOBLOG


Idleman

source: Idleman

⇐ retour index

Yana, évolutions, perspectives, explications

dimanche 16 mars 2014 à 13:58

Je me rends bien compte que je suis aussi bon en communication qu’en orthographe :D !

Mais je vais tenter de rectifier le tir avec un petit post permettant de répondre aux question les plus courantes sur mon système yana.

Un rappel pour les cancres du fond

Pour ceux qui n’auraient pas suivis (ou qui s’en foutent simplement), YANA (You Are Not Alone) est une plateforme domotique gratuite, re-distribuable, modifiable, dérivable etc.. permettant de gérer votre domotique (et notamment les p’tits gadgets que nous construisons nous même dans cette section du blog.

Cette plateforme à deux grosses particularités :

Elle est modulaire: c’est à dire qu’elle fonctionne sous la forme de plugins proposés par la communauté

Elle peut être pilotée: via plusieurs interface différentes: commandes vocales et discussion avec une simili IA, interface web ou encore commandes depuis une application android, il y a même des utilisateurs qui ont bricolés leurs interface en batch.

De la récupération des chaines télé, à la programmation de vos stores électrique en passant par l’allumage vocal de vos lampes ou encore la récupération de la température de vos plantes vertes (oai oai oai j’vous ai à l’œil canaweed :D) tout est possible car chaque plugin peut bénéficier des fonctionnalités graphiques, vocales et événementielles de la plateforme pour piloter un engin.

Schéma de fonctionnement

Le système fonctionne donc sous la forme d’un noyau (le serveur) qui peut accepter un nombre infinis de plugins et peut être interrogé par plusieurs interfaces.

Un schéma valant toutes les explications fumeuses que je pourrais apporter, en voila un encore tout fumant sortis du photofour.

rpi

Notez les points suivants :

Fonctionnement type d’une commande vocale:

Une commande vocale est produite par un plugin, distribué par le serveur et récupéré par les interfaces (yana for windows/android…) au démarrage de celles ci.

Une commande vocale ‘type’ contient au moins deux paramètres obligatoires:

  1. Ajout de la commande vocale au dictionnaire du serveur par un plugin
  2. Récupération des commandes vocales disponibles par l’interface à son démarrage
  3. L’utilisateur énonce sa commande qui est reconnue par l’interface
  4. L’interface lance l’action liée (a savoir une requête vers le serveur) avec le paramètre lampe = on
  5. Le serveur reçoit la commande, l’exécute, et retourne (ou pas) une réponse json
  6. la réponse json est récupérée par l’interface, si cette réponse contient une action (son, réponse vocale, commande) elle est exécutée (ex : “Lampe correctement allumée chef !”

Les interfaces

Actuellement il existe trois interfaces officielles pour communiquer avec le serveur :

Les dernières modifs

J’ai effectué quelques modifs (sur yana-server essentiellement) ces derniers temps sans trop communiquer dessus:

Ajout d’un gestionnaire d’événement : permet de programmer certaines actions à certains moment de la journée/du mois/de l’année.

Ce système fonctionne comme un cron linux (une tâche planifiée sur Windows) et vous permet d’effectuer une action sur le serveur ou sur une interface à un instant précis.  (ex : ouvrir vos stores tous les matins à 8h). Ce système est voué a évoluer en gestionnaire de scénarios (cf solutions envisagées plus bas).

Ajout des commandes vocales instantanées : Il s’agit d’un paramètre que vous pouvez spécifier lorsque vous ajoutez une commande vocale, ce paramètre vas définir que l’action de la commande vocale doit être exécutée tout de suite sans consulter le serveur.

Cette commande est utile pour accélérer l’exécution d’un programme local sur yana for windows par exemple.

ex : yana lance l’environnement de développement

Vas lancer tout de suite notepad++ sans faire de requête sur le serveur (cf Fonctionnement type d’une commande vocale plus haut).

Ajout d’un installateur de plugin : cette fonctionnalité est directement connecté au market et vous permet de rechercher/installer parmi les plugins soumis par la communauté afin d’étendre les fonctionnalités de yana.

Modification graphiques : Simplification de l’interface, passage en “flat design” type metro ui historie de rester tendance :p.

Migration des paramètres de configurations : beaucoup de paramètres (nom de la smili IA etc…) avant sous forme de constantes et modifiable uniquement “en dur” dans le code, sont maintenant réglable depuis l’interface (ou du moins ça ne vas pas tarder). Cette migration risque de foutre dans un premier temps un peu la merde, surtout par rapports aux plugin qui utilisaient consciencieusement ces constantes, mais dans l’avenir ça vas permettre une meilleure personnalisation de Yana.

Les plugins à dispositions

Les utilisateurs de Yana n’ont pas chaumé!! Ils ont soumis sur le market (http://market.idleman.fr/yana) tout un tas de super trucs !

Déjà 20 plugins disponibles en plus des plugins officiels déjà en place, et il y a de tout :

Les évolutions envisagées

On arrive à la section des promesses non tenues :p !

Scénario : Améliorer le gestionnaire d’événement pour qu’il puisse créer une action à partir d’une autre. Actuellement l’action
d’entrée est forcement une informations temporelle (date/heure …) dans le futur l’info d’entrée pourra être une information de capteur, une commande vocale, etc etc… il sera également possible de créer des combinaisons d’éléments déclencheurs (causes) et d’action résultantes (conséquences) ainsi que les actions en cascade (une action en déclenche une autre qui elle même en déclenche d’autre etc..)

Variables vocales : Actuellement seules des phrases complètes prédéfinies par les plugins peuvent être reconnues (système plus fiable que la diction au mot à mot), j’aimerais garder ce système tout en le combinant au mode de diction (moins fiable) pour inclure des variables dans les commandes, ex : “Yana, cherche le mot ‘idleblog’ sur wikipedia” (résultante de la commande “Yana, cherche le mot ‘$variable1′ sur $variable2″:

Interface vocale google speech pour linux/mac : Pour le moment il n’existe pas d’interfaces vocales installables directement sur le pi, sur linux ou sur mac (ou alors elle existe mais n’a pas été partagée par son créateur) il est possible d’en construire une en utilisant le webservice de google speech (moins bien que la librairie de windows utilisée par yana for windows, car google speech passe par le net, mais c’est mieux que rien), si quelqu’un à envie de se lancer la dessus je serais ravis de lui filer les infos, c’est simple à faire mais ça prends un peu de temps et je suis déjà pas mal pris par les reste du développement.

Gestion comportementale de yana : J’aimerais approfondir un peu le comportement de yana de manière à la rendre plus “humaine” en y intégrant des simulateurs de sentiments, une mémoire et un système de déduction.

Attention je ne me lancerais pas dans l’intelligence artificielle pure et dure (qui est bien trop complexe pour moi et qui demanderais beaucoup trop de ressources au serveur) mais juste intégrer quelques notions que j’ai trouvées intéressantes dans ma recherche de thèse (moteur d’inférence, programmation génétique pourquoi pas, hasard, imagination/créativité avec le système licorne (mélange de concepts existants : licorne = narval + cheval)…) et pourquoi pas également utiliser le moteur de recherche wolfram alpha search qui est poussé de ce coté la.

Et franchement si j’arrive à faire tout ça je pourrais déjà mourir heureux :p

Comment participer

Si le projet vous botte, que vous utilisez déjà quotidiennement yana ou que vous êtes simplement pris d’une intense frénésie de “bénévolisme” (oui je néophyse, c’est tellement drôlastique et puis comme ça, on ne peux plus me reprocher de fautoyer :p) vous pouvez donner un coup de pouce au projet de plusieurs façons :

Les donations : faire une donation permet de montrer votre intérêt engagé pour le projet, de motiver fichtrement son auteur mais aussi et surtout de me permettre l’achat de composants pour alimenter ma rubrique de domotique façon “do it yourself” et enfin de contribuer aux heures passées dans le code à améliorer la plateforme au lieu de me faire laminer sur league of legend.

Les plugins : Si vous vous y connaissez un ptit peu en php, c’est un excellent moyen de contribuer à l’amélioration de la plateforme.

En proposant un plugin vous pourrez ajouter des fonctionnalités vocales, graphiques et domotiques à yana, enrichir la plateforme et personnaliser votre domotique.

Nul besoin de grosses connaissances, la creation de plugin est documentée ici : http://projet.idleman.fr/yana/?page=Cr%C3%A9ation%20Plugin

N’hésitez pas à vous appuyer sur les plugins existants pour construire votre brique.

Création d’interface : Si vous avez développé une interface (comme novares l’a fait pour android ou moi même pour windows), n’hésitez pas à la proposer !

Je suis disponible par mail pour toutes question concernant le protocole JSON à utiliser (un peu de doc existante sur projet.idleman.fr/yana).

La création d’interfaces est assez technique et doit être maintenue aussi n’hésitez pas à demander conseil à novares ou à moi même sur le sujet.

Communiquer : Si vous êtes blogueur, journaliste spécialisé, ou simple acharné des forums, n’hésitez pas à parler de yana autour de vous, plus la communauté sera importante, plus le projet vivra et évoluera vite.

Bon voila, j’ai fait ma part de comm’ du mois là ! Et puis c’est l’heure de l’apero de toute façon ! :D Si vous avez des questions sur cette partie n’hésitez pas à blinder les commentaires de manière a ce que je centralise mes réponses sur ce sujet.

Un grand merci à Rémi Sarrailh aka Maditnerd qui m’aide énormément sur le projet, sur github et un peu partout ou je galère en règle générale :), il a carrément la palme du contributeur puisque sur tous les moyens de contribuer que je viens de vous citer, je crois qu’il n’y a que la création d’interface qu’il n’ai pas proposé (et encore je n’en suis pas certain), ça fait plaisir de trouver des perles comme ça sur le web, ça motive à aller plus loin, plus vite, et dans plus de directions.