# Art-Net

Art-Net est un protocole de communication informatique basé sur la norme UDP/IP crée par Artistic Licence Engineering Ltd, qui vise à simplifier le transfert des trames DMX. Il intègre ses trames dans une communication Ethernet, permettant ainsi un câblage plus simple et plus pratique en utilisant des switch ou des bornes WiFi.

## Présentation générale

Ce protocole est utilisé pour communiquer des informations dans un réseau, dans le but de contrôler plusieurs machines, notamment dans le domaine de l'appareillage scénique (projecteurs, blocs de puissance, effets, machines à fumée, etc.).
Le protocole n'a pas été créé dans le but de remplacer le DMX, mais de travailler avec, le principal atout de l'Art-Net est d'offrir de très nombreux univers (de 512 canaux DMX) en un seul réseau.
Un univers DMX est l'ensemble des 512 canaux, ayant chacun 256 valeurs (de 0 à 255). Chacun de ces canaux correspond à un réglage : un canal peut tout autant régler l'intensité d'un projecteur, que son orientation ou son focus. La norme laisse aux constructeurs le choix de la signification du canal et de ses valeurs.
Avec la norme DMX, un câble ne peut supporter qu'un seul univers ; avec l'Art-Net (dans sa version 4) il est théoriquement possible d'aller jusqu’à 32 768 univers en un seul réseau
La communication en Art-Net est basée sur le transfert d'informations d'un serveur (console adaptée, ordinateur...) vers des nodes.
Ces nodes peuvent être disposés dans l’espace scénique de façon à être proche des projecteurs à contrôler (ou des gradateurs, des effets, etc.). Un node fait la conversion entre les trames du réseau Ethernet et les trames DMX.
L'information provient de la console selon le protocole Art-Net Va jusqu'aux Nodes a travers le réseau Nodes qui convertissent les trames Art-Net en trame DMX DMX qui va vers les différentes machines

## Versions

L'Art-Net existe en quatre versions différentes.

### Art-Net I

La première version de l'Art-Net a été créée en 1998. Elle utilisait du broadcast pour toutes ses communications, ce qui évitait à l'utilisateur de devoir configurer son réseau.
C'est l'apparition des LED RGB qui a augmenté le nombre d'univers nécessaires : en effet la limite était d'environ 40 univers avec l'Art-Net I. Et comme la version se base sur du broadcast, c'est-à-dire que toutes les communications sont envoyées à tous les nodes présents sur le réseau, un flood peut être occasionné lorsqu’il existe beaucoup de nodes sur le réseau.

### Art-Net II

La seconde version est sortie en 2006, afin de régler le problème de l'Art-Net I.
Il est désormais utilisé un algorithme pour déterminer quels nodes sont reliés à quels univers. Ainsi le serveur peut faire de l'unicasting et réduire grandement la bande passante utilisée. Le nombre d'univers utilisés est désormais augmenté à 256.

### Art-Net III

Avec l'arrivée des systèmes à pixels LED, le protocole a dû évoluer avec une nouvelle version en 2011 qui apporte donc beaucoup plus de possibilités d'adressage DMX.
Le changement se fait dans le type d'adressage des univers, qui passe de 8 bit (256 adresses) à 15 bits (32 768).
Cette version introduit aussi une fonctionnalité nommée le binding.

### Art-Net IV

La version 4 est dernière version en date de l'Art-Net sortie en septembre 2016, permettant aux gateways de supporter plus de 4 ports sans passer par du "multi-homing". Cette nouveauté permet donc d'atteindre par gateway plus de 1000 ports.
L'avantage contrairement à la version 3 du protocole, est que certaines limitations disparaissent. En exemple, la possibilité de se dispenser des "univers fantômes" imposés par les précédentes versions en conséquence de la limite des 30 000+ univers. Ce qui permet donc de former des topologies réseau plus ordonnées.

## Univers
### Limitations

Depuis l'Art-Net I, la principale évolution se trouve dans le nombre d'univers possibles.
Par exemple dans la version IV, il y a une limite théorique de 32 768 univers. Cette limite existe car l'adresse de chaque univers est codée sur 15 bits :
En effet, 2$^{15}$ = 32 768 (calcul pour trouver le nombre de possibilités d'un nombre à 15 bits, par exemple pour 8 bits : 2$^8$ = 256).
En revanche, ces 32 kiloverses (ou 1024 univers selon le fonctionnement des unités) sont seulement théoriques ; en pratique, la capacité du réseau influe beaucoup sur les possibilités :
Capacité :
| | 10BaseT | 100BaseT | 1000BaseT |
| Unicast | 40 Univers | 400 Univers | >4000 Univers |

### Adressage

L'adresse de chaque univers est codé sur 15 bits.
| Bit 15 | Bits 14 - 8 | Bits 7 - 4 | Bits 3 - 0 |
| 0 | Réseau | Sous-Réseau | Univers |
Il faut différencier la numérotation du bit et sa place dans le nombre : le bit 0 est placé en 1re position, donc le bit 15 est en réalité le 16e caractère du nombre. Le 16e bit ne fait donc pas partie de l'adresse en tant que tel : ce sont les 15 bits qui le suivent qui la composent.

## Paquets

Les paquets Art-Net ont, comme tout protocole, un format à respecter :
Format du paquet ArtDmx (0x5000)$^,$ :
| Position | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 0 | 'A' | 'r' | 't' | '-' | 'N' | 'e' | 't' | 0 |
| 8 | Opcode (gros-boutiste) ici '0x5000' | Opcode (gros-boutiste) ici '0x5000' | Version du protocole (gros-boutiste) | Version du protocole (gros-boutiste) | Séquence | Port Physique | Univers (gros-boutiste) | Univers (gros-boutiste) |
| 16 | Durée (en octets) de la trame DMX | Durée (en octets) de la trame DMX | Donnée DMX (taille minimum) | Donnée DMX (taille minimum) |
Utilité de chaque partie de la trame$^,$ :
| Octet | Contenu | Utilisation |
| 0 - 7 | Art-Net0 | Le protocole donne son nom, il s'identifie, le zéro à la fin n'a pas d'utilité à part celle de compléter la ligne de 8 octets. |
| 8 - 9 | Opcode | Donne la nature du paquet et indique à quoi correspondent les données. |
| 10 - 11 | Version du protocole | La version n'est pas I, II, 3 ou 4, mais la version interne, c'est-à-dire 14, tout paquet portant une autre version sera ignoré. |
| 12 | Séquence | Un nombre qui s'auto-incrémente à chaque paquet, afin de réarranger les trames dans le bon ordre, ce qui n'est pas garanti selon le réseau, il est fixé à 0x00 pour être désactivé. |
| 13 | Port Physique | Port physique ayant envoyé la trame dans un intervalle de 0 à 3. Seulement à titre informatif, n'est pas utilisé. |
| 14 - 15 | Univers | Univers auquel les données DMX sont destinées. |
| 16 - 17 | Durée | Durée de la trame DMX, la valeur peut être n'importe quel nombre pair, entre 2$_{10}$, et maximum 512$_{10}$ Si le nombre doit être pair cela est dû à une anomalie historique. Cette règle n'étant pas toujours implémentée le node doit prendre en compte les paquets avec un nombre impair. |
| 18 - ... | Données DMX | Listes des canaux DMX, codés sur un octet chacun (de 0 à 255), la trame DMX n'a pas à faire les 512 canaux du DMX, il ne doit être transmis que ce qui est changé (ainsi que les valeurs même inchangées qui sont entre deux valeurs changées, le numéro de canal se basant sur la position de l'information et n'est pas préfixé). Le premier octet est toujours le canal 1. |