Questo progetto è un server Art-Net Node scritto in C# (.NET 10.0) che riceve pacchetti DMX via rete (protocollo Art-Net) e li inoltra a un'interfaccia hardware DMX. Il codice è progettato per massimizzare la condivisione logica ed è eseguibile in tre modalità distinte: GUI (Grafica), CLI (Console interattiva) e Headless (Silenziosa in background).
Per compilare il progetto è necessario avere installato .NET 10 SDK.
Apri il terminale nella cartella del progetto ed esegui:
dotnet buildPuoi selezionare la modalità desiderata passando il parametro -m o --mode all'avvio.
Avvia l'interfaccia utente grafica (WPF) ricca di animazioni, che mostra in tempo reale i valori dei 512 canali DMX, le statistiche dei pacchetti e permette la configurazione visuale dei parametri.
- Come avviarla:
(oppure semplicemente facendo doppio clic sull'eseguibile compilato
dotnet run
Artnet.exein Esplora File).
Avvia un terminale testuale interattivo direttamente all'interno della console corrente (o ne alloca una nuova se avviato esternamente). Mostra i log dell'engine in tempo reale ed espone statistiche aggregate.
Per default, la modalità CLI avvia il server in modo veloce e leggero, con tutte le feature opzionali disabilitate. Puoi abilitarle tramite flag dedicate.
- Comandi da tastiera disponibili durante l'esecuzione:
S/stats- Mostra le statistiche dettagliate correnti.C/clear- Pulisce la schermata della console.H/help- Mostra l'elenco dei comandi disponibili.Q/quit/exit- Ferma in sicurezza l'engine Art-Net e disconnette il driver DMX per poi uscire.
- Come avviarla:
dotnet run -- --mode cli --driver simulation
Esegue il server in background in modo totalmente trasparente e silenzioso, senza mostrare alcuna GUI o stampare log in console. Ideale per essere integrato come servizio o script di avvio automatico.
- Come arrestarla:
- Inviare un segnale di interruzione standard come
Ctrl+Cnel terminale, oppure terminare il processo tramite Task Manager / terminale.
- Inviare un segnale di interruzione standard come
- Come avviarla:
dotnet run -- --mode headless --driver simulation --universe 0
I parametri possono essere forniti in formato breve o esteso.
| Parametro Breve | Parametro Esteso | Descrizione | Valore Predefinito |
|---|---|---|---|
-m |
--mode |
Definisce la modalità di esecuzione: gui, cli, headless |
gui |
-i |
--ip |
Indirizzo IP di bind della scheda di rete su cui ricevere Art-Net. Usare 0.0.0.0 per restare in ascolto su tutte le interfacce. |
0.0.0.0 |
-p |
--port |
Porta UDP di ascolto del server Art-Net. | 6454 |
-u |
--universe |
Numero dell'universo Art-Net target da intercettare (da 0 in poi). |
0 |
-d |
--driver |
Tipo di interfaccia driver DMX di uscita. | simulation |
-c |
--com |
Porta seriale COM fisica a cui è connesso l'adattatore hardware DMX (es. COM3, COM4). |
Nessuno |
-dev |
--device |
Configura un'interfaccia DMX (formato: universo,driver,com). Ripetibile. |
- |
-h |
--help |
Mostra la guida all'uso dei parametri e termina l'esecuzione. | - |
Queste flag abilitano funzionalità aggiuntive che restano spente di default per mantenere il server veloce e leggero.
| Flag | Descrizione |
|---|---|
--enable-http |
Abilita la dashboard web e l'API HTTP. |
--enable-health-checks |
Abilita i controlli periodici di salute sulle connessioni DMX. |
--enable-merge |
Abilita il merge HTP/LTP tra sorgenti multiple. |
--enable-logging |
Abilita il logging su file nella cartella logs/. |
--enable-heartbeat |
Abilita l'invio periodico di heartbeat DMX per validare il collegamento. |
--enable-rate-limit |
Abilita il rate limiting sulle richieste HTTP. |
--enable-cli-blackout |
Abilita il comando blackout da CLI. |
--enable-cli-override |
Abilita i comandi di override manuale da CLI. |
--verbose |
Abilita i log verbosi a livello Debug. |
--quiet |
Riduce l'output della CLI al minimo. |
-
Avvio minimale in CLI (solo Art-Net receiver, senza feature aggiuntive):
Artnet.exe --mode cli --driver simulation
-
Avvio in CLI con dashboard web e health checks:
Artnet.exe --mode cli --driver simulation --enable-http --enable-health-checks
-
Avvio in Headless con merge e logging su file:
Artnet.exe --mode headless --universe 2 --enable-merge --enable-logging --verbose
-
Avvio in CLI con interfaccia hardware Enttec Pro e blackout abilitato:
Artnet.exe --mode cli --driver enttec --com COM3 --universe 1 --enable-cli-blackout
-
Multi-universo con dispositivi multipli:
Artnet.exe --mode cli --device 0,simulation --device 1,enttec,COM3 --enable-http
-
Visualizzare l'aiuto in linea da console:
Artnet.exe --help
| Cartella | Descrizione |
|---|---|
Core/ |
Motore principale, server HTTP, merge manager, health check, logging |
Drivers/ |
Driver di uscita DMX hardware (Enttec, OpenDMX, FTDI, ecc.) |
Views/ |
Interfaccia grafica WPF |
Tests/ |
Test unitari xUnit |
Oltre ai flag da CLI, puoi configurare il server tramite appsettings.json o variabili d'ambiente. Le opzioni disponibili sono documentate in Core/ArtnetOptions.cs.
Per default, tutte le feature opzionali sono disattivate nel file di configurazione.
Quando la dashboard web è abilitata, sono disponibili i seguenti endpoint:
| Metodo | Endpoint | Descrizione |
|---|---|---|
GET |
/ |
Dashboard HTML |
GET |
/api/status |
Stato del server e delle interfacce |
GET |
/api/dmx?universe= |
Dati DMX correnti |
GET |
/api/events |
Eventi in tempo reale (SSE) |
GET |
/api/universes |
Lista universi attivi |
POST |
/api/blackout |
Attiva/disattiva blackout |
POST |
/api/override/set |
Imposta override canale |
POST |
/api/override/clear-channel |
Cancella override canale |
POST |
/api/override/clear |
Cancella tutti gli override |
L'autenticazione API è supportata tramite header Authorization: Bearer <token> configurando ApiToken in appsettings.json.