Hallo Zusammen,
ich habe mich weiter mit dem Thema Ambientlight, das man von Philips kennt, auseinandergesetzt. Warum nutze ich nicht einfach ein Gerät, dass ich direkt mit AtmoWin koppel? IPS ist die Zentrale und hier will ich entscheiden ob mein DMX-Gerät meine statischen Scenen anzeigt oder eben das Signal von AtmoWin umsetzt und das Licht um den Fernseher herum etwas dynamischer macht. So kann ich die RGB-LEDs um den Fernseher oder die Leinwand auch zur normalen Beleuchtung mit nutzen.
Was funktioniert:
Das Programm AtmoWin analysiert mein PC-Video-Signal und errechnet in welcher Farbe RGB-LED-Licht oben/unten/rechts/links angesteuert werden sollte. Das Signal wird per COM-Port an IPS übermittelt. In IPS nutze ich die Instanzen Com-Port, Cutter und Register Variable und nehme dann mit einem Script den Input aus der Registervariablen auseinander und schicke die Farbwerte an die Instanz meines DMX4ALL-Gerätes.
Jetzt habe ich folgendes Probelm:
Wenn ich einfach nur statische Werte/Farben in AtmoWin einstelle, dann geht das gut und meine DMX-Geräte schalten auf die richtige Farbe. Sobald ich aber zB einen Farbwechsel in AtmoWin einstelle und ne ganze Menge Werte an IPS übertragen werden dann schmiert mir der DMX-Controller nach kurzer Zeit ab. Das scheint IPS oder das DX-Gerät zu überfordern.
- kann ich mein Script effizienter/schneller schreiben, so dass IPS nicht überfordert ist?
- wie bekomme ich raus ob das Gerät oder IPS zu viel bekommt?
- habt ihr sonst eine Idee was ich machen kann?
Hier mein Test-Script: (Später würde ich es noch so bauen wollen, dass man es etwas konfigurieren kann)
<?
/*Das Script empfängt über eine Registervariable, die mit einem Com-Port verbunden wird,
die Daten von AtmoWin und übersetzt sie in Angaben für das DMX4ALL-Interface.
Dazu wird AtmoWin, ein DMX4ALL-Interface und ein virtueller Com-Port-Verbinder benötigt.
-AtmoWin gibt es hier: http://www.vdr-wiki.de/wiki/index.php/AtmoWin -->ganzen unten unter "Links" ist der Download.
-virtueller COM-Port-Verbinder hier z.B.: http://www.eterlogic.com --> VSPE = Virtual Serial Ports Emulator
1. zwei virtuelle COM-Ports mit VSPE (z.B. COM2 und COM4) erzeugen und miteinander verbinden. (Ggf. muss einer der Ports im niedrigen einstelligen Bereich liegen. Ich konnte mit AtmoWin mal einige meiner Com-Ports nicht auswählen. IPS findet sie aber alle.)
2. In AtmoWin muss das Gerät "DMX" ausgewählt werden. Unter Geräteeigenschaften muss einer der soeben miteinander verbundenen Com-Ports für das Gerät ausgwählt werden (z.B. COM 2).
3. In IPS wird ein COM-Port-Interface erstellt und der andere COM-Port (z.B. COM 4) ausgewählt.
4. In IPS wird das Interface Cutter angelegt und als linkes Trennzeichen "5A A1" und als rechtes Trennzeichen "A5" eingetragen. Übergeordnete Instanz muss der COM-Port sein.
5. In IPS werden die Scripte und Variablen angelegt wie sie im Screenshot zu sehen sind.
6. Die Registervariable wird mit der Instanz des Cutter-Interfaces verbunden und dieses Script hier (getAtmoData) wird ausgewählt, so dass es von der Register Variablen getriggert wird.
7. Die persönlichen IDs in beiden Scripten eintragen.
*/
//hier die persönlichen IDs der Instanzen eintragen:
$atmowin_port = 36716 /*[COM-Port to AtmoWin]*/ ; //ID des COM-Port-Interface
$dmx_interface = 19763 /*[Wohnzimmer\DMX_Out]*/ ; //ID des DMX4ALL-Gerätes
//-->Auswertung der Daten von AtmoWin<--
//Empfang der Daten aus der Registervariablen, die das Script triggert/aufruft.
$data = $IPS_VALUE;
//nur um zu sehen was ankommt
setValueString(57654 /*[Wohnzimmer\AtmoWin est2]*/,ord($data[0]));
//oben
DMX_SetValue($dmx_interface, 18, ord($data[0]));
DMX_SetValue($dmx_interface, 19, ord($data[1]));
DMX_SetValue($dmx_interface, 20, ord($data[2]));
//unten
DMX_SetValue($dmx_interface, 1, ord($data[3]));
DMX_SetValue($dmx_interface, 2, ord($data[4]));
DMX_SetValue($dmx_interface, 3, ord($data[5]));
?>
Ich hoffe ihr habt Ideen!!
Gruß
Matthias