Partie B : Conception de l application météo



Documents pareils
Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Architecture de la plateforme SBC

1. Base de données SQLite

Les stations météo Vantage Pro2.

Java c est quoi? Java. Java. Java : Principe de fonctionnement 31/01/ Vue générale 2 - Mon premier programme 3 - Types de Programme Java

Tutorial Terminal Server sous

Modélisation et Gestion des bases de données avec mysql workbench

Installation et prise en main

Java DataBaseConnectivity

Compte Rendu d intégration d application

Mise en oeuvre d'une base de données mono-utilisateur avec SQLite

Test de HSQLDB et Comparatif avec Sqlite

Sommaire Introduction... 3 Le but du projet... 3 Les moyens utilisés... 3 Informations sur le client FTP... 4 Pourquoi une version Linux et

Création et Gestion des tables

UFR de Mathématiques et Informatique Année 2009/2010. Réseaux Locaux TP 04 : ICMP, ARP, IP

Sélection du contrôleur

ENVOI EN NOMBRE DE MESSAGES AUDIO

Initiation à LabView : Les exemples d applications :

Introduction à JDBC. Accès aux bases de données en Java

Olivier Mondet

Tutoriel XBNE Connexion à un environnement XBMC distant

Sommaire. Etablir une connexion avec une base de données distante sur PostGreSQL

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

1/ Présentation de SQL Server :

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

Mysql. Les requêtes préparées Prepared statements

Microsoft OSQL OSQL ou l'outil de base pour gérer SQL Server

Durée estimée :1 journée Date de la réalisation : Description Fournisseur Référence Nombre PU HT LM35CZ, LM35AZ LM35DZ

Introduction à MATLAB R

TUTORIEL: INSTALLATION D'UN SERVEUR LOCAL SOUS WINDOWS 7 POUR APPINVENTOR version du 06/04/2013

Informatique Générale

Tutoriel Création d une source Cydia et compilation des packages sous Linux

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

Plan du cours. Historique du langage Nouveautés de Java 7

1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7

Guide d installation de MySQL

CREATION WEB DYNAMIQUE

STATISTICA Version 12 : Instructions d'installation

BIRT (Business Intelligence and Reporting Tools)

Traitement de données

Notes de cours : bases de données distribuées et repliquées

Capture, Filtrage et Analyse de trames ETHERNET avec le logiciel Wireshark. Etape 1 : Lancement des machines virtuelles VMWARE et de Wireshark

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Etudier l influence de différents paramètres sur un phénomène physique Communiquer et argumenter en utilisant un vocabulaire scientifique adapté

DEVAKI NEXTOBJET PRESENTATION. Devaki Nextobjects est un projet sous license GNU/Public.

MANUEL D INSTALLATION

Systeme d'exploitation

Introduction à la B.I. Avec SQL Server 2008

Le Langage De Description De Données(LDD)

But de cette présentation

Tutoriel d installation de Hibernate avec Eclipse

IV- Comment fonctionne un ordinateur?

Interface PC Vivago Ultra. Pro. Guide d'utilisation

Logiciel de Base. I. Représentation des nombres

Le Langage SQL version Oracle

Service Déposant: Procédure d installation. Page 1. Service déposant. Procédure d installation Version 2.3

FileMaker Server 14. Aide FileMaker Server

KAJOUT WASSIM INTERNET INFORMATION SERVICES (IIS) 01/03/2013. Compte-rendu sur ISS KAJOUT Wassim

Tutorial sur SQL Server 2000

SYSTEME DE GESTION DES ENERGIES EWTS EMBEDDED WIRELESS TELEMETRY SYSTEM

COSWIN MOBILE SERVEUR DE SYNCHRONISATION GUIDE D INSTALLATION

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

Quick Start Installation de MDweb version 2.3

RAPPORT DE CONCEPTION UML :

Application Web et J2EE

I. MySQL : Serveur et SGBD

