formations/diiage/C3-6_IoT_Systèmes_distribués/20180209_IoT_Stratégie_comm.../tp.md

2.5 KiB

TP - Créer un réseau d'agents indépendants communicants

Avertissement

Ceci est un TP de classe. Vous devez vous répartir les tâches et travailler par binome/trinome/etc. N'essayez pas d'implémenter l'ensemble des agents de manière individuelle. Vous devez donc également vous mettre d'accord sur le format des messages pour que vos agents soient inter-opérables.

Contexte

Créer un réseau d'agents indépendants capables de récolter/partager des informations sur vos machines respectives. Ces agents devront communiquer via un serveur NATS en suivant le paradigme publish/subscribe.

Les agents suivants devraient être implémentés:

  • Un agent récoltant l'espace disque utilisé sur votre machine et publiant celui ci sur le réseau.
  • Un agent récoltant la température des CPU de votre machine (sur Linux, voir /sys/class/thermal).
  • Un agent d'alerte réagissant aux messages des agents "Espace disque" et "Température CPU". Si les valeurs dépassent un seuil prédéfini (le choix reste à votre discrétion), cet agent doit envoyer un message d'alerte sur le réseau.
  • Un agent de transmission des alertes. Lorsque cet agent reçoit un message d'alerte via le serveur NATS, il doit transformer celui ci en courriel et l'envoyer à une adresse prédéfinie.

Ce type de topologie avec des agents indépendants est typique d'un réseau "IoT".

Chaque agent que vous implémenterez est assimilable à un objet avec une fonction précise (capteur d'humidité, thermomètre, capteur de présence, etc...).

Ces objets communiquent par l'envoi/réception de messages sur un médium/protocole de transport commun (ici TCP/IP + NATS). Dans la réalité, ces objets pourraient utiliser du Bluetooth, des ondes radio, une connexion 4G...

Consignes

  • Récupérer/installer un serveur NATS et le lancer sur une de vos machines. Ce serveur NATS servira de canal de communication entre vos agents.
  • À l'aide du langage de votre choix implémenter un des agents décrits ci dessus. Si vous préférez travailler avec des scripts (Bash ou Powershell, à votre convenance), vous pouvez utiliser l'utilitaire nuts pour gérer la communication avec le serveur NATS. Vous n'êtes pas obligé d'implémenter vos agents avec le même langage.
  • Concevoir un protocole commun pour que vos agents puissent communiquer ensemble.
  • S'assurer que les agents implémentés sont interopérables et que les alertes par courriel sont correctement envoyées.