Cours:BUTiot Nodejs

De troyesGEII
Révision datée du 26 novembre 2024 à 11:35 par Fredmn (discussion | contributions)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à : navigation, rechercher

Retour à la page du cours

Node.js : envoyer/recevoir des données avec le protocole MQTT

Le travail de cette étape va consister à envoyer et recevoir des messages via le protocole MQTT, avec Node.js:

  • publication de message
  • souscription à des topics

Données disponibles

L'IUT est équipé de modules de mesure en temps réel de la consommation électrique. Ces mesures sont publiées sur le serveur MQTT d'adresse 10.98.35.245. Voici les topics utilisés :

Topics MQTT mesure consommation électrique IUT

elec/general/courant/i1
elec/mmi/courant/i1
elec/geii/courant/i1
elec/gmp/courant/i1
elec/appartements/courant/i1
elec/batA/courant/i1
elec/batE/courant/i1
elec/chaufferie/courant/i1
elec/general/courant/i2
elec/mmi/courant/i2
elec/geii/courant/i2
elec/gmp/courant/i2
elec/appartements/courant/i2
elec/batA/courant/i2
elec/batE/courant/i2
elec/chaufferie/courant/i2
elec/general/courant/i3
elec/mmi/courant/i3
elec/geii/courant/i3
elec/gmp/courant/i3
elec/appartements/courant/i3
elec/batA/courant/i3
elec/batE/courant/i3
elec/chaufferie/courant/i3
  • La nomenclature est la suivante : elec/[bât]/courant/i{1,2,3}.
  • Le courant est triphasé : i1, i2 et i3 désignent les courants de chaque phase.
  • Les courants sont donnés en mA.


Exercice 1

a) Vérifier que vous arrivez à lire, dans un terminal et avec mosquitto_sub, les données de consommation.

Exercice 2

a) Calculer et afficher en temps réel :

  1. Pour chaque phase, le courant consommé pour tout l'iut (general)
  2. Pour chaque phase, la somme des courants consommés sur chaque bâtiment

b) Pour GEII (et la phase i1 uniquement) :

  1. Calculer les max, min temporels et les envoyer sur un topic personnel idoine
  2. Calculer la moyenne de toutes les valeurs reçues (depuis le lancement du programme) et l'envoyer sur un topic
  3. Calculer la moyenne des 10 dernières valeurs reçues (moyenne glissante) et l'envoyer sur un topic.

Note :

  • Vous pourrez utiliser la librairie mathjs afin de disposer de fonctions de calculs poussées.
  • Pour la moyenne glissante, en guise de pile FIFO, il sera probablement utile d'utiliser un tableau (array) pour stocker les 10 dernières valeurs ; et les méthodes pop(), push(), shift() et unshift().