Vous êtes sur la page 1sur 6

RÉPUBLIQUE ALGÉRIENNE DÉMOCRATIQUE ET POPULAIRE

MINISTÈRE DE L’ENSEIGNEMENT SUPÉRIEUR ET DE LA


RECHERCHE SCIENTIFIQUE
ÉCOLE NATIONALE SUPÉRIEURE D’INFORMATIQUE

2ème Année Cycle Supérieur (2CS)


2022-2023

TP n° 7

MQTT

Réalisé par : Encadré par :

- ZERROUK Ahmed (SIL1) - SEHAD Abdenour

Année universitaire : 2022-2023

1
Table des matières

1 Partie pratique 3
1.1 Capture de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1.1 Coté arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1.1.1 Montage arduino . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1.1.2 Code arduino . . . . . . . . . . . . . . . . . . . . . . . . . -
1.2
Node-Red : 6section.1.2
1.2.1 Test et affichage de valeur captée : . . . . . . . . . . . . . . . . . . . 6

2
Chapitre 1

Partie pratique

3
1.1 Capture de données
1.1.1 Coté arduino
C’est cette partie qu’on va définir les différentes topics de notre système

1.1.1.1 Montage arduino

Figure 1.1

1.1.1.2 Code arduino :

2 #i n c l u d e <ArduinoMqttClient . h>
3 #i n c l u d e <WiFiNINA . h>
4 #i n c l u d e " U l t r a s o n i c . h"
5 int distance ;
6 Ultrasonic ultrasonic (7) ;
7 c h a r s s i d [ ] = "Ahmed" ; // s s i d w i f i
8 c h a r p a s s [ ] = " ahmedzer59 " ; //mot de p a s s e w i f i
9
10 W iF i C li e n t w i f i C l i e n t ;
11 M q t t C l i e n t m q t t C l i e n t ( w i f i C l i e n t ) ; // c r e a t i o n d ’ un c l i e n t mqtt
12 c o n s t c h a r b r o k e r [ ] = " t e s t . m o s q u i t t o . o r g " ; //nom du b r o k e r
13 int port = 1 8 8 3 ; // p o r t de communication
14 c o n s t c h a r t o p i c [ ] = " C o r e E l e c t r o n i c s / t e s t " ; // c a p t e u r l d r
15 c o n s t c h a r t o p i c 2 [ ] = " U l t r a s o n " ; // c a p t e u r u l t r a s o n
16 // s e t i n t e r v a l f o r s e n d i n g m ess ag es ( m i l l i s e c o n d s )
17 const long i n t e r v a l = 8000;
18 unsigned long p r e v i o u s M i l l i s = 0 ;
19 i n t count = 0 ;
20 void setup ( ) {
21 // I n i t i a l i z e s e r i a l and w a i t f o r p o r t t o open :
22 S e r i a l . begin (9600) ;

4
23 while ( ! S e r i a l ) {
24 ; // w a i t f o r s e r i a l p o r t t o c o n n e c t . Needed f o r n a t i v e USB p o r t o n l y
25 }
26 // attempt t o c o n n e c t t o W i f i network :
27 S e r i a l . p r i n t ( " Attempting t o c o n n e c t t o WPA SSID : " ) ; // c o n n e c t i o n au w i f i
28 Serial . println ( ssid ) ;
29 w h i l e ( WiFi . b e g i n ( s s i d , p a s s ) != WL_CONNECTED) {
30 // f a i l e d , r e t r y
31 Serial . print (" . ") ;
32 delay (1000) ;
33 }
34 S e r i a l . p r i n t l n ( "You ’ r e c o n n e c t e d t o t h e network " ) ;
35 Serial . println () ;
36
37 S e r i a l . p r i n t ( " Attempting t o c o n n e c t t o t h e MQTT b r o k e r : " ) ;
38 S e r i a l . p r i n t l n ( broker ) ;
39
40 i f ( ! m q t t C l i e n t . c o n n e c t ( broker , p o r t ) ) {
41 S e r i a l . p r i n t ( "MQTT c o n n e c t i o n f a i l e d ! E r r o r code = " ) ;
42 S e r i a l . p r i n t l n ( mqttClient . connectError ( ) ) ;
43
44 while (1) ;
45 }
46
47 S e r i a l . p r i n t l n ( "You ’ r e c o n n e c t e d t o t h e MQTT b r o k e r ! " ) ;
48 Serial . println () ;
49 }
50 void loop ( ) {
51 // c a l l p o l l ( ) r e g u l a r l y t o a l l o w t h e l i b r a r y t o send MQTT keep a l i v e which
52 // a v o i d s b e i n g d i s c o n n e c t e d by t h e b r o k e r
53 mqttClient . p o l l ( ) ;
54 i n t Rvalue = analogRead (A0) ; // l i r e l a v a l e u r l d r
55 d i s t a n c e = u l t r a s o n i c . M e a s u r e I n C e n t i m e t e r s ( ) ; // l i r e l a d i s t a n c e du c a p t e u r u l t r a s o n
56
57 S e r i a l . p r i n t ( " Sending message t o t o p i c : " ) ;
58 Serial . println ( topic ) ;
59 S e r i a l . p r i n t l n ( Rvalue ) ;
60
61 S e r i a l . p r i n t ( " Sending message t o t o p i c 2 : " ) ;
62 Serial . println ( topic2 ) ;
63 Serial . println ( distance ) ;
64
65 // send message , t h e P r i n t i n t e r f a c e can be used t o s e t t h e message c o n t e n t s
66 m q t t C l i e n t . beginMessage ( t o p i c ) ;
67 m q t t C l i e n t . p r i n t ( Rvalue ) ; // e n v o i de message de t o p i c 1
68 m q t t C l i e n t . endMessage ( ) ;
69
70 m q t t C l i e n t . beginMessage ( t o p i c 2 ) ;
71 m q t t C l i e n t . p r i n t ( d i s t a n c e ) ; // e n v o i de message de t o p i c 2
72 m q t t C l i e n t . endMessage ( ) ;
73 Serial . println () ;
74 delay (1000) ;
75 }

5
1.2 Node-Red :
Rapsberry va jouer le role de l’intercepteur, il va intercepter les données envoyées du
arduino, grace a la plateforme node-red. Pour intercepter les données d’une topic, il faut
créer un noeud mqtt-in, avec les données de la topic définie dans l’arduino afin d’intercepter
les packets mqtt de cette topic, un exemple dans la capture suivante :

Figure 1.2

Figure 1.3

1.2.1 Test et affichage de valeur captée :

Figure 1.4

Vous aimerez peut-être aussi