Difference between revisions of "Extensions XBMC"

From air
Jump to navigation Jump to search
Line 1: Line 1:
  +
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. <br/>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 [mailto:xbmc_ricm5@googlegroups.com contacter] :)
Encadrant: Nicolas Palix
 
   
  +
=Le projet de fin d'année en RICM5=
Lien vers le wiki du projet : [[Extensions_XBMC/FicheSuivi]]
 
  +
Ce projet, d'une durée de 8 semaines
   
  +
=Présentation du sujet=
==Description==
 
L'objectif de ce projet est de développer différentes extensions au médiacenter [[XBMC]].
 
   
  +
L'objectif de ce projet de 8 semaine est de créer de nouveaux plugins pour le [http://xbmc.org/ media center XBMC].<br/>
La liste (non-limitative et négociable) est :
 
  +
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'une interaction avec les lampes [http://meethue.com/ 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=
* [[XBMC Reflexive Remote]] Dynamic remote control for XBMC.
 
* Ambilight avec [[Philips Hue]] statique (fanart) et dynamique (vidéo).
 
* Commande vocale ([[Shodan]], ...)
 
* Intégration avec [[OpenHAB]] et [[HABDroid]].
 
* Implémentation du profil [[UPnP]] low-power.
 
* Intégration de caméras de surveillance (découverte UPnP et DNS-SD, ...)
 
* Intégration avec [[VLC]]/[[Gstreamer]] pour l'utilisation de webcam comme caméra de surveillance.
 
* Follow-me dans le contexte d'un système A/V multi-pièces et nomade, multi-usagers.
 
* Intégration de la [[NFC]] : Auto-configuration de XBMC Remote, J'aime / J'aime pas, URL XBMC (shortcuts tangible) ...
 
* Réservation de ressources par conteneur LXC (voir thèse de Maxime Louvel, Gestion des ressources pour les applications multimédia dans le réseau local domestique, un contexte ouvert, hétérogène et distribué, Université de Bretagne Sud, 2011) -- Préservation des ressources (CPU, réseau) pour XBMC malgré des applications qui tourneraient en parallèle.
 
* F2F: Friend-2-Friend XBMC. Consultation de la bibliothèque d'amis.
 