Algorithme. Table des matières

TCHATONS PAR LIAISON SANS FIL BLUETOOTH

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs.

Java et les bases de données

La Crosse Technology. Heavy Weather Pro. Aide à l utilisation. (pour station WS 2800 avec clé USB) Revision: 1.2

Projet de Veille Technologique

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi module

Fiche Pratique. Présentation du problème. Installation du logiciel. Etape 1. MAJ le 17/10/2011

MODE OPERATOIRE OPENOFFICE BASE

Les déclencheurs. Version 1.0. Grégory CASANOVA

La base de données XML exist. A. Belaïd

TD/TP 1 Introduction au SDK d Android

Hadoop / Big Data. Benjamin Renaut <renaut.benjamin@tokidev.fr> MBDS

Installation d'un serveur FTP géré par une base de données MySQL

Commandes Linux. Gestion des fichiers et des répertoires. Gestion des droits. Gestion des imprimantes. Formation Use-IT

Business Talk IP Centrex. guide. web utilisateur. pour. les services standards

Petit guide pour l installation de CVW sous Linux

Saisie sur un ordinateur OS/390 Ici sur jedi.informatik.uni-leipzig.de ou

Sage 100 CRM Guide de l Import Plus avec Talend Version 8. Mise à jour : 2015 version 8

DOSSIER D'ACTIVITES SUR LE PHP N 03 Créer une base de données MySQL avec PHPMyAdmin

Logiciel de gestion de caisse et d ardoises

Encryptions, compression et partitionnement des données

USTL - Licence ST-A 1ère année Codage de l information TP 1 :

Installer et configurer un réseau local Ethernet commuté. Généralités 1 Utilisation d un Switch administrable D-Link DES-3226

Le langage SQL Rappels

MODE OPERATOIRE CORIM PROGRESS / SECTION MEI. Exploitation Informatique

ECLIPSE ET PDT (Php development tools)

Transcription:

Partie B : Conception de l application météo MATHERET Julien Page 1/25

Table des Matières 1 PRESENTATION DE MA PARTIE DU PROJET... 3 1.1 BUT DE L APPLICATION... 3 1.2 MATERIEL A MA DISPOSITION... 3 2 INSTALLATION ET CONFIGURATION DE L ORDINATEUR DE DEVELOPPEMENT... 4 2.1 INSTALLATION LINUX : MANDRIVA 2006... 4 2.2 INSTALLATION ET DESCRIPTION DES OUTILS... 4 3 POINTS IMPORTANTS DU PROTOCOLE SERIE... 8 3.1 PROCEDURE DE SORTIE DE L ETAT DE VEILLE DE LA CONSOLE... 8 3.2 REPONSES DE LA CONSOLE AUX DIFFERENTES COMMANDES... 8 3.3 DONNEES METEOROLOGIQUES DELIVREES PAR LA STATION ET EXPLOITEES POUR MON PROJET... 9 3.4 EXPLOITATION DES DIFFERENTES DONNEES... 9 4 DIAGRAMME UML DE CONCEPTION... 11 4.1 DIAGRAMME DE DEPLOIEMENT... 11 4.2 DIAGRAMME DE CLASSES... 12 4.3 DIAGRAMME DE SEQUENCE... 15 5 STRUCTURE DES TABLES DE LA BASE DE DONNEES... 16 5.1 REPRESENTATION DE LA BASE DE DONNEES METEO... 16 5.2 DESCRIPTION DES TABLES... 17 6 TESTS UNITAIRES... 18 6.1 METHODOLOGIE ET PROGRAMME DE TEST... 18 6.2 PRINCIPAUX TESTS MIS EN PLACE AU COURS DU DEVELOPPEMENT... 18 7 QUELQUES NOTIONS RENCONTREES AU COURS DU DEVELOPPEMENT... 20 7.1 CODAGE EN COMPLEMENT A DEUX... 20 7.2 FORMULES DE CONVERSION DES UNITES... 22 7.3 REQUETES SQL... 23 8 DEROULEMENT DU PROJET (CONCEPTION)... 24 8.1 PLANNING DE REALISATION... 24 8.2 REPARTITION DES ACTIVITES... 25 9 CONCLUSION... 25 MATHERET Julien Page 2/25

