UNPKG

@bannsaenger/node-red-contrib-artnet-controller

Version:

Node-RED node that controls lights via Art-Net. Acts as a Art-Net controller.

260 lines (255 loc) 15.1 kB
<script type="text/html" data-help-name="Art-Net Out"> <p>DMX Daten an eine Art-Net Sender Instanz senden.</p> <p>Dieser Node wird verwendet um DMX Daten an eine Art-Net Sender Instance weiterzureichen.</p> <p>Er muss mit einer gültigen Sender Instanz verbunden sein.</p> <p>Im Allgemeinen werden die empfangenen Daten an die konfigurierte Sender Instanz weitergereicht. Wenn in den empfangenen Daten Adressinformationen enthalten sind, hängt es von der Einstellung der <code>Adresse ignorieren</code> Checkbox ab wie die weitere Verarbeitung stattfindet. Optional kann ein <code>Feedback Level</code> gesetzt werden um Informationen über Transitions zu senden. Wenn ein Wert gesetzt wird erscheint ein Ausgang. </p> <h3>Inputs</h3> <dl class="message-properties"> <dt>payload <span class="property-type">object</span></dt> <dd>Zu sendende Daten</dd> <dt class="optional">payload.channel <span class="property-type">number [1-512]</span></dt> <dt class="optional">payload.value <span class="property-type">number [0-255]</span></dt> <dd>z.B. ein einzelner Kanal. Weitere Möglichkeiten siehe unten.</dd> <dt class="optional">payload.net <span class="property-type">number [0-15]</span></dt> <dd>Netzadresse im Art-Net</dd> <dt class="optional">payload.subnet <span class="property-type">number [0-15]</span></dt> <dd>Subnetzadresse im Art-Net</dd> <dt class="optional">payload.universe <span class="property-type">number [0-63]</span></dt> <dd>Nummer des Universums im Art-Net</dd> </dl> <h4>Im <code>payload</code> Objekt können folgende Daten enthalten sein:</h4> <h4>Ein einzelner Kanal</h4> <pre> msg.payload = { "channel": 1, "value": 255 }; </pre> <h4>Oder mehrere Kanäle gleichzeitig</h4> <pre> msg.payload = { "buckets": [ {"channel": 1, "value": 255}, {"channel": 4, "value": 0}, ] }; </pre> <h4>Die <code>buckets</code> können einen weiteren Parameter enthalten um mehrere Kanäle gleichzeitig zu setzen. <ul> <li><code>fill</code> - diesen Wert wiederholen bis zu diesem Kanal [2-512]</li> </ul> Der Wert <code>fill</code> muss größer sein als <code>channel</code> </h4> Beispiel: <pre> msg.payload = { "buckets": [ {"channel": 1, "value": 255, "fill": 100}, {"channel": 101, "value": 11, "fill": 200} ] }; </pre> Setzt <code>channel</code> 1 bis 100 auf <code>value</code> 255 und <code>channel</code> 101 bis 200 auf <code>value</code> 11 <h4>oder auch ein ganzes Universum gleichzeitig als UInt8Array(512), Arraygröße 1 - 512</h4> <pre> msg.payload = new UInt8Array[ 1, 2, 3, 4, 5, ..., 512 ]; </pre> <h4>Es können auch automatische Veränderungen der Werte auf Zeit stattfinden. Entweder für einen einzelnen Kanal oder für mehrere Kanäle. Es muss dabei die 'transition' als auch die 'duration' in Millisekunden und optional die Anzahl an Wiederholungen angegeben werden. Der Wert -1 bei 'repeat' wird diese Transition unendlich oft wiederholt, bis sie durch einen Wert oder eine andere Transition auf diesem Kanal abgebrochen wird. Wenn eine Wiederholung definiert ist, kann eine Pause (gap) zwischen der Wiederholungen definiert werden. Die Transition endet mit dem Zielwert, pausiert und beginnt wieder mit dem Wert vor der Transition. </h4> <pre> msg.payload = { "transition": "linear", "duration": 5000, "repeat": 1, "gap": 1000, "buckets": [ {"channel": 1, "value": 255}, {"channel": 4, "value": 0}, ] } </pre> <h4>Folgende Eigenschaften können angegeben werden</h4> <dl class="message-properties"> <dt class="optional">id<span class="property-type">string</span></dt> <dd>Benutzerdefinierter Bezeichner um die Transition zu identifizieren wenn Output eingeschaltet ist</dd> <dt>transition<span class="property-type">string [linear, gamma, quadratic, sine]</span></dt> <dd>Der Typ bzw. die Form der Transition die ausgeführt werden soll</dd> <dt class="optional">gamma<span class="property-type">number [0-10]</span></dt> <dd>gamma factor. Nur für die gamma Transition. default: 2.2</dd> <dt>duration<span class="property-type">number [1 - MAX_SAFE_INTEGER] in ms</span></dt> <dd>Ausführungszeit für die Transition</dd> <dt class="optional">hold<span class="property-type">number [0 - MAX_SAFE_INTEGER] in ms</span></dt> <dd>Zeit zwischen der Transition und dem gespiegelten Teil</dd> <dt class="optional">mirror<span class="property-type">boolean</span></dt> <dd>Bei true wird die Transition gespiegelt</dd> <dt class="optional">gap<span class="property-type">number [0 - MAX_SAFE_INTEGER] in ms</span></dt> <dd>Zeit zwischen den Transitions</dd> <dt class="optional">repeat<span class="property-type">number [-1 - MAX_SAFE_INTEGER]</span></dt> <dd>Anzahl an Wiederholungen. -1 = Wiederholung bis die Transition abgebrochen wird.</dd> </dl> <h4>Optional können immer Startwerte angegeben werden. Die Transition beginnt dann mit diesem Wert.</h4> <pre> msg.payload = { "start_buckets": [ {"channel": 1, "value": 255}, {"channel": 4, "value": 123}, ] }; </pre> <h4>Für eine Bogen-Transition (movement by arc) müssen noch mehr Details angegeben werden</h4> <pre> msg.payload = { "transition": "arc", "duration": 2000, "arc": { "pan_channel": 1, "tilt_channel": 3, "pan_angle": 540, "tilt_angle": 255 }, "start": {"pan": 0, "tilt": 44}, "center": {"pan": 127.5, "tilt": 63.75}, "end": {"pan": 85, "tilt": 44} }; </pre> <p>wobei</p> <ul> <li><code>arc</code> - Kanäle die in die Transition mit einbezogen werden sollen (pan and tilt channels)</li> <li><code>start</code> - Startwerte der Kanäle (Start Punkt). Standard: Aktueller Wert des Kanals</li> <li><code>center</code> - "Mittelpunkt" Werte</li> <li><code>end</code> - Endwerte der Kanäle (End Punkt)</li> </ul> <p>Im obigen Beispiel startet der Moving Head bei {pan: 0, tilt: 44} hin zu {pan: 85, tilt: 44}. Mittelpunkt ({pan: 127.5, tilt: 63.75}) gibt den nominellen Kreismittelpunkt an Der Wert 'repeat' kann auch für diese Transaktion angegeben werden. </p> <h3>Details</h3> <h4>Adresse ignorieren</h4> <p>Wenn aktiviert werden alle Adressinformationen aus dem <code>msg</code> Objekt ignoriert. Ansonsten wird versucht ein passendes Universum innerhalb des Controllers zu finden. Wird kein passendes Universum gefunden wird die Message an den konfigurierten Sender weitergeleitet.</p> <h3>References</h3> <ul> <li><a href="https://flows.nodered.org/node/node-red-contrib-artnet">node-red-contrib-artnet</a> - Die Basis ist die Arbeit von Gunnebo</li> <li><a href="https://art-net.org.uk/resources/art-net-specification/">Art-Net Specification</a> - vollständige Beschreibung des Art-Net Protokolls</li> <li><a href="https://github.com/margau/dmxnet">DMX Library dmxnet by margau</a> - Dokumentation der verwendeten Art-Net Bibliothek</li> </ul> </script> <script type="text/html" data-help-name="Art-Net In"> <p>DMX Daten empfangen</p> <p>Der Empfänger hört auf ein bestimmtes Universum und gibt die Empfangenen Daten aus.</p> <p>Er muss mit einer gültigen Controller Instanz verbunden sein.</p> <h3>Details</h3> <h4>Net, Subnet und Universe</h4> <p>Diese drei Werte stellen die komplette Universe Adresse dar. Es gibt ein theoretisches Limit von 32.768 Universen die innerhalb von Art-Net addressiert werden können. Im Art-Poll können nur 255 Universen propagiert werden. Die Adressteile haben folgende Wertbereiche: <ul> <li>Net: <code>Eine Nummer 0-127</code></li> <li>SubNet: <code>Eine Nummer 0-15</code></li> <li>Universe: <code>Eine Nummer 0-15</code></li> </ul> </p> <h4>Format und Übertragung</h4> <p>Als Aufgabeformat kann entweder "Buckets" oder "Universe as Uint8Array" ausgewählt werden. Im Fall "Buckets" wird abhängig vom Schalter "Nur Änderungen" ein Array mit 512 Werten bei jedem Empfang eines ArtDMX Packets oder nur die geänderten Kanäle übertragen. Im Fall "Universe as Uint8Array" wird immer das gesamte Universum übertragen, allerdings abhängig vom Schalter "Nur Änderungen" entweder bei jedem ArtDMX Packet oder nur wenn mindestens ein Wert sich geändert hat. </p> <h3>Outputs</h3> <dl class="message-properties"> <dt>payload <span class="property-type">object</span></dt> <dd>Empfangene Daten</dd> <dt>payload.buckets <span class="property-type">array</span></dt> <dd>Array mit DMX Werten (im Format "Buckets")</dd> <dt>payload.buffer <span class="property-type">Uint8Array</span></dt> <dd>Uint8Array mit DMX Werten aller Kanäle (im Format "Universe as Uint8Array")</dd> </dl> <h4>Im Format "Buckets" werden die Kanäle in folgendem Format übertragen</h4> <pre> msg.payload = { buckets: [ {channel: 1, value: 255}, {channel: 4, value: 0}, ] }; </pre> <h3>Referenzen</h3> <ul> <li><a href="https://art-net.org.uk/resources/art-net-specification/">Art-Net Spezifikation</a> - vollständige Beschreibung des Art-Net Protokolls</li> <li><a href="https://github.com/margau/dmxnet">DMX Library dmxnet by margau</a> - Dokumentation der verwendeten Art-Net Bibliothek</li> <li><a>Funktionalität und Daten</a> - Alle Funktionen und verwendeten Daten werden im <span style="background-color:Gainsboro">Art-Net Out</span>-Node beschrieben.</li> </ul> </script> <script type="text/html" data-help-name="Art-Net Sender"> <p>Konfigurationsoptionen für eine Art-Net Sender Instanz.</p> <p>Der Sender hält ein Universum an ArtDmx Daten und hat die komplette Funktionalität diese DMX Daten zu verändern.</p> <p>Er muss mit einer gültigen Controller Instanz verbunden sein.</p> <h3>Details</h3> <h4>IP Adresse</h4> <p>Die Adresse an die gesendet wird. Standardmäßig wird hier der <b>Limited Broadcast</b> (255.255.255.255) verwendet, aber alle Formen von Broadcast (Local oder Directed) oder jede andere gültige Unicast Adresse sind möglich. Gemäß der Art-Net Spezifikation sollte der limited broadcast nicht verwendet werden. Wenn möglich soll der Directed Broadcast verwendet werden. <b>Achtung bei Windows Installationen</b> Unter Windows wird der Limited Broadcast nur an den ersten Netzwerkadapter gesendet. Bei Systemen mit mehreren Netzwerkkarten sollte am besten der Directed Broadcast verwendet werden.</p> <h4>Port</h4> <p>Der Port hier ist der Port an den die Art-Net Daten gesendet werden. Im Normalfall ist dies der selbe Port wie in der Controller Instanz.</p> <h4>Net, Subnet und Universe</h4> <p>Diese drei Werte stellen die komplette Universe Adresse dar. Es gibt ein theoretisches Limit von 32.768 Universen die innerhalb von Art-Net addressiert werden können. Im Art-Poll können nur 255 Universen propagiert werden. Die Adressteile haben folgende Wertbereiche: <ul> <li>Net: <code>Eine Nummer 0-127</code></li> <li>SubNet: <code>Eine Nummer 0-15</code></li> <li>Universe: <code>Eine Nummer 0-15</code></li> </ul> </p> <h4>MaxRate</h4> <p>Maximale Anzahl an ArtDMX Paketen die gesendet werden können (default 10). Werden die Werte schneller angeliefert wird die spontane Übertragung entsprechend verzögert. Wertebereich: 0 - 50 Beim Wert 0 wird die spontane Übertragung deaktiviert, so dass die Übertragung der ArtDMX Pakete ausschließlich über den Wert <b>Refresh</b> gesteuert wird. </p> <h4>Refresh</h4> <p>Dieser Wert ist in <b>ms</b> (default 1000). Nach diesem Intervall werden die Art-Dmx Daten erneut gesendet, egal ob sie geändert wurden oder nicht. Wertebereich: 20 - 100.000 ms Wird ein Art-Dmx Wert geändert werden die Daten abhängig vom Wert MaxRate sofort gesendet. <b>Achtung: Der Wert muss immer größer sein, als die Zeit die durch MaxRate definiert wird. Entfällt wenn MaxRate 0 ist.</b></p> <h4>Werte sichern</h4> <p>Wenn aktiviert werden die DMX Werte beim Schließen gesichert, so dass nach einem Deploy die DMX Werte sofort wieder zur Verfügung stehen.</p> <h3>Referenzen</h3> <ul> <li><a href="https://art-net.org.uk/resources/art-net-specification/">Art-Net Spezifikation</a> - vollständige Beschreibung des Art-Net Protokolls</li> <li><a href="https://github.com/margau/dmxnet">DMX Library dmxnet by margau</a> - Dokumentation der verwendeten Art-Net Bibliothek</li> <li><a>Funktionalität und Daten</a> - Alle Funktionen und verwendeten Daten werden im <span style="background-color:Gainsboro">Art-Net Out</span>-Node beschrieben.</li> </ul> </script> <script type="text/html" data-help-name="Art-Net Controller"> <p>Konfigurationsoptionen für eine Art-Net Controller Instanz.</p> <h3>Details</h3> <h4>IP Adresse</h4> <p>In der IP Liste werden alle verfügbaren Adressen des Servers gelistet. <b>Achtung</b> wenn der Eintrag 0.0.0.0 verwendet wird (An alle Adressen binden). An eine Adresse kann nur ein Controller gebunden werden.</p> <h4>Port</h4> <p>Port an dem der Controller auf emfangene Art-Net Pakete hört. Der Standardwert sollte nicht geändert werden. Er kann zur Anpassung an sehr spezifische Umgebungen verwendet werden.</p> <h4>OEM-Code</h4> <p>Mit dem OEM-Code wird der Hersteller bzw. der Produkttyp des Controllers identifiziert. Es können sowohl der eigentliche Hersteller bzw. Author der Bibliothek (margau) der Standard Hersteller (Artistic License) sowie jeder andere vierstellige Hexadezimalwert verwendet werden.</p> <h4>ESTA-Code</h4> <p>Mit dem ESTA-Code wird der eigentliche Hersteller des Controllers identifiziert. Dieser Herstellercode ist im Standard die 0x0000 (ESTA). Es kann hier jeder vierstellige Hexadezimalwert verwendet werden. Die registrieren Codes der Hersteller können auf der <a href="https://tsp.esta.org/tsp/working_groups/CP/mfctrIDs.php">ESTA Homepage</a> eingesehen werden.</p> <h4>Kurz- und Langname</h4> <p>Der kurze und der lange Name werden zur Identifikation des Controllers im Netwerk verwendet, als Antwort auf einen Art-Poll.</p> <p>Mit dem Debug Level kann die Debug Ausgabe in die Konsole eingeschaltet werden. Warungen und Fehler werden zusätzlich an das Debug Fenster im Node-RED Editor gesendet.</p> </script>