ArtNet DMX auslesen

Hallo,

ich habe mehrere ArtNetNode WLAN LED Streifen hier verbaut, welche sich soweit prima ansteuern lassen.

Sobald es an der Türe klingelt, blinkt die nächstgelegene für 20s grün.
Bei Rauchmelderauslösung blinken alle für 60s rot.

Nun hätte ich gerne, dass der vorherige Zustand nach der Aktion wieder hergestellt wird.
Dafür muss ich im Skript vor den Blinkschleifen aber den aktuellen Wert auslesen.

Dachte das wäre mit DMX-RequestInfo(); möglich, er schreibt aber, dass dieser Befehl für ArtNet nicht verfügbar sei.

Hab ich noch Alternativen?
Ansonsten müsste ich selbst zusehen sobald ich den DMX Wert verändere, dass mir dieser in eine Variable geschrieben wird, die dann ausgelesen wird.

Freu mich auf euer Feedback.

Hallo,

da ich ebenfalls auf ARTNET umsteigen möchte und auch Sensoren einsetze, darf ich mich dieser Frage anschließen. Offiziell unterstützt IPS ARTNET ja, aber wenn der Weg rückwärts nicht funktioniert, macht das nicht wirklich Sinn.
Gibt es alternativ die Möglichkeit, UDP-Pakete zu empfangen ?

Grüße Frank

Die Anfrage hier ist schon relativ alt - eine Antwort eines Entwicklers/Moderators wäre nice :wink:

Ich habe es so gelöst, dass ich im DMX Output eine Status-Variable als String gesetzt hab wo ich den aktuellen Wert schreibe z.b. 255,0,0,0

Bei einer neuen Aktion z.B. Türklingel möchte ich lediglich dass er mir 20s anders Blinkt und dann wieder zum vorherigen Stand zurück kehrt.

Also lese ich den vorherigen Stand aus dem Status aus, schreibe ihn in ein Array und schreibe dies neu nach meiner Blinkaktion:


$status = explode(',', getValue(IDVONSTATUSVARIABLE /*[Wohnung\Küche\Küche - LED\Status]*/));
DMX_FadeChannel(IDVOMDMX /*[Wohnung\Küche\Küche - LED]*/, 1, $status[0], 0.5);
DMX_FadeChannel(IDVOMDMX /*[Wohnung\Küche\Küche - LED]*/, 2, $status[1], 0.5);
DMX_FadeChannel(IDVOMDMX /*[Wohnung\Küche\Küche - LED]*/, 3, $status[2], 0.5);
DMX_FadeChannel(IDVOMDMX /*[Wohnung\Küche\Küche - LED]*/, 4, $status[3], 0.5);

Funktioniert bei mir…

hm - löst aber das Problem mit den Sensoren nicht…

Warum nicht? Was sind das für Sensoren?
Es geht ja darum, die aktuellen Werte der DMX auszulesen.
Genau das mache ich.

Wenn nun irgendein anderer Sensorwert einen Zustand oder Wert erreicht, in dem der DMX etwas anderes machen soll, anschließend aber wieder auf den vorherigen Wert zurückkehrt wäre doch genau das gewünschte Verhalten erzeugt?

Oder versteh ich das falsch?

Da Art-Net ja nur von einem Gerät aus gesendet werden kann (in dem Fall vom IPS -Server) hast du ja immer die Werte in deinen Variablen stehen. Diesen musst du dir vor deiner Blink-Aktion “merken”.
Das ist zwar von der Programmierung etwas umständlich, ist aber bei allen Geräten so. Egal ob Homematic-Aktor, sonos Lautsprecher usw.

Solltest du tatsächlich artnet empfangen wollen geht das aber auch recht einfach mit einer RegisterVariable an einem UDP-socket. Der Aufbau eines solchen Packetes ist relativ einfach.

Der Art-Net Standard bietet auch einen Rückkanal. Dieser ist jedoch nicht dafür da den Aktuellen Dimmer-Zustand zurück zu geben sondern eher Address-Information, Temperatur, Betriebsstunden etc.

Ansonsten müsste ich selbst zusehen sobald ich den DMX Wert verändere, dass mir dieser in eine Variable geschrieben wird, die dann ausgelesen wird.

DMX ist im Standardfall unidirektional, somit kann man den „Zustand“ nicht auslesen. Du müsstest es dir vor dem Setzen des „Alarmfalls“ merken, was vorher „an“ war.

paresy

ArtNet und Sensoren…
Das passt so gar nicht zusammen.

Nicht jedes Protokoll ist für Sensoren geeignet.

ArtNet ist primär für eine Lichtsteuerung gedacht.
Hierbei wird ein RS485 Bus auf herkömliches Netzwerk umgesetzt, und an der Gegenstelle kann (muss aber nicht) es wieder zu einem RS485 DMX Bus umgesetzt werden.

Deswegen scheint das auch für mich keinen Sinn zu geben …

Bei ArtNet (und auch DMX) gibt es genau einen Sender!

Wenn du mit einem Schalter (Sensor) eine Lampe (Aktor) schalten willst musst du immer über den Master (IPS) gehen.
Das hat den Nachteil: ist IPS aus geht nix mehr!

Wenn du das nicht willst musst du auf ein anderes System ( Protokoll) gehen.

Je nachdem was du an Hardware verwendest (selbstbau?) kannst du auf einfach dir ein properitäres Protokoll dafür überlegen.
Ich hatte mal eine Zeit lang das ganze mit Arduino Ethernet am laufen. Die verschiedenen Sensoren und Aktoren könnten dann direkt über Broadcast kommunizieren und der Status ist immer in IPS gelaufen. Ist halt schon recht komplex mit der verteilten Intelligenz … daher sollte man sich am Anfang schon viele Gedanken machen.