Extensions XBMC: Difference between revisions
m (→Plugin) |
|||
Line 3: | Line 3: | ||
=Présentation du sujet= |
=Présentation du sujet= |
||
L'objectif de ce projet de 8 |
L'objectif de ce projet de 8 semaines est de créer de nouveaux plugins pour le [http://xbmc.org/ media center XBMC].<br/> |
||
Les plugins qui seront développés vont permettre d'ajouter les fonctions suivantes : |
Les plugins qui seront développés vont permettre d'ajouter les fonctions suivantes : |
||
* Réalisation d'un plugin de domotique basé sur [http://www.openhab.org/ OpenHab] |
* Réalisation d'un plugin de domotique basé sur [http://www.openhab.org/ OpenHab] |
Revision as of 09:27, 26 March 2014
Cette page wiki se veux être une fiche de suivi interactive du projet "extensions XBMC" d'un groupe d'étudiants de la promotion RICM5 2014. Interactive, car nous suivons pour ce projet une méthodologie de type Agile.
Revenez donc régulièrement consulter cette page pour suivre ses dernières évolutions, mises à jour et modifications ! Si le sujet de notre projet vous plaît, que vous avez des questions ou remarques, n'hésitez surtout pas à nous contacter :)
Présentation du sujet
L'objectif de ce projet de 8 semaines est de créer de nouveaux plugins pour le media center XBMC.
Les plugins qui seront développés vont permettre d'ajouter les fonctions suivantes :
- Réalisation d'un plugin de domotique basé sur OpenHab
- Réalisation d'une interaction avec les lampes Philips Hue
- Réalisation d'un plugin permettant de controler des caméras de surveillance D-Link
- Amélioration de la télécommande Android developpé par la "Team-XBMC" :
- Ajout d'un système permettant de rendre la télécommande réflexive
- Ajout d'une fonction NFC permettant de lancer de la musique (par genre ou album)
L'équipe projet
Team:
- Nicolas Afonso (Chef de projet)
- Jean-François Bianco
- Pierre Lartigue
- Elisa Martinez
- Rebecca Poustis
Spécifications
Plugin OpenHab
Le but de ce plugin est de permettre aux utilisateurs de contrôler leur maison depuis une instance XBMC.
Principe de fonctionnement
L'utilisateur accède aux informations concernant son logement grâce à un plugin développé spécialement pour XBMC. Grace à celui-ci, l'utilisateur est en mesure de consulter et d'agir sur les l'états des objets connectés gérés par son serveur openHAB
La communication entre le plugin et le serveur openHab est réalisée à l'aide de l'API REST disponible sur les serveur openHAB (la connexion utilisée est du type JSON-RPC).
Architecture logicielle
Le plugin a été développé en Python. Son architecture est décomposée en 3 composants :
- Le premier est l'OpenHab API qui permet de communiquer simplement avec le serveur, et met à disposition les différents types d'objets disponibles dans un serveur openHab.
- Le second est le Framework PyXBMCt développé par Roman Miroshnychenko. Celui-ci permet de réaliser des interfaces graphiques pour XBMC directement en python.
- Le troisième est le composant principal. Il gère l'affichage et l'envoi des requêtes nécéssaires pour modéliser l'habitation dans XBMC.
Les sources sont disponibles sur le dépôt de sources suivant : https://bitbucket.org/xbmcproject/xbmc/src
Installation
Plugin
L'installation du plugin :
1) Récupérer l'archive zip du plugin : openHab XBMC plugin
2) System -> Addons -> Install from ZIP file -> choose openHab_XBMC_plugin.zip -> Validate
Configuration :
Par défaut, le plugin utilise les valeurs suivantes :
- Adresse serveur : 127.0.0.1
- Port du serveur : 8080
- Nom du serveur : demo
- Id du serveur : demo
Ces valeurs sont modifiables dans les paramètres du plugin.
OpenHab
Les détails concernant l'installation d'OpenHab sont disponible sur le wiki du projet openHab.
Aperçu
Plugin Philips Hue
Plugin Caméra de surveillance
Télécommande
Réflexivité
NFC
Le module NFC ajouté dans la télécommande Android d'XBMC permet de lancer un artiste ou un type de musique.
Principe de fonctionnement
L'utilisateur à la possibilité de lire et d'écrire un TAG NFC depuis la télécommande d'XBMC.
Les TAGs utilisés peuvent être configurés directement depuis la télécommande, qui posséde un lecteur NFC. La communication est réalisée avec l'API JSON-RPC disponible sur les instances XBMC.
Architecture logicielle
L'activité NFCWriterActivity permet de lire et d'écrire les TAGs NFC.
La classe NFCWriterController permet d'envoyer les requêtes de lecture au serveur XBMC.
L'activité est lancée par la classe HomeController, lorsque l'utilisateur exécute l'activité NFC depuis le menu principal. Le mode lancé dans ce cas est le mode lecture.L'utilisateur doit approcher un TAG pour que celui-ci soit lu, et la lecture lancée.
Le mode écriture peut être activé par l'utilisateur dans les menus musique et genre.
Les TAG utilisent la technologie NDEF, et sont configurés de la façon suivante :
Lecture album :
- Record 0 : Type
- Record 1 : Id
- Record 2 : Name
- Record 3 : Artist
- Record 4 : Year
Lecture genre de musique :
- Record 0 : Type
- Record 1 : Id
- Record 2 : Name
Installation
Aperçu
Reconnaissance vocale
S.A.R.A.H (Self Actuated Residential Automated Habitat) est un système de maison intelligente connectée à l'internet des objets.
Il permet notamment :
- reconnaissance vocale et gestuelle via fichiers XML
- reconnaissance faciale avec une Kinect
- reconnaissance des QRCodes
Les requêtes HTTP générées exécutent des scripts NodeJS pour l'interaction domotique ou la recherche d'information.
Fonctionnement
Lien vers la description complète : http://encausse.wordpress.com/s-a-r-a-h/s-a-r-a-h-architecture/
L'architecture de SARAH repose principalement sur un programme C# et un programme NodeJS :
Le programme C# :
- Ecoute et identifie des phrases, gestes ou qrcode via un fichier XML et génère une requête HTTP
- Répond à la requête et produit un retour vocal
Le programme NodeJS :
- Exécute un script en fonction de la requête HTTP reçue pour exécuter un programme ou chercher de l'information
Installation
Prérequis
Lien : http://domotique-info.fr/2014/02/sarah-installation-premiers-pas/
- Microsoft .NET 4.5
- Microsoft Speech Platform
- Speech Platform Runtime
- SDK Kinect (non nécéssaire pour la reconnaissance vocale)
Tutoriel
Lien du tutoriel : http://encausse.wordpress.com/2013/02/16/s-a-r-a-h-tutorial-plugin-xbmc/
- Télécharger l'archive (version actuelle: 3.1.4) http://encausse.wordpress.com/s-a-r-a-h/
- Extraire dans un dossier dont le chemin ne comporte pas d'espaces
- Dans le répertoire "plugins", créer un dossier "xbmc"
- Télécharger l'archive https://github.com/PasDeBol/Sarah-Plugin-Xbmc
- Copier le contenu du répertoire "plugins" de la nouvelle archive (excepté addonSarahAndXbmc.V1.0.zip) dans le dossier "/plugins/xbmc" précédemment créé
- Modifier le fichier xbmc.prop :
- remplacer "[FIXME]:[FIXME]" par "127.0.0.1:8077"
- Décompresser l'archive addonSarahAndXbmc.V1.0.zip présente dans "Sarah-Plugin-Xbmc-master/Sarah-Plugin-Xbmc-master/plugins"
- Copier le répertoire "sarah.addon" dans le dossier "addons" de XBMC
Configuration de XBMC
- System/Services/Webserver
- Autoriser le contrôle d'XBMC via HTTP
- Port : 8077
- Supprimer le nom d'utilisateur
- Supprimer le mot de passe
- System/Services/Remote control
- Tout autoriser
- System/System/Video output
- Mode fenêtré
- System/System/Audio output
- Play GUI Sounds : Never
- Vérification de la configuration
- "localhost:8077" doit vous rediriger vers l'interface d'XBMC
- "localhost:8080" doit afficher l'interface web de SARAH
- Sur l'interface web cliquer sur l'icône "actualiser" du plugin XBMC -> icône "planète" (documentation) -> "Test de la configuration" et vérifier que tous les contrôles soient OK
Exécution
- Dans l'archive "WSRRelease314", lancer "Server_NodeJS.cmd"
- Lancer "Client_Microphone.cmd"
- Pour tester, dire "Sarah, il est quelle heure ?"
- Si Sarah répond, lancer XBMC
- Dire "Sarah, active le mode XBMC"
- À partir d'ici, toutes les commandes de Sarah sont utilisables (récapitulatif ici : https://github.com/PasDeBol/Sarah-Plugin-Xbmc/blob/master/info/liste%20compl%C3%A8te%20des%20commandes.txt)
Ajouter de commandes vocales dans SARAH
- Ouvrir le fichier "WSRRelease314/plugins/xbmc/xbmc.xml"
- Ajouter une ligne : <item>(1)<tag>out.action.action="(2)"</tag><tag>out.action.xbmc="(3)" </tag></item>
- (1) : la commande vocale que vous souhaitez utiliser (exemple: ferme l'application XBMC)
- (2) : l'action SARAH correspondant à votre commande