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

31 lines
2.5 KiB
Markdown
Raw Permalink Normal View History

2018-03-02 12:03:52 +01:00
# 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](https://nats.io/download/nats-io/gnatsd/) 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](https://nats.io/download/) 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](https://forge.cadoles.com/wpetit/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.