Rapport PFE
Rapport PFE
Rapport PFE
Introduction générale.............................................................................................................................6
Chapitre 1 : Présentation du cadre du projet...................................................................................7
I. Présentation de la société :..............................................................................................................7
1. Présentation de l’entreprise d’accueil.........................................................................................7
a. Présentation de Telecom For Future (TFF)...............................................................................7
b. Secteur d’activités..........................................................................................................................7
II. Cahier de charge :.............................................................................................................................7
1. Problématique :..............................................................................................................................7
2. Contexte de projet :.......................................................................................................................8
3. Objectif du contrôle de lumière à distance dans une usine :...................................................9
4. IOT et domotique :.........................................................................................................................9
III. Conclusion :..................................................................................................................................10
Chapitre 2 : Etude et spécification des besoins............................................................................11
I. Introduction :.....................................................................................................................................11
II. Les besoins fonctionnels :..............................................................................................................11
1. Digrammes des cas d’utilisation :..............................................................................................12
a. Diagramme du cas d’utilisation général :..............................................................................12
b. Diagramme du cas d’utilisation d’authentification :.............................................................13
c. Diagramme du cas d’utilisation de gestion des usines :.....................................................16
d. Diagramme du cas d’utilisation de gestion des départements :........................................17
e. Diagramme du cas d’utilisation de gestion des lignes :......................................................19
f. Diagramme du cas d’utilisation de gestion des plannings :...............................................21
g. Diagramme du cas d’utilisation de configurer des plannings :...........................................22
h. Diagramme du cas d’utilisation de consulter des plannings :............................................24
i. Diagramme du cas d’utilisation de consulter l’historique :..................................................25
III. Les besoins non fonctionnels :...................................................................................................26
IV. Les besoins matériels :...............................................................................................................27
1. La carte Arduino :.........................................................................................................................27
2. La carte WeMos D1 mini :..........................................................................................................27
3. La carte STM32F4 DISCOVERY :.............................................................................................28
4. La carte zedboard :......................................................................................................................28
5. La carte Beagle Bone Black :.....................................................................................................29
1
6. Comparaison technique entre ces cartes de développement :.........................................30
V. Conclusion :......................................................................................................................................31
Chapitre 3 : Conception.......................................................................................................................32
I. Introduction :.....................................................................................................................................32
II. Conception globale du projet :.......................................................................................................32
III. Architecture générale du projet Lightways :.............................................................................32
1. Description des composants :....................................................................................................32
2. Conception détaillé :....................................................................................................................33
a. Diagramme de déploiement :.................................................................................................33
b. Diagrammes de classes :.......................................................................................................34
c. Diagrammes de séquences :..................................................................................................36
d. Diagrammes d’activités :.........................................................................................................36
IV. Conclusion :..................................................................................................................................38
Chapitre4 : Implémentation et réalisation.......................................................................................39
I. Introduction :.....................................................................................................................................39
II. Les technologies de la Construction de la partie beckend du l’application web :...................39
1. Apache Tomcat 8 :.......................................................................................................................39
2. Spring Boot Framework :............................................................................................................39
3. Spring Initializer:..........................................................................................................................40
4. MongoDB Compass Community :.............................................................................................42
5. Spring Tools suite:.......................................................................................................................42
6. Spring data Mongo Repository :................................................................................................44
7. Sécurité de l’application web :....................................................................................................47
a. Spring Security :.......................................................................................................................47
b. Fonctionnalités :.......................................................................................................................47
c. JSON Web Token:...................................................................................................................48
III. Les technologies de la Construction du partie frontend du l’application web :....................49
1. Angular 7 :.....................................................................................................................................49
a. Installer Angular:......................................................................................................................50
b. Création des composants :.....................................................................................................50
c. Créations des Services :.........................................................................................................51
d. Créer un service Http Client :.................................................................................................51
e. Routage :...................................................................................................................................51
2
f. Modele :.....................................................................................................................................52
g. Local Storage et session Storage :........................................................................................52
h. Les interfaces de l’application web :...........................................................................................53
2. Autres logiciels :...........................................................................................................................53
a. Postman :..................................................................................................................................53
b. Visual studio:............................................................................................................................54
c. Bootsrap4:.................................................................................................................................54
d. Node.js......................................................................................................................................55
e. NPM :.........................................................................................................................................55
f. Edraw Max :..............................................................................................................................56
3. Langages utilisés :.......................................................................................................................56
g. Java2EE :..................................................................................................................................56
h. Html5 :.......................................................................................................................................57
i. Css3 :........................................................................................................................................57
j. Type Script :..............................................................................................................................58
k. JavaScript :...............................................................................................................................58
l. JSON :.......................................................................................................................................59
IV. Partie embarquée :......................................................................................................................59
1. Logiciels utilisés :.........................................................................................................................59
a. Vnc Viewer :..............................................................................................................................59
b. Arduino :....................................................................................................................................60
2. Configuration du matériel :.........................................................................................................60
3. Choix de la solution :...................................................................................................................60
4. Les besoins élémentaires :.........................................................................................................61
5. Démarrage et configuration de la Raspberry :.........................................................................61
6. Connection de la carte Raspberry avec l’ordinateur...............................................................63
7. Démarrage de Raspberry...........................................................................................................65
8. Consommation avec web service :............................................................................................66
9. Communication mqtt :.................................................................................................................67
10. Câblage :...................................................................................................................................71
V. Conclusion........................................................................................................................................72
3
Figure 2:Diagramme du cas d'utilisation « authentification »............................................................14
Figure 3:diagramme du cas d'utilisation « gestion des usines ».......................................................16
Figure 4:diagramme du cas d'utilisation « gestion des départements »..........................................18
*Figure 5:diagramme du cas d'utilisation « gestion des lignes »......................................................19
Figure 6:diagramme du cas d'utilisation « gestion des plannings ».................................................21
Figure 7:diagramme du cas d'utilisation « configurer des plannings ».............................................22
Figure 8:diagramme du cas d'utilisation « consulter les plannings »...............................................24
Figure 9:diagramme de cas d’utilisation « consulter l’historique »....................................................25
Figure 10:logo carte Arduino..................................................................................................................27
Figure 11:logo carte WeMos D1 mini....................................................................................................28
Figure 12:logo carte STM.......................................................................................................................28
Figure 13: logo carte zedboard..............................................................................................................29
Figure 14:logo carte Beagle Bone Black..............................................................................................30
Figure 15:architecture générale du projet Lightways..........................................................................32
Figure 16:diagramme de déploiement..................................................................................................34
Figure 17:diagramme de class..............................................................................................................35
Figure 18:diagramme séquentiel « enregistrer identifier ».................................................................36
Figure 19:diagramme d'activité « authentification avec Spring Security et Json Web Token »....37
Figure 20:logo apache Tomcat..............................................................................................................39
Figure 21:logo Spring Boot Framework................................................................................................40
Figure 22:Logo Spring Initializr..............................................................................................................41
Figure 23:logo MongoDB........................................................................................................................42
Figure 24:logo IDE Spring Tools suite..................................................................................................43
Figure 25:import Maven..........................................................................................................................43
Figure 26:chercher existing Maven projet............................................................................................43
Figure 27:importer le fichier Maven. Jar..............................................................................................44
Figure 28:la classe principale « main »................................................................................................44
Figure 29:Spring Data MongoDB..........................................................................................................45
Figure 30:les documents Java...............................................................................................................45
Figure 31:les contrôleurs java................................................................................................................45
Figure 32:configurer la base de données Mongo................................................................................47
Figure 33:logo Spring Security..............................................................................................................48
Figure 34: logo Json Web Token...........................................................................................................48
Figure 35:mot de passe crypté..............................................................................................................49
Figure 36:autorisation « ADMIN ».........................................................................................................49
Figure 37:autorisation "USER"...............................................................................................................49
Figure 38:logo Framework angular 7....................................................................................................50
Figure 39:architecture angular...............................................................................................................50
Figure 40:architecture angular frontend avec autorisation.................................................................53
Figure 41:logo Postman..........................................................................................................................54
Figure 42:logo Visual studio...................................................................................................................54
Figure 43:logo bootstrap4.......................................................................................................................55
Figure 44:logo Nodejs.............................................................................................................................55
Figure 45:logo Npm.................................................................................................................................55
4
Figure 46:logo Edraw Max.....................................................................................................................56
Figure 47:logo java 2E............................................................................................................................57
Figure 48:logo HTML5............................................................................................................................57
Figure 49:logo css3.................................................................................................................................58
Figure 50:logo Type Script.....................................................................................................................58
Figure 51:logo java script.......................................................................................................................59
Figure 52:Logo JSON.............................................................................................................................59
Figure 53:logo vnc viewer.......................................................................................................................60
Figure 54:logo IDE Arduino....................................................................................................................60
Figure 55:formater carte SD...................................................................................................................62
Figure 56:copier l'image de Raspbian sur la carte SD.......................................................................63
Figure 57:partage de connexion............................................................................................................63
Figure 58:chercher l'adresse IP avec IScanner...................................................................................63
Figure 59:configuration avec PuTTY....................................................................................................64
Figure 60:installer VNC Server..............................................................................................................64
Figure 61:interface du Raspberry..........................................................................................................65
Figure 62:choix la version du nodejs....................................................................................................66
Figure 63: consommation du service web............................................................................................67
Figure 64:objet json reçu........................................................................................................................67
Figure 65:architecture MQTT.................................................................................................................68
Figure 66:client MQTT............................................................................................................................69
Figure 67:connexion wifi.........................................................................................................................69
Figure 68:fonction reconnect (code Arduino).......................................................................................70
Figure 69:fonction callback (code arduino)..........................................................................................70
Figure 70:resultat1 du console arduino................................................................................................70
Figure 71:resultat2 du console arduino................................................................................................71
5
Introduction générale
L’internet des objets (IoT) s’impose dans toutes les sphères de la vie quotidienne, à
commencer par l’entreprise. À la fois dans un souci de faciliter ou de remplacer certains
gestes des utilisateurs, mais aussi de répondre à l’obligation d’économies d’énergie. Par
la mise en place de systèmes connectés, les bâtiments se transforment en smart
buildings, permettant une synergie dans les usages et, par conséquent, une meilleure
utilisation de l’énergie.
Dans ce cadre se présente notre projet de fin d’études réalisé au sein de Telecom for
future. En effet notre projet consiste à étudier, concevoir et développer une solution
permet l’éclairage automatique qui repose sur la gestion à distance centralisé ou
automatisé de lumière d'un bâtiment industriel par l’intermédiaire d’une application web.
6
Chapitre 1 : Présentation du cadre du projet
I. Présentation de la société :
1. Présentation de l’entreprise d’accueil
TFF est une société de service et de développement dans les domaines de télécoms et
de l’informatique, créée en 2016. La filiale DOTWAYS a été créée en 2017 pour
développer et étendre les activités de TFF en France.
b. Secteur d’activités
1. Problématique :
7
Comment contrôler l’éclairage automatique de chaines de travail ?
De quelle manière on peut effectuer cet éclairage ?
Quelle source d’information peut effectuer cet éclairage ?
Comment suivit l’état de la lumière à distance ?
Dans quel but on contrôle l’éclairage ?
2. Contexte de projet :
Le projet Lightways consiste au premier lieu de développer un application web
permettant de gérer les usines, piloter l’éclairage par le planning horaire ou
manuellement et suivre les états de marche / arrêt des lumières du chaine de travail.
Cette application servira à communiquer avec la box domotique pour est assurée via
WIFI.
Chaque groupe de lampes est raccordé par un interrupteurs spécial programmable, qui
a son tour contrôlé un box domotique.
Aussi que notre travail consiste à synchroniser les données vers une base de données
centralisée pour l’extraction et la réutilisation de ces données.
Pour que la base de données puisse être mise à jour, modifiée, ou que des éléments
(nouvel utilisateur, par exemple) puissent s’intégrer à la base préexistante, le
développeur backend va utiliser des langages dynamiques, lesquels vont connecter la
base de données avec l’application.
La partie embarquée :
Le box domotique présente le lien entre le serveur web et les composants électriques
celui qui permet de prendre les données et transmettre aux composants via une
connexion wifi /câble.
Lightways Sert à l’économie d’Energie en limitant les zones éclairées aux chaines de
travail fabrication concernées, lumière selon le moment de la journée et
les départements actives Par exemple la nuit, on a évidemment besoin d’une intensité
de lumière plus grande que le matin.
4. IOT et domotique :
La domotique est permise au moyen d’une mise en réseau des appareils électriques de
l’habitation par une centrale de commande. Cette dernière elle sert d’interface pour
permettre à l’utilisateur de contrôler et de gérer à distance tous les appareils connectés.
Elle remplace les différents dispositifs de gestion des équipements tels que l’éclairage,
le système d’alarme ou les programmateurs et elle rassemble leurs fonctionnalités en
un seul point, gérable à tout moment et en tout lieu.
9
La domotique vous permet de gérer les sources d’énergie de votre domicile. Chauffage,
climatisation, éclairage, ouverture et fermeture des stores, température et remplissage
de l’eau, chargement des appareils fonctionnant sur batterie, etc. Tout est conçu pour
vous faciliter la vie, tenir votre maison prête et confortable pour votre arrivée et vous
permettre de réaliser des économies en programmant ces actions lors des heures
creuses par exemple.
III. Conclusion :
Dans ce chapitre, nous avons fait une présentation générale de l’entreprise Telecom for
future, nous avons expliqué son environnement de travail et le contexte du projet. Le
chapitre suivant contiendra une étude plus détaillée de spécification des besoins.
10
Chapitre 2 : Etude et spécification des besoins
I. Introduction :
Durant ce chapitre nous allons analyser les besoins fonctionnels et non fonctionnels de
notre projet et les besoins matériels. Nous utiliserons le diagramme de cas d’utilisation
d’UML pour modéliser nos besoins.
11
1. Digrammes des cas d’utilisation :
En langage UML, le diagramme de cas d’utilisation permet de modéliser le
comportement d’un système et de dégager ses exigences. Les diagrammes de cas
d’utilisation décrivent les fonctions générales de l’application ainsi que les interactions
entre le système et les acteurs.
12
Figure 1 : Diagramme du cas d'utilisation « générale »
b. Diagramme du cas d’utilisation d’authentification :
13
Figure 2:Diagramme du cas d'utilisation « authentification »
14
Saisir le non email et mot
de passe
2-Remplir le formulaire
d’identification :
Email et mot de passe
3-Accéder à l’application
Scénario alternatif Le mot de passe est
crypté dans la base de
données.
Post condition Accéder aux gestions Accéder aux gestions
des usines. des usines.
15
c. Diagramme du cas d’utilisation de gestion des usines :
16
Scenario principal 1-l’administrateur accède L’utilisateur accède à la
à la liste des usines. liste des usines.
2- il effectuée une action
d’ajoute, modification, ou
suppression
Scénario alternatif
18
e. Diagramme du cas d’utilisation de gestion des lignes :
19
Scenario principal 1-l’administrateur accède Controller manuellement
à la liste des lignes. les lignes.
3-eclaircir la ligne
manuellement
Scénario alternatif Accéder aux listes des Accéder aux listes des
lignes par l’identifiant de lignes par l’identifiant de
chaque département chaque département
Post condition Ajouter planning aux
chaque lignes
20
f. Diagramme du cas d’utilisation de gestion des plannings :
21
2-consulter les
plannings.
Scénario alternatif Ajouter un planning à
chaque ligne par leur
propre identifiant.
Post condition Configurer le planning.
22
Description du diagramme de Configurer les planning
23
h. Diagramme du cas d’utilisation de consulter des plannings :
24
Scenario principal 1- accéder aux listes des
plannings.
25
Description textuelle de cas d’utilisation :
Contraintes techniques :
L’application doit garantir la sécurité à travers la gestion des droits d’accès, L’accès à la
base de données doit être souple et rapide, L’application doit être toujours fonctionnelle,
Le choix se fera parmi une liste de valeur rattaché aux champs afin d’assurer le contrôle
de la saisie, Espace de stockage des données suffisant, L’application doit détecter la
présence d’une connexion internet, Temps de réponse minimum, Communiquer des
26
données entre deux environnements hétérogènes : Protocole de communication, format
des données..
Contraintes économiques :
L’interface de notre future application doit respecter la charte graphique d’une
application embarquée
L’utilisateur doit être guidé lors de la saisie de certaines informations, afin de respecter
les formats des champs de notre base de données.
1. La carte Arduino :
27
ESP8266 résident dans les nombreuses cartes d’extension (Shields) qui ont été
développées par Chinoise Wemos.cc.
Cette carte s’apparente à l’Arduino UNO (carte embarquée la plus courante chez
Arduino), mais possède des caractéristiques beaucoup plus intéressantes et un prix
cinq fois moins élevé avec une taille identique. Se représente en fait un produit idéal
pour commencer la programmation embarquée pour les débutants, tout en restant très
intéressant pour les experts grâce à sa puissance de calcul supérieure.
STM32F4 fonctionne à une fréquence plus élevée de 168 MHz, prend en charge
des instructions DSP en un seul cycle. dispose d’une unité de calcul en virgule
flottante FPU Elle est construite autour d’un microcontrôleur ARM Cortex
M4FSTM32F407VGT6 contenant 1 Mo de Flash, 192 Ko de RAM, des périphériques
avancés pour les applications d’imagerie, de connectivité, d’encryptage.
4. La carte zedboard :
ZedBoard est une carte d’évaluation et de développement basé sur le Xilinx ZynqTM-
7000 All Soc programmable (AP Soc). Combinaison d'un double système de traitement
Corex-A9 (PS) avec 85 000
28
Les cellules logiques programmables (PL) Série-7, le Soc AP Zynq-7000 peuvent être
ciblées de nombreuses applications. Le solide mélange de périphériques embarqués et
d'extension du ZedBoard Ses capacités en font une plate-forme idéale pour les
concepteurs novices et expérimentés. Cette carte contient tous les éléments requis
pour créer une conception Linux, Android,
Windows ou autre OS/RTOS et profitez du système de traitement ARM solidement
associé au Soc Zynq7000 et de la série 7 de logique programmable pour créer des
conceptions uniques et puissantes.
Plusieurs connecteurs d'extension exposent le système de traitement et les E/S de
logique programmable pour faciliter l'accès aux utilisateurs.
La nouvelle carte est basée sur la Beagle Bone Black et se présente comme un
ordinateur Linux facile à utiliser qui intègre une connectivité Wi-Fi et Bluetooth et un
grand nombre d’E/S pour des applications à base de capteurs et dispositifs de
commande. Elle est également idéale pour le développement d’applications connectées,
dont des nœuds et des plateformes IoT, s’appuyant sur des plateformes logicielles
open-source telles que Debian, Android et Ubuntu.
La carte intègre une fonctionnalité de mise en réseau sans fil haute performance offrant
à la fois le Wi-Fi 2.4GHz 802.11b/g/n et le Bluetooth, et assure une connectivité
Ethernet-10/100. Cependant, comme la BeagleBone Black, cette version sans fil
conserve la sortie HDMI, le port de débogage série, l’interface PC USB, l’hôte USB 2.0,
les boutons de réinitialisation et de mise en marche, et ajoute deux LED d’indication
d’état pour le Wi-Fi et le Bluetooth.
Le processeur principal est un Sitara AM335x de TI cadencé à 1GHz, qui intègre un
cœur de processeur basé sur un ARM Cortex-A8. La carte offre aussi deux
microcontrôleurs 32 bits à PRU
(Programmable Real-Time Unit), une connectivité micro-HDMI, 512Mo de DDR3 RAM,
et 4Go de stockage en mémoire flash embarquée eMMC, qui comprend Debian Linux
préinstallé.
29
Figure 14:logo carte Beagle Bone Black
V. Conclusion :
30
Dans ce chapitre, nous avons détaillé les besoins fonctionnels, nous avons spécifier les
besoins non fonctionnels et nous avons cité les choix du besoins matériels. Dans le
chapitre suivant, nous allons entamer la conception de l’application
31
Chapitre 3 : Conception
I. Introduction :
La phase de conception permet de détailler et structurer les besoins vus dans le
chapitre deux. Nous allons décrire la phase de conception du pour apporter plus de
détails sur les fonctionnalités du système ainsi que chercher à clarifier les aspects
techniques.
32
Raspberry : c’est une carte intelligente qui va récupérer les données de la base de
données à travers un web service et l’envoyer vers la carte Nodemcu d1 mini.
Nodemcu d1 mini : c’est une carte avec un module wifi esp 8266 permet de
réceptionner les données du carte Raspberry.
Base de données : où les données sont stockées.
Lampes :
2. Conception détaillé :
a. Diagramme de déploiement :
Le diagramme de déploiement UML montre l'architecture d'exécution de systèmes qui
représentent l'affectation (déploiement) des artefacts logiciels à des cibles de
déploiement. Il est utilisé pour visualiser la topologie des composants physiques d'un
système dans lequel les composants logiciels sont déployés. Les diagrammes de
déploiement sont très utiles pour décrire les composants matériels où les composants
logiciels sont déployés. Le diagramme de déploiement permet également de modéliser
l'aspect physique d'un système du logiciel orienté objet.
33
Figure 16:diagramme de déploiement
b. Diagrammes de classes :
Un diagramme de classes fournit une vue globale d’un système. Il permet de
représenter les attributs et les méthodes des classes ainsi que les relations entre elles.
Ce diagramme est statique c’est-à-dire qu’il permet d’afficher les liens structurels entre
les classes qui composent le système mais il n’illustre pas ce qui se passe pendant les
interactions.
34
Figure 17:diagramme de class
35
c. Diagrammes de séquences :
Diagramme de séquence UML
36
Les diagrammes d'activité UML sont utiles pour la modélisation d'entreprise où ils sont
utilisés pour détailler les processus impliqués dans les activités commerciales. Les
diagrammes d'activités UML Edraw vous permettront de penser plus fonctionnellement
en vous aidant à décrire le flux du contrôle du système cible, la méthode, la fonction ou
le fonctionnement des logiciels, etc.
Ceci est un diagramme d’activité pour les classes Spring Security / JWT qui sont séparées en 3
couches :
- HTTP
- Spring Security
- API REST
37
Recevoir une requête HTTP
Filtrer la demande
Créer une authentification à partir d'un jeton
Objet d'authentification de magasin dans SecurityContext
Déléguer AuthenticationToken pour AuthenticationManager
Authentifier avec AuthenticationProvider
AuthenticationProviders
DaoAuthenticationProvider
Récupérer les détails de l'utilisateur avec UserDetailsService
Obtenir une autorisation
Protégez les ressources avec les expressions HTTP Security & Method Security
Configurer HTTP Security
Méthode Expressions de sécurité
Gérer AuthenticationException – AuthenticationEntryPoint
IV. Conclusion :
Dans ce chapitre, nous avons exposé les différents diagrammes élaborés lors d’une
étude conceptuelle du projet. Cette étude adoptée facilite par la suite la réalisation de
l’application, qui sera par la suite le contenu de notre quatrième chapitre.
38
Chapitre4 : Implémentation et réalisation
I. Introduction :
Dans ce dernier chapitre, nous allons détailler la dernière phase de la méthodologie du
processus simplifié. En effet, nous allons exposer notre projet par une vue sur
l’environnement logiciel et matériel du projet. En fin, nous allons exposer un scénario
d’exécution de notre projet.
1. Apache Tomcat 8 :
Le logiciel Apache Tomcat 8 est une implémentation open source des technologies Java
Servlet, Java Server Pages, Java Expression Language et Java WebSocket. Les
spécifications Java Servlet, Java Server Pages, Java Expression Language et Java
Web Socket sont développées dans le cadre du processus de la communauté Java.
Apache Tomcat Maven Plugin fournit des objectifs pour manipuler des projets WAR
dans le conteneur de servlets Apache Tomcat. Vous pouvez exécuter votre projet WAR
Apache Maven via Apache Maven sans déployer votre fichier WAR sur une instance
Apache Tomcat.
Ce n’est pas un Framework, du moins pas comme un Spring Security, Guava, ou autre
mais c’est un générateur de code autrement dit, Spring Boot fait partie intégrante du
projet, y compris lors de l’exécution de l’application. C’est un outil de maquettage, il sert
à faire des applications.
39
Déploiement d’une application avec Spring Boot
Autoconfigurant les composants qui sont détectés sur le classpath (par exemple,
si Spring Boot détecte le driver Java de Mongo, ou un driver JDBC, ou Tomcat,
etc., alors il configure automatiquement un ensemble de Bean (au sens Spring)
pour utiliser ces composants)
Permettant de personnaliser les composants, pour passer outre l’auto
configuration.
Simplifiant la gestion des propriétés provenant de sources différentes
Exposant des points d’entrées pour la surveillance de l’application
Simplifiant le déploiement (un jar unique, ou un WAR pour Tomcat)
3. Spring Initializer:
Spring Initializer fournit une interface utilisateur Web simple et intuitive pour créer,
configurer et générer une application Spring. Cet outil permet aux développeurs de
générer facilement une structure de projet initiale sans se soucier de la structure et des
dépendances du projet. Sur un niveau élevé, les outils Spring Initializer s’occupent des
points suivants pour toute application Spring.
Il collecte tous les fichiers jar du chemin de classe et crée un seul fichier jar
exécutable, ce qui le rend plus pratique pour exécuter et transporter votre
service.
Il gère le fichier pom.xml de la liste de dépendances :
o Spring boot :
o Web :
o Dev Tools :
Spring Boot comprend un ensemble d’outils supplémentaire qui peut rendre l’expérience
de développement d’applications un peu plus agréable. Le module spring-boot-devtools
peut être inclus dans tout projet pour fournir des fonctionnalités supplémentaires au
moment du développement.
o MongoDB :
Démarreur pour utiliser la base de données orientée document MongoDB et
Spring Data MongoDB
o Spring Security
o Json web Token
4. MongoDB Compass Community :
41
car toutes les informations propres à un certain donnée sont stockées dans un même
document sous un style JSON.
Aussi, son langage d’interrogation n’est pas le SQL mais un ensemble de méthodes
dont la sémantique est proche. L’avantage majeur du choix d’un moteur NoSQL est
que chaque élément d’une même collection peut avoir un schéma diffèrent et il
devient ainsi possible de stocker ce que l’on souhaite à n’importe quel moment.
Spring Tools suite est un plugin qui permet le support de Spring dans Eclipse. Il se base
sur le plugin Spring IDE.
Les fonctionnalités de base de SpringSource Tool Suite sont :
Gérer la déclaration de beans Spring dans les fichiers XML.
Liste toutes les propriétés possibles
Réside dans la recherche de beans Spring, l’auto-complétions et la détection d’erreurs
dans la configuration qui n'apparaissent habituellement qu’au démarrage de l’application
ou dans les tests unitaires.
Vous pouvez exécuter une application Spring Boot à partir de votre IDE en tant
qu'application Java simple. Cependant, vous devez d'abord importer votre projet. Les
étapes d'importation varient en fonction de votre IDE et du système de construction.
42
Figure 25:import Maven
43
Il a créé automatiquement une classe d’application void main :
Spring Data est un projet qui regroupe de nombreux sous-modules, chacun spécifique à
une base de données particulière.
L'interface centrale dans l'abstraction du repository Spring Data est Repository. Il est
facile à gérer pour la classe de domaine de gérer ainsi que le type id de la classe de
domaine. Cette interface sert principalement d'interface de marqueur pour capturer les
types à traiter et nous aide lors de la découverte d'interfaces qui étendent celui-ci. En
plus de cela, CrudRepository fournit des opérations de création, de lecture, de mise à
jour.
44
Les CRUD opérations : Save () Delete () findby () update () pour implémenter cette
interface en utilisant la dépendance spring data mongo repository.
Créer les document (class model)111
Les annotations :
45
@PathVariable : identifie le modèle qui est utilisé dans l'URI pour la demande entrante
@Cross Origin : active les demandes d'origine croisée uniquement pour cette méthode
spécifique. Par défaut, son autorise toutes les origines, tous les en-têtes et les
méthodes HTTP spécifiées dans la @RequestMappingannotation.
La planification est un processus d'exécution des tâches pour une période donnée.
Spring Boot fournit un bon support pour écrire un planificateur sur les applications
Spring.
Les expressions Java Cron permettent de configurer les instances de CronTrigger, une
sous-classe de org. quartz. Trigger.
46
Les services web et les pages servies ne sont pas sécurisées. Pour mettre en place la
sécurité, on ajoute starter Spring Boot Security et l'authentification JWT (JSON Web
Token).
Annotation @EnableWebSecurity
L'annotation Spring @Bean indique qu'une méthode produit un Bean à gérer par le
conteneur Spring. C'est une annotation au niveau de la méthode.
a. Spring Security :
Fonctionnalités :
Protection contre les attaques telles que la fixation de session, le détournement de clic,
la falsification de requêtes intersites, etc.
47
JWT est un standard, ce qui signifie que tous les JWT sont des jetons, mais que tous les
jetons ne sont pas des JWT. Les JWT peuvent être utilisés de différentes manières :
Autorisation : une fois qu'un utilisateur est connecté avec succès, une application peut
demander à accéder à des itinéraires, des services ou des ressources pour le compte
de cet utilisateur. Pour ce faire, il utilise un jeton d'accès, qui peut être sous la forme
d'un JWT. Chaque demande ultérieure inclut le jeton d'accès. Single Sign On utilise
largement JWT en raison de la légère surcharge du format et de sa capacité à être
facilement utilisé dans différents domaines.
Échange d’informations : les JWT sont un bon moyen de transmettre des informations
en toute sécurité entre les parties, car elles peuvent être signées, ce qui signifie que
vous pouvez être sûr que les expéditeurs sont bien ce qu'ils prétendent être. De plus, la
structure d'un JWT vous permet de vérifier que le contenu n'a pas été falsifié.
L'annotation Spring @Bean signifie qu'une méthode produit un Bean à gérer par le
conteneur Spring. C'est une annotation au niveau de la méthode.
@Configuration: Utilisé pour déclarer une ou plusieurs méthodes @Bean. Peut être
sélectionné par balayage automatique de paquets afin de déclarer les différentes
méthodes @Bean au lieu de la configuration xml traditionnelle.
Autorisation avec jwt :
Création du token pendant l’identification avec le postmapping(/login)
48
Figure 36:autorisation « ADMIN »
1. Angular 7 :
Angular est une plate-forme qui facilite la création d'applications avec le Web. Angular
combine des modèles déclaratifs, une injection de dépendance, des outils de bout en
bout et des meilleures pratiques intégrées pour résoudre les problèmes de
développement. Angular permet aux développeurs de créer des applications
compatibles avec le Web, le mobile ou le bureau.
49
Figure 38:logo Framework angular 7
a. Installer Angular:
Install Node.js
Install Angular:
npm install -g @angular/cli
Une grande partie du développement avec Angular 7 se fait dans les composants.
Les composants sont essentiellement des classes qui interagissent avec le
fichier .html du composant, qui est affiché sur le navigateur.
Dans Angular, nous pouvons avoir des scénarios dans lesquels du code doit être
réutilisé dans plusieurs composants. Par exemple, une connexion de données qui
récupère les données d'une base de données peut être nécessaire dans plusieurs
composants. Ceci est réalisé en utilisant des services.
50
d. Créer un service Http Client :
Ce service aura le http Client et sera responsable de l'appel des demandes HTTP
GET à l'application backend Spring Boot. Dans Angular, un service est écrit pour
toutes les préoccupations transversales et peut être utilisé par plusieurs composants.
e. Routage :
Fonctionnalités :
Paramètres de route :
Les itinéraires dynamiques sont souvent utilisés dans les applications Web pour
transmettre des données (paramètres) ou des états à l'application ou entre divers
composants et pages. Le routeur angulaire prend en charge les chemins
dynamiques et fournit une API facile à utiliser pour accéder aux paramètres de
route dans le module app. Module.ts
Angular Router fournit deux directives pour la navigation : la directive router Link
qui remplace l'attribut href dans les balises <a> pour créer des liens et
routerLinkActive pour marquer le lien actif.
f. Modele :
Modele (Template) combine HTML avec un balisage angulaire pouvant modifier les éléments
HTML avant leur affichage. Les directives de modèle fournissent une logique de programme et
le balisage de liaison relie vos données d'application et le DOM. Il existe deux types de liaison
de données :
51
La liaison d'événement permet à votre application de répondre aux entrées de l'utilisateur dans
l'environnement cible en mettant à jour les données de votre application.
La liaison de propriété vous permet d'interpoler les valeurs calculées à partir des données de
votre application dans le code HTML
Local Storage et session Storage, une partie de l'API de stockage Web, sont deux
excellents outils pour enregistrer les paires clé / valeur localement. Si vous cliquez sur le
bouton Sauvegarder en haut de ce message, local Storage est utilisé pour stocker vos
messages sauvegardés.
Local Storage et session Storage offrent des avantages par rapport à l'utilisation de
cookies :
Les données sont enregistrées localement uniquement et ne peuvent pas être lues par
le serveur, ce qui élimine le problème de sécurité que les cookies posent.
Cela permet de sauvegarder beaucoup plus de données (10 Mo pour la plupart des
navigateurs).
C’est plus simple à utiliser et la syntaxe est très simple.
Il est également pris en charge par tous les navigateurs modernes. Vous pouvez donc
l'utiliser aujourd'hui sans problème. Évidemment, comme les données ne peuvent pas
être lues sur le serveur, les cookies ont toujours une utilité, notamment en ce qui
concerne l’authentification.
52
Figure 40:architecture angular frontend avec autorisation
a. Postman :
Postman est actuellement l'un des outils les plus populaires utilisés dans les tests d'API.
API signifie (Application Programming Interface), qui permet aux applications logicielles
de communiquer entre elles via des appels API.
La gestion d’environnements. Une même API peut être déployée sur différents
environnements (dev, prod, …). Dans ce cas, certains éléments pourront être
variabilisés et ainsi permettre de conserver un même ensemble logique de requêtes,
alimentées de ces éléments sur simple sélection de l’environnement désiré.
Chaque requête peut être documentée au sein même de Postman, tout comme la
collection elle-même. Le tout peut être partagé pour faciliter le travail collaboratif, soit
uploadé sur la plateforme en ligne de Postman (et rendu privé ou public selon le choix)
ou exporté sous forme d’un fichier JSON.
53
Figure 41:logo Postman
b. Visual studio:
Visual Studio .NET est un environnement de développement intégré à Microsoft qui peut
être utilisé pour développer des consoles, des interfaces utilisateur graphiques, des
Windows Forms, des services Web et des applications Web.
Visual Studio est utilisé pour écrire du code natif et du code géré pris en charge par
Microsoft Windows, Windows Mobile, Windows CE, .NET Framework, .NET Compact
Framework et Microsoft Silverlight. L'éditeur de code de Visual Studio .NET prend en
charge IntelliSense et le refactoring de code, tandis que le débogueur intégré Visual
Studio .NET prend en charge le débogage au niveau de la source et de la machine.
Visual Studio .NET inclut d'autres outils intégrés, tels qu'un concepteur de formulaire, ce
qui est utile lors de la création d'applications à interface graphique. Un concepteur Web
qui crée des pages Web dynamiques ; un concepteur de classe utilisé pour créer des
bibliothèques personnalisées et un concepteur de schéma pour la prise en charge de la
base de données.
54
Figure 43:logo bootstrap4
d. Node.js
e. NPM :
55
f. Edraw Max :
Edraw Max est un logiciel de diagramme tout-en-un qui le rend facile pour créer des
diagrammes de flux, des organigrammes, des diagrammes de réseau, des
présentations d'affaires, des plans de construction, des cartes mentales, des illustrations
scientifiques, des designs de mode, des diagrammes UML, des flux de travail, des
structures de programme, des conceptions de site web, des schémas électriques de
l'ingénierie, des cartes directionnelles et des diagramme de base de données et d'autres
diagrammes de qualité professionnelle
4. Langages utilisés :
g. Java2EE :
J2EE est l'acronyme de Java 2 Entreprise Edition. Cette édition est dédiée à la
réalisation d'applications pour entreprises. J2EE est basé sur J2SE (Java 2 Standard
Edition) qui contient les API de base de Java. Depuis sa version 5, J2EE est
renommée Java EE (Enterprise Edition).
Un ensemble d'API qui peuvent être obtenues et utilisées séparément. Pour être
utilisées, certaines nécessitent une implémentation de la part d'un fournisseur tiers.
56
Figure 47:logo java 2E
h. Html5 :
L’HyperText Markup Language, abrégé HTML, est un langage conçu pour représenter
les pages web. Ce langage de balisage permet de structurer sémantiquement et de
mettre en forme le contenu des pages, d’inclure des ressources multimédias dont des
images, des formulaires de saisie, etc.
De l’anglais Cascading Style Sheets (les feuilles de style en cascade), le CSS constitue
un langage informatique permettant d’ajouter des contraintes de mise en forme
graphique dans des documents web, dont les normes sont établies par le World Wide
Web Consortium (W3C).
57
Figure 49:logo css3
j. Type Script :
Type Script est un langage compilé fortement typé, orienté objet. Il a été conçu par
Anders Hejlsberg (concepteur de C #) chez Microsoft. Type Script est à la fois un
langage et un ensemble d’outils. Type Script est un sur-ensemble typé de JavaScript
compilé en JavaScript. En d'autres termes, Type Script est JavaScript et certaines
fonctionnalités supplémentaires.
Type Script est juste JavaScript. Type Script commence par JavaScript et se termine
par JavaScript. Type script adopte les éléments de base de votre programme à partir de
JavaScript. Il suffit donc de connaître JavaScript pour utiliser Type Script. Tout le code
Type Script est converti en son équivalent JavaScript aux fins d'exécution.
58
Figure 51:logo java script
l. JSON :
1. Logiciels utilisés :
a. Vnc Viewer :
Virtual network computing (VNC) est un type de logiciel de contrôle à distance qui
permet de contrôler un autre ordinateur via une connexion réseau. Les frappes et les
clics de souris sont transmis d'un ordinateur à un autre, ce qui permet au personnel du
support technique de gérer un ordinateur de bureau, un serveur ou un autre
périphérique en réseau sans se trouver au même emplacement physique.
59
Figure 53:logo vnc viewer
b. Arduino :
2. Configuration du matériel :
Un ensemble d’équipements matériels a été choisi pour la réalisation de notre application. Ce
choix se base sur beaucoup de critères ainsi que les besoins fonctionnels de
l’application en question.
3. Choix de la solution :
Pour que le projet soit complet et réalisé d’une manière qui répond correctement à nos
besoins, il nous a fallu procéder à des recherches sur le matériel le plus adéquat et
nécessaire à l’implémentation de la solution.
Pour atteindre nos objectifs, et après la comparaison établie ci-dessous entre les
différents choix présentés dans le tableau nous avons conclu que le RPI est la solution
la plus adaptée à nos besoins
En effet : La connectivité est considérée comme un besoin fondamental pour réaliser
notre projet, le RPI possède un port Ethernet, un port WI-FI et un support BLUETOOTH
d’où nous pouvons communiquer avec plusieurs systèmes à microprocesseur par des
divers moyens de communication.
60
On a couplé la carte RPI avec la carte Nodemcu vu que la Raspberry ne traite pas les
données Analogiques
La carte BEAGLEBONE présente une alternative intéressante pour la réalisation de
notre projet en raison de son puissant microcontrôleur mais vu que son indisponibilité
immédiate dans le marché tunisien, nous avons opté pour la carte Raspberry comme un
solution parfait.
Malgré que la carte ZEDBOARD soit plus performante, son cout élevé représente un
handicap pour l’acquisition d’une telle solution sachant que ses capacités sont au-delà
des besoins demandés.
Pour faire fonctionner notre Raspberry Pi, nous avons besoin les accessoires suivants :
Une carte mémoire SD : cette carte va contenir le système d’exploitation du Raspberry Pi, il ne
pourra pas donc démarrer sans cette dernière. Concernant la capacité de la carte mémoire, elle
devra être au moins de 16 Go et de classe 10 minimum. La carte mémoire SD contient le
système d’exploitation Raspbian Stretch et les données.
La plupart des systèmes qui fonctionnent sur Raspberry Pi sont des versions du
système d'exploitation Linux. Parce que Linux est open source, les développeurs
peuvent l’adopter pour des buts spécifiques. Dans le cas du Raspberry Pi, le matériel
léger nécessite un système réduit et privé d'applications inutiles.
Il existe plusieurs systèmes d’exploitation qui peuvent être installé sur la Raspberry Pi
tel que, Raspbian, Stretch, Wheezy, NOOBS et Jessie. Vu que NOOBS est simple et ne
comporte pas les principales fonctionnalités par défaut, nous avons choisi le système
d’exploitation Raspbian Stretch. C’est un système d'exploitation basé sur la nouvelle
version stable de Debian, qui est appelé Stretch.
Raspbian Stretch comporte Tous langages qui peuvent être compilés sur ARMv7 sont
installés par défaut sur le Raspberry Pi : Python. C, C ++, Java, Scratch, Nodejs, et
Ruby.
Pour installer un système d’exploitation sur la carte Raspberry Pi, nous devons tout
d’abord formater la carte SD en format souhaité par le logiciel dédié SD Formatter.
61
Figure 55:formater carte SD
62
6. Connection de la carte Raspberry avec l’ordinateur
Apres avoir copié l’image de système d’exploitation sur la carte SD, nous devons
connecter la carte Raspberry avec l’ordinateur via une connections ssh ( à travers une
point d’accès Wi-Fi) :
-La réinsertion de la carte SD créera deux autres partitions dans la section Poste de
travail.
-Ouvrir la partition « boot »de la carte SD
-Cree un nouveau bloc-notes et enregistre avec ssh sans extensions (pour activer la
connections ssh).
-créer un nouveau bloc-notes sous le nom « wpa-supplicant.conf » sans extension.
63
d’entrer l’adresse IP du Raspberry dans PuTTY pour pouvoir se connecter et ensuite
installer VNC-server sur le Raspberry et l’activer.
64
Figure 61:interface du Raspberry
7. Démarrage de Raspberry
La mise à jour et là sa mise à niveau.
$ uname -m
65
Figure 62:choix la version du nodejs
wget https://nodejs.org/dist/v10.15.0/node-v10.15.0-linux-armv7l.tar.gz
cd node-v10.15.0-linux-armv7l/
sudo cp -R * /usr/local/
MQTT nodejs :
MQTT.js est une bibliothèque cliente pour le protocole MQTT, écrite en JavaScript pour
node.js et le navigateur.
npm i mqtt
Le module node-cron est un petit planificateur de tâches en JavaScript pur pour node.js basé
sur GNU crontab. Ce module vous permet de planifier une tâche dans node.js en utilisant la
syntaxe complète de la crontab.
Créer un Script avec le Nodejs intégrer dans la Raspberry pour assurer Communication
entre Raspberry et serveur web.
66
La carte Raspberry va échanger des données avec le serveur. Le format des données
échangées sera en JSON. Cela nécessite de définir le type de contenu de la requête
HTTP comme étant du JSON.
Créer un client http permet de récupérer la ligne sélectionner depuis l’interface web et
permet de changer leur état grâce à une requête http Get contenant les données à reçu.
9. Communication mqtt :
MQTT :
Mqtt est un protocole de messagerie léger basé sur la publication / abonnement.
Il est plus rapide (plus rapide) que d'autres API basées sur les requêtes et les
réponses telles que HTTP.
Il est développé sur la base du protocole TCP / IP.
Il permet aux périphériques de localisation distants de se connecter, s'abonner,
publier, etc. à un sujet spécifique sur le serveur à l'aide du courtier de messages.
67
MQTT Broker / Message broker est un module entre l'expéditeur et le
destinataire. C'est un élément de validation, de transformation et de routage des
messages.
Le courtier est responsable de la distribution des messages aux clients intéressés
(clients abonnés) de leur sujet intéressé.
On récupérer les attributs id et état de chaque ligne et envoyer au Node mcu via un
client mqtt par la méthode publish :
TOPIC : id
68
Figure 66:client MQTT
Connexion wifi :
Client.SetServer(mqtt_server,1883)
69
Figure 68:fonction reconnect (code Arduino)
La fonction callback piloter l’éclairage de la ligne :
70
Figure 71:resultat2 du console arduino
10. Câblage :
71
V. Conclusion
La dernière partie était dédiée à la navigation dans notre application. Elle constitue le
dernier volet de ce rapport, elle a pour objet de présenter l’environnement logiciel et
matériel de réalisation, et de décrire les principales fonctionnalités implémentées suite
au développement par des captures écrans présentant les principes interfaces des
applications.
72
Conclusion générale :
73