Differences

This shows you the differences between two versions of the page.

Link to this comparison view

fr:client_connect [2016/01/13 20:28]
fr:client_connect [2016/01/13 20:28] (current)
Line 1: Line 1:
 +====== Les phases d'une application cliente mobile ======
 +
 +Ce guide présente les différentes phases, dont celle de connexion à une centrale domotique d'une interface cliente externe (ex. application mobile, tablette tactile, etc...).
 +
 +===== Diagramme logique de connexion =====
 +{{ :doc_connexion.png |Diagramme logique}}
 +
 +Au lancement de l'application la première étape à effectuer est de contacter le serveur calaos.fr grâce à une requête [[protocole_json#get_ip|JSON get_ip]] afin de récupérer l'adresse IP su laquelle se connecter. En fonction de la réponse (et surtout en fonction du paramètre //at_home//), on va pouvoir tenter une connexion ({{:icon_conn_1.png|Icon1}} et {{:icon_conn_2.png|Icon2}}) grâce à [[protocole_json#get_home|l'API JSON]]. L'API JSON est a **privilégier** dans tous les cas, par rapport à l'API TCP, car le nombre de requêtes est moins important en HTTP/JSON. Il y a une petite différence à adopter entre le mode "local" et le mode "distant" (voir la partie 
 +
 +Si une erreur survient (problème de connexion à Internet, pas de réponse de calaos.fr, ...) lors de la connexion il faudra alors déterminer si une connexion Wifi au réseau local est disponible et tenter une recherche d'une centrale domotique sur le réseau local {{:icon_conn_3.png|Icon3}}.
 +
 +En cas d'échec, la connexion sera alors impossible et un message d'erreur devra être affiché {{:icon_conn_4.png|Icon4}}.
 +
 +===== Mode local/Mode Distant =====
 +
 +Dans une application mobile, le nombre de requêtes doit être optimisé pour garantir un chargement rapide, ainsi qu'une autonomie correcte de l'appareil. Il faudra donc toujours privilégier [[protocole_json#get_home|le protocole HTTP/JSON]]. Il y a cependant une différence important à prendre en compte lorsque que l'on est connecté à la centrale sur le réseau local.
 +
 +==== Mise à jour des états ====
 +
 +L'application doit lors de son lancement "charger" la configuration de la maison (voir [[protocole_json#get_home|le protocole HTTP/JSON]]). Une fois la maison chargé, l'interface de l'application devra refléter en continu les différents états des éléments. Par ex, si une lumière s'allume (change d'état), l'application devra automatiquement refléter son état sur l'interface **en temps réel**. 
 +
 +=== Polling JSON ===
 +
 +Pour cela il y a 2 méthodes disponibles, la première consiste à effectuer régulièrement
 +[[protocole_json#get_state|une demande d'état]] de l'élément (un [[http://en.wikipedia.org/wiki/Polling_(computer_science)|polling]]).
 +
 +=== Mode Listen (PUSH) ===
 +
 +Une autre méthode est disponible grâce au [[protocole_tcp#listen|protocole TCP]], il s'agit du mode //listen//. Le mode listen mets la connexion TCP en écoute et c'est non plus l'application qui va demander l'état des éléments, mais la centrale qui va envoyer **tous les changements d'états**. Ce mode ne peut être utilisé que sur les connexions réseau local, et non en mode distant.