diff --git a/docs/projects/agb_galois.jpeg b/docs/projects/agb_galois.jpeg new file mode 100644 index 0000000..9d0a9fd Binary files /dev/null and b/docs/projects/agb_galois.jpeg differ diff --git a/docs/projects/boite_agb.md b/docs/projects/boite_agb.md index 71cd65a..596b5b6 100644 --- a/docs/projects/boite_agb.md +++ b/docs/projects/boite_agb.md @@ -103,4 +103,47 @@ manifestement le boot. ### API de l'AGB +L'API est un petit programme rust pour le backend et une application django pour +l'authentification et le frontend. Le code source est public: +[https://git.dgnum.eu/HackENS/ragb](https://git.dgnum.eu/HackENS/ragb). Pour +mettre à jour la base de données interne d'états des projecteurs on utilise des +requêtes POST (ou une socket tcp over wireguard pour la boîte). La notification des clients (pages du frontend ouvertes ainsi que +le boîtier de contrôle DMX, cf plus tard) d'un changement de l'état de la base +de donnée est réalisé via un SSE +([https://fr.wikipedia.org/wiki/Server-sent_events](https://fr.wikipedia.org/wiki/Server-sent_events)). +Voici un exemple typique de message que l'on peut recevoir sur le SSE: +``` +data: {"type":"Color","address":129,"value":{"red":0,"green":0,"blue":0}} + +data: +{"type":"Motor","pan":164,"tilt":97,"focus":173,"white_button":0,"black_button":false,"bump_color":{"red":246,"green":49,"blue":49}} +``` + +Pour expérimenter un peu vous pouvez consulter la documentation de l'api: +[https://agb.hackens.org/api-docs/](https://agb.hackens.org/api-docs/) et lire +le SSE avec la commande `curl -ns https://agb.hackens.org/api/sse` + + +### Le contrôle DMX des projecteurs + +Pour le contrôle des projecteur on utilise le protocole standard de PLS: le +[DMX-512](https://fr.wikipedia.org/wiki/DMX_%28%C3%A9clairage%29). Il s'agit d'un bus série assez simple: Le contrôleur envoie des +paquets de 512 octets sur le bus et les projecteurs lisent une partie de ce +paquet pour savoir dans quel état se mettre (la partie du paquet correspondant à +chaque projecteur est déterminé par _l'addresse_ du projecteur). Une fois les +projecteurs installés et raccordés au bus il nous reste à connecter un boîtier +de contrôle usb (le [Entec DMX USB +PRO](https://www.enttec.com/product/dmx-usb-interfaces/dmx-usb-pro-professional-1u-usb-to-dmx512-converter/)) à une raspberry pi qui écoute le SSE et traduit les changement de couleur. Le script réalisant l'opération est dispo [ici](https://git.dgnum.eu/HackENS/hackens-org-configurations/src/commit/da09ce104af8c83343e0987299b2df2102f33f97/machines/agb01/script.py). Une particularité de ce script est qu'il est capable de s'adapter entre les AGB à des changement de setup lumière grâce au fichier [https://agb.hackens.org/api-docs/patch.json](https://agb.hackens.org/api-docs/patch.json) qui décrit l'installation lumière. + +#### Amélioration possible: Ajout de messages en batch dans le SSE + +Pour le bump, le SSE envoie un message par addresse DMX pour signaler le +changement de couleur. Ainsi le boîtier de commande DMX change de façon +séquentielle toutes les couleurs et c'est LEENNNNNNNT. Il faut absoluement pour +la prochaine fois ajouter un type de message "batch" dans le SSE pour que le +changement de plusieurs couleur soit atomique et simultané. + + ## Installation + +![Installation en Galois](agb_galois.jpeg)