1 PRESENTATION DE MA PARTIE DU PROJET 1.1 But de l application Cette application a pour but d acquérir des données météorologiques auprès de la console de la station météo et les ranger dans une base de données (voir diagramme de séquence). Ces données seront accessibles via le site Web développé par ARMANI Jonathan à l adresse suivante : http://solaire.lgm.ac-grenoble.fr 1.2 Matériel à ma disposition Pour réaliser ce projet j avais à ma disposition : - Un ordinateur, pour développer l application. - Une station météorologique (Vantage Pro 2 de DAVIS) disposant de différents capteurs : thermomètre, baromètre, hygromètre, pluviomètre - La console de la station, qui permet d afficher les données instantanées. La station et la console communiquent par une liaison radio. La console est reliée au pc de développement par une liaison RS232. Synoptique de l installation : Liaison radio Station météo Console RS232 PC développement MATHERET Julien Page 3/25

2 INSTALLATION ET CONFIGURATION DE L ORDINATEUR DE DEVELOPPEMENT 2.1 Installation Linux : mandriva 2006 Options choisies lors de l installation (sur le poste de développement) : Partition personnalisée - SWAP : 1024 Mo - /home : 30 Go (données personnelles) - / : 30 Go (système) Adresse IP (de la machine) : 172.16.125.104 2.2 Installation et description des outils JDK (Java Development Kit) : o Description : Le Java Development Kit est l'environnement dans lequel le code java est compilé pour être transformé en bytecode afin que la machine virtuelle de Java puisse l'interpréter. o Installation : Téléchargement package (version jdk-6-linux-i586-rpm.bin) Copier le.bin dans /usr/local/java Mettre les droits d'exécution Lancer l'exécution :./jdk-6-linux-i586-rpm.bin Création des liens symboliques : ln -s /usr/java/jdk-6-linux-i586-rpm /usr/jdk ln -s /usr/java/jdk-6-linux-i586-rpm/jre /usr/jre Création des variables d'environnement dans : /etc/profile.d MATHERET Julien Page 4/25

Créer un fichier java.sh qui contient : #définition des variables d'environnement export JAVA_HOME=/usr/jdk export JRE_HOME=/usr/jre export PATH=$JAVA_HOME/bin:$PATH #définition du classpath export CLASSPATH=.:$JRE_HOME/lib/rt.jar Recharger les profils (fermeture et réouverture console) Vérification : $ set grep JAVA et $ set grep JRE MySQL : o Description : MySQL est un serveur de bases de données relationnelles SQL. o Installation : Téléchargement sur mysql.com Version (statically linked against glibc 2.2.5): mysql-server-5.0.27-0.i386.rpm Installation automatique Pour démarrer le serveur, il faut taper dans une console la commande : /etc/init.d/mysql start DBDesigner 4 : o Description : DBDesigner est un système de conception de base de données visuel (graphique). o Installation : Version : DBDesigner4-0.5.4-0.i586.rpm Installation automatique (RPM) Librairie nécessaire pour lors de l installation : - libborqt-6.9.0-2.i386.rpm - kylixlibs3-unwind-3.0-mdk91.i586.rpm - libstdc++2.10-2.96-0.83mdk.i586.rpm MATHERET Julien Page 5/25

