GTCB Gestion Technique Centraliser d’un Bâtiment 24/04/2009 Lycée de la tourelle Mr. Kahila Mr. Klampas Mr. Marme GTCB Sommaire 1. Présentation A.Synoptique………………………………………………………… 03 B.Analyse……………………………………………………………… 05 2. Candidat A.Mr. Kahila………………………………………………………….. 07 B.Mr. Klampas………………………………………………………. 31 C.Mr. Marme…………………………………………………………. 53 3. Conception A.Intégration…………………………………………………………. 61 B.Cahier de test……………………………………………………… 62 4. Conclusion A.Bilan………………………………………………........................... 63 5. Annexe ………….……………………………………………….................................. 64 Candidat 1 Candidat 2 Candidat 3 Par Mr. Kahila, Mr Klampas, Mr Marme Page 2 GTCB 1. Présentation A.Synoptique L'objectif de ce projet est le développement d'un équipement à installer au sein du local technique d'un bâtiment. Cet objet technique, à connecter en Ethernet sur un routeur ADSL, doit permettre depuis un simple navigateur HTTP sur un PC connecté à Internet : le suivi en temps réel de la consommation d'électricité; le calcul en temps réel de la facture d'électricité; le commande de deux sorties TORs 500 mA / 12 V; la commande de deux fils pilotes de radiateurs électriques sur six ordres; le relevé de la température au sein du bâtiment; le relevé de la température à l'extérieur du bâtiment. un scénario hebdomadaire doit pouvoir être télécharger sur le système pour gérer les sorties et les deux fils pilotes par pas de 15 mn. Ces scénarios sont conçus depuis une interface WEB servie par un serveur APACHE exécuté sur un PC. Voici le schéma général du projet à réaliser : Par Mr. Kahila, Mr Klampas, Mr Marme Page 3 GTCB Chaque candidat devra réaliser plusieurs tâches visant à s’intégrer pour ne former qu’une seule application au final : 1. Candidat 1 ◦ ◦ Câbler la "téléinfo" compteur sur le SC12 Coder le module logiciel permettant d'extraire les index compteur EDF et l'intensité instantanée les plus récents -Tester puis valider le module logiciel permettant d'extraire les index compteur EDF et l'intensité instantanée les plus récents ◦ Coder le module logiciel permettant d'obtenir les températures intérieures et extérieures via le bus I2C -Tester puis valider le module logiciel permettant d'obtenir les températures intérieures et extérieures via le bus I2C ◦ Coder le module logiciel permettant de piloter les sorties TOR et les fils pilotes -Tester puis valider le module logiciel permettant de piloter les sorties TOR et les fils pilotes 2. Candidat 2 ◦ ◦ Permettre le pilotage des sorties TOR et des fils pilotes depuis un navigateur http Afficher les températures, l'intensité instantanée et le montant de la facture E.D.F. depuis un navigateur HTTP -Tester puis valider le module logiciel permettant de piloter les sorties TOR et les fils pilotes, d'afficher les températures, l'intensité instantanée et le montant de la facture E.D.F. ◦ Permettre la réception d'un scénario sur une socket serveur TCP -Tester le module logiciel permettant la réception d'un scénario sur une socket serveur TCP ◦ Permettre l'exécution du scénario -Tester puis valider le module logiciel permettant l'exécution du scénario 3. Candidat 3 ◦ Permettre l'envoi d'un scénario par une socket client TCP -Tester puis valider l'envoi d'un scénario par une socket client TCP ◦ Définir un scénario depuis un navigateur HTTP -Tester puis valider le module logiciel permettant de définir un scénario depuis un navigateur web Par Mr. Kahila, Mr Klampas, Mr Marme Page 4 GTCB B.Analyse Diagramme des cas d’utilisations Diagramme de transition Par Mr. Kahila, Mr Klampas, Mr Marme Page 5 GTCB Diagramme déploiement Par Mr. Kahila, Mr Klampas, Mr Marme Page 6 GTCB 2. Candidat B.Mr. Kahila II.Présentation B.Mes Objectifs ...................................................................... 8 C.Architecture Matériel......................................................... 9 D.Environnement logiciel..................................................... 15 III.Analyse B.Diagramme de séquence.................................................. 19 C.Diagramme d'état transition............................................. 19 D.Diagramme d'activité........................................................ 20 IV.Conception B.Spécifié technique............................................................ 21 C.Cahier de teste.................................................................. 23 D.Historisation du développement..................................... 26 E.Intégration......................................................................... 29 V.Conclusion B.Projet.................................................................................. 30 Par Mr. Kahila, Mr Klampas, Mr Marme Page 7 GTCB I.- Présentation A. - Mes Objectifs Représentation textuel : Dans le cadre du projet GTCB, le candidat numéro 1 doit : piloté les sorties mettre à la disposition du candidat numéro 2 les informations EDF et température. Pour obtenir ce resultat, il lui est proposé : deux capteur de température un compteur edf avec sortie télé-information paramétré et un kit beck Représentation imagé : Par Mr. Kahila, Mr Klampas, Mr Marme Page 8 GTCB B. - Architecture Matériel Kit beck La dk41 est composé d'une sc12 et d'un dk40 dont leur descriptif vous sera donnez par la suite. DK41 C’est un module du constructeur Allemand, disposant d'une mémoire RAM ROM de 512Kb chacune. Cet outil dispose des 8 E/S numérique TOR (tout ou rien), est connecté par Ethernet et intègre un système d'exploitation RTOS (Real Time Operating System). Par Mr. Kahila, Mr Klampas, Mr Marme Page 9 GTCB 1. Led programmable 2. Led trafic 3. 8 Entrées/Sorties programmable et alimentation 4. Leds d’états pour les Entrées/Sorties 5. IPC@CHIP SC 12 6. Connexion RJ 45 7. Port série EXT 8. Port série COM Environnement matériel des micro-modules : • Coeur 186 compatible PC • 2 liaisons série • E/S industrielles (CAN), Bus I2C • Liaison Ethernet 10/100baseT • Extension Bus PROCESSEUR SC12 CHIP 186-CPU 20MHz 512KB RAM 512KB Flash Ethernet Par Mr. Kahila, Mr Klampas, Mr Marme Page 10 GTCB Le SC12 fonctionne avec son système d’exploitation le RTOS (Real Time operating Système) de BIOS, c’est un système à noyau temps réel, avec une gestion de fichiers intégré ainsi que le protocole - TCP/IP : HTTP [CGI (Common Gateway Interface)], FTP, TELNET. Capteur de température DS1621 CARACTERISTIQUES Les mesures des températures vont de -55 ° C à +125 ° C Les données sont lues et écrites par le biais d'un câble série de 2 - interface . DESCRIPTION DES BROCHES 1. 4. 5. 6. 7. 8. SDA - 2 Liaison série de donnée entrée / sortie SCL - 2 Liaison série d'horloge Tout - Thermostat signal de sortie GND - La terre A2 - Adresse d'entrée de la puce A1 - Adresse d'entrée de la puce A0 - Adresse d'entrée de la puce VDD - Tension d'alimentation Compteur EDF 2. 3. Par Mr. Kahila, Mr Klampas, Mr Marme Page 11 GTCB Avant propos : zone de tarification : Par Mr. Kahila, Mr Klampas, Mr Marme Page 12 GTCB Sortie télé-information : Les informations sont transmises cycliquement en série sur la ligne. Chaque donnée transmise est précédée d'une étiquette permettant de l'identifier. L'ensemble des données transmises dépend de la programmation du compteur. Les groupes d'information inutiles, compte tenu du mode de fonctionnement programmé, ne sont pas émis. Par Mr. Kahila, Mr Klampas, Mr Marme Page 13 GTCB 2. Caractéristiques de la liaison Le principe de la communication est une modulation d'amplitude en tout ou rien d’une porteuse à 50 kHz. La logique est négative. - un bit émis à "0" correspond à la présence de porteuse pendant le temps correspondant. - un bit émis à "1" correspond à l'absence de porteuse pendant le temps correspondant. Après démodulation, on retrouve une liaison asynchrone classique dont les caractéristiques sont les suivantes: -> vitesse de transmission 1200 bits/s - codage de toutes les informations sous forme ASCII (affichable) -> 7 bits pour représenter un caractère ASCII -> 1 bit de parité, parité paire un bit de start avant chaque caractère <=> "0" logique un bit de stop après chaque caractère <=> "1" logique Cette liaison passe par une carte transformant la trame en : vitesse de transmission 19200 bits/s 8 bits pour représenter un caractère ASCII. Les sorties : en vue du cadre scolaire de ce projet les sorties commanderont aux mieux des leds. Par Mr. Kahila, Mr Klampas, Mr Marme Page 14 GTCB C.- Environnement logiciel Communication Ordinateur ( com1 ) dk41 – liaison série. Voici un tableau des commandes RTOS les plus utiles : • DIR nom de fichier Afficher le contenu d'un répertoire ( DIR HTTP ou DIR *.EXE ) • DEL nom de fichier Effacer un ou plusieurs fichiers ( DEL TEST.EXE ou DEL *.DAT ) • TYPE fichier Afficher le contenu d'un fichier dans la console ( TYPE CHIP.INI ) • REN fichier 1 fichier 2 Renommer un fichier, on donne l'ancien nom suivi du nouveau • MD répertoire Créer un répertoire ( Make Directory ) ex: MD TEST • CD répertoire Changer de répertoire ( CD TEST ) • RD répertoire Effacer un répertoire ( RD TEST ) • IP adresse Définir l'adresse IP du chip et désactive le DHCP • IPCFG Afficher la configuration IP • REBOOT Redémarrer le système • MEM Afficher les informations concernant la mémoire • HELP Afficher toutes les commandes console disponibles. Par Mr. Kahila, Mr Klampas, Mr Marme Page 15 GTCB Ce procédé de communication sera remplacé par telnet en raison de l'utilisation du port com de la dk41 La communication a été automatisé : cmd.bat Par Mr. Kahila, Mr Klampas, Mr Marme Page 16 GTCB Borland Création d’une première application. On peut se servir de l'IPC@CHIP comme d'un microcontrôleur classique en exécutant des programmes directement. Il faut alors dans ce cas exécuter le programme à la main sur le chip (en terminal ou Telnet) ou automatiser son exécution. Les programmes comme cela sont des exécutables écrits en langage C et compilés pour DOS 16 bits et pour microprocesseur 80186 sur un PC connecté sur le réseau ou directement par le port série, puis transférer le programme soit par FTP (le plus simple) soit par le port série. Les fonctions utilisées sont les fonctions classiques du C et nous avons utilisé les librairies fournies pour ce qui est de l'utilisation de fonctions particulières. Nous allons créer un petit programme utilisant la liaison série du module Beck SC12. Pour compiler les applications en C nous avons utilisé Borland C++ 5.02 car il est un des seul compilateur pouvant encore compiler pour des architectures de type 80186. Lors de la création d'une nouvelle application il faut paramétrer le projet avec quelques fonctions spéciales. La création du projet : File/New Project avec les paramètres ci-dessous : Par Mr. Kahila, Mr Klampas, Mr Marme Page 17 GTCB On fixe ensuite les options pour le projet, en ce qui concerne le type de processeur et les répertoires : Par la suite une fois le programme terminer Borland c++ nous ouvre une fenêtre postmake qui n'est autre qu'un petit outil appelé par les IDE à chaque fois qu'un projet a été construit. Postmake peut alors transférer à la dk41 via FTP et le lancer par une terminal pour contrôler l'émission de l'exécutable. Par Mr. Kahila, Mr Klampas, Mr Marme Page 18 GTCB II.- Annalyse A– B– Par Mr. Kahila, Mr Klampas, Mr Marme Page 19 GTCB C– Par Mr. Kahila, Mr Klampas, Mr Marme Page 20 GTCB III.3 Mise en place A. - Spécifié technique Le compteur EDF Après démodulation par la carte la trame à pour caractéristiques : baud: 19200L, pas de parité, octet sur 8 bits, aucun contrôle de flux. La trame une fois réceptionner contiendra : ADCO, OPTARIF, ISOUSC, HCHC, HCHP, PTEC, IINST, IMAX, PAPP, HHPHC, MOTDETAT. Ces entêtes seront suivi de la donnée et la fin de chaque il y aura un checksum à valider. Les DS1621 Ces deux capteurs de températures fonctionnent sur le principe de l'i2c et par le biais d'un câblage ou les adresses suivantes : INT = 0x90; EXT = 0x9e; Ensuite il faut lancer un processus de configuration afin de les initialiser en mode continue dès les données doivent être : CONFIGURATION 0xAC INITIALISATION EN MODE CONTINU 0x00 La dk41 3 parties sont ici utiliser la premier propre aux pios, la seconde portant sur sda et scl sur le ext et la dernier à la rs232 sur le port com. - les pios : pfe_enable_pcs( « » ); permet d'initialiser les sorties. hal_write_pio( « » , « » ); pour initialiser une sortie à un état rtx_sleep_time(« » ); pour être que l'état à bien été prix en compte. Par Mr. Kahila, Mr Klampas, Mr Marme Page 21 GTCB - port ext : le câble RJ12 standard avec caractéristique : (fils) (sc12) - bleu....................................... --> masse - noir = rouge --> PIO7........... --> SCL - vert = vert --> PIO8.............. --> SDA Configuration logiciel : Les pios 7 et 8 sont respectivement scl et sda dès lors : - port com : Par Mr. Kahila, Mr Klampas, Mr Marme Page 22 GTCB Configuration logiciel : Le port doit être initialiser en mode rs232 : B. - Cahier de teste Pilotage des sorties Pour piloté les sorties les commandes hal-write_pio seront utiliser une temporisation d'un cours délai est souhaité afin que la modification de l'état de sortie soit prix en compte. Afin de valider dans un premier temps ou utilise la commande pio pour regarder l'état avant manipulation et après manipulation. Par la suite et en vu de cadre scolaire du projet les fils pilotes et sortie tor comme précédemment citée seront remplacée par des leds des lors, la manipulation de sortie devient donc visuel. communication rs232 Par Mr. Kahila, Mr Klampas, Mr Marme Page 23 GTCB Âpres l'initialisation du port com, on le met en réception : Et on recoit les données : Avec le port com de la dk41 branché sur le port com d'un ordinateur sous wwindows initialiser en sortie : baud: 19200L, pas de parité, octet sur 8 bits, aucun contrôle de flux. Un exécutable provenant d'une compilation de programme C émet en continue le caractère « A » ( 0x41 ). Connection et réception ok. Par Mr. Kahila, Mr Klampas, Mr Marme Page 24 GTCB I2C Dans le cadre du test i2c nous avons utiliser un pc8574A afin de vérifié que le start, stop ,émission et réception qui sont commune à tout module i2c. Par Mr. Kahila, Mr Klampas, Mr Marme Page 25 GTCB C.- Historisation du développement Mise en place voir annexe candidat 1 numéro 1 CODE DE DEMANDE DE TEMPERATURE : data1 contient le poids fort et data2 le poids faible L'ensemble une fois traité donne un float à 10 e-1 avec pas de 0,5. CODE D'ANNALYSE DE TRAME RS232 : Après réception de la trame un contrôle dit de parité ( checksum ) permettra de validé chaque ligne et donc la totalité de la trame. Par Mr. Kahila, Mr Klampas, Mr Marme Page 26 GTCB CODE De calcul des tarifs heure creuse heure pleine : Ligne du buffer propre aux données edf : Ligne du buffer propre aux température : CODE D'enregistrement : Par Mr. Kahila, Mr Klampas, Mr Marme Page 27 GTCB gestion de temps En vue du souci qui était apparu en début de projet à savoir la carte de démodulation non disponible j'ai donc commencer par l'i2c puis je suis revenu sur le compteur edf et à l'heure ou j'écris ces lignes les sorties (pios). Par Mr. Kahila, Mr Klampas, Mr Marme Page 28 GTCB D.– Intégration Dans le cadre de mon développement l'aspect intégration c'est fait vite remarqué. En effet le candidat à besoin d'obtenir l'ensemble des données rapidement afin de les afficher sur la page internet. Après consultation, il a été décidé qu'une seule page affichera les informations dites de relevé. En dès lors l'ensemble des informations seront alors stocké dans un fichier texte ( .txt ) . À savoir la température intérieurs et extérieurs ainsi les indices EDF intensité instantanée et indice de la consommation ttc heure creuse heure pleine tel que : -heure pleine: Euros -heure creuse: Euros Intensité instantanée : - -Ampères. Valeurs des températures : Intérieur 'C & Extérieur 'C En vue du formatage des fichiers texte sur la dk41 ainsi que de notre objectif à savoir : près à être afficher des caractères tel que : <HR> : séparation <br> saut de ligne sont utiliser. De plus en vue des fonctions C disponibles et du caractère de fin de chaînes instancié dans le fichier texte en cas d'espace ces derniers seront remplacer par un « _ » . Par conséquence le fichier final ressemble alors à : -heure_pleine:_ « » _Euros<br/>_-heure_creuse:_ « » _Euros<br/><br/>__Intensifie_instantanée_:<br/>_- « » Ampères. <br/><br/>Valeurs_des_températures_:_Intérieur_ « » _'C_&_Extérieur_ « » _'C_<br/> Par Mr. Kahila, Mr Klampas, Mr Marme Page 29 GTCB IV.- Conclusion A.Projet En terme purement scolaire ce projet aborde différent aspect évoqué en cours sur le communication réseau et matériel ainsi qu'une couche logiciel intéressante. À l'heure ou j'écris mes derniers lignes, le projet n'est pas terminer et ma partie non plus, il me reste encore a validé le pilotage des sorties. D'un point de vue strictement personnelle, j'ai pu travaillé dans une équipe ou contrairement à mon stage l'ambiance était bonne enfant, le rythme était saint et le travail au rendez vous. Sans que l'on est a ce motivé mutuellement. Néanmoins deux d'entre nous n'ayant pas été dans leur domaine de qualification, il y a eu beaucoup d'entraide et de dynamisme. Par Mr. Kahila, Mr Klampas, Mr Marme Page 30 GTCB B.Mr. Klampas Alexis 1. Moyens techniques………..………………………………….…………….…………….……… 33 Introduction……………………..…………………..……………………………….…………….…………….……… 33 Chiffre clé du DK41……………………..…………………….…………………….…………….…………….………35 Le BIOS (Basic Input Output System) ……………………..……………….…………….…………….………35 Interface de communication/Gestion………..……………..………………………………….…………….…………….………36 A. Le port série……………………..…………………..……………………….…………….…………..……… 36 B. Liaison série……………………..…………………..……………………….…………….…………..………37 C. Liaison série……………………..…………………..……………………….…………….………….….……37 D. Le port Ethernet………………………………..………………………………….……………..………….. 37 E. Telnet……………………..……………………………………………….…………….…………….………….. 38 Le système d’exploitation RTOS Le chip……………………..…………………..………………………………….…………….……………….……… 38 L’hyper terminal……………………..…………………..………………………………….…………..….……… 39 2. Les logiciels……………………..…………………..………………………………….………..……. 43 a. L'environnement de développement BC5……………………..……………. 43 b. Mozilla firefox & Internet Explorer………..……..………………………………. 45 3. Description du développement……………………..………………………………. 46 Le langage C ……………………………………………………………………………………………………………. 46 Le CGI ………………………………………………………………………………………………………………………. 47 Le C++………………………………………………………………………………………………………………………. 48 Les sockets………………………………………………………………………………………………………………. 49 Par Mr. Kahila, Mr Klampas, Mr Marme Page 31 GTCB Les Morceaux de codes importants A. Installer les Fonctions CGI………………………………………………………………………………………………………. 50 B. Utiliser les Fonctions CGI………………………………………………………………………………………………..………. 51 C. Stocker et afficher des pages en CGI………………………………………………………………………..……………. 51 D. Créer et redémarrer les tâches…………………………………………………………………………………….…………. 51 E. Supprimer les fonctions CGI……………………………………………………………………………………………………. 52 Par Mr. Kahila, Mr Klampas, Mr Marme Page 32 GTCB 1. Moyens techniques A notre disposition, nous utiliserons les matériels suivants : un KIT IPC@CHIP de chez Beck Introduction Le DK41 est un produit de la société allemande Beck. Beck est un membre du groupe Festo qui travaille notamment dans l'automatisation. Beck est spécialisé dans la conception de PC embarqués. Le DK41 est un kit. C'est l'assemblage d'un SC12 et d'un DK40, ainsi que l'addition de quelques connectiques. L' IPC@CHIP est une solution complète de PC embarqué orienté pour un usage en réseau. Il possède de nombreuses fonctionnalités TCP/IP : serveur Web HTTP (Hyper Text Tranfert Protocol), serveur FTP (File transfert Protocol), serveur Telnet, serveur TFTP (Trivial File Transfert Protocol), client DHCP et serveur de configuration UDP (User Datagram Protocol) qui permet d’effectuer des mises à jour du système. Plus précisément, l’IPC@CHIP un système on Chip, c'est à dire un système complet incluant le hardware ainsi que le software. Il est livré comme module Dil 32 avec système d'exploitation pré installé prêt à l'emploie. Aussi bien dans le cas du système d'évaluation DK41 ainsi que pour chaque circuit réalisé, l'IPC@CHIP est prêt à l'utilisation dés sa mise sous tension. Il se manifeste par la connexion Ethernet par Telnet ou par son port série par un message de sollicitation traditionnel. Le serveur FTP ainsi que le serveur HTTP sont prêt à recevoir leurs commandes. Après le téléchargement de quelques pages html votre serveur Web embarqué se présente déjà avec son look souhaité. Par Mr. Kahila, Mr Klampas, Mr Marme Page 33 GTCB L'IPC@CHIP n'est pas uniquement un processeur de communication universel équipé de 2 ports séries et un port Ethernet. Il dispose également des interfaces E/S communes aux microcontrôleurs par lesquelles il peut être raccordé à un autre processeur s’il n'est pas lui même utilisé comme processeur de commande. Avec ses 14 broches E/S bidirectionnelles sa fonctionnalité multiple s'étend jusqu'au bus d'adresses data avec Chip select correspondant ainsi que naturellement les entrées compteur et interruption. Un Maître I2C inclus dans le firmware complète ses possibilités. Ici, le module DK40 pour montrer sa taille (5.3*6.1*2cm): Ici, le microcontrôleur SC12 intégré au dk40 pour en faire un dk41: Par Mr. Kahila, Mr Klampas, Mr Marme Page 34 GTCB Chiffre clé du DK41 Processeur : 80186 cadencé à 20 MHz. Mémoire : -512 Ko de RAM (Random Access Memory) -512 Ko de Flash divisée en 2: -256 Ko sont destinés au stockage des fichiers et programmes -256 Ko sont destinés au système d’exploitation Connectique : -8 ports d'entrée/sortie -2 ports séries (COM et EXT) -1 prise Ethernet 10base-T -1 LED programmable -1 LED de trafic Ethernet -1 transformateur 15-30V / 5V. Le BIOS (Basic Input Output System) Les différentes versions du bios ci dessous permettent une mise à jour du DK40 selon l’usage souhaité. Par Mr. Kahila, Mr Klampas, Mr Marme Page 35 GTCB Interface de communication/Gestion Composants du dk41: Le DK41 possède 3 interfaces de communications dont 2 séries TTL (Transistor-Transistor Logic) : SM14 pour le RS232 et SM35 pour le RS485. La troisième interface de communication correspond à la connexion réseau Ethernet via le port 10Base-T avec PHY par embase RJ45. C'est à partir de cette connexion que nous allons pouvoir dialoguer avec notre serveur embarqué via Internet et agir sur celui-ci. La liaison série servira essentiellement à la transmission de données du compteur EDF A. Le port série L'interface série est une interface asynchrone, ce qui signifie que le signal de cette interface n'est pas synchronisé avec celui d'un bus quelconque. Les bits des données sont envoyés les uns après les autres. Un caractère est composé d'un ensemble de bit. C'est généralement une matrice de 8x8 bits codé par une valeur. Cette valeur est comprise entre 0 et 255 et elle est stockée sur 1 octet. Chaque caractère est délimité par un signal de début qui est un bit à 0 et par signal de fin standard qui peut correspondre à un ou deux bits de fin, cela permet d'indiquer que le caractère a été envoyé. L'interface asynchrone est orienté caractère, c'est à dire que l'on doit utiliser les signaux de début et de fin pour identifier un caractère. L'inconvénient de ce processus c'est qu'il augmente la duré des transferts .En effet pour chaque ligne de 8 bits il faut au minimum 2 bits. Par Mr. Kahila, Mr Klampas, Mr Marme Page 36 GTCB B. Liaison série Dans une liaison en série, les données sont envoyées bit par bit sur la voie de transmission. Toutefois, étant donné que la plupart des processeurs traitent les informations de façon parallèle, il s'agit de transformer des données arrivant de façon parallèle en données en série au niveau de l'émetteur, et inversement au niveau du récepteur. C. Le port Ethernet Ethernet (norme IEEE 802.3) est une technologie de réseau local basé sur le principe suivant : Toutes les machines du réseau Ethernet sont connectées à une même ligne de communication, constituée de câbles cylindriques. Ethernet est une technologie de réseau très utilisée car le prix de revient d'un tel réseau n'est pas élevé. Tous les ordinateurs d'un réseau Ethernet sont reliés à une même ligne de transmission, la communication se fait à l'aide d'un protocole appelé CSMA/CD (Carrier Sense Multiple Access with Collision Detect). Il s'agit d'un protocole d'accès multiple avec surveillance de porteuse (Carrier Sense) et détection de collision. Avec ce protocole toute machine est autorisée à émettre sur la ligne à n'importe quel moment et sans notion de priorité entre les machines. D. Telnet Telnet est un protocole standard d’émulation de terminal. Une session est établie entre un poste de travail (client Telnet) et une machine distante (serveur Telnet). Le protocole Telnet maintient sur une connexion TCP afin de transmettre des données au format ASCII codé sur 8 bits par le client et puis elle sera exécutée par le serveur donc il fournit un système orienté de communication, bidirectionnel (half-duplex). Par Mr. Kahila, Mr Klampas, Mr Marme Page 37 GTCB Le système d’exploitation RTOS L'avantage du SC12 réside dans son noyau temps réel multitâche orchestré par son système d’exploitation RTOS (Real Time Operating System) avec une gestion de fichiers intégrés ainsi que les protocoles TCP/IP, PPP, HTTP, FTP, Telnet, POP3, SMTP et DHCP. Celui-ci est propre à l'IPC@CHIP qui comporte une API (Application Programmer Interface) complète autorisant un accès aisé à toutes ses fonctionnalités mais aussi un accès simplifié aux services TCP/IP. La figure ci-dessous représente l’architecture du RTOS : Le chip CHIP.INI se trouve dans l’arborescence du module A:/, il permet l’intégration des paramètre de communication tel que l’adresse IP (192.168.109.63) du module, la vitesse de transfert du port série (19200) et permet d’activer le protocole telnet, ftp, Internet, etc. Ce fichier est modifiable. Par Mr. Kahila, Mr Klampas, Mr Marme Page 38 GTCB Ci-dessus, le chip.ini tel que nous l’avons configuré Le fichier AUTOEXEC.BAT peut contenir des commandes ou des programmes à exécuter lors du démarrage du système. L’hyper terminal Vous pouvez créer et enregistrer plusieurs connexions dans HyperTerminal. Chaque connexion peut avoir sa propre configuration unique : numéro de téléphone, paramètres de port tels que nombre d'octets par seconde (bps), vérifications de parité et adresse TCP/IP hôte Par Mr. Kahila, Mr Klampas, Mr Marme Page 39 GTCB Une fois cette configuration effectuer nous obtenons sur l’hyper terminal ceci : Pour visualiser ce que l’on a dans le DK41 il nous suffit de faire quelques commandes qui ressemblent aux commandes dos. Ci-dessous, un simple dir pour lister le répertoire : Par Mr. Kahila, Mr Klampas, Mr Marme Page 40 GTCB Une action sur entrer nous donne l’invite de commande. Ci-dessous un récapitulatif des commandes les plus utiles de RTOS le système d’exploitation embarqué. DEL nom de fichier Effacer un ou plusieurs fichiers ( DEL TEST.EXE ou DEL *.DAT ) DIR nom de fichier Afficher le contenu d'un répertoire ( DIR HTTP ou DIR *.EXE ) TYPE fichier Afficher le contenu d'un fichier dans la console ( TYPE CHIP.INI ) COPY fichier 1 fichier 2 Copier un fichier, on donne le nom du fichier source et de destination REN fichier 1 fichier 2 Renommer un fichier, on donne l'ancien nom suivi du nouveau MD répertoire Créer un répertoire ( Make Directory ) ex: MD TEST XTRANS Recevoir / envoyer des fichiers avec le protocole XMODEM par port série ( XTRANS COM R chip.ini on reçoit chip.ini par le port COM ) CD répertoire Changer de répertoire ( CD TEST ) RD répertoire Effacer un répertoire ( RD TEST ) IW Lire l'état d'une entrée de 16 bits à une adresse donnée ( IW 101 ) IB Lire l'état d'une entrée de 8 bits à une adresse donnée ( IB 101 ) OW Affecter une valeur à une sortie de 16 bits à une adresse donnée ( OW 100 F ) OB Affecter une valeur à une sortie de 8 bits à une adresse donnée ( OB 100 F ) PCS Active une ligne de chip select ( Valeurs possibles: 1,2,3,4,5 ou 6 ex: PCS 1 ) ALE 0/1 Activer la pin Adress Latch Enable ( ALE 1 ) IP adresse Définir l'adresse IP du chip et désactive le DHCP NETMASK masque Définir le masque de sous réseau ( désactive également le DHCP ) GATEWAY adresse Définir l'adresse de la passerelle ( ces 3 infos sont stockées dans CHIP.INI ) DHCP 0/1 Activer / Désactiver le client DHCP IPETH Redémarrer l'interface ethernet sans avoir à redémarrer tout le système TCPIPMEM Afficher la quantité de mémoire utilisée par TCPIP FTP 0/1 Activer / Désactiver le serveur FTP ( info stockée dans CHIP.INI ) IPCFG Afficher la configuration IP Par Mr. Kahila, Mr Klampas, Mr Marme Page 41 GTCB REBOOT Redémarrer le système MEM Afficher les informations concernant la mémoire CGISTAT Lister tous les CGI qui sont exécutés CLOSETELNET Clore une session Telnet WEBSTAT Afficher les paramètres du serveur Web PING Tester la connexion avec la commande ICMP ping TASKS Lister toutes les tâches qui sont actives HELP Afficher toutes les commandes console disponibles Par Mr. Kahila, Mr Klampas, Mr Marme Page 42 GTCB 2. Les logiciels a. L'environnement de développement BC5 Borland Software Corporation est un éditeur de logiciels basé à Austin, Texas. L’entreprise a été fondée en 1983 par Philippe Kahn et Spencer Ozawa. Niels Jensen, Ole Rasmussen et Mogens Glad ont également été impliqués au premier plan dans cette création. Borland est réputée pour ses EDI (Environnements de Développement Intégrés) et ses outils de développement logiciel. Borland C++ 5.02 est un environnement de développement basé sur OWL (Object Windows Librairie). Cette version intégrant toutes les spécificités permet de programmer des microcontrôleurs comme le kit DK41 IPC@CHIP. Les programmes doivent être compilés en 16 Bits DOS compatible avec le processeur 80186. Important : il faut choisir DOS STANDARD comme type de plateforme. Si No Exceptions est décoché Target model permet de choisir la taille mémoire de la cible cela permet d’optimiser en taille de la compilation. Dans mon cas, comme j’utilise un modèle large je suis obligé de mettre Large Par Mr. Kahila, Mr Klampas, Mr Marme La taille du code sera plus importante et n’importe quels exécutable aura au minimum 26 ko. Laisser décocher si on veut faire du débogage. Page 43 GTCB Clibv200bin contient les ***.h définissant les fonctions types : Ne pas oublier d’ajouter la clib200l.lib avec l pour LARGE (Modèle du dk41): Il y a aussi le programme associé POSTMAKE qui envoi le code compilé par le biais de FTP, il ouvre une fenêtre Telnet afin de vérifier le bon déroulement. Configuration de postmake Par Mr. Kahila, Mr Klampas, Mr Marme Page 44 GTCB b. Mozilla firefox & Internet Explorer On utilisera ces différents navigateur pour valider les partie et vérifier les modules de codes. Mozilla Firefox est un navigateur Web gratuit, développé et distribué par la Mozilla Foundation aidée de centaines de bénévoles grâce aux méthodes de développement du logiciel libre/Open Source et à la liberté du code source. Firefox est à l'origine un programme dérivé du logiciel Mozilla, mais reprenant uniquement les fonctions de navigation de ce dernier. Ce logiciel multiplateforme est compatible avec diverses versions de Microsoft Windows, Mac OS X et GNU/Linux. Il a été porté sur d'autres systèmes d'exploitation, ce qui est rendu possible par la mise à disposition de son code source sous trois licences libres différentes en même temps (MPL, GPL et LGPL). Windows Internet Explorer, parfois abrégé IE ou plus simplement Internet Explorer, est le navigateur web de Microsoft, installé par défaut avec Windows. Depuis qu'il a détrôné Netscape Navigator à la fin des années 1990, c'est le navigateur Web le plus utilisé au monde. Aujourd'hui, son principal concurrent est Mozilla Firefox. Par Mr. Kahila, Mr Klampas, Mr Marme Page 45 GTCB 3. Description du développement Le langage C Le C est en informatique un langage de programmation impératif conçu pour la programmation système. Inventé au début des années 1970 avec UNIX, C est devenu un des langages les plus utilisés. De nombreux langages plus modernes comme C++, PHP et Java reprennent des aspects de C. Le langage C peut être qualifié de bas niveau ou peu typé dans le sens où le langage est conçu pour permettre la manipulation directe des mots machine. Il propose un éventail de types entiers et flottants qui correspondent directement aux types supportés par le processeur. Il fait en outre un usage intensif des adresses mémoires avec la notion de pointeur. Il a une notion de type composé, mais ne propose aucune opération qui traite directement des objets de plus haut niveau (fichier informatique, chaîne de caractères, liste…). Ces types plus évolués doivent être traités en manipulant des pointeurs et des types composés. De même, le langage ne propose pas en standard la gestion de la programmation orientée objet, ni de mécanisme d'exception, ou de traitement multitâche. Il existe des fonctions standards pour gérer les entrées-sorties et les chaînes de caractères, mais contrairement à d'autres langages, aucun opérateur spécifique pour améliorer l'ergonomie. Ceci rend aisé le remplacement des fonctions standards par des fonctions spécifiquement conçues pour un programme donné. Ces caractéristiques en font un langage privilégié quand on cherche à maîtriser les ressources utilisées, le code assembleur généré par les compilateurs étant relativement prévisible et parfois même optimal sur les machines d'architecture RISC à grand nombre de registres. Ce langage est donc extrêmement utilisé dans des domaines comme la programmation embarquée sur microcontrôleurs, les calculs intensifs, l'écriture de systèmes d'exploitation et tous les modules où la rapidité de traitement est importante. En contrepartie, la mise au point de programmes en C, surtout s'ils utilisent des structures de données complexes, est plus difficile qu'avec des langages de plus haut niveau. En effet, dans un souci de performance le langage C impose à l'utilisateur de programmer certains traitements (libération de la mémoire, vérification de la validité des index sur les tableaux…) qui sont pris en charge automatiquement dans les langages de haut niveau. Remarque : Afin de réaliser ce projet il est impératif de connaître le langage C Par Mr. Kahila, Mr Klampas, Mr Marme Page 46 GTCB Le CGI La Common Gateway Interface (littéralement « Interface passerelle commune »), généralement abrégée CGI, est une interface normalisée utilisée par les serveurs HTTP. Ce dernier, au lieu d'envoyer le contenu d'un fichier (page HTML, image...), exécute un programme puis retourne le contenu généré, comme s'il s'agissait d'un contenu de fichier. CGI est le standard industriel qui indique comment transmettre la requête du serveur HTTP au programme et comment récupérer la réponse générée. CGI permet de passer des paramètres au programme, de telle manière qu'il puisse en tenir compte pour générer les données. Un exemple classique de paramètre est la chaîne de caractères contenant les termes recherchés auprès d'un moteur de recherche. Une des caractéristiques de l'interface CGI est d'être indépendante de tout langage. Même si le langage Perl a historiquement été souvent utilisé pour en écrire, il est possible d'écrire un programme CGI en C, Python, Gambas, PHP, en script shell, en VB ou en tout autre langage de programmation. Comme cette technologie requiert qu'une nouvelle copie du programme soit lancée à chaque requête, elle surcharge rapidement les serveurs. Ceci a eu pour effet la création d'autres technologies plus flexibles et efficaces. Une solution est d'intégrer les langages directement dans le serveur HTTP sous forme de modules, ceci nécessitant une adaptation bien plus lourde des interpréteurs et qui est propre au serveur HTTP. C'est le cas avec Apache pour des langages couramment employés pour les applications Web, comme PHP (configuré en module). Par Mr. Kahila, Mr Klampas, Mr Marme Page 47 GTCB Exemple de code CGi en C : static char HtmlPageHead[] = "<HTML><HEAD><TITLE> BeckDK40 </TITLE></HEAD>" "<BODY BGCOLOR=\"#006600\">" "<IMG SRC=\"beck.gif\" ALIGN=\"CENTER\" ALT=\"BECK\">" "<BR>" "<CENTER>" "<H1>Bienvenue sur Le centre de gestion de la DK40</H1>" "<HR size=0>" "</CENTER>" ; Le C++ Bjarne Stroustrup a développé C++ au cours des années 1980, alors qu'il travaillait dans le laboratoire de recherche Bell d'AT&T. Il s'agissait en l'occurrence d'améliorer le langage C. Il l'avait d'ailleurs nommé C with classes (C avec des classes). Les premières améliorations se concrétisèrent donc par la prise en charge des classes, ainsi que par de nombreuses autres fonctionnalités comme les fonctions virtuelles, la surcharge des opérateurs, l'héritage (simple ou multiple), les « templates », la gestion des exceptions, etc. Le C++ est un langage de programmation permettant la programmation sous de multiples paradigmes comme la programmation procédurale, la programmation orientée objet et la programmation générique. C++ est actuellement le 3e langage le plus utilisé au monde. Le langage C++ n'appartient à personne et par conséquent n'importe qui peut l'utiliser sans besoin d'une autorisation ou obligation de payer pour avoir le droit d'utilisation. Par Mr. Kahila, Mr Klampas, Mr Marme Page 48 GTCB Les sockets La notion de sockets a été introduite dans les distributions de Berkeley (un système de type UNIX, dont beaucoup de distributions actuelles utilisent des morceaux de code). Il s'agit d'un modèle permettant la communication inter processus (IPC - Inter Process Communication) afin de permettre à divers processus de communiquer aussi bien sur une même machine qu'à travers un réseau TCP/IP. On distingue ainsi deux modes de communication : Le mode connecté (comparable à une communication téléphonique), utilisant le protocole TCP. Dans ce mode de communication, une connexion durable est établie entre les deux processus, de telle façon que l'adresse de destination n'est pas nécessaire à chaque envoi de données. Le mode non connecté (analogue à une communication par courrier), utilisant le protocole UDP. Ce mode nécessite l'adresse de destination à chaque envoi, et aucun accusé de réception n'est donné. On s’intéressera au mode connecté donc TCP : On devra utiliser les sockets pour envoyer, réceptionner le scénario qui nous permettra de piloter les sorties TOR et fils pilotes du Dk41. La socket client sera sur le serveur Linux. La socket serveur sera exécutée sur la dk41. Par Mr. Kahila, Mr Klampas, Mr Marme Page 49 GTCB Les morceaux de codes importants A. Installer les Fonctions CGI /* initialise CGI_entry process */ processexample.PathPtr = ProcessName; /*noms de la page */ processexample.method = CgiHttpPost; /*methode */ processexample.CgiFuncPtr = Process_Func; /*nom de la fonction */ cgiptr = &processexample; /* pointeur à l’adresse de la structure */ inregs.h.ah = CGI_INSTALL; inregs.x.dx = FP_SEG(cgiptr); inregs.x.si = FP_OFF(cgiptr); int86(CGIVECT,&inregs,&outregs); if(outregs.x.dx == (unsigned int)CGI_ERROR) /* Test si il y a erreur à l’installation */ { printf("\r\nInstalling CGI function %s failed --> exit program\r\n",processexample.PathPtr); return 0; } B. Utiliser les Fonctions CGI void huge _pascal scenario_Func(rpCgiPtr CgiRequest) /* Page 1 */ void huge _pascal Submit_Func(rpCgiPtr CgiRequest) /* Page 2 */ void huge _pascal Process_Func(rpCgiPtr CgiRequest) /* Page 3 */ C’est dans ces fonction qu’on construit les pages Html, récupère les arguments du navigateur, stocke les informations… Par Mr. Kahila, Mr Klampas, Mr Marme Page 50 GTCB C. Stocker et afficher des pages en CGI static char HtmlPageTail[ ] = "<P><A HREF=\"submitexample\">Retour à la page Submitexample</A></P>" "<HR size=0>" "<p align=center><SMALL><EM>&copy BECK IPC GmbH, 2009</EM>" "</BODY>" "</HTML>"; memset(ProcessPageBuffer, 0, 2048); strcpy(ProcessPageBuffer, HtmlPageTail); //On récupère les arguments CgiRequest->fHttpResponse CgiRequest->fDataType = CgiHttpOk; /* HTTP 200 OK */ = CGIDataTypeHtml; /* text/html */ CgiRequest->fResponseBufferPtr = ProcessPageBuffer; /*Adresse de la page */ CgiRequest->fResponseBufferLength = strlen(ProcessPageBuffer); /* Taille */ Ici, on «vide» la page ProcessPageBuffer puis on met les informations de la page HtmlPageTail afin d’afficher la page Remarque : pour compléter la page à la suite avec d’autre tableau de char, on utilise strcat D. Créer et redémarrer les tâches Afin de gérer les fils pilotes, nous avons choisis de créer des tâches parallèles au programme principal. RTX_Create_Task (&task1ID , &task1defblock); /* créer et démarrer une tâche */ RTX_Restart_Task (&task1ID , &task1defblock); /* Démarrer une nouvelle tâche ou redémarrer une tâche tuée. */ Par Mr. Kahila, Mr Klampas, Mr Marme Page 51 GTCB E. Supprimer les fonctions CGI inregs.h.ah = CGI_REMOVE; /* Supprime submitexample (Fonction CGI) */ inregs.x.dx = FP_SEG(submitexample.PathPtr); inregs.x.si = FP_OFF(submitexample.PathPtr); int86(CGIVECT,&inregs,&outregs); if(outregs.x.dx == (unsigned int)CGI_ERROR) /* Teste si erreur à la suppression */ { printf("\r\nRemoving %s failed\r\n",submitexample.PathPtr); return 0; } printf("\r\n%s removed\r\n",submitexample.PathPtr); /* Affiche un message : la fonction a été supprimée Par Mr. Kahila, Mr Klampas, Mr Marme */ Page 52 GTCB Pésentation Candidat numéro 3 : Marme Alexis DEVELOPPEMENT : PARTIE PERSONNELLE………………………………………………….……54 * Présentation de la partie………………………….…………………………………………….54 * Contraintes de développement………………..…………………………………………….54 * Développement………………………………………………………………………………………55 * Fonctionnalité…………………………………………..…………………………………………….56 * Validation ………………………………………………….…………………………………………..57 *Intégration avec le groupe………………………….……………………………………………58 * Planification ……………………………………………………………………………………………59 Par Mr. Kahila, Mr Klampas, Mr Marme Page 53 GTCB DEVELOPPEMENT : PARTIE PERSONNELLE -Présentation de la partie La partie du projet qui m’a été confié est la mise en place d’un serveur Web qui logerait un site internet permettant de configurer graphiquement et simplement la semaine puis de l’enregistrer pour que les scenarios s’exécutent. L’utilisateur, pour effectuer les enregistrements des scénarios qu’il désire, n’aura qu’à Le site internet doit avoir une fonction d’authentification afin de pouvoir réserver l’accès au site seulement aux utilisateurs autorisés. L’utilisation du site devra être de la plus grande simplicité. L’ergonomie sera travaillée de manière à offrir à l’utilisateur une utilisation du site encore plus confortable. Les erreurs doivent être gérées : -un message s’affichera à l’écran, pendant une durée de deux secondes, décrivant l’interdiction à respecter. -l’utilisateur sera directement redirigé à la page précédente pour qu’il puisse réessayer son enregistrement. -Contraintes de développement Contraintes matériels : PC sous Linux Mandrake 2007 Connexion à internet via le routeur de notre section informatique Contraintes logiciels : Notepad++ Editeur de texte. C’est avec ce logiciel que j’ai effectué les développements html, PHP, JavaScript et Css. Lampserver Serveur Web sous Linux Mandrake 2007. C’est l’ensemble des éléments permettant de créer le site internet accessible à partir de n’importe quel ordinateur connecté à internet. Les éléments comprendront : -le serveur web : Apache -Le serveur de base de données : MySQL -Le serveur d’exécution PHP : PHP-5 -Une interface graphique évoluée afin de gérer facilement la base de données : PhpMyAdmin Par Mr. Kahila, Mr Klampas, Mr Marme Page 54 GTCB Mozilla Firefox v3.0.7 Navigateur Web Alternatif. Il me permettra de voir directement le résultat de mes tests lors de la conception du site. J’ai choisis ce navigateur car c’est un des plus réputés pour ses performances, sa rapidité et sa compatibilité. Contraintes d’utilisation : Les scenarios devront être enregistrés dans l’ordre chronologique Les erreurs d’enregistrements de scénarios doivent être gérés -Développement La configuration des scénarios doit être de la plus grande simplicité, de manière à ce qu’un utilisateur inexpérimenté puisse comprendre le fonctionnement de l’enregistrement des scénarios. Afin de pouvoir offrir un site permettant de multiples fonctions permettant, soit de faciliter l’utilisation du site, soit permettre à l’utilisateur de configurer certaines préférence, plusieurs fonctions ont été ajoutés au site. Nous ferons alors la description de chacune de ces fonctions : -Fonctionnalités Contrôle d'identité. Enregistrement des erreurs de login Affichage en résumé de la semaine dans un tableau Recopie d’un jour Remise à zéro du tableau Remise à zéro d’une journée Changement du mot de passe Création et envoi d’un fichier texte Déconnection Par Mr. Kahila, Mr Klampas, Mr Marme Page 55 GTCB Présentation des fonctionnalités Contrôle d'identité Un contrôle de l’identité est effectué à la connexion au site. Un nom d’utilisateur et un mot de passe vont permettre de sécuriser totalement l’accès au site. Considérant que l’accès au site étant destiné à une seule personne, nous n’aurons qu’un seul nom d’utilisateur et un mot de passe. Le nom d’utilisateur sera stocké dans une table de la base de données lui étant uniquement destiné. Le nom d’utilisateur ne sera pas encrypté. Le mot de passe sera stocké lui aussi dans la même table de la base de données. Par contre, pour des raisons de sécurités, le mot de passe sera encrypté en utilisant la fonction d’encryptage PHP « MD5 ». Enregistrement des erreurs d’authentifications Pour des raisons de sécurité optimales, une fonction a été rajoutée. Cette fonction permet de relever un certain nombre d’informations lors de l’échec d’une authentification sur le site. Effectivement, à chaque fois qu’un utilisateur non autorisé à pénétrer sur le site saisira un nom d’utilisateur ou un mot de passe erroné, nous enregistrerons directement dans notre base de données 4 informations sur l’erreur d’authentification : -l’heure de connexion -la date de connexion -le nom d’utilisateur saisi lors de la tentative de connexion -l’adresse IP dynamique de l’ordinateur ayant tenté de se connecté Ces informations seront indispensables à la détection et surtout la prévention d’un accès non autorisé sur le site. Affichage en résumé de la semaine dans un tableau Le principe de l’enregistrement des scénarios est basé sur un tableau contenant 7 colonnes représentatif des jours de la semaine. Chaque scénarios enregistrés ne pourra appartenir qu’à un unique jour entre 00h du matin jusqu’à minuit le soir. Pour cela, l’enregistrement de scénarios se fera de manière chronologique, ce qui permettra une organisation sans erreur de la part de l’utilisateur. L’affichage des scénarios se succèderont dans l’ordre chronologique le long de la colonne du jour concerné. Pour chaque scénario nous préciserons les informations saisies : -numéro du scénario -mode du radiateur saisi -heure d’intervalle -le ou les radiateurs concernés Par Mr. Kahila, Mr Klampas, Mr Marme Page 56 GTCB Recopie d’un jour En vue d’un utilisateur ayant un emploi du temps assez répétitif dans la semaine, une fonction permettant de recopier directement une journée a été ajoutée au site. Cette fonction permet une utilisation plus confortable du site. L’utilisateur sélectionnera la journée « source » qui sera la journée à copier puis il sélectionnera la journée « destination » qui sera la journée destinée a être copiée. L’utilisateur cliquera pour lancer la copie sur la base de données puis il pourra vérifier directement le résultat sur le tableau de la semaine. Remise à zéro du tableau Cette fonction permet simplement d’effacer tous les enregistrements contenus actuellement dans le tableau. Cette fonction est destinée en cas d’une grosse erreur dans l’enregistrement des scénarios de l’utilisateur. Remise à zéro d’une journée Cette fonction permet d’effacer tous les enregistrements contenus actuellement dans une journée. Cette fonction est destinée en cas d’une erreur dans l’enregistrement des scénarios d’une journée que l’utilisateur n’aura qu’à sélectionner. Changement du mot de passe Le mot de passe doit pouvoir être modifiable selon les préférences de l’utilisateur. Une fonction de modification de mot de passe a donc été ajoutée au site. Après s’être correctement authentifié sur le site, il suffira à l’utilisateur de saisir deux fois son nouveau mot de passe et de cliquer pour appliquer les modifications sur la base de données. Le mot de passe sera alors automatiquement ré-encrypté dans la base de données pour pouvoir toujours assurer la sécurité de l’utilisateur. Création et envoi d’un fichier texte Après avoir entièrement configuré la semaine désirée, les scénarios enregistrés sur la base de données vont pouvoir être envoyé à la gestion centralisée du bâtiment (DK40). L’utilisateur cliquera donc sur le bouton d’enregistrement pour lancer la création d’un fichier texte contenant les scénarios enregistrés dans la base de données. Ce fichier texte sera stocké sur le Serveur Web. Il sera construit selon une configuration et une organisation établit au préalable avec la personne chargé de réceptionner le fichier pour ainsi le« décoder » et effectuer correctement son exécution. Le fichier texte sera envoyé du Serveur Web à la DK40 par une connexion par socket TCP/IP. Le Serveur Web et la DK40 seront reliés par un câble Ethernet et sont donc connectés par un réseau local. Par Mr. Kahila, Mr Klampas, Mr Marme Page 57 GTCB Déconnection Afin de finaliser la sécurité du site, une fonction de déconnection a été ajoutée au site. L’utilisateur pourra choisir, après avoir configuré et enregistré le déroulement de la semaine, de se déconnecté afin que personne ne puisse accéder au site juste après son passage et donc sans avoir à s’authentifier. -Validation La validation du projet a été effectuée en effectuant directement de multiples enregistrements sur le site. Une fois l’enregistrement de la semaine terminée, on vérifie que tous les résultats sont bien apparents sur le tableau et que tout coïncident. Une fois ce contrôle effectué, nous pouvons alors décider de transmettre la configuration de notre semaine à la gestion centralisée du bâtiment technique. L’enregistrement et l’envoi par socket du fichier texte ont été effectués avec succès. Après une attentive lecture du fichier texte et en comparant les résultats aux enregistrements effectués auparavant sur le site, nous avons pu confirmer que tous les résultats étaient identiques. L’envoi du fichier texte a donc correctement été effectué et le fichier n’a pas été modifié. L’exécution de la configuration des scénarios enregistrés est gérée par la gestion centralisée du bâtiment. L’exécution du fichier texte est destiné a l’étudiant 1, c’est donc l’étudiant 1 qui fera les tests d’exécutions des scénarios par rapport à la contenance du fichier. L’ensemble de ces test ont permis de faire la validation générale de la partie qui m’était réservée. -Intégration avec le groupe Le principe de l’intégration avec le reste du groupe a été de se mettre en accord sur le fichier texte. En effet, après la validation de l’envoi du fichier texte à la gestion centralisé du bâtiment, nous allons pouvoir commencer à exécuter les scénarios par rapport à la contenance du fichier. Nous avons du mettre en place une organisation très stricte du fichier texte afin de permettre à la gestion centralisé de pouvoir « lire » correctement le fichier pour ensuite l’exécuter. Nous avons alors écrit une procédure d’écriture du fichier texte. Cela a généré des modifications au niveau de mon code afin de pouvoir écrire le fichier texte selon la procédure que nous avons écrite. Par Mr. Kahila, Mr Klampas, Mr Marme Page 58 GTCB -Planification Semaine *Modélisation du système. 1 *Commencement des diagrammes des cas d’utilisation Semaine *Modélisation du système. 2 *Suite des diagrammes des cas d’utilisation Semaine *Suite des diagrammes des cas d’utilisation puis diagrammes de déploiement 3 *Installation et configuration du poste de travail : -Mise en place d’un serveur web sur un poste sous Linux Semaine *Suite des diagrammes de déploiement 4 *Installation et configuration du poste de travail : -Mise en place du serveur PHP, MYSQL et installation de la base de données Semaine *Suite des diagrammes des cas d’utilisation puis diagrammes de déploiement 5 *Développement du code permettant l’envoi d’un fichier texte par socket client TCP Semaine *Développement du code permettant l’envoi d’un fichier texte par socket client TCP 6 Semaine *Développement du code permettant l’envoi d’un fichier texte par socket client TCP 7 Semaine *Développement du code permettant la configuration d’un scénario depuis un 8 navigateur HTTP : -Développement d’un tableau permettant de visualiser l’ensemble des scénarios actuellement enregistrés dans la base de données Semaine *Développement du code permettant la configuration d’un scénario depuis un 9 navigateur http -Développement du formulaire d’enregistrement d’un scénario puis validation Semaine *Développement du code permettant la configuration d’un scénario depuis un 10 navigateur http -Développement de la sécurité du site : mise en place d’un mot de passe, protection de l’accès de chaque page du site, enregistrement des erreurs d’authentification et Par Mr. Kahila, Mr Klampas, Mr Marme Page 59 GTCB fonction de déconnection Semaine *Développement du code permettant la configuration d’un scénario depuis un 11 navigateur http -Développement du code permettant une remise à zéro d’une journée ou remise à zéro total de la semaine -Développement du code permettant de changer le mot de passe d’authentification Semaine *Développement de l’ergonomie du site : 12 Mise en place de langage JavaScript et Css. Ces deux langages communément utilisés vont permettre d’insérer une barre de menu dynamique qui sera présente sur chaque page du site. Cela permettra à l’utilisateur une navigation plus confortable. Utilisation de langage JavaScript qui nous permettra aussi d’empêcher à l’utilisateur de pouvoir enregistrer des scénarios dépassant minuit (on fera disparaitre le choix des minutes si « 24h » est sélectionné) Semaine *Test de validation qui nous a permit de valider individuellement chaque fonction. 13 Semaine *Intégration avec le reste du groupe : 14 -Rassemblement des fichiers sur le même serveur web de test. -Validation de l’envoi du fichier texte par une socket client TCP -Développement du code permettant l’assemblage des deux sites sur une même page. Cela permet une utilisation plus confortable du site. Semaine *Intégration avec le reste du groupe : 15 -Développement du code permettant l’assemblage des deux sites sur une même page. Cela permet une utilisation plus confortable du site. -Validation générale du fonctionnement du site en faisant une utilisation complète de toutes les fonctions, vérification des erreurs, validation de la réception du fichier et comparaison des données contenues par rapport aux scénarios enregistrés au départ Semaine *Optimisation générale du code générant l’IHM et ajout du CRC16. 16 Semaine *Optimisation générale du code générant l’IHM et ajout du CRC16. 17 Par Mr. Kahila, Mr Klampas, Mr Marme Page 60 GTCB Par Mr. Kahila, Mr Klampas, Mr Marme Page 61 GTCB 3. Conception A.Intégration Afin de rendre les 3 axes du projet à savoir, relevé des informations, génération de scénario, et pilotage par scénario ou coups par coups, commun. Nous avons mit en place des notions d’intégrations entre les parties, en effet dans le contexte en raison de librairies différents à savoir : - clibs ( SMALL ) - clibl ( LARGE ) Lors de la création des applications le programme web ne contiendra pas directement les données relevé de température et edf d'ou la création de deux applications différentes. Et la mise en place d’un fichier texte « relevé » formaté avec des caractères html. Ce fichier, le candidat deux peut lire et manipuler à volonté. Néanmoins les candidats un et deux ont pu intégrer les codes de manipulation de sortie dans le serveur cgi. Parallèlement le candidat deux communique avec le serveur d'ou un programme de socket réceptionnant un scénario et un fichier horaire. Horaire permet d’initialiser une heure commune entre l’ordinateur sous linux et la dk41. Scénario lui contient l'intégralité de la semaine. Le candidat trois utilise des caractères séparant les jours et les informations de manières à permettre au candidat deux de manipulé et extraire les informations souhaité. En outre un frame est disposé sur le site web du candidat trois afin de contenir le site web du candidat deux permettant ainsi d'évité l'utilisation de multiple lien sur les exploreurs. De plus un fichier « autoexec.bat » lance le programme - Socket qui reste en tache de fond - Le programme de réception des données edf et température (afin d'avoir un fichier txt à jour ) - Le serveur web cgi est à son tour lancer. Par Mr. Kahila, Mr Klampas, Mr Marme Page 62 GTCB B.Cahier de test Test statut Ok Ok si Démarrage de la dk41 Lancement du programme de releve I2c Rs232 Réception des informations Fichier texte généré Serveur cgi Affichage des pages Manipulation des sorties Lancement serveur linux Apache généré scénario horaire Envoyée Réception d'horaire Init Réception d'un scénario Interruption si : Revenir au mode scénario Ok Ok Ok Ok Ok Ok Ok Ok Ok Ok Ok socket init et envoi ok Ok Ok Arrêt du mode coups par coups Ok Lancement scénario Ok Nouveau scénario Ok mode coups par coups ok Ok C. Par Mr. Kahila, Mr Klampas, Mr Marme Page 63 GTCB D. 4. Conclusion A.Bilan Le but de la conception de ce projet était la conception d’une gestion centralisé d’un bâtiment. Ce projet devait permettre de pouvoir contrôler : Un suivi en temps réel de la consommation d'électricité; le calcul en temps réel de la facture d'électricité; les relevés de température intérieure et extérieure du bâtiment. le contrôle indépendant de deux radiateurs sur 6 ordres possibles; l’enregistrement de scénarios permettant le contrôle automatisé des radiateurs sur une semaine La réalisation du projet nous a permis de nous initier à tout ce qui concerne la gestion d’un projet : -Organisation et méthodologie similaire aux entreprises -répartition des taches -définition des points d’intégration à respecter -mise en place d’une planification à respecter Ce projet nous a aussi permis d’appliquer les connaissances qui nous ont été inculquées au cours de ces deux années de BTS au lycée La Tourelle. La Finalisation du projet n’a pas pu être effectuée à temps. Les fonctions principales des parties de chaque étudiant ont été finalisé mais l’intégration a causé énormément de problème. La mise en place de la notion de temps dans le fichier texte a été un sujet de réflexion qui a lourdement pesé sur notre projet. Par Mr. Kahila, Mr Klampas, Mr Marme Page 64 GTCB ANNEXES Par Mr. Kahila, Mr Klampas, Mr Marme Page 65 GTCB Procédure d’installation du Serveur Web sur Linux Mandrake 2007 Configuration requise pour l’installation du composant : -Connexion internet LAN -Ordinateur sur Linux Mandrake 2007 Procédure à suivre: Ouvrir une console Shell, se logger en « root », et ainsi taper à la suite les commandes suivantes : - #Urpmi Apache **crée et installe un serveur web effectif** - #Urpmi mysql effectif** **Crée et installe un serveur de base de donnée - #Urpmi Urpmi apache-mo-php-5 permettant d’effectuer mes test** **Installe un serveur PHP - #Urpmi PHPmyAdmin **Installe une interface graphique permettant de gérer plus aisément la base de donnée** Vérification du serveur PHP : Dans «/var/www/html », créer un fichier « test.php », et écrivez : <?php phpinfo() ; ?> (n’oubliez pas d’enregistrer !) Ouvrez votre navigateur web préféré et tapez l’adresse : http://localhost/test.php Vous devez voir apparaitre ceci à l’écran Installation du serveur PHP valide. Vérification du Serveur de base de données Dans l’invite de commande, tapez la commande : - #mysql-secure-installation **On vous demandera alors si vous voulez créer un mot de passe pour la connexion à votre base de données. Saisissez votre mot de passe et retenez le bien** Par Mr. Kahila, Mr Klampas, Mr Marme Page 66 GTCB - #mysql –u root -p **On vous demandera de rentrer le mot de passe que vous venez de créer** Tapez la commande : mysql> show databases ; (N’oubliez pas le point virgule) Vous devriez avoir ceci à l’écran Installation du Serveur de base de données valide. Vérification de PHPmyAdmin: Ouvrez votre navigateur web préféré et tapez l’adresse : http://localhost/phpmyadmin Par Mr. Kahila, Mr Klampas, Mr Marme Page 67