Router e-hub
Un routeur en C# et .NET 8, dont j'ai porté l'essentiel du développement : il reçoit les états des entités envoyés en eHuB, les traduit en canaux DMX selon un mapping CSV, et les envoie en Art-Net aux contrôleurs d'un mur de LED.

Contexte
Projet de fin d'année à HETIC (juin à juillet 2025), pour un client fictif inspiré du Groupe LAPS, studio de spectacles lumineux. Prévu pour quatre, le projet a surtout reposé sur deux personnes, et j'en ai porté l'essentiel du développement. Le banc d'essai : un mur de LED de 2 mètres sur 2, soit 128 × 128 LED visibles réparties sur 128 univers DMX et 4 contrôleurs.
Problème
Les animations sont créées dans Unity, qui décrit l'état de chaque entité dans le protocole eHuB. Il faut les acheminer vers le bon contrôleur, le bon univers et la bonne LED, assez vite pour que l'animation reste fluide, sans saturer le réseau, et pouvoir recâbler un circuit défaillant sur le terrain sans toucher aux animations.
Solution et architecture
Le routeur écoute les messages eHuB (configuration et mises à jour compressées), associe chaque entité à des canaux DMX d'après un fichier CSV, puis assemble et envoie les paquets Art-Net par univers. Le routage tourne sur un thread séparé de l'interface, qui ne peut donc pas le ralentir. Le code est découpé par étape (réception, DMX, Art-Net, routage), pour pouvoir remplacer un protocole sans toucher au reste.
Stack
Résultats
- Démonstration fluide sur le vrai mur de LED lors de la soutenance.
- Mapping des entités vers les contrôleurs et les univers, et configuration rechargeable depuis de simples fichiers CSV.
- Envois plafonnés à 40 séries par seconde, pour ne pas saturer le réseau.
- Patch map activable à la volée, pour rediriger un circuit en panne sans modifier la configuration.
- Interface de bureau Avalonia qui suit en temps réel les paquets envoyés, univers par univers.
- Les deux bonus du sujet : un générateur d'entités pour tester sans lancer Unity, et la réception de messages Art-Net pour le débogage.