Eclipse : o Description : Eclipse est un outil de développement d'application, il est portable sur beaucoup de plateformes et permet de créer des applications graphiques mais aussi de travailler dans une console. Il supporte de nombreux langages comme : Java, C, C++, JSP, EJB, XML (de nombreux plugins sont disponibles pour augmenter les performances de cet outil). o Installation : Téléchargement et extraction. Version : eclipse-sdk-3.2.1-linux-gtk.tar.gz Librairie RXTX : o Description : Cette librairie permet de mettre en œuvre la liaison série. Cette librairie peut être installée dans un environnement Linux en utilisant l IDE eclipse. o Installation : Téléchargement des binaires sur le site rxtx.org Dézippage des fichiers sous un répertoire quelconque (vérifier qu il contient les fichiers RXTXcomm.jar et librxtxserial.so notamment) Organiser les fichiers : /usr/local/jdk 1.5.xx contient le JDK (JAVA_HOME) Mettre le fichier RXTXcomm.jar dans JAVA_HOME/jre/lib/ext/ Mettre la librairie librxtxserial.so dans JAVA_HOME/jre/lib/i386/ Configuration : Sous Eclipse, ajouter dans le projet le fichier externe RXTXcomm.jar Cliquer sur + devant RXTXcomm.jar pour indiquer l emplacement de la librairie -> choisir Native Library et indiquer le répertoire ou se trouve librxtxserial.so Gestion de droits spécifiques : Se rajouter comme utilisateur au groupe uucp Le groupe uucp est ajouté comme propriétaire du fichier /var/lock MATHERET Julien Page 6/25

Driver JDBC : o Description : Ce driver permet de mettre en œuvre les bases de données avec le langage JAVA. Il va permettre d'exécuter des requêtes SQL au sein de notre programme Java. o Installation : - Extraction des fichiers - Insérer le fichier.jar dans le répertoire ext du jre MATHERET Julien Page 7/25

3 POINTS IMPORTANTS DU PROTOCOLE SERIE (Extrait de la documentation Davis) 3.1 Procédure de sortie de l état de veille de la console Afin de préserver l énergie de la batterie, la console est la plupart du temps en veille, elle sort de l état de veille quand elle reçoit un caractère sur la liaison série. La console ne peut pas sortir de l état de veille assez rapidement pour lire le premier caractère correctement. Pour cette raison, il faut mettre en œuvre la procédure décrite ci-dessous. 1. Envoyer un caractère de retour à la ligne : `\ n' (décimale 10, hexadécimal 0x0A). 2. La console doit envoyer une réponse : `\ n \ r'. 3. S'il n'y a aucune réponse dans un intervalle raisonnable (1.2 seconde), il faut ré effectuer les étapes 1 et 2. Ces répétitions ne doivent pas dépasser les 3 tentatives. 4. Si la console ne s'est pas réveillée après les 3 tentatives, cela signifie qu il y a un problème au niveau de la connexion. Une fois que la console est réveillée, elle restera éveillée pendant 2 minutes. 3.2 Réponses de la console aux différentes commandes Ces réponses viennent avant les données et sont valables pour toutes les commandes. Réponses Descriptions ACK La commande est reconnue, la console renvoie 0x06 (ACK en ASCII) NAK Les paramètres de la commande ne sont pas valides, la console renvoie 0x21 CANCEL Les données n ont pas passé la vérification CRC : la réponse de la console est : 0x18 OK La commande est reconnue, la console répond : \n\rok\n\r DONE Plusieurs commandes prennent du temps à effectuer leur tâche, la console va répondre tout d abord \n\rok\n\r pour dire qu elle a bien reçue la commande, et ensuite lorsque la tâche sera terminé, la console renverra : DONE\n\r MATHERET Julien Page 8/25

