PPE : La Porte Intelligente Emmanuel Cabri Thomas Meyers Charles Moreau Antoine Beck Session 2011/2012 Lycée Raynouard Académie de Nice
OUQUONVOITOUT CHEZ MA avec toutes les parties dAntoine (en relief)
La réalisation
Partie plus précise dAntoine (Quand on zoom)
Carte E-Blocks
Programmation de la Matrix E-blocks Programmée via FlowCode V4 Présentation de la structure et des macros
-1: Acquisition du code clavier -2: Envoi de la requête HTTP -3: Traitement des données reçues -4: Actions résultantes MERDE
-4 Chiffres -Un bouton de validation (#) -Un bouton de réinitialisation (*) -Pas dappui sur deux touches simultanément -Délai dattente court entre les acquisitions, sans double acquisition si appui long -Affichage du chiffre sur lécran, remplacé par une étoile après 500 ms -Acquisition du code clavier -Envoi de la requête HTTP -Traitement des données reçues -Actions résultantes
-Ouverture de la connexion entre la carte et le serveur via le routeur -Envoi dune requête HTTP -Réception de la réponse -Stockage des données reçues dans une variable -Acquisition du code clavier -Envoi de la requête HTTP -Traitement des données reçues -Actions résultantes
-Manipulation des données afin de les transformer en variables exploitables -Comparaison de la valeur obtenue avec des valeurs de référence -Exploitation du résultat -Acquisition du code clavier -Envoi de la requête HTTP -Traitement des données reçues -Actions résultantes
-Acquisition du code clavier -Envoi de la requête HTTP -Traitement des données reçues -Actions résultantes Trois cas de figures possibles: - Le code nexiste pas dans la base de données du serveur, linformation est alors indiquée sur lécran - Le code existe, mais nest pas tapé à lheure daccès autorisé, la porte ne souvre toujours pas, lécran affiche un message derreur (différent du premier cas) - Le code existe, et est tapé dans la bonne plage horaire, le système envoie alors un ordre permettant dalimenter la gâche et douvrir la porte pendant 10 secondes
COMMUNICATION RESEAU CLIENT/SERVEUR Analyse du réseau via Wireshark Notions sur les protocoles de communication réseau
-Problème posé -Utilisation de Wireshark - Solution au problème Lors de nos tests nous avons remarqué que la communication entre la carte (le client) et le serveur posait des problèmes. Notre carte envoyait une requête HTTP et parfois ne recevait aucune réponse de la part du serveur, ou alors au bout de 10 minutes…
Pour tenter de résoudre ce problème, nous allons utiliser un logiciel installé sur le serveur pour analyser les paquets transférés entre le serveur et la carte: Wireshark. Nous allons donc étudier tout ce qui se passe entre ladresse IP (Serveur) : Et ladresse IP (Carte) : Nous avons pris deux captures décrans de Wireshark: - une capture témoin où la carte reçoit une réponse du serveur (code ok ou pas) - une capture où, justement, le serveur ne répond pas… -Problème posé -Utilisation de Wireshark - Solution au problème
-Présentation de Wireshark -Protocoles TCP et HTTP -Première capture : quand ça marche… -Seconde capture : limites du matériel -
-Présentation de Wireshark -Protocoles TCP et HTTP -Première capture : quand ça marche… -Seconde capture : limites du matériel -
Observations Le problème se situe au niveau du protocole TCP, le serveur semble refuser détablir la connexion (pas de réponse lors de la demande de synchronisation) Nous pensions que le problème était dû à la carte (module TCP/IP défectueux) -Problème posé - Utilisation de Wireshark - Solution au problème
Solution au problème : Un problème de socket Considérons la situation suivante: Lorsque quavec 2 navigateurs internet (Firefox et IE ici), on demande une ressource (page web) au même serveur avec la même machine, lIP reste la même, alors comment le serveur distingue Firefox dIE ? shema Un port source est généré par le navigateur à chaque requête, lIP suivie du port source constitue un socket unique. Ex: :80 Dans notre cas, le port restait unique (80) et donc le socket aussi ainsi les requêtes trop rapprochées étaient considérées comme une erreur par le serveur, et refusait alors détablir la connexion par sécurité.
Programmation du serveur Programmé en PHP sur un environnement Wamp (Apache/Zend Engine/MySQL) Présentation de linterface dutilisateur et dadministration
Présentation de la technologie PHP Interface et script dinteraction programmés en PHP. Le meilleur moyen dexpliquer le fonctionnement de PHP, cest encore de commencer par montrer le fonctionnement général du WEB avant son apparition puis de faire une comparaison.
Algorithme de génération dun nouveau code: Un exemple de programmation Les étapes de lalgorithme Lalgorithme détaillé
Génération aléatoire dun nombre entre 1000 et 9999 On vérifie quil ny a pas au moins 3 chiffres du code qui sont identiques On vérifie que le « code magique » na pas été généré. On vérifie que le code nest pas déjà utiliser par un autre utilisateur. Enfin, si tout ces critères sont réunis, le code est stocké dans une variable utilisable par la suite. Sinon, on recommence tout.
Lalgorithme de génération d un code NON -> CodeValide Tant que (PAS CodeValide) Code Aléatoire[1000 ; 9999] -> Code Chiffre des millier -> m Chiffre des centaines -> c Chiffre des dizaines -> d Chiffre des unités -> u Si ( Il ny a pas 3 chiffres identiques parmi m,c,d et u) NON -> CodeExiste Tant que( Il y a des codes dans la base ET PAS CodeExiste) Si ( CodeBDD = Code) OUI -> CodeExiste fin Si fin Tant que Si ( PAS CodeExiste) OUI -> CodeValide fin Si Fin Tant que
Bilan final Réponse proposée à la problématique posée: Bilan technique Bilan fonctionnel