<< Klicken Sie hier um das Inhaltsverzeichnis anzuzeigen >> Navigation: Anleitungen > EmberPlusTcp Plugin konfigurieren |
Mit dem EmberPlusTcpPlugin können Mischpulte, Kreuzschienen und andere Geräte, welche das Ember+ Protokoll via TCP/IP unterstützen, an DABiS800 angebunden werden. Die Verwendung dieses Plugins ist kostenpflichtig und setzt deshalb eine gültige Lizenz voraus.
Momentan verwenden folgende Hersteller das Ember+ Protokoll in einigen ihrer Geräte.
• ALC NetworX
• AVT Audio Video Technologies GmbH
• BFE
• BY-Systems
• DHD Audio
• DSA Volgmann
• Dimetis
• EVS
• Evertz (Magnum)
• GrassValley (Ignite)
• Ihse
• Jünger
• L-S-B Broadcast Technologies
• LES Switzerland
• Lawo
• Mandozzi
• Mosart
• Orban
• Riedel
• SLG Broadcast
• Solid State Logic
• Stagetec
• Trilogy
• TSL Products
• coolux Media Systems
Die aktuelle Liste finden Sie hier.
Fragen Sie im Zweifelsfall bei Ihrem Gerätehersteller nach. Bedenken Sie auch, dass das DABiS Ember+TcpPlugin lediglich gewöhnliche Parameter (Boolean (bool), Integer (long), Real (double), UTF8String (string), Octet String (byte[])) lesen und schreiben kann. Erweiterungen werden nicht unterstützt (Matrix Extensions, Function Extensions, Schema Extensions).
Die Applikation stellt dem Plugin eine Schnittstelle für die Kommunikation zur Verfügung. Diese Schnittstelle kann mehrere Zwecke erfüllen, z.B. kann die Applikation das Plugin über ein Ereignis in der Applikation informieren. Umgekehrt kann das Plugin über diese Schnittstelle Applikationsfunktionen aufrufen.
Auf der anderen Seite besitzt das Plugin eine Schnittstelle (IEmberPlusConnector) um mit dem Ember+ Gerät zu kommunizieren.
Zwischen diesen beiden Schnittstellen sitzt eine Scripting-Engine, dadurch ist das Plugin flexibler einsetzbar als über rein herkömmliche Konfigurationsparameter.
Jedes Gerät (Provider) welches Ember+ unterstützt stellt einen sogenannten Ember+ Tree bereit. Dieser Tree besteht aus Nodes und Leafs. Diese Leafs können vom Typ Parameter, Command, StreamCollection, Matrix oder Function sein. Im nachfolgenden wird nur auf Parameter Leafs eingegangen, da das DABiS EmberPlusTcpPlugin nur diese Art von Leafs unterstützt. Mit dem Tool "Ember+ Viewer" kann man sich auf einen beliebigen Ember+ Provider verbinden und den Tree inspizieren. Dieses Tool ist vor allem während Konfiguration äussert nützlich. Damit können z.B. die Parameter Pfade ausfindig gemacht werden, welche für die Konfiguration benötigt werden. Im weiteren können dort auch direkt übers GUI (Schaltfläche Change...) Parameter Änderungen vorgenommen werden.
Der Ember+ Tree eines Gerätes gibt unter anderem Informationen darüber welche Parameter gesetzt und gelesen werden können und welchen Typ sie besitzen. Er definiert sozusagen die Schnittstelle, welche das Gerät über Ember+ zur Verfügung stellt.
Beispiel eines Ember+ Trees im Ember+ Viewer
Der Konfigurationsdialog lässt sich über den Menüeintrag "Optionen" öffnen.
1. Im Konfigurationsdialog unter dem Knoten Plugins den Knoten "EmberPlusTcp..." aufklappen.
2. Die Einstellung Activated auf True setzen.
3. Host und Port des Ember+ Gerätes (Provider) konfigurieren.
4. Scripting Abschnitte konfigurieren
Damit das EmberPlusTcpPlugin überhaupt etwas macht, muss das gewünschte verhalten erstmal konfiguriert werden. Um ein möglichst hohes Mass an Flexibilität zu erreichen, erfolgt die Konfiguration in Form von "Scripting". Das Scripting basiert auf der Programmiersprache C#, d.h. die Konfiguration erfolgt in Form von C#-Code. Programmier- und C#- Kenntnisse sind zwar von Vorteil, aber nicht zwingend notwendig.
Öffnen Sie zunächst den Skript-Editor. über die Schaltfläche "..."
Den Scripts stehen die nachfolgenden Schnittstellen zur Verfügung um ihre Arbeit zu erledigen.
IEmberPlusTcpPlugin
Die Schnittstelle IEmberPlusTcpPlugin stellt folgende Ressourcen zur Verfügung:
•Das Event ParameterChanged wird ausgelöst, wenn ein registrierter Parameter des Ember+ Gerätes geändert wurde.
•Das Event Connected wird ausgelöst, wenn das Plugin eine Verbindung mit dem Ember+ Gerät hergestellt hat.
•Die Methode TraverseTreePart muss grundsätzlich für jeden Parameter aufgerufen werden, den man lesen oder schreiben möchte.
•Die Methode ClearLocalTree um den lokalen Parameter Cache zu löschen.
•Die Methode SetParameter um einen Parameter auf dem Ember+ Gerät zu ändern. Die Methode gibt es in unterschiedlichen Ausführungen. Einmal für jeden unterstützten Parameter Datentyp und jeweils noch einmal mit dem zusätzlichen Parameter "delay", welcher die Änderung des Parameters verzögert ausführt.
•Die Methode InitDelayedParameter. Diese muss einmal für jeden Parameter ausgeführt werden, wenn der Parameterwert auf dem Ember+ Gerät mittels SetParameter verzögert geändert werden soll.
•Die Methoden TryGetParameter und GetParameterXY (Parameter Typ abhängig) um einen Parameter Wert aus dem lokalen Cache abzufragen. Der Cache wird automatisch für alle Parameter geführt, für welche die Methode TraverseTreePart aufgerufen wurde.
•Die Methode Pulse, welche einen Boolean-Parameter auf true und nach einer angegebenen Zeitspanne wieder auf false setzt.
IScCommandControl
Die Schnittstelle IScCommandControl stellt folgende Ressourcen zur Verfügung:
•Die Status-Eigenschaften Abhaken, Automat und Pfl.
•Die Ereignisse ControlCommandFired und TextCommandFired, die ausgelöst werden wenn der Studio Controller einen Steuerbefehl versendet.
•Das Ereignis StatusMessageFired, das ausgelöst wird wenn der Studio Controller eine Statusmeldung versendet.
•Das Ereignis InputCommandReceived, das ausgelöst wird wenn der Studio Controller einen Steuerbefehl von einem externen Modul empfangen hat.
•Die Methode SendInternalCommand um dem Studio Controller einen Steuerbefehl zu senden.
Die Schnittstelle steht im Script als Eigenschaft ScCommandControl zur Verfügung und kann z.B. wie folgt verwendet werden:
ScCommandControl.SendInternalCommand(-10103); |
IScPlaylistPlayerControl
Die Schnittstelle IScPlaylistPlayerControl stellt folgende Ressourcen zur Verfügung:
•Das Ereignis PlaylistelementStarted wenn ein Playlistelement OnAir gestartet wird.
•Das Ereignis PlaylistelementStopped, wenn ein OnAir laufendes Playlistelement gestoppt wird.
IScSpontanjingleControl
Die Schnittstelle IScSpontanjingleControl stellt folgende Ressourcen zur Verfügung:
•Das Ereignis SpontanjingleStarted wenn ein Spontanjingle OnAir gestartet wird.
•Das Ereignis SpontanjingleStopped, wenn ein OnAir laufender Spontanjingle gestoppt wird.
In dieser Beispielkonfiguration wird exemplarisch gezeigt...
•...wie man sich auf Parameteränderungen des Ember+ Gerätes registriert.
•...wie man Parameterwerte auf dem Ember+ Gerät ändern kann.
•...wie man Parameterwerte auf dem Ember+ Gerät verzögert ändern kann.
•...wie man den Plugin Host aufgrund einer Parameteränderung des Ember+ Gerätes steuern kann.
Jedes Gerät stellt seinen eigenen Ember+ Tree zur Verfügung, weshalb hier nicht auf spezifische Eigenschaften eingegangen werden kann. Nachfolgend wird als Beispiel eine Konfiguration für einen Provider vorgenommen, welcher folgender Ember+ Tree zur Verfügung stellt. Jeder Parameter besitzt einen definierten BER Type, welcher über den Ember+ Tree ermittelt werden kann. Es ist wichtig zu verstehen, dass für das Lesen und Schreiben von Parametern die Methoden verwendet werden, die dem jeweiligen Typ des Parameters entsprechen. Die Methoden sind im Interface IEmberPlusConnector beschrieben.
Im Abschnitt Free Code definieren wir zunächst ein paar Variablen um den Zugriff auf die Parameter zu vereinfachen. Wir erstellen für jeden Ember+ Parameter, den wir mit dem Plugin lesen oder schreiben wollen, eine string Variable. Als Wert setzen wir den Absoluten Pfad des entsprechenden Ember+ Parameters.
Das Connected Ereignis wird immer dann ausgelöst, wenn sich das Plugin mit dem Ember+ Gerät verbunden hat. Sobald das Plugin gestartet wurde, verbindet es sich automatisch mit dem konfigurierten Host. Wenn die Verbindung verloren geht, versucht das Plugin im Sekundentakt die Verbindung wieder herzustellen.
In diesem Ereignis sollten alle Parameter bekannt gegeben werden, welche gelesen und/oder geschrieben werden. Dies geschieht mit dem Aufruf der Methode TraverseTreePart. Die Methode sollte für jeden Parameter aufgerufen werden, welcher irgendwo in unserer Konfiguration gesetzt wird und für jeden, dessen Änderung das ParameterChanged Ereignis auslösen soll.
Die Methode ClearLocalTree sollte jeweils zu Beginn dieses Ereignis-Handlers aufgerufen werden. Sie sorgt dafür, dass der gecachte Ember+ Tree vollständig geleert wird. Das ist wichtig bei einem allfälligen Reconnect. Nur so wird sichergestellt, dass die anschliessenden TraverseTreePart Aufrufe das gewünschte Ergebnis erzielen.
In der hier gezeigten Beispielkonfiguration sollen anschliessend die beiden Parameter "CurrentTitle" und "gpo1" gesetzt werden. Deshalb wurde in diesem Connected Ereignis-Handler die TraverseTreePart Methode je einmal für die beiden Parameter aufgerufen. TraverseTreePart erwartet jeweils den vollständigen Pfad eines Parameters als Argument, inklusive Wurzelelement. Anschliessend können die beiden Parameter gesetzt werden. Zusätzlich wird das Ereignis ParameterChanged ausgelöst, sobald einer dieser Parameter ändert.
Tipp: Mit dem Tool Ember+ Viewer, können die Parameter Pfade eines beliebigen Ember+ Gerätes ermittelt und mittels Copy&Paste in die Konfiguration übernommen werden.
Das Ereignis ParameterChanged wird immer dann ausgelöst, wenn ein Parameter des angebundenen Ember+ Gerätes ändert.
Damit das Gerät (Provider) unser EmberPlusTcpPlugin (Consumer) über eine solche Parameteränderung informiert, muss dieser Teil des Ember+ Trees zuerst ermittelt werden. Dies kann mit der Methode TraverseTreePart im Connected Ereignis erreicht werden.
Der ParameterChanged Ereignis-Handler wird mit den Argumenten "path", "value" und "echoDistance" ausgelöst. Das Argument "path" gibt an, welcher Parameter geändert hat. Auch hier wird der vollständige Pfad zur Verfügung gestellt, inklusive Wurzelelement. Das Argument "value" ist der neu gesetzte Wert. Schliesslich wird mit dem Argument "echoDistance" die Anzahl Millisekunden angegeben, die vergangen ist, seit dem der Parameter das letzte Mal durch dieses Plugin (SetParameter) geändert wurde. Damit kann festgestellt werden, ob der Parameter durch das Gerät geändert wurde (z.B. durch das Betätigen eines Schalters), oder ob es sich lediglich um ein Echo handelt, welches durch das Setzen dieses Parameters mittels SetParameter von diesem Plugin entstanden ist.
In dieser Beispielkonfiguration wird mit dem ersten If-Statement geprüft, ob es sich um eine echte Parameter Änderung, oder um ein Echo handelt, welches durch die Methode SetParameter ausgelöst wurde. Ein Echo ist abhängig von der Latenz der Geräteverbindung. Hier werden ParameterChanged Ereignisse eines Parameters ignoriert, wenn sie bis zu 50ms nachdem Aufruf von SetParameter eintreffen. Bei höheren Latenzen müsste diese Zeit entsprechend erhöht werden, jedoch deuten solch hohe Latenzen ohnehin auf ein Netzwerkproblem hin.
Danach wird geprüft, ob die Änderung den Parameter "gpo2" betrifft. Ist das der Fall gehen wir weiter und wollen prüfen, auf welchen Wert der Parameter geändert hat. Da das Argument value vom allgemeinen Typ object ist, müssen wir value zuerst in den eigentlichen Parameter Typen casten, in diesem Fall nach Boolean (bool). Anschliessend wird geprüft, ob der Wert auf true steht. Ist das der Fall, wird hier im auf das Host spezifische Interface ScCommandControl zugegriffen um den Schaltbefehl 10121 (StartNext) an den Host zu senden. ACHTUNG: Der Zugriff auf ScCommandControl funktioniert nur dann, wenn das Plugin im SC8 gehostet wird. Wird das Plugin von einer anderen Anwendung ausgeführt, dann konnen stattdessen die Schnittstellen verwendet werden, welche diese Anwendung bereitstellt.
In diesem Beispiel wird beim Einschalten des Automaten der Parameter "gpo1" des Ember+ Gerätes auf true gesetzt. Beim Ausschalten des Automaten wird der Parameter "gpo1" wieder auf false gesetzt, diesmal aber nicht sofort, sondern erst nach einer Verzögerung von einer Sekunde.
Beim Starten eines Playlistelementes wird zunächst ein String à la "<TitelThema> - <Interpret>" zusammengesetzt. Anschliessend wird der Parameter "ZoneNode/Ravenna/CurrentTitle" (siehe Definition paramCurrTitle im Free Code Abschnitt) auf dem Ember+ Gerät mit diesem Wert gesetzt. Nebst dem TitelThema und dem Interpret können über das Argument e noch weitere Informationen ermittelt werden. Siehe dazu PlayelementActionEventArgs, beziehungsweise IPlayelementInfo.