3.3 Données météorologiques délivrées par la station et exploitées pour mon projet Outside Temperature The value is sent as 10th of a degree in F. For example, 795 is returned for 79.5 F. Wind Speed It is a byte unsigned value in mph. If the wind speed is dashed because it lost synchronization with the radio or due to some other reason, the wind speed is forced to be 0. Wind Direction It is a two byte unsigned value from 0 to 360 degrees. (0 is North, 90 is East, 180 is South and 270 is West.) Outside Humidity This is the relative humitiy in % Day Rain UV Solar Radiation This value is sent as the 100th of an inch. The unit is in UV index. The unit is in watt/meter2. La commande utilisée pour obtenir ces informations est : LOOP 1 Cette commande renvoi énormément de données, il a donc fallu extraire les données intéressantes pour ensuite les convertir dans des unités convenables. 3.4 Exploitation des différentes données Outside Temperature (température extérieure) : Elle a du être convertie de degré fahrenheit en degré Celsius et multipliée par 10. Wind Speed (vitesse du vent) : La vitesse du vent a été convertie de miles per hour à kilomètres par heure. Wind Direction (direction du vent) : Cette donnée est exprimée en degré, 0 degré indique le Nord, 90 degrés l Est, 180 le Sud et 270 degrés l Ouest MATHERET Julien Page 9/25

Outside Humidity (hygrométrie) : Cette donnée représente le taux d humidité dans l air, elle est exprimée en pourcentage. Day Rain (pluviométrie journalière) : Cette donnée représente la hauteur de chute de pluie journalière. Elle a du être convertie de inch en mm. Elle est remise automatiquement à zéro par la console de la station météo tous les jours. UV : Les UV sont exprimés en index. L unité index est une échelle de mesure de l'intensité du rayonnement UV du soleil. Cette échelle va de 0 à 11, plus l'indice est élevé plus le rayonnement UV est important. Solar Radiation (rayonnement solaire) : Le rayonnement solaire est exprimé en Watt/mètre². MATHERET Julien Page 10/25

4 DIAGRAMME UML DE CONCEPTION 4.1 Diagramme de déploiement Application développée dans le cadre de mon projet MATHERET Julien Page 11/25

4.2 Diagramme de classes MATHERET Julien Page 12/25

Classe CSMeteo : Cette classe sert à écrire et à lire sur la liaison série. Description de ses méthodes : ouvrirport permet : - de définir quel port sera utilisé - d ouvrir le port (la liaison série) - d initialiser la liaison série : 19200 bauds, 8 bits de données, 1 bit de stop, pas de parité. - de récupérer les flux : d entré et de sortie, pour nous permettre par la suite de pouvoir lire et écrire sur la liaison série. lectureserie permet : - de lire la réponse de la console - d envoyer les données lues à la classe Ctraitement interrogerserie permet d envoyer la requête LOOP 1 à la console. Close permet : - de fermer les flux d entré et sortie - de fermer le port Classe Ctraitement : Cette classe sert à extraire et convertir toutes les données intéressantes pour le projet. Description de ses méthodes : extractconversdonnees est la méthode la plus importante de cette classe : - elle appelle toutes les autres méthodes de conversions - elle permet de transmettre les données converties à la classe CbaseDeDonnes Toutes les autres méthodes permettent d extraire et convertir les données. MATHERET Julien Page 13/25

Classe CbaseDeDonnees : Cette classe est chargée d établir une connexion avec la base de données puis ensuite de ranger les données dans celle-ci. Description de ses méthodes : insererdonnees est la méthode principale de cette classe, elle permet : - de ranger les valeurs brutes - de gérer l insertion des données tout les quarts d heure, tous les jours, tous les mois et toutes les années. Pour réaliser cela, elle va faire appel à toutes les autres méthodes de la classe décrites ci-dessous. supprdonnees permet de vider la table des valeurs brutes toutes les 15 minutes. valeurs_15 permet d exécuter toutes les requêtes nécessaires pour remplir la table des quarts d heure avec des données : maximums, minimums et moyennes. valeurs_quotidiennes permet d exécuter toutes les requêtes nécessaires pour remplir la table quotidienne avec des données : maximums, minimums et moyennes. valeurs_mensuelles permet d exécuter toutes les requêtes nécessaires pour remplir la table mensuelle avec des données : maximums, minimums et moyennes. valeurs_annuelles permet permet d exécuter toutes les requêtes nécessaires pour remplir la table annuelle avec des données : maximums, minimums et moyennes. valeurs_max permet de ranger toutes les valeurs maximales relevées sur une journée. valeurs_min permet de ranger toutes les valeurs minimales relevées sur une journée. Toutes les commandes SQL utilisées dans ces méthodes sont décrites dans le chapitre 7.3 Classe Clog : Cette classe permet de traiter les exceptions qui peuvent être générées lors d une erreur dans le programme. Lorsqu une exception sera générée, celle-ci sera insérée avec la date dans un fichier texte, cela permettra à l utilisateur de voir d où vient l erreur. Voici un exemple tiré du fichier de log : MATHERET Julien Page 14/25

