Node-RED est un outil de développement visuel, basé sur des flux (flows), qui permet de créer facilement des applications connectées en assemblant des blocs logiques.
Il fonctionne dans un navigateur et utilise un système de “nœuds” que l’on relie entre eux pour traiter des données, piloter des équipements ou créer des interfaces web.
Node-RED est particulièrement utilisé pour :
- l’IoT (Internet des Objets)
- la collecte et transformation de données
- la communication avec des protocoles industriels (MQTT, Modbus, OPC-UA…)
RabbitMQ est un serveur de messagerie qui permet à différentes applications de communiquer entre elles en s’échangeant des messages de manière fiable, asynchrone et découplée.
Il utilise principalement le protocole AMQP, gère les files d’attente, l’acheminement intelligent des messages, les accusés de réception et la persistance.
RabbitMQ est très utilisé pour :
- répartir des tâches entre plusieurs services,
- connecter des systèmes industriels ou IoT,
- absorber des flux importants sans perdre de messages,
- assurer une communication robuste entre modules d’une application
Un château d'eau est une citerne située en hauteur qui alimente un certain nombre d'habitations en eau potable.
Pour garantir une pression constante et un service de qualité, la hauteur dans la citerne doit être régulière.
Notre système se compose :
* D'une citerne de 10m3,
* De 4 pompes chacune capable d'alimenter la citerne avec un débit de 60 l/s pour chaque pompe (*OUT_PUMP_1*, *OUT_PUMP_2*, *OUT_PUMP_3*, *OUT_PUMP_4*).
* De 4 capteurs disposés à différentes hauteurs (*IN_SENSOR_MIN*, *IN_SENSOR_LOW*, *IN_SENSOR_HIGH*, *IN_SENSOR_MAX*).
* D'un bouton poussoir permettant de changer le mode de fonctionnement (*IN_KEYBOARD_A*).
* De quatre boutons poussoirs permettant de démarrer les moteurs manuellement (*IN_KEYBOARD_1*, *IN_KEYBOARD_2*, *IN_KEYBOARD_3*, *IN_KEYBOARD_4*).
* Un voyant qui indique le mode de fonctionnement (*OUT_DISPLAY_MODE*)
* Enfin un avertisseur sonore qui sonne lorsque une anomalie grave survient (*OUT_BEEP*).
# Fonctionnement
Le système démarre en mode manuel (*OUT_DISPLAY_MODE* = 0). Un appui sur le bouton poussoir (*IN_KEYBOARD_A*) passe le système en mode automatique, un nouvel appui est nécessaire pour repasser en mode manuel.
La sortie (*OUT_DISPLAY_MODE* = 1) est activée en mode automatique.
Lorsque le niveau *IN_SENSOR_MAX* est atteint tous les moteurs sont arrêtés quelque soit le mode de fonctionnement.
Lorsque le niveau *IN_SENSOR_MIN* est atteint l'avertisseur sonore est déclenché. Si le système est en mode automatique il repasse en mode manuel. L'avertisseur retenti qu'une seule fois quelque soit la durée en dessous du seuil d'avertissement. Il faut que le niveau repasse au dessus du niveau *IN_SENSOR_MIN* pour réinitialiser l'avertisseur soniore.
* Faire le grafcet de ce fonctionnement
* Programmer ce fonctionnement
## Mode automatique
Lorsque le système est en dessous de *IN_SENSOR_LOW* pendant plus de 1.5s le système démarre un moteur. Si le niveau est toujours inférieur à *IN_SENSOR_LOW* = 0 au bout de 1.5s le système démarre une nouvelle pompe jusqu'à ce que les 4 pompes soient activées.
A l'inverse Lorsque le système est au dessus de *IN_SENSOR_LOW* = 1 pendant plus de 1.5s le système arrête un moteur. Si le niveau est toujours supérieur à IN_SENSOR_LOW au bout de 1.5s le système arrête une nouvelle pompe jusqu'à ce que les 4 pompes soient à l'arrêt.
* Programmer ce fonctionnement en suivant le [grafcet](grafcet.pdf) fourni