Pilotage des points lumineux ============================ Généralités ----------- Les points lumineux (laumios et boîtes) sont pilotés à travers une passerelle unique qui reçoit ses commandes en UDP. Elle se charge de traduire ces commandes vers l'appareil concerné. Son addresse est ``dhaum2020.lan`` et le port est ``udp:2020``. Quatre types de sous-ensembles sont utilisables pour commander les LEDs des laumios : le pixel (une seule led), l'anneau, la colonne et le laumio dans son intégralité. Sur les laumios, les LEDs sont disposées en 4 branches de trois LEDs, en plus d'une à son sommet. Celles-ci sont toutes numérotées de 0 à 12 depuis le bas d'une des branches vers sa cîme, évitant l'unique led du sommet, descendant ensuite de l'autre côté de la structure, et enfin remontant du bas d'une des deux branches restantes pour atteindre le bas de la dernière (la LED de sommet étant cette fois-ci reliée entre les deux branches). Les anneaux correspondant quant à eux à une ligne horizontale de LEDs. Il y en a trois numérotées de 0 à 2, de bas en haut. Enfin, dans le cas des colonnes, celles-ci se rapportent aux quatre branches de LEDs, bien entendu sans la LED du sommet. Les boîtes tactiles peuvent être considérées comme un laumio de 7 pixels, numéroté 0, dont seule la commande par pixel est valide. Une clé de session vous sera fournie à chaque accès à l'installation. Celle-ci vous permettra de commander les points lumineux pour un temps défini. Protocole --------- Il s'agit d'une communication binaire. Plusieurs commandes peuvent être chaînées dans le même datagramme UDP. Si une commande est invalide, l'ensemble du datagramme est rejeté à partir de l'erreur. Commande pixel par pixel ************************ La commande est ``0x00``. Les données à envoyer sont d'abord la clé de session (4 octets), le numéro du point lumineux (1 octet), l'ID du pixel considéré (1 octet) et les trois octets de la couleur (RGB) choisie (1 octet par composante) :: 0x00 Key LaumioNb PixelID R G B Commande anneau par anneau ************************** La commande est ``0x01``. Il faut d'abord spécifier la clé de session (4 octets), le numéro du point lumineux (1 octet), l'ID de l'anneau (``0x00``, ``0x01`` ou ``0x02``) puis préciser les trois octets de couleur :: 0x01 Key LaumioNb RingID R G B Commande colonne par colonne **************************** La commande est ``0x02``. Ici, il faut indiquer la clé de session (4 octets), le numéro du point lumineux (1 octet), l'ID de la colonne (``0x00``, ``0x01``, ``0x02`` or ``0x03``) puis les trois octets de couleur :: 0x02 Key LaumioNb ColumnID R G B Remplissage intégral ******************** La commande est ``0xff``, il suffit ensuite de specifier la clé de session (4 octets), le numéro du point lumineux (1 octet), et les trois octets de couleur :: 0xff Key LaumioNb R G B