Classe Cdate : Cette classe permet de gérer les dates, les dates seront très utilisées dans la classe CbaseDeDonnees lors des insertions d enregistrements. 4.3 Diagramme de séquence MATHERET Julien Page 15/25

5 STRUCTURE DES TABLES DE LA BASE DE DONNEES 5.1 Représentation de la base de données météo MATHERET Julien Page 16/25

5.2 Description des tables Les données contenues dans toutes ces tables sont détaillées dans le chapitre 3.4 meteo_valeurs_brutes : Cette table permet de ranger les données toutes les 10 secondes pendant 15 minutes. Au bout de ces 15 minutes, la table sera vidée. meteo_valeurs_15 : Cette table contient les valeurs moyennes de tous les quarts d heure ainsi que certaines valeurs maximales. meteo_valeurs_quotidiennes : Cette table contient les valeurs moyennes de la journée ainsi que les valeurs minimales, et les valeurs maximales de la table meteo_valeurs_15. La donnée temp_moy_production est la température moyenne entre 7H et 21H. Cette donnée va permettre de mettre en corrélation la température et la production d énergie de la centrale solaire. meteo_valeurs_mensuelles : Cette table contient les valeurs moyennes, les valeurs minimales, et les valeurs maximales produites sur un mois. meteo_valeurs_annuelles : Cette table contient les valeurs moyennes, les valeurs minimales, et les valeurs maximales produites sur une année. Toutes ces tables disposent d une clé primaire qui est un identificateur avec auto incrément, tous les enregistrements auront donc une clé unique. On remarque que l organisation des tables est très simple. A noter que les tables : meteo_valeurs_quotidiennes, meteo_valeurs_mensuelles et meteo_valeurs_annuelles sont des tables qui vont permettre d optimiser l application pour éviter d effectuer trop de calculs lourds sur une seule table. Cela permettra de faire des recherches moins lourdes sur la base de données, et permettra donc au site Web d être plus performant. MATHERET Julien Page 17/25

6 TESTS UNITAIRES 6.1 Méthodologie et programme de test Pour progresser dans le développement de l application, j ai construit un programme de test pour vérifier chaque étape. Ce programme de test enrichi au fur et à mesure m a permis d arriver au programme final. Au cours des tests, j ai notamment repris mon diagramme de classes ce qui m a permis d alléger certaines classes. Le programme final effectue les étapes suivantes : - interrogation de la console de la station météo - récupération des données envoyées par la console à l ordinateur (sous la forme d une trame) - conversion des données (changement d unité, traitement) - rangement des données dans la base de données - création d un fichier de log pour permettre la meilleure gestion des erreurs 6.2 Principaux tests mis en place au cours du développement En règle générale, lorsque je rencontrais des problèmes, j utilisais principalement l affichage Java pour mieux cibler ces problèmes A titre d exemple, voici quelques tests que j ai effectué durant le développement de l application : Test de la communication avec la console de la station météo : Pour réaliser ce test, j ai configuré minicom pour qu il puisse lire et écrire sur la liaison série. J ai alors testé quelques commandes issues du protocole Davis pour vérifier que la console de la station météo répondait à celles-ci. MATHERET Julien Page 18/25

