Commander un Arduino avec une tablette Android

- Etude de cas -


précédentsommairesuivant

V. Les entités du serveur

Revenons à l'architecture de notre application client / serveur. L'architecture du serveur est la suivante :

Image non disponible

La couche [DAO] va communiquer avec les Arduinos. Elle va échanger avec elle des lignes de texte JSON. Côté serveur, ces lignes de texte vont être transformées en objets que nous présentons maintenant. Par ailleurs, le serveur échange également avec ses clients (Android ou web) des objets. Nous les appellerons des entités. Elles sont présentées maintenant et vous seront fournies :

Image non disponible
  • en [1], le projet Eclipse des entités ;
  • en [2], c'est un projet Maven. Il n'y a qu'une dépendance, celle sur la bibliothèque JSON Gson de Google [4] ;
  • en [3], les entités ;

La couche [DAO] envoie à l'Arduino des commandes et en reçoit des réponses. Ces deux entités sont représentées par les classes [Commande] et [Reponse].

V-A. La classe [Commande]

C'est la suivante :

 
CacherSélectionnez

On se rappelle que les lignes JSON envoyées à l'Arduino sont de la forme :

 
CacherSélectionnez
  • [id] est l'identifiant de la commande ;
  • [ac] est le nom de l'action à exécuter ;
  • [pa] est un dictionnaire listant les paramètres de l'action ;

Les trois paramètres [id, ac, pa] sont définis aux lignes 8-10 de la classe. Si on sérialise en JSON cette classe on aura une chaîne comme suit :

 
CacherSélectionnez

Parce que l'Arduino a très peu de mémoire, on ne peut envoyer cette chaîne trop longue. On décide donc d'envoyer celle montrée plus haut. Pour cela, on crée dans la classe un dictionnaire avec les attributs [id, ac, pa]. Il est défini ligne 11. Lorsqu'on voudra envoyer une commande, c'est la chaîne JSON de ce dictionnaire qui sera envoyée.

  • ligne 30 : la classe possède un constructeur qui accepte pour paramètre la chaîne JSON d'un dictionnaire ayant les attributs [id, ac, pa] ;
  • ligne 52 : lorsqu'on veut envoyer la chaîne JSON de la commande, c'est celle de son dictionnaire interne qui sera envoyée (ligne 54) ;
  • ligne 41 : la méthode [toString] rend la chaîne JSON de la classe ;

V-B. La classe [Reponse]

C'est la suivante :

 
CacherSélectionnez

L'Arduino renvoie des lignes JSON de la forme :

 
CacherSélectionnez

ou

 
CacherSélectionnez
  • [id] est l'identifiant de la commande à laquelle on répond ;
  • [er] est un code d'erreur ;
  • [et] est un dictionnaire listant les résultats de l'action ;

Les attributs [id, er, et] sont définis lignes 10-12 de la classe.

  • ligne 26 : l'objet [Reponse] est construit à partir de la chaîne JSON envoyée par l'Arduino ;
  • lignes 27, 30 : on construit d'abord un dictionnaire ;
  • lignes 32-34 : l'objet [Reponse] est construit ensuite à partir de ce dictionnaire ;
  • ligne 35 : si la chaîne JSON envoyée par l'Arduino n'a pas pu être parsée, on aura une exception ;
  • ligne 36 : on mémorise alors la chaîne JSON invalide dans le champ de la ligne [9] ;
  • ligne 44 : la méthode [toString] affiche la chaîne JSON de l'objet. On aura donc ainsi la chaîne JSON invalide si ce cas se produit ;

V-C. La classe [Arduino]

On se rappelle que l'Arduino, en s'enregistrant auprès de la couche [DAO] envoie la chaîne d'identification suivante :

 
CacherSélectionnez

On enregistre ces informations dans la classe [Arduino] suivante :

 
CacherSélectionnez
  • les informations des lignes [9-11,13] sont tirées de la ligne envoyée par l'Arduino ;
  • la ligne 12 qui représente l'IP de l'Arduino sera renseignée par le serveur d'enregistrement qui traite la connexion de l'Arduino ;

V-D. La classe [DomotiqueException]

Les différentes couches du serveur lanceront des exceptions non contrôlées par le compilateur de type [DomotiqueException] :

 
CacherSélectionnez

C'est une classe d'exception standard si ce n'est qu'elle encapsule un code d'erreur, ligne 9.


précédentsommairesuivant

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2013 Serge Tahé. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.