Proj-2014-2015-OpenHAB-ExtendedGUI

= Project presentation=

Context
Aujourd'hui la domotique a du mal à s'implanter, du fait de sa complexité et sa faible flexibilité. Ce reel problème nous permet de réaliser un projet sur la création d’une application étant destinée à simplifier la domotique, afin de la rendre utilisable par tout le monde, nous entendons par là, mère/père de famille ou personnes âgées.

Description
Nous devrons créer, une interface simple adaptée à des personnes d’un certain âge. L’utilisateur devra décrire sa maison sous forme hiérarchique (voir ci-dessous). Le système détectera les composants de domotique avec l’aide du protocole UPnP, configurera le composant dans le réseau. L’utilisateur devra alors ajouter dans la pièce le matériel détecté. La plupart du temps le composant entre dans une certaine catégorie, de se fait nous lui proposerons différentes action disponible (type IFTTT) pour un composant.

NomMaison1 Etage1 NomPiece1 NomComposant1 NomComposant2 NomPiece2 NomComposant1 NomComposant2 Etage2 NomPiece1 NomComposant1 NomComposant2 NomPiece2 NomComposant1 NomComposant2

Afin de mieux comprendre ce que le projet doit faire nous vous laissons suivre le schéma ci dessous apportant une description illustré du projet :



Mots clés : détection, domotique, interface, simplicité, flexibilité.

Product functions

 * Interface utilisateur (HTML5 pour plus de flexibilité).
 * Détection automatique de nouveaux composants.
 * Possibilité d'ajouter un composant dans une catégorie (Pièce, ...)
 * Paramétrer un composant ajouté(ex. Marche/Arrêt).

Product evolution
Au niveau des évolutions pouvant être proposer, nous pouvons imaginer que l'utilisateur peut lui meme créer ses règles (en utilisant le style IFTTT). Une autre évolution serai de proposer plus de fonctionnalité à l'utilisateur.

= Project team =

Tuteurs : Didier Donsez, Amr Alzouhri-Alyafi

OpenHAB-ExtendedGUI
 * Sébastien TOUSSAINT
 * Thibault SAUSSAC

=Links=
 * UML Diagrams
 * Requirements

=Project schedule=

Le projet a commencé depuis le 13 Janvier 2015.

Week 1 (January, 13rd - January, 18th)

 * Réflexion sur la compréhension du sujet. L'énoncé du projet étant vague, nous avons eu besoin notamment de comprendre le fonctionnement des technos UPnP, IFTTT...

Week 2 (January, 19th - Janurary, 25th)

 * Presentation de notre projet
 * Mise en contact avec le personnel de la FABLAB
 * Prise en main du matériel et recherche sur les technologies envisageables pour la réalisation du projet
 * Prise en main d'OpenHAB
 * Prise en main du protocole UPnP
 * Réalisation de la fiche SRS (exigences)

Week 3 (January, 26th - February, 1st)

 * Réalisation des premiers diagrammes UML (cas d'utilisation, diagramme des classes et diagrammes de séquence)
 * Récupération de la caméra infrarouge utilisation la techno UPnP pour la détection auto des composant.
 * Création d'un serveur UPnP
 * Après réunion sur l'avancement du projet quelques liens utiles pour une implémentation d'un bundle OSGi qui implémente la spécification "UPnP Base Driver".

http://felix.apache.org/documentation/subprojects/apache-felix-upnp.html http://mir2.ovh.net/ftp.apache.org/dist//felix/org.apache.felix.upnp.basedriver-0.8.0.jar

Dépôt général : Digital Security Camera V 1.0http://felix.apache.org/downloads.cgi

org.apache.felix.upnp.basedriver-0.8.0.jar à mettre dans les addons

AP: voir Digital Security Camera V 1.0 http://upnp.org/specs/ha/digitalsecuritycamera/

Week 4 (February, 2nd - February, 8th)

 * Début de l'intégration de UPnP dans OpenHAB (Problème avec cette intégration... Réglage en cours...)
 * Premier début dans le monde de Scrum, utilisation du site waffle.io permettant de mettre en place Scrum pour notre projet.

Week 5 (February, 9th - February, 15th)

 * Récupération de la caméra DCS-5222l.
 * Installation de la caméra sur réseau LAN
 * Première configuration afin de voir les premieres video de la camera.
 * TOUT Fonctionne


 * Documentation sur OSGi

Week 6 (February, 16th - February, 22nd)

 * Interruption pédagogique
 * Documentation sur le binding sur OpenHab
 * Documentation OSGi
 * Création de fichier .siteMaps à partir d'un formulaire.

Week 7 (February, 23rd - March, 1st)

 * Installation de Maven sur nos machines
 * Documentation sur OSGi et UPnP,
 * Analyse des couches d'OpenHAB

Week 8 (March, 2nd - March, 8th)

 * Intégration de l'interface graphique permettant d'administrer OpenHAB
 * Cette interface et sa documentation sont à retrouver sur : HABmin

*exemple de code UPnP de Didier Donsez *Documentation félix sur le Runtime *Les SCR sur openHAB *exemple d'action xml sur openHAB
 * Plusieurs aide au niveau de UPnP afin de mieux comprendre le binding et le bundle à créer

Week 9 (March, 9th - March, 15th)

 * Tentative d'implémentation de binding à partir des fichiers de D.Donsez.
 * Package binding généré.
 * Intégration dans openHab OK
 * Mais problèmes à cause d'un manque de librairie dans OPENHAB ==> Echec
 * Recherche de solution aux problèmes en vain.......

Week 10 (March, 16th - March, 22nd)
Pom.xml Manifest Cours de D.Donsez sur Maven
 * Didier Donsez nous a expliqué en détail comment fonctionne les fichiers dans son code.
 * Nous avons chercher ensuite de notre coté plus d'informations dessus :


 * Nous n'avons travaillé sur les commandes pour le réalisé après les explications.
 * Mais ne fonctionne pas, ni sur Félix ni sur Openhab

Week 11 (March, 23th - March, 29th)

 * En faite --> cette erreur est normal. Didier Donsez a essayé lui aussi de faire cette integration. Et à constater lui aussi que cela n'était pas possible....
 * Implémentation avec l'aide de Didier de UpnP commande. Encore une fois, ce fut un échec.

Week 12 (March, 30th - April, 5nd)

 * Apres les différents échec avec la partie UPnP
 * Création de la maison
 * Modification de la Maison
 * Interaction avec la camera DSC-5222L à partir d'openHAB
 * Problèmes rencontrés : Impossible de lire un flux video avec OpenHAB pour résoudre cela après analyse, Pour voir la video et intégrer avec la camera nous fournissons l'interface Dlink au client.
 * Mise en place d'une règle sur la camera pour l'alerte.

Week 13 (April, 6th - April, 8nd)

 * Rédaction du rapport de projet
 * Powerpoint pour la présentation
 * Préparation de la soutenance
 * Fini de la rédaction de notre wiki

= Bilan = Le projet tirant à sa fin il est temps pour nous de faire un bilan à chaud de la situation du projet, pour cela nous vous présentons le travail réalisé puis les difficultés que nous avons rencontrées.

Félix Apache
Définitions

Apache Felix est un espace communautaire qui tente de promouvoir OSGi Framework et les technologies ayant des liens avec OSGi. OSGi était utilisé à l’origine pour les systèmes embarqués et les services de passerelles résidentielles, mais les projets actuels sont orientés vers des principes de modularité de composants, et/ou services orientés. La technologie OSGi combine des aspects de ces principes susmentionnés pour définir un cadre de déploiement de service dynamique qui se prête à la gestion à distance.

L’OSGi Alliance (précédemment connue en tant qu'Open Services Gateway initiative) est une organisation qui spécifie une plate-forme de services fondée sur le langage Java qui peut être gérée de manière distante.

Travail réalisé Nous avons installé cette distribution dans le but de pouvoir tester nos différents Bundles avant de les insérer dans OpenHAB.

Nous avons choisi d’utiliser cet utilitaire car il est intégré en grande partie dans OpenHAB, cela nous a parfois joué des tours. En effet puisque certaines fonctionnalités ne sont pas importantes, il est impossible d’intégrer les Bundles. Tous les tests réalisés pour ce projet ont été faits à partir de cette distribution.

Tester UPnP
Définition Tester UPnP, est un bundle permettant d’explorer le réseau. Ce bundle va localiser les différents composants UPnP sur le réseau.

Travail Réalisé Ce composant permet de récupérer différentes informations relatives au composant UPnP détecté. En effet lorsque nous lançons le tester nous pouvons voir ci dessous les différents services UPnP (Nous identifions notamment la caméra):

Pour chaque composant nous avons la possibilité de visualiser différentes informations relatives à un appareil. Ici nous vous donnons l’exemple pour la Caméra. Nous y voyons son type, son nom, son numéro de série, son IP …

Nous avons donc déployé le bundle dans le framework Félix.

Nous avons intégré et modifié le tester dans éclipse afin qu’il soit intégré dans OpenHAB.

Nous obtenons les mêmes résultats que ceux visualisés ci-dessus dans le framework Félix.

UPnP commande
Après avoir compris le fonctionnement d’UPnP tester, nous avons tenté d’ajouter des commandes supplémentaires au framework Félix (et par la suite à OpenHAB).

Ces commandes permettront d’afficher l’ensemble des Devices UPnP sur le réseau et dans un second temps de les afficher dans l’interface d’OpenHAB.

La première implémentation ne fonctionnait pas, nous avons donc, avec l’aide de M. Donsez, visualisé le problème d’un peu plus près. En fait, cette erreur était normale car cela est impossible. Didier Donsez a essayé, lui aussi, de faire cette intégration mais en a conclu de même. Nous sommes donc partis pour une seconde implémentation avec l'aide de M. Donsez mais malgré l’importation des différents bundles nécessaires (IPoJo, etc) l’implémentation ne fonctionne pas dans Felix, et donc forcément pas dans OpenHAB.

Partie Interface d’administration
Dans un second temps, il nous a été demandé de pouvoir administrer la maison à l’aide d’une interface graphique. L’utilisateur devra pouvoir ajouter des appareils, les paramétrer... etc.

Nous avons dans un premier temps créé une interface permettant de lire le fichier .item. Par la suite nous affichons à l’utilisateur les composants qu’il a déjà. Nous lui proposons d’ajouter aussi un appareil, pour cela l’interface écrit dans le fichier .item les informations saisies dans le formulaire par l’utilisateur.

Après ce travail nous avons utilisé l’interface HABmin qui offre des alternatives bien plus intéressantes, en effet nous pouvons y afficher des graphiques… etc.

Nous pouvons voir, ci-dessous, différentes opérations que nous avons la possibilité de faire avec cet utilitaire.

Interaction avec la caméra
Il nous a été mis à disposition une caméra de surveillance : DSC 5222L.

Nous avons donc installé cette caméra sur notre réseau. Elle utilise DHCP donc elle se configurera automatiquement sur le réseau dès qu’elle se connectera. Nous pouvons faire différentes interactions avec la caméra, comme :


 * Faire tourner.
 * Visualiser la vidéo.
 * Appliquer différentes alertes.
 * Changer l’adresse IP.
 * Différentes configurations.

Nous pouvons voir ci-dessous différentes fonctionnalités pouvant être réalisé sur la caméra.

Difficultés rencontrées

 * Nouvelles technologies

Ce projet présente un ensemble de technologies incroyables. Ces technologies sont entièrement nouvelles pour nous. Il nous a donc été difficile de comprendre les différentes structures. Cela nous a pris un temps considérable qui a fortement impacté l’avancement du projet.
 * OpenHAB

Nous avons pu voir ici les limites de la communauté d’openHAB. En effet, sur des problèmes très spécifiques, comme nous avions, nous n’avons pas trouvé de personnes pour nous renseigner, malgré des postes pour exposer nos problèmes, nous sommes souvent restés sans réponses à nos questions.

Notre ressenti
Pour ce projet nous avons deux grands sentiments qui ressortent, tout d’abord celui d’inachevé, qui nous laisse un goût amer. En effet, nous n’avons pas pu réaliser l’ensemble des fonctionnalités demandées pour ce projet. La gestion de notre temps n’a pas été bonne, puisque nous n’avions à ce jour jamais eu à faire face à un problème aussi complexe que l’OSGi. La partie documentation a donc été bien plus longue que prévu.

Cependant il ressort aussi un sentiment de satisfaction puis que nous avons maintenant de nombreuses bases sur OpenHAB et nous avons bien compris l’utilité et le fonctionnement du protocole UPnP et OSGi.

Nous pouvons dire que ce projet nous permettra de plus rapidement prendre du recul sur nos projets futurs. Il nous a aussi permis de bien penser qu’il est important de veiller à se documenter correctement avant de commencer à coder.

= Références =
 * Site et cours de Didier Donsez
 * OpenHAB
 * UPnP
 * Eclipse
 * Apache Félix
 * Tutorial sur OSGi par D.DONSEZ