Proj-2015-2016-Intégration de caméra de surveillance UPnP à Openhab

Fiche: Fiche = Progress of the project =

Week 1 (January 13th - January 18th)
Formation des groupes : Yacine Ndiaye, Cenyo Medewou, Anna Bruel

Choix des sujets : sujet 11, Intégration et gestion de caméras de surveillance UPnP dans la plateforme domotique open-source OpenHAB et myOpenHAB : sujet

Installations des différents frameworks :
 * le base-driver Osgi tutoriel d'installation OSGI
 * OpenHab se base sur Osgi et utilisation du port 8080 du localhost pour ouvrir OpenHab tutoriel d'installation OpenHab

Recherche de Documentation :
 * projet RICM5
 * |source du projet RICM5 ]

Week 2 (January 19th - January 25th)
Création d'un git :

Installations de Félix -> Test de détection des devices UPnP avec le testeur de Félix

Nous avons rempli le cahier des charges, ainsi que les exigences fonctionnelles : SRC

Debut de la réalisation par de l'interface OpenHab.

Monsieur Didier Donsez nous a donné le code à remplir pour détecter les différents devices UPnP, avec maeven

Week 3 (January 26th - February 01st)

 * conception des diagramme de cas d'utilisation et diagramme d'activité. voir UML
 * Amelioration du code de Mr Donsez: Nous avons notemment rajouter des commandes au codes pour la detection des appareils supportant la technologie UPNP.
 * Lien vers le code de detection: https://github.com/openHab-UPnP/UpnpCommands
 * recherche documentaire :
 * regarder dans gitHub |les plugings UPnP et les |addons de OpenHab
 * Comment découvrir les caméras ? -> Bundles : découvre une caméra -> Bindings : découvre une liste de caméras
 * Injection de dépendance -> permet de récupérer les devices dans Java
 * relier l'URL de la caméra et le type de la caméra : get_NAME + présentation_URL. A vérifier sur le |catalogue du web

Week 4 (February 02nd - February 08th)
Le projet a évolué. On n'utilisera plus OpenHab pour faire le binding mais Eclipse smarthome, et Openhab 2. Voici la nouvelle documentation
 * Etudier Eclipse Smarthome
 * Binding SONOS https://github.com/eclipse/smarthome/blob/15081ce28ad8c967fcddc7ac3f246f4a93589a71/extensions/binding/org.eclipse.smarthome.binding.sonos/src/main/java/org/eclipse/smarthome/binding/sonos/discovery/ZonePlayerDiscoveryParticipant.java
 * Transport UPnP https://github.com/eclipse/smarthome/tree/6a06eb7788d8e45c1ff0aba82eb896c93870e732/bundles/io/org.eclipse.smarthome.io.transport.upnp
 * UPnP Discovery https://www.eclipse.org/smarthome/documentation/development/bindings/discovery-services.html#upnp-discovery

Week 5 (February 09th - February 15th)
Adaptation du code de détection sonos, à la détection des caméras. Maintenant, nous pouvons détecter la liste des différentes caméras sur le réseau, récuperer le lien direct vers le flux video grâce au |catalogue qui associe à chaque type de camera, le lien vers sa video et visualiser le flux vidéo dans un navigateur web.

Problème : l'inclusion l'URL de la video dans la balise "video" de la sitemap, pour lire la vidéo dans OpenHab2, ne fonctionne pas car le format n'est pas supporté.

Solution : Puisque nous pouvons afficher le flux video dans un navigateur web, nous avons déduit qu'on pourrais l'afficher dans une balise webview de la sitemap, ce qui fonctionne très bien.

L'integration de la video dans OpenHab se fait jusqu'a present de façon statique, il nous reste à automatiser (afficher automatiquement les flux dans openhab) et dans un second temps, faire la mosaique dans l'interface graphique

Week 6 (February 23th - March 1st)
récupérer les éléments d'information sur les caméra dans le |catalogue grâce à |getRessource (Javadoc)

Idée : Nous avons eu l'idée de generer automatiquement des pages web directement à partir du Binding de découverte de camera pour que à chaque fois qu'une caméra à été découvert, le lien vers sa video soit ajouter a un fichier Html directement, dans une balise video. la webView dans la sitemap pointera alors vers ce fichier qui sera créé.

Problème : Les balise WebView de la sitemap OpenHab ne supporte pas l'inclusion direct d'un fichier, il faut nécessairement une adresse vers un serveur web.

Solution 1: Utilisé un serveur web apache, pour heberger notre page web, et qui recevra directement les informations venant du binding. A chaque découverte de caméra, le Binding envera, le nom de la camera et le lien vers sa video vers le serveur qui enregistreara ces information dans sa base de donnée. Une page html pourra alors faire des requêtes vers cette base de donnée pour récuperer les camera qui on été découvertes et afficher les video correspondante à chaque caméra. enfin la webView de la sitemap pointera vers cette page.
 * Avantage : les pages peuvent etre heberger en local ou sur un serveur ailleurs.
 * Désavantage: Difficile à mettre en place pour l'utilisateur.

Solution 2: Modifier la webView de la sitemap pour pouvoir y integrer directement tout le contenu que l'on veut. Il est en effet possible de créer notre propre Widget qui pourrais heriter de Webview et incorporer tout les parametres necessaire à la diffusion des videos des cameras découvert par notre binding.
 * Avantage : plus facile à mettre en place pour l'utilisateur.
 * Déavantage: la complexité due notement au manque de documentation dont souffre OpenHab. en effet il n'y a pas de documentation sur comment fonctionne la sitemap et comment la modifiée.

Nous avons déja commncer l'intégration de la solution 1 qui fonctionne très bien actuellement.

Week 7 (March 02nd - March 08nd)

 * Préparation à la mini soutenance
 * commit des codes sur Github

Week 8 (March 09nd - March 15nd)

 * Récupération des résultats des différentes découvertes, via l'API Rest
 * Afin de récupérer les données JSon de l'API Rest, pour charger la librairie JSon de Java, nous avons modifié le manifest et le fichier build.properties dans le projet Eclipse SmartHome extensions
 * Par conséquent, nous avons écrit un parser qui nous extrait le nom de caméra et l'adresse IP de la caméra.
 * Modification du fichier de propriétés(catalogue), pour prendre en compte les caméras spécifiées par l'utilisateur.
 * Création de la classe UrlBuilder, qui permet de construire l'Url de la vidéo, grâce à l'adresse IP et le nom de la caméra.

Week 9 (March 16nd - March 22nd)

 * Création de la page Html5 afin de faire l'interface