Académique Documents
Professionnel Documents
Culture Documents
Abdenour Sehad
TP: Système IoT complet avec utilisation d’une plateforme IoT Module: SCI
1 Partie théorique
a Introduction à NodeRed
Node-RED est un outil de développement de programmation visuelle basé sur les flux qui connecte les
périphériques matériels, les API et les services en ligne dans le cadre de l’Internet des objets.
Node-RED fournit un éditeur de flux basé sur un navigateur Web qui peut être utilisé pour créer
des fonctions JavaScript. Les éléments d’application peuvent être enregistrés ou partagés pour être
réutilisés. Le runtime est construit sur Node.js. Les flux créés dans Node-RED sont stockés dans JSON.
Les nœuds MQTT peuvent établir des connexions TLS correctement configurées.
La norme représente également trois types de messages, tels que Connecter, Déconnecter et Publier.
Les messages de type Connect sont envoyés par le client au médiateur, et les messages de type Disconnect
sont des vérifications de "fin de session" envoyées par la médiation au client connecté.
Le type de message de publication commence par le client et envoie les informations au courtier de
messages. Ce schéma de message est également transmis au client lors du transfert de données.
2 Partie pratique
a Installation
• Il faut installer Node-red (préférablement sur Raspberry Pi): Node-Red Running on Raspberry Pi
• Il faut installer les noeuds des widgets graphiques: A set of dashboard nodes for Node-RED
8 int sensorValue = 0;
9
10 WiFiClient wifiClient;
11 MqttClient mqttClient(wifiClient);
12
13 const char broker[] = "ADRESSE_IP_BROKER"; // adresse IP de la machine executant le broker
14 int port = 1883;
15 const char light[] = "light";
16 const char force[] = "force";
17
18 void setup() {
19 Serial.begin(9600);
20 while (!Serial) ;
21 Serial.println("Attempting to connect to WPA SSID: ");
22 Serial.println(ssid);
23 while (WiFi.begin(ssid, pass) != WL_CONNECTED) {
24 Serial.print(".");
25 delay(1000);
26 }
27 Serial.println("You're connected to the network");
28 Serial.println();
29 Serial.print("Attempting to connect to the MQTT broker: ");
30 Serial.println(broker);
31 if (!mqttClient.connect(broker, port)) {
32 Serial.print("MQTT connection failed! Error code = ");
33 Serial.println(mqttClient.connectError());
34 while (1);
35 }
36 Serial.println("You're connected to the MQTT broker!");
37 Serial.println();
38 }
39
40 void loop() {
41 mqttClient.poll();
42
43 sensorValue = analogRead(sensorPinLight);
44 Serial.println("Sending message to topic: light");
45 Serial.println(sensorValue);
46 mqttClient.beginMessage(light);
47 mqttClient.print(sensorValue);
48 mqttClient.endMessage();
49
50 sensorValue = analogRead(sensorPinForce);
51 Serial.println("Sending message to topic: force");
52 Serial.println(sensorValue);
53 mqttClient.beginMessage(force);
54 mqttClient.print(sensorValue);
55 mqttClient.endMessage();
56
57 delay(1000);
58 }
On crée deux topics "light" et "force". L’arduino dans ce cas joue le rôle du Publiquateur, les
noeuds node-red joue le rôle des Souscripteurs. Donc on peut contrôler par la suite une LED connecter
à Raspberry Pi qui l’allume où l’éteint relativement a une seuil de lumière. On a crée même des noeuds
pour injecte des valeurs (0 ou 1) pour changer l’état de la LED.
Résultat: (sur l’URL https://localhost:1880/ui affichant le dashboard)
69
70 while (mqttClient.available()) {
71 if ((char)mqttClient.read() - '0')
72 digitalWrite(pinLED, HIGH);
73 else
74 digitalWrite(pinLED, LOW);
75 }
76
77 delay(1000);
78 }
On peut donc allumer et éteindre la LED connecter à Arduino avec le dashboard des widgets
graphique, ou avec le bouton poussoir connectée à Raspberry Pi.