Cours:BUTiot Nodejs

De troyesGEII
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, les données de consommation

Exercice 2

a) Calculer et afficher en temps réel :

  1. Le courant consommé pour chaque bâtiment et pour chaque phase
  2. Le courant consommé pour chaque phase, pour tout l'iut

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().