Test de l écriture sur la liaison série (à l aide d un câble RS232/USB) : Pour tester l envoi de commandes sur la liaison série, j ai configuré minicom pour qu il soit à l écoute du port USB0. Ensuite j ai configuré et démarré mon application pour qu elle envoie des commandes sur le port série. Après plusieurs essais, on pouvait voir les commandes arriver sur le terminal minicom. Mon application pouvait alors envoyer des commandes à la console de la station météo. Test des requêtes SQL : Pour gagner du temps, au lieu de tester mes requêtes SQL dans mon application, je les ai toutes tapées en ligne de commande pour éviter les erreurs de syntaxe, et pour vérifier la validité du résultat obtenu. Test des fichiers de log : Pour tester les fichiers de log, j ai du créer des erreurs manuellement pour voir si elles étaient bien insérées dans le fichier, et pour améliorer la présentation du fichier texte. MATHERET Julien Page 19/25

7 QUELQUES NOTIONS RENCONTREES AU COURS DU DEVELOPPEMENT 7.1 Codage en complément à deux Cette technique de codage est utilisée lorsque l on veut utiliser des entiers relatifs (entiers pouvant être négatifs). Le principe de ce codage est le suivant : a. il faut tout d abord convertir notre entier en binaire (base 2) b. il faut complémenter chaque bit (on inverse, c'est-à-dire que l'on remplace les zéros par des 1 et vice-versa) c. il faut rajouter 1 au résultat précédent Si le bit de poids fort est égal à 1, le nombre obtenu est un nombre négatif. Extrait de code : Prenons par exemple le traitement de la température : public void temperatureexterieur(){ } float inter; tempext =(lectbuff[14]&0xff); tempext=tempext << 8; tempext = tempext+(lectbuff[13]&0xff); inter=(tempext/10); inter=(float)((inter-32)/1.8); inter=(float)(inter+0.5); tempext=(int)inter; MATHERET Julien Page 20/25

Explication : Certaines valeurs étaient codées sur plusieurs octets, il a donc fallu concaténer ces octets pour pouvoir obtenir la valeur correcte convertie. Les 2 octets qui concernent la valeur de la température se situent à l emplacement 13 et 14 de la trame. Nous allons prendre comme valeur de température 23 C, pour cette valeur nous avons : lectbuff[13] = -21 lectbuff[14] = 2 Le devant le chiffre 21 veut dire que 21 correspond aux bits de poids faibles de la valeur codée sur 2 octets. Le chiffre 2 correspond aux bits de poids forts. Voici l application du codage en complément à 2 (vu ci-dessus) : Conversion de 21 en binaire : 0001 0101 Conversion de 2 en binaire : 10 Complément à 1 de 21 : 1110 1010 Complément à 1 de 2 : 01 Complément à 2 de 21 : 1110 1011 Complément à 2 de 2 : 10 Concaténation des 2 octets : 0000 0010 1110 1011 Commentaire du code : On range la valeur de la 14 ème case du tableau d octet dans un entier tempext. On prend en compte tous les bits de l octet avec l opération &ff. Voici la représentation de l entier après l opération : tempext =(lectbuff[14]&0xff); tempext 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 Maintenant il faut décaler les huit derniers bits de tempext de huit places vers la gauche avec l opération suivante : tempext=tempext << 8; tempext 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 MATHERET Julien Page 21/25

