Cours:BUTiot Nodejs : Différence entre versions
Ligne 64 : | Ligne 64 : | ||
Note : | Note : | ||
* Vous pourrez utiliser la librairie [https://mathjs.org/ mathjs] afin de disposer de fonctions de calculs poussées. | * Vous pourrez utiliser la librairie [https://mathjs.org/ 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 <code>pop()<code>, < | + | * 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 <code>pop()</code>, <code>push()</code>, <code>shift()</code> et <code>unshift()</code>. |
Version du 4 décembre 2023 à 10:05
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
eti3
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 :
- Le courant consommé pour chaque bâtiment et pour chaque phase
- Le courant consommé pour chaque phase, pour tout l'iut
b) Pour GEII (et la phase i1 uniquement) :
- Calculer les max, min temporels et les envoyer sur un topic personnel idoine
- Calculer la moyenne de toutes les valeurs reçues (depuis le lancement du programme) et l'envoyer sur un topic
- 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()
etunshift()
.