Art-Net mit PHP senden (ArtDMX)

  • Hallo miteinander,


    ich habe mir eine Funktion geschrieben, mit der man Art-Net Pakete (ArtDMX) senden kann, und somit Art-Net Nodes auch von PHP aus bedienen kann. Kann in manchen Fällen recht praktisch sein.


    Das Script kann 255 (0xFF) Kanäle ausgeben, kann ohne große Probleme auch auf 512 Kanäle erweitert werden, dann muss Field 8 des ArtDMX Pakets auch gefüllt werden - habe ich nur nie gebraucht und mich nicht weiter drum gekümmert. In Ruby (siehe Matrix-Quellcode) geht das einfacher, dort ist das bereits berücksichtigt. Die PHP-Version hier ist quasi eine vereinfachte Version, die auf Grundlage des Ruby-Scripts entstanden ist.


    Quellcode:


    $dmx ist ein Array mit den ganzen DMX-Werten, standardmäßig wird es mit 64 Kanälen vorbelegt, kann in Zeile 16 nach Wunsch angepasst werden. art_open() öffnet die Verbindung, art_send() sendet die in $dmx gespeicherten werte und art_close() schließt die Verbindung wieder.


    Das Script ist auf den Art-Net-Node für 25 Euro ausgelegt, dieser speichert die zuletzt empfangenen Werte und gibt sie aus, bis die Spannungsversorgung unterbrochen wird.
    Falls das PHP-Script von mehreren Clients angesprochen werden soll, muss man in PHP die aktuelle Ausgabe zwischenspeichern und die gewünschte Ausgabe errechnen. Der Art-Net Node selbst macht einfach LTP (letztes ArtDMX-Paket wird ausgegeben).


    Wer das Script weiterentwickeln will (z.B. eine eigene PHP-Klasse schreiben) darf das gerne machen. Ich habe nicht mehr an Fehlerüberprüfung und Co. gebraucht, deswegen ist da auch quasi nichts drin.


    Freundliche Grüße


    Stefan

  • Ist $dmx ein assoziatives Array? Gibt es ein Beispiel, wie es ausschaut?
    Wie würde ich zum Beispiel eine angeschlossene Lampe ansteuern? Oder sogar ein Moving Head, der zBsp 8 Kanäle besitzt und ich jeden ansprechen will?

  • Steht doch im Quelltext drin:

    PHP
    $dmx = array(); // array of dmx values, each element from chr(0) (off) to chr(255) (full); DMX channel 1 == $dmx[1]

    Was verstehst du davon nicht?


    Einfach dem Kanal entsprechende Array-Einträge mit Werten füllen, und dann mit art_send() abschicken.

  • Ja, die gibt es z.B. ODE oder DMXEthergate von ENTTEC, NetPort von ADB, Down-Lyx von Artistic Licence, um nur ein paar zu nennen. Preise ab 200€ aufwärts. Manche habe nur einen DMX Ausgang und keinen Eingang, brauchst Du aber für Deine Anwendung auch nicht.


    Dennis

  • OK, alles klar.


    Ich bin mir noch unsicher, was in das array ($dmx) rein muss, wenn ich ZB 2 Moving Heads habe.
    Jedes dieser 2 will ich ansteuern. Wie kann ich diese beiden unterscheiden? Anhand des DMX values? Wie schaut so was aus?

  • Fiktives Beispiel:
    2 Moving Heads, je 8 Kanäle, MH1 ab Startadresse 1, MH2 ab Startadresse 9, MH hat folgende Funktionen:

    Code
    1 Dimmer2 C3 M4 Y5 Pan6 Tilt7 Shutter ... Open 240-255 ...8 Control ... Lamp On 128-136 ...


    Zuerst musst du die Leuchtmittel in den Köpfen zünden:

    Code
    $dmx[8] = chr(130); //control -- lamp on, MH1$dmx[16] = chr(130); //control -- lamp on, MH2


    Danach willst du MH1
    Color: Blue, Shutter: Open, Dimmer: 100%, Pan/Tilt 128
    und MH2
    Color: Red, Shutter: Open, Dimmer 75%, Pan 75, Tilt 170



    Dennis


    PS: zu deiner Frage nach fertigen Produkten fällt mir gerade ein, dass du alle paar Sekunden ein neues Art-Net Packet schicken muss, da diese sonst meist nach 10 Sekunden einen Signalausfall detektieren und die DMX Ausgabe abschalten. Das genaue Verhalten in diesem Fall ist in den Anleitungen beschrieben.

  • Ich bin grad ne neue Version von dem Skript am testen, das können dann mehrere Instanzen unabhängig voneinander aufrufen, da die Ausgabe in der Datenbank zwischengespeichert wird. Die Ausgabe vom einen Skript beeinflusst dann also die Ausgabe von einer anderen Instanz nicht negativ (sofern nicht beide Instanzen den gleichen Kanal verändern wollen...). Mischung ist da dann quasi LTP. (HTP geht nicht, sonst ist irgendwann alles an... ;))


    Freundliche Grüße


    Stefan

  • So, habe mal den Art-Net-Node für 25 Euro nach Anleitung zusammengebaut.
    Jetzt habe ich das Script probiert, aber ich bekomme die Testlampe (http://lmp.de/shop/de_DE/00200…0/002390100/00184694.html) nicht per Script an.


    Muss ich im DMX-Workshop noch den Knoten konfigurieren?


    Meine Einstellungen:
    [Blocked Image: http://ebay.trupke.net/dmx1.png]


    Mein Quellcode:


    Wo kann der Fehler liegen? Bin ratlos..


    Thx 4 help

  • Das hat eigentlich hier im Thema nichts zu suchen... Ich antworte jetzt (nachdem ich eh schon antworte...) für den Rest erstellst du bitte ein neues Thema. Erst, wenn du dir sicher bist, dass deine Konfiguration in Ordnung ist, und es nur mit meinem Skript nicht funktioniert, dann darfst du wieder hier im Thema antworten.


    Also:
    1. Lies die Bedienungsanleitung. Der LED-Par hat vier verschiedene Modi, in denen er jeweils unterschiedliche Kanalanzahl und vermutlich auch -belegungen hat. Ist die Adresse richtig eingestellt? Ist er richtig angeschlossen? Ist er eingeschaltet?
    2. Schließe den LED-Par an ein handelsübliches DMX-Lichtpult an, und überprüfe, ob du ihn dort "zum Leben erwecken" kannst.
    3a. Teste den Art-Net Node mit den in DMX Workshop integrierten Funktionen. Bekommst du damit aus ihm ein ordentliches DMX-Signal heraus?
    3b. Teste den Art-Net Node mit DMXControl. Bekommst du damit aus ihm ein ordentliches DMX-Signal heraus?
    4. Teste nun alles mit dem PHP-Skript


    Freundliche Grüße


    Stefan

  • Hallo masterkev,


    das ist das ArtDMX Paket in Rohform, welches dort zusammengebaut wird. Du siehst ja eine Zeile später, dass es dann auch verschickt wird. Schau dir die Art-Net Spezifikation an, dort steht dann im Detail, wofür die einzelnen Bytes gut sind - falls es dich so detailliert interessiert.


    Ich kam jetzt mal dazu, dein Skript zu testen - es funktioniert soweit, allerdings:
    * werden die Kanäle in der Reihenfolge ausgegeben, in welcher du sie ins Skript reingschrieben hast, also Kanal 1-4 auf 100%, Kanal 5 auf 0%, Kanal 6 auf 6% und Kanal 7 auf 0 %.


    Verwende doch bitte, wie vorgesehen, die Initialisierung von $dmx in art_open(), und ändere danach erst die DMX-Werte entsprechend deinen Wünschen ab.


    Freundliche Grüße


    Stefan

  • Jemand kann mir helfen, Strip RGB-Steuerelement hinzuzufügen. RED 0-100%, 0-100% und 0-100% blau-grüne Farbe


  • Newly created posts will remain inaccessible for others until approved by a moderator.

    The last reply was more than 365 days ago, this thread is most likely obsolete. It is recommended to create a new thread instead.