Aller au contenu

Yana, évolutions, perspectives, explications


Ldfa

Messages recommandés

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.

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.

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 :

  • Toutes les interfaces communiquent avec le serveur via un flux JSON
  • Toutes les interfaces récupèrent les commandes vocales du noyau au chargement
  • Tous les plugins peuvent ajouter des commandes vocales au noyau (ensuite transmises aux interfaces)
  • Pour connecter une interface au noyau, il est nécessaire d’avoir le token de sécurité généré de manière unique
    lors de l’installation du serveur.
  • Le serveur (noyau et ses plugins) est développé en PHP, les interfaces peuvent être développées de plusieurs
    manières avec plusieurs langages tant qu’elles respectent le protocole JSON du serveur
  • Le serveur doit être installé sur un raspberry PI de préférence (mais peut aussi tourner sous tout environnement web qui se respecte)
  • Le serveur utilise une base sqlite (fichier unique) et peux fonctionner sous apache, lighttpd ou nginx au choix (pas testé ailleurs)

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:

  • Le libellé de la commande vocale “ex : Yana, allume le salon”
  • Le type d’action lié à cette commande (exécuter un son, lancer une requête, ou lancer une commande sur le poste de l’interface)Le cheminement d’une commande vocale pour allumer une lampe est le suivant:
  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 !”

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

  • L’interface web du serveur : interface web classique installée par défaut avec le serveur (supportée par idleman)
  • L’interface vocale pour Windows : Yana for windows, permet d’exécuter une action en lançant une commande vocale et d’obtenir une réponse audio également (supportée par idleman)
  • L’interface vocale pour android : Yana for android, idem que pour yana windows mais pour android, tablettes, smartphones etc… (supportée par novares)

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 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 :

  • Camera : Plugin permettant de prendre des photos avec la camera PI depuis l’interface web
  • Camera USB : Plugin permettant de prendre des photos avec une caméra USB depuis l’interface web (fork du plugin Camera d’Idleman)
  • Combo Relay : Plugin de gestion d’un combo de deux relais filaires
  • DHT : plugin de lecture de sondes DHT (DHT11/DHT22/AM2302) via la lib Adafruit
  • Dimmer : Plugin de variateur via pi-blaster (permet de dimmer des led en pwm, ou plus costaud via les composants adaptés)
  • EMplus manager : Complément pour la gestion des événement : Activation et désactivation d’événements par groupe
  • FreeBox : Commander votre FreeBox via votre Raspberry Pi
  • Google Agenda : Ce plugin, après configuration, accède à vos agenda Google pour vous faire la lecture des événements enregistrés. Événements du jour, du lendemain, de l…
  • Informations vocales : Permet la récupérations d’informations locales ou sur le web comme la météo, les séries TV, l’heure, la date et l’état des GPIO
  • MPD : plugin de contrôle de musique du lecteur mpc / daemon mpd
  • Nabaztag : Plugin de contrôle de NabaztagTag via serveur OpenJabNab.
  • Personnal Settings : Plugin de paramètres avancés
  • Ping : Ping de surveillance des équipements
  • Prises GeFOTECH : Prises GeFOTECH – 433MHz
  • Prises SCS : Plugin pour gérer les prises SCS
  • Store Radio : Plugin permettant la Gestion de commande de Store Radio
  • Température par locaux : Gestion des capteurs de température
  • Temperature DS18B20 : Permet de récupérer la température d’un capteur de type DS18B20
  • TvHDMI : Plugin de gestion des commandes de la TV via HDMI CEC
  • XBMC : gestion du lecteur xbmc

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

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.

Afficher l’article complet

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.