On range la valeur de la 13 ème case du tableau d octet dans tempext. On prend en compte tous les bits de l octet avec l opération &ff. Voici la représentation de l entier après l opération : tempext =(lectbuff[13]&0xff); tempext 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 1 0 1 1 Maintenant pour voir si l opération a fonctionné, il faut retraduire le binaire en décimal. 1011101011 (binaire) = 747 (décimal) On doit diviser ce nombre par 10 pour obtenir des degrés Fahrenheit. Pour convertir des degrés Fahrenheit en degrés Celsius il faut utiliser une formule bien précise (voir 7.2). 74.7 F = 23 C On retrouve bien la valeur qui est affichée sur la console de la station météo. 7.2 Formules de conversion des unités Température : Conversion de degrés Fahrenheit en degrés Celsius => Température en C = (Température en F 32) / 1,8 Pluviométrie : Conversion Inches en millimètres => hauteur en mm= hauteur en Inches * 25.4 Vitesse : Conversion miles per hour en kilomètre par heure => vitesse en km/h= vitesse en miles per hour*1.6 MATHERET Julien Page 22/25

7.3 Requêtes SQL Description des requêtes importantes utilisées lors du projet : Affichage des bases de données : SHOW databases ; Affichage des table d une base de données : SHOW tables ; Description des tables : DESCRIBE «nom_de_la_table» ; Création d une nouvelle table : CREATE TABLE " nom_de_la_table " ("colonne 1" "type de données pour la colonne 1", "colonne 2" "type de données pour la colonne 2",...); Suppression d un table : DROP TABLE «nom_de_la_table» ; Suppression d un enregistrement de la table : DELETE FROM «nom_de_la_table» WHERE {condition} Sélection de tous les éléments de la table : SELECT * FROM «nom_de_la_table» Insertion d un enregistrement dans une table : INSERT INTO «nom_de_la_table» («colonne 1», «colonne 2»,...) VALUES («valeur 1», «valeur 2»,...) ; Suppression de tous les enregistrements d une table : TRUNCATE TABLE «nom_de_la_table»; MATHERET Julien Page 23/25

8 DEROULEMENT DU PROJET (CONCEPTION) 8.1 Planning de réalisation 26/01 : Installation du système d exploitation : Mandriva 2006 01/02 : Installation de tous les outils, de la librairie RXTX et de minicom. 8/02 et 9/02 : Réalisation de différents travaux pour prendre en main les bases de données avec JDBC Idem avec la librairie RXTX pour prendre en main la gestion de la liaison série. 1/03 et 2/03 : Prise en main de la console et la station météo, lecture de la documentation plus approfondie. 8/03 et 9/03 : Affichage de la trame envoyée par la console. Problème rencontré au niveau de la concaténation de données (voir codage en complément à deux). 16/03 et 17/03 : Finalisation du traitement des données, création des classes Ctraitement et CbaseDeDonnees. 29/03 et 30/03 : Création d une classe pour les fichiers de log, réinitialisation de la table meteo_valeurs_brutes toutes les 15 min. 19/04 et 20/04 : Intégration de l application avec le serveur, gestion des valeurs par quart d heure. Réflexion sur la base de données. 26/04 et 27/04 : Gestion des exceptions de plus bas niveau, création de la méthode valeurs_quotidiennes. 3/05 et 4/05 : Au lieu de se baser sur les id lors des insertions, il est décidé de se baser sur la date. Mise à jour de toutes les méthodes pour que les enregistrements se fassent à une date fixe. Création des méthodes valeurs_mensuelles et valeurs_annuelles. 10/05 et 11/05 : Création des méthodes qui gèrent les valeurs remarquables. MATHERET Julien Page 24/25

8.2 Répartition des activités 100 80 % 60 40 20 0 Analyse Etude des librairies RXTX et JDBC Conception programme Installation de la machine Prise en main station météo Intégration avec le serveur 9 CONCLUSION La conduite de ce projet m a beaucoup apporté dans le domaine technique en me permettant d enrichir mes connaissances en : Java, MySQL, Linux, liaison série. Il m a permis aussi de mieux appréhender le travail en équipe avec la rigueur nécessaire pour atteindre le résultat demandé. Je suis satisfait de voir que notre projet va aboutir, que l application va fonctionner et qu elle sera accessible sur Internet. Enfin par le biais de ce projet nous allons contribuer à informer les gens sur les énergies propres. MATHERET Julien Page 25/25