feat(articles): Add boite_agb project #2
2 changed files with 43 additions and 0 deletions
BIN
docs/projects/agb_galois.jpeg
Normal file
BIN
docs/projects/agb_galois.jpeg
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.7 MiB |
|
@ -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)
|
||||
|
|
Loading…
Reference in a new issue