voir [https://play.google.com/store/apps/details?id=com.wifitap.android&hl=fr Wifitap]
 
   
  +
'''Team:'''
  +
* Nicolas Afonso (Chef de projet)
  +
* Jean-François Bianco
  +
* Pierre Lartigue
  +
* Elisa Martinez
  +
* Rebecca Poustis
   
La qualité du code doit permettre une contribution vers les projets d'origine.
 
   
  +
= Spécifications =
==Liens==
 
  +
== Plugin OpenHab ==
* [[XBMC]] and [http://wiki.xbmc.org/index.php?title=Remote_controls XBMC Remote controls]
 
  +
Le but de ce plugin est de permettre aux utilisateurs de contrôler leur maison depuis une instance XBMC.
* [http://code.google.com/p/android-xbmcremote/ XBMC Remote for Android]
 
  +
===Principe de fonctionnement===
* [[OpenHAB]]
 
  +
[[Image:Openhab_plugin_principe.png|Fig 1 : Fonctionnement|thumb|left|800px]] <br/> <br/> <br/> <br/> <br/> <br/><br/> <br/> <br/> <br/> <br/> <br/><br/>
  +
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 <br/>
  +
La communication entre le plugin et le serveur openHab est réalisée à l'aide de [http://github.com/openhab/openhab/wiki/REST-API l'API REST] disponible sur les serveur openHAB (la connexion utilisée est du type JSON-RPC). <br/>
   
  +
===Architecture logicielle ===
==Matériels fournis==
 
  +
[[Image:Plugin_Openhab_archi.png|Fig 2 : Architecture Logicielle|thumb|left|600px]]<br/> <br/> <br/> <br/> <br/> <br/><br/> <br/><br/> <br/><br/> <br/>
* [[Raspberry Pi]]
 
  +
Le plugin a été développé en Python. Son architecture est décomposée en 3 composants :
* [[BeagleBone Black]]
 
  +
* 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.
* [[Intel Galileo]]
 
  +
* Le second est le Framework [http://github.com/romanvm/PyXBMCt PyXBMCt] développé par Roman Miroshnychenko. Celui-ci permet de réaliser des interfaces graphiques pour XBMC directement en python.
* Téléphone Intel Atom NFC
 
  +
* 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.
* Tags [[NFC]]
 
  +
<br/>
* [[Philips Hue]]
 
  +
Les sources sont disponibles sur le dépôt de sources suivant : https://bitbucket.org/xbmcproject/xbmc/src
* Caméra de surveillance DLink
 
  +
===Installation===
* ...
 
  +
  +
====Plugin====
  +
L'installation du plugin : <br/>
  +
1) Récupérer l'archive zip du plugin : [http://bitbucket.org/xbmcproject/xbmc-openhab-plugin/get/e94f369ef62d.zip openHab XBMC plugin]<br/>
  +
2) System -> Addons -> Install from ZIP file -> choose openHab_XBMC_plugin.zip -> Validate<br/>
  +
  +
Configuration : <br/>
  +
Par défaut, le plugin utilise les valeurs suivante :
  +
* 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. <br/>
  +
  +
====OpenHab====
  +
Les détails concernant l'installation d'OpenHab sont disponible sur [http://github.com/openhab/openhab/wiki/Quick-Setup-an-openHAB-Server le wiki du projet openHab]. <br/>
  +
  +
===Aperçu===
  +
[[Image:Screenshot_xbmcOpenhab_1.png|Fig 3 : Accueil Add-on|thumb|left|600px]][[Image:Screenshot_xbmcOpenhab_2.png|Fig 4 : Vue Etages|thumb|center|600px]]<br/>
  +
[[Image:Screenshot_xbmcOpenhab_3.png|Fig 5 : Vue pièces|thumb|left|600px]][[Image:Screenshot_xbmcOpenhab_4.png|Fig 6 : Détails pièces|thumb|center|600px]]<br/>
  +
  +
== 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. <br/>
  +
  +
==== Principe de fonctionnement ====
  +
[[Image:NFC_fonctionnement.png| Fonctionnement NFC |thumb|left|600px]] <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
  +
  +
L'utilisateur à la possibilité de lire et d'écrire un TAG NFC depuis la télécommande d'XBMC. <br/>
  +
  +
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 [http://wiki.xbmc.org/index.php?title=JSON-RPC_API/v6 l'API JSON-RPC] disponible sur les instances XBMC.<br/>
  +
  +
==== Architecture logicielle ====
  +
[[Image:NFC_XBMC_archi.png| Fonctionnement NFC |thumb|left|600px]] <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
  +
L'activité NFCWriterActivity permet de lire et d'écrire les TAGs NFC. <br/>
  +
La classe NFCWriterController permet d'envoyer les requêtes de lecture au serveur XBMC. <br/>
  +
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.<br/>
  +
Le mode écriture peut être activé par l'utilisateur dans les menus musique et genre. <br/>
  +
  +
Les TAG utilisent la technologie NDEF, et sont configurés de la façon suivante : <br/>
  +
'''Lecture album :''' <br/>
  +
*Record 0 : Type
  +
*Record 1 : Id
  +
*Record 2 : Name
  +
*Record 3 : Artist
  +
*Record 4 : Year
  +
<br/>
  +
'''Lecture genre de musique :''' <br/>
  +
*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

Revision as of 10:51, 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 :)

Le projet de fin d'année en RICM5

Ce projet, d'une durée de 8 semaines

Présentation du sujet

L'objectif de ce projet de 8 semaine 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

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

Fig 2 : 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 suivante :

  • 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

Fig 3 : Accueil Add-on
Fig 4 : Vue Etages


Fig 5 : Vue pièces
Fig 6 : Détails pièces


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

Fonctionnement NFC
















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

Fonctionnement NFC













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

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