Ambilight/AtmoWin mit IPS... ist IPS/DMX überfordert?

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.

  1. kann ich mein Script effizienter/schneller schreiben, so dass IPS nicht überfordert ist?
  2. wie bekomme ich raus ob das Gerät oder IPS zu viel bekommt?
  3. 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

Ganz ehrlich? Das ist ne blöde Idee.

Überlege mal wie oft in der Sekunde du dieses Script ausführen müsstest, damit du ein passables Resultat erziehlst. Vermutlich startet dein script bereits erneut während es noch garnicht zu Ende durchgelaufen ist. Und damit bringst du den Controller aus dem Tritt. Schau mal wieviele Threads laufen (Ansicht PHP-Informationen) und bring dir den Umgang mit nem Semaphore bei. Vielleicht hilft das schon.

Ausserdem befürchte ich, das IPS dann so mit Fernsehflackern beschäftigt ist, dass sonst nix mehr in deinem Haus funktioniert.

Toni

Ich habe mir extra dafür das System von ARFX geholt. Das verrichtet seine Arbeit super und es sieht richtig genial aus :slight_smile:

Vielen Dank für Eure Beiträge. Ich verstehe warum Du es eine blöde Idee findest Tonic1024 aber ich finde es eigentlich schlechter mir extra Hardware zuzulegen. Das ist doch eigentlich das gute an IPS, dass man verschiedene Hardware über eine Plattform nutzen kann. Warum sollte ich die LED-Stripes und einen Controller doppelt kaufen? (Vielleicht weil ich es nicht zum laufen bekomme :slight_smile:
Ich hab das mit dem Semaphore ausprobiert. Da hat es länger funktioniert. Dann ist das Gerät aber auch ausgestiegen. Ich muss mal mit der Zeit beim Semaphor herum probieren. Vielleicht bekomme ich es ja noch hin.
Gruß
Matthias

Hallo,
ich bin auch der Meinung das du dir damit dein ganzes System lahm legst.
Du wirst wahrscheinlich (noch ;)) keinen VDR als Receiver nutzen. Aber vielleicht kann ich dich ja dafür begeistern. Ist nicht nur wegen dem Ambilight Plugin eine Überlegung wert.
Ich habe mir so mein Ambilight gebaut.
Atmo-plugin
4 Kanal USB PWM Led Steuergerät

Sowas gibt’s aber auch als Hardwarelösung.
Aurrora - TV Beleuchtung AurroLight 2 Komplettbausatz 100cm „KEIN LÖTEN MEHR“ AurroLight 2

Ciao Severin