feat(articles): Add boite_agb project #2

Merged
Selene merged 6 commits from boite_agb into master 2024-11-08 10:44:05 +01:00
2 changed files with 43 additions and 0 deletions
Showing only changes of commit 692fe481b4 - Show all commits

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

View file

@ -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)