Cours:LPTraitDonnee1 : Différence entre versions

De troyesGEII
Aller à : navigation, rechercher
(Exercices à faire)
(Exercices)
 
(35 révisions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
= MQTT =
+
[[Cours:LPTraitDonnee|{{Rouge|'''Retour à la page du cours'''}}]]
 +
 
 +
<center>
 +
'''<big>Partie 1 : MQTT et NodeRed</big>'''
 +
</center>
 +
 
 +
== Découverte de MQTT ==
 +
 
 +
=== Exercices ===
 +
 
 +
1) Lire ce document et faire les exercices :  [[Fichier:tutorial_mqtt.pdf]] (source J.Y. Tigli : http://www.tigli.fr)
 +
* Sous les machines windows de l'iut, les éxecutables sont dans le dossier <code>c:\Program Files\mosquitto\</code>
 +
 
 +
Vous testerez ces ''brokers'' :
 +
* Broker de test : <code>test.mosquitto.org</code>
 +
* Broker graphique : https://lp-iot.cloud.shiftr.io : (visualisation des messages entrants et sortants).
 +
** Il est nécessaire de fournir un numéro d’utilisateur et un mot de passe.
 +
** Exemple <code>mosquitto_pub -u lp-iot -P vHm5YuMEPJcpNfss -h lp-iot.cloud.shiftr.io -t NomDuTopic -m ContenuDuMessage</code>
 +
* Broker lancé par défaut sur chaque machine
 +
* Broker interne (10.98.35.245)
 +
 
 +
''Note pour les utilisateurs de Windows'' : il sera probablement plus commode d’utiliser la console ''powerShell'' (intégré à Windows) en guise de terminal plutôt que la rustique invite de commande.
 +
 
 +
 
 +
2) Échanger des informations entre deux machines (par binôme)
 +
* Faire simple : envoyer un message sur un seul topic
 +
* En utilisant une des deux machines (ou les deux) en broker :
 +
** L'IP de votre machine est accessible par la commande <code>ipconfig</code>
 +
** Il sera nécessaire de :
 +
*** interrompre le daemon <code>mosquitto</code> en le tuant dans le gestionnaire des tâches
 +
*** de lancer le broket par la commande <code>mosquitto.exe</code>
 +
*** de modifier au préalable le fichier <code>mosquitto.conf</code>
 +
<source lang=bash>
 +
listener 1883 # vers la ligne 232 : permet l'acces sur le port 1883 par IP
 +
allow_anonymous true # vers la ligne 529 : autorise les connections externes
 +
</source>
 +
 
 +
''Note'' : Vous utiliserez MQTT Explorer pour visualiser le comportement de votre broker et les messages qui y circulent. Vous pouvez le télécharger en version portable à l'adresse suivante http://mqtt-explorer.com
 +
 
 +
=== Lecture et informations ===
  
 
* Lecture
 
* Lecture
Ligne 9 : Ligne 48 :
 
* Un tuto MQTT : https://hackmd.io/@pmanzoni/BJ9hwSfhG
 
* Un tuto MQTT : https://hackmd.io/@pmanzoni/BJ9hwSfhG
  
== Exercices à faire ==
+
== NodeRed ==
  
Note pour les utilisateurs de Windows : il sera probablement plus commode d’utiliser PowerShell (intégré à Windows) en guise de terminal plutôt que la rustique invite de commande.
+
=== Exercices ===
  
<code>c:\Program Files\mosquitto\mosquitto_sub.exe</code>
+
* (si besoin) Installer node-red-dashboard
 +
** de préférence via l'ui graphique (cf ''manage palette'')
 +
** sinon, en ligne de commande : <code>npm install node-red-dashboard</code>
  
* Lire ce document et faire les exercices : [[Fichier:tutorial_mqtt.pdf]] (source J.Y. Tigli : http://www.tigli.fr)
+
* Exercices (tutoriels) sans MQTT :
 +
** https://nodered.org/docs/tutorials/ (''first flow'' et ''second flow'')
 +
** http://silanus.fr/sin/?p=984
 +
** https://forum.hacf.fr/t/debuter-avec-node-red/334
 +
* Tutoriel node-RED dashboard : http://noderedguide.com/lecture-7-node-red-dashboard-part2/
 +
* Exercice avec MQTT : en vous appuyant sur les tutos précédent et les "recettes" du cookbook (https://cookbook.nodered.org/#mqtt) :
 +
** Un PC doit générer et envoyer des nombres aléatoires sur un topic
 +
** l'autre PC doit récupérer ces données et réaliser un affichage graphique
  
* Utiliser ce broker graphique : https://lp-iot.cloud.shiftr.io : (visualisation des messages entrants et sortants).
+
=== Lecture et informations ===
** Il est nécessaire de fournir un numéro d’utilisateur et un mot de passe.
 
** Exemple <code>mosquitto_pub -u lp-iot -P vHm5YuMEPJcpNfss -h lp-iot.cloud.shiftr.io -t NomDuTopic -m ContenuDuMessage</code>
 
* ou le broker lancé par défaut sur chaque machine : échanger des infos entre deux machines (par binôme).
 
* ou le broker interne (10.98.35.245)
 
 
 
= NodeRed =
 
  
* Lecture de documentations
+
* Documentations
 
** Node.js (moteur de Node-RED) :https://nodejs.org/fr/
 
** Node.js (moteur de Node-RED) :https://nodejs.org/fr/
 
** Node-RED : https://nodered.org
 
** Node-RED : https://nodered.org
 
** node-red-dashboard (interface utilisateur) pour node-RED : https://flows.nodered.org/node/node-red-dashboard
 
** node-red-dashboard (interface utilisateur) pour node-RED : https://flows.nodered.org/node/node-red-dashboard
 
**:- ou dashboard-evi en alternative : https://flows.nodered.org/node/dashboard-evi
 
**:- ou dashboard-evi en alternative : https://flows.nodered.org/node/dashboard-evi
* Node-RED Cookbook : https://cookbook.nodered.org
+
* Node-RED Cookbook, solutions pour la plupart des actions élémentaires :: https://cookbook.nodered.org
 +
** avec MQTT en particulier : https://cookbook.nodered.org/#mqtt
 
* Une collection de ''flows'' node-red de qualité : https://github.com/naimo84/awesome-nodered
 
* Une collection de ''flows'' node-red de qualité : https://github.com/naimo84/awesome-nodered
* Doc officielle sur les blocs fonctions : https://nodered.org/docs/user-guide/writing-functions
+
* Comment écrire du code (javascript) dans les blocs fonctions : https://nodered.org/docs/user-guide/writing-functions
 
* '''Guide de survie''' :
 
* '''Guide de survie''' :
 
** Lancer NodeRed en ligne de commande (bash ou powershell, '''en mode administrateur sur les machines de l'IUT''') : <code>node-red.cmd</code>
 
** Lancer NodeRed en ligne de commande (bash ou powershell, '''en mode administrateur sur les machines de l'IUT''') : <code>node-red.cmd</code>
Ligne 38 : Ligne 81 :
 
** interfaces graphiques sur <code>http://127.0.0.1:1880/ui</code> (par défaut)
 
** interfaces graphiques sur <code>http://127.0.0.1:1880/ui</code> (par défaut)
  
== (si besoin) Installer Node-Red sur Android ==
+
== Annexe : Installer Node-Red sur Android ==
  
 
Suivre les indications données ici : https://nodered.org/docs/getting-started/android
 
Suivre les indications données ici : https://nodered.org/docs/getting-started/android
 
* Installer Termux : https://termux.com
 
* Installer Termux : https://termux.com
 
* Ouvrir Termux et taper
 
* Ouvrir Termux et taper
<syntaxhighlight>
+
<source>
 
apt update
 
apt update
 
apt upgrade
 
apt upgrade
apt install coreutils nano nodejs</syntaxhighlight>
+
apt install coreutils nano nodejs
 +
</source>
 
* Ensuite
 
* Ensuite
<syntaxhighlight>
+
<source>
 
npm i -g --unsafe-perm node-red
 
npm i -g --unsafe-perm node-red
</syntaxhighlight>
+
</source>
 
Si cette commande ne passe pas (certains Android apparement), taper  
 
Si cette commande ne passe pas (certains Android apparement), taper  
<syntaxhighlight>
+
<source>
 
pkg install yarn
 
pkg install yarn
 
yarn global add npm
 
yarn global add npm
 
npm i -g --unsafe-perm node-red
 
npm i -g --unsafe-perm node-red
</syntaxhighlight>
+
</source>
 
* Lancer ensuite node-red
 
* Lancer ensuite node-red
<syntaxhighlight>node-red</syntaxhighlight>
+
<source>node-red</source >
 
* Ouvrir ensuite un navigateur sur <code>http://localhost:1880</code> depuis l'appareil Android. Vous pouvez également accéder à ce node-red depuis un PC par exemple) en remplaçant localhost par l'adresse IP de l'appareil Android. Pour connaitre celle-ci, taper dans Termux :
 
* Ouvrir ensuite un navigateur sur <code>http://localhost:1880</code> depuis l'appareil Android. Vous pouvez également accéder à ce node-red depuis un PC par exemple) en remplaçant localhost par l'adresse IP de l'appareil Android. Pour connaitre celle-ci, taper dans Termux :
<syntaxhighlight>ifconfig</syntaxhighlight>
+
<source>ifconfig</source >
 
 
== Exercices à faire==
 
 
 
* (si besoin) Installer Node.js puis NodeRed
 
* (si besoin) Installer node-red-dashboard
 
** En ligne de commande : <code>npm install node-red-dashboard</code>
 
 
 
* Exercices (tutoriels) sans MQTT :
 
** http://silanus.fr/sin/?p=984
 
** http://www.rgot.org/initiation-a-node-red/
 
 
 
* Exercices (tutoriels) avec MQTT
 
** https://cookbook.nodered.org/#mqtt
 
** https://projetsdiy.fr/routeur-mqtt-node-red-sonoff-tasmota-cloudmqtt/
 
 
 
* Tuto node-RED dashboard : https://projetsdiy.fr/node-red-dashboard-interface-partie1/
 
 
 
= Travail à faire et rendre =
 
 
 
'''Suivi de données météorologiques'''
 
 
 
* Travail :
 
** une partie "collecte de donnée" qui doit recevoir des données et les envoyer sur un broker
 
** une partie "affichage" qui doit lire des données du broker et réaliser un affichage graphique
 
* Cahier des charges :
 
** Exploiter les données météorologiques de [https://openweathermap.org OpenWeather]
 
*** Depuis Node-Red : <code>node-red-node-openweathermap</code>, https://flows.nodered.org/node/node-red-node-openweathermap (bien lire la doc !)
 
** Les données doivent être enregistrées progressivement dans un fichier texte pour archivage
 
** En respectant un contexte « objet connecté», vous pourrez ajouter les fonctionnalités que vous souhaitez. Dans la logique de réaliser un "objet connecté" rapidement, vous pourrez évidemment utiliser tout code ou flow trouvé sur le net, à condition de le mentionner et d'expliquer son fonctionnement.
 
*** Un exemple simple : http://developers.sensetecnic.com/article/a-node-red-flow-to-monitor-the-weather/
 
*** Un guide assez clair et complet sur l'écriture de blocs de fonctions : https://stevesnoderedguide.com/node-red-functions. En particulier :
 
**** comment gérer plusieurs entrées
 
**** comment gérer plusieurs sorties
 

Version actuelle datée du 6 mars 2023 à 12:32

Retour à la page du cours

Partie 1 : MQTT et NodeRed

Découverte de MQTT

Exercices

1) Lire ce document et faire les exercices : Fichier:Tutorial mqtt.pdf (source J.Y. Tigli : http://www.tigli.fr)

  • Sous les machines windows de l'iut, les éxecutables sont dans le dossier c:\Program Files\mosquitto\

Vous testerez ces brokers :

  • Broker de test : test.mosquitto.org
  • Broker graphique : https://lp-iot.cloud.shiftr.io : (visualisation des messages entrants et sortants).
    • Il est nécessaire de fournir un numéro d’utilisateur et un mot de passe.
    • Exemple mosquitto_pub -u lp-iot -P vHm5YuMEPJcpNfss -h lp-iot.cloud.shiftr.io -t NomDuTopic -m ContenuDuMessage
  • Broker lancé par défaut sur chaque machine
  • Broker interne (10.98.35.245)

Note pour les utilisateurs de Windows : il sera probablement plus commode d’utiliser la console powerShell (intégré à Windows) en guise de terminal plutôt que la rustique invite de commande.


2) Échanger des informations entre deux machines (par binôme)

  • Faire simple : envoyer un message sur un seul topic
  • En utilisant une des deux machines (ou les deux) en broker :
    • L'IP de votre machine est accessible par la commande ipconfig
    • Il sera nécessaire de :
      • interrompre le daemon mosquitto en le tuant dans le gestionnaire des tâches
      • de lancer le broket par la commande mosquitto.exe
      • de modifier au préalable le fichier mosquitto.conf
listener 1883 # vers la ligne 232 : permet l'acces sur le port 1883 par IP
allow_anonymous true # vers la ligne 529 : autorise les connections externes

Note : Vous utiliserez MQTT Explorer pour visualiser le comportement de votre broker et les messages qui y circulent. Vous pouvez le télécharger en version portable à l'adresse suivante http://mqtt-explorer.com

Lecture et informations

  • (Si besoin) Installation des outils (plusieurs windows 10 + 1 W7+ 1 linux)

NodeRed

Exercices

  • (si besoin) Installer node-red-dashboard
    • de préférence via l'ui graphique (cf manage palette)
    • sinon, en ligne de commande : npm install node-red-dashboard

Lecture et informations

Annexe : Installer Node-Red sur Android

Suivre les indications données ici : https://nodered.org/docs/getting-started/android

apt update
apt upgrade
apt install coreutils nano nodejs
  • Ensuite
npm i -g --unsafe-perm node-red

Si cette commande ne passe pas (certains Android apparement), taper

pkg install yarn
yarn global add npm
npm i -g --unsafe-perm node-red
  • Lancer ensuite node-red
node-red
  • Ouvrir ensuite un navigateur sur http://localhost:1880 depuis l'appareil Android. Vous pouvez également accéder à ce node-red depuis un PC par exemple) en remplaçant localhost par l'adresse IP de l'appareil Android. Pour connaitre celle-ci, taper dans Termux :
ifconfig