Scénario : Réveil Intelligent

Introduction

Le réveil intelligent permet aux gens de se réveiller  dans une bonne humeur. Plus précisément, le réveil va sonner quand il est temps de se lever. Ensuite, la lampe va s’allumer automatiquement. Une chanson proposée selon la météo se joue automatiquement par le Player. Dans le même temps, il y aura un conseil affiché sur l’écran de projecteur. Le conseil est basé sur le temps,  comme par exemple,  un message qui rappelle à l’utilisateur d’apporter un parapluie avec lui car il pleut. Et puis l’utilisateur peut regarder des news de Twitter et la météo sur son application Androïde. Il est aussi possible de vérifier son emploi du temps dans cette application.

Architecture

Le système est composé de trois parties, à savoir, l’application androïde,  le serveur web sémantique et le serveur REST.

Le serveur  REST s’occupe de la communication entre l’application androïde, le serveur web sémantique et les dispositifs. Plus précisément, L’application androïde envoie des messages de type JSON au serveur REST quand l’utilisateur  veut contrôler un dispositif. Lorsque le server Tomcat reçoit un tel message, il va ensuite le traiter et envoyer des requêtes HTTP au serveur web sémantique pour récupérer des informations sémantiques si nécessaire. Finalement, le serveur va contrôler les dispositifs avec le protocole Upnp. Le figure ci-dessous montre l’architecture de notre systèm:

Présentation

 

Organisation

Pour réaliser ce projet, nous avons réparti le travail en trois groupes.

Groupe serveur web sémantique

Le premier groupe s’est occupé du serveur web sémantique.

Groupe application androïde

Ce deuxième groupe s’est chargé du développement application android.

Groupe serveur REST

Ce dernier groupe était chargé de mettre en place le serveur Tomcat et également d’intégrer le point de contrôle et des API de serveur web sémantique.

 

Réalisation

Application androïde

Météo:

Dans la partie météo, nous pouvons connecter à l’internet pour récupérer les dernières informations météo de la location actuelle. En plus, c’est possible de changer la location en tapant le nom manuellement.

Screenshot_2016-03-07-22-39-09

Alarme:

Nous pouvons créer une nouvelle alarme pour nous réveiller le lendemain. La vérification du réveil d’utilisateur est grâce à l’accéléromètre. Une fois le réveil est détecté, l’application se lance et elle envoie les requêtes pour allumer la lampe, jouer de la musique, et allumer la télévision.

 

Screenshot_2016-03-07-22-39-17

Agenda:

L’application synchronise avec le Google Calendar d’utilisateur pour afficher les événements du jour.

Screenshot_2016-03-07-22-39-26

Nouvelles:

L’utilisateur peut ajouter les sujets qui l’intéressent. En cliquant sur le sujet ajouté, l’application l’utilise comme le mot clé pour chercher et afficher les tweets correspondants sur le Twitter. ça permet à l’utilisateur de rester au courant des dernières nouvelles.

Screenshot_2016-03-07-22-40-10

Ici il y a un exemple de mot clé  « football »:

Screenshot_2016-03-07-22-40-18Un autre exemple de mot clé « f2b506 »:

Screenshot_2016-03-07-22-40-02

 

Control:

Depuis le tableau de bord, l’utilisateur peut contrôler les appareils dans la salle manuellement comme la lampe, la télévision, le projecteur, le haute parleur etc.. Le serveur peut distinguer les differents demandes et prendre les mesures correspondants.

Screenshot_2016-03-07-22-40-24

 

Serveur web sémantique

API météo :

Pour récupérer les données météo, on utilise l’API OpenWeatherMap de Google. On applique une méthode GET sur l’url  http://api.openweathermap.org/data/2.5/weather?q=Brest,fr pour récupérer les données sous un format JSON.

On parse ensuite le résultat pour récupérer les données qui nous intéressent (température, humidité, main, description, location).

On stocke les données récupérées dans une base de connaissance. Pour ce faire, on a conçu une ontologie qui permet de donner un sens à données météo récupérées, produire le message de conseil qui va être communiqué à l’utilisateur et lier ces données avec la musique qui va être joué.

50601

50602

Graphe de l’ontologie réalisé avec protégé

Les messages de conseil sont stockés sous forme de commentairs et de manière statique dans les classes Normal, Hot, Cold, Clear, Clouds, Fog, et Rainy. Ces messages peuvent être récupérées grâce à la propriété rdfs :comment.

Serveur Apache Fuseki :

Nous avons installé un serveur Apache Fuseki sur le serveur m4.enstb.org. Ce serveur est accessible sur le port 8081.

Le serveur fuseki nous permet de créer notre base de connaissance et de fournir un endpoint pour manipuler cette base grâce à des requêtes SPARQL.

 

Stockage des données :

Nous avons écrit un script python qui :

  • Interroge l’API OpenWeatherMap.
  • Parse le JSON contenant les données météo.
  • Exécute des requêtes SPARQL grâce à l’endpoint fourni par le serveur fuseki pour mettre à jour la base de connaissance.

Remarque : Pour pouvoir exécuter des requêtes SPARQL en python, nous avons utilisé le module SPARQLWrapper qui est un client SPARQL.

Pour chacune des classes Clouds, Fog, Rainy et Clear, on dispose de quatre morceaux différents de musique. Selon l’état de la météo courante, on attribue de manière aléatoire à l’entité Weather un lien d’une musique qui va être stocké dans la base de connaissance à travers la propriété hasMusic

 

Serveur REST

Le serveur REST s’appuie sur le framework Jersey.  Il contient un seul url de requête : /UpnpServer/rest/server/device. Le corps d’une requête envoyé à cet url est de type JSON. Son format est le suivant:

{
« device »: « xxx »,
« state »: « xxx »
}

En traitant un tel message, le serveur peut savoir que l’utilisateur veut faire une action spécifique (défini par « state ») sur le dispositif indiqué (défini par « device »).

Il y a aussi un point de contrôle dans ce serveur.  Il contient des fonctions permettant de contrôler les différents dispositifs, comme par exemple allumer la lampe.

 

Liens des codes

Application androïde : https://github.com/ZelongChen/WakeUP

Serveur REST ( contient le point de contrôle + API de connexion serveur web sémantique) :  https://Zhichuan@bitbucket.org/Zhichuan/upnpserver.git

Web sémantique : https://Zhichuan@bitbucket.org/Zhichuan/semanticweb.git

 

ABDELGHANI Morsi
CHEN Haoyue
CHEN Yiqiao
CHEN Zelong
JIN Zhichuan
PASCAULT Alexandre
PENG Yuancheng
ROUGUI Yasser
WANG Shuting

 

Ce contenu a été publié dans L'Internet des Objets, Web Sémantique, Web Social. Vous pouvez le mettre en favoris avec ce permalien.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *