Hi,
gibts ne API um aus einer Webanwendung heraus auf DMXC3 zuzugreifen?
Hi,
gibts ne API um aus einer Webanwendung heraus auf DMXC3 zuzugreifen?
Stand heute nicht, ist aber auf unserer langen ToDo Liste. Ist aber ehrlich gesagt weit hinten.
Allerdings kann man ja selber ein Plugin schreiben, welches die relevanten Funktionen als REST API zur Verfügung stellt. Man müsste quasi den "Server" Teil noch als DMXC3 Plugin selber entwickeln.
Ok. Das ist eigentlich gar keine so schlechte Idee.
Wäre das dann ein Kernel- oder ein GUI-Plugin?
Gibt es irgendwie Programmier Beispiele?
z.B. Alle Devices auflisten.
1 Device markieren.
Bestimmte Properties wie z.B. Position eines Device ändern.
Presets auflisten
Preset Bearbiten etc....
Schau dir mal den Post an. Da hat jemand ein Plugin geschrieben, dass in etwa das gleiche macht wie du, und da sind auch Codebeispiele drin.
Ich würde es als Kernel Plugin schreiben, weil du brauchst ja nicht den extra Weg über die GUI gehen. Hast du dir schon Gedanken über den Technologiestack gemacht? Wenn du für C# eine REST Schnittstelle schreiben willst, kann ich das OWIN Framework empfehlen, aber es gibt sicher auch andere.
EDIT: Ich sehe gerade dass die meisten Code Beispiele sich auf ein GUI Plugin beziehen. Macht aber nix, sag mir was du brauchst und ich Poste dir ähnlich wie in dem anderen Thread entsprechende Code Snippets.
Hallo,
Über das Framework hab ich mir noch nicht wirklich Gedanken gemacht. Aber ich werde wahrscheinlich auf deinen Vorschlag eingehen.
Am Ende soll man mit der Webanwendung CueLists und Presets bearbeiten können, also ähnlich wie das verlinkte Thema von dir.
Dann bräuchte ich für den ersten Schritt erst einmal 3 Befehle:
1. alle Devices/-Groups laden und in meiner Webanwendung anzeigen.
2. Devices/-Groups markieren
3. Properties des markierten Device ändern -> z.B. Farbe, Dimmer, Position (irgendwann dann auch mal Effekte)
4. Der Befehl Programmer löschen wäre vielleicht auch noch nützlich. Oder ist der Programmer eine Gui Funktionalität?
Das soll im Prinzip eine vereinfachte Darstellung der StageView sein.
Wenn das Ganze funktioniert wäre der nächste Schritt:
Alle CueLists anzeigen. 1 CueList auswählen und dazu alle Cues auflisten. Bestimmtes Cue in Programmer laden und bearbeiten und wieder wegspeichern.
Aber dazu komme ich später
Hallo!
An dieser Stelle wäre vielleicht noch interessant zu wissen, was dein gewünschtes Einsatzszenario für die Webanwendung sein soll (also nicht die Funktionen selbst) sondern das drum herum und wer die Web-Anwendung bedienen soll. Die Frage stelle ich deswegen, da sich aus dem Einsatzszenario ggf. noch weitere Tipps für die Entwicklung ergeben.
Viele Grüße, Stefan.
Das Einsatzszenario ist folgendes:
Ich möchte mit der Webanwendungen von der Tanzfläche aus meine Bewegungs-Cuelist anpassen.
Was ist dein Client? Ein Smartphone oder ein Laptop?
Weil wenn es nur um die Netzwerkunterstützung geht, die hat DMXC3 eingebaut.
Der Client könnte entweder Smartphone oder PC sein.
Das ganze sollte eine Angular Anwendung werden, die über das Framework Ionic auf mehreren Plattformen läuft.
Inwiefern macht das ein Unterschied bei der Netzwerkunterstützung?
Wie kann ich das verstehen mit der Netzwerkunterstützung?
Sorry für die Fragen bin noch Anfänger in dem Bereich
Naja, DMXControl 3 unterstützt von sich aus ein Client - Server Model. Dazu installierst du DMXC 3 auf beiden Rechnern, startest auf dem Server aber nur den "Kernel" auf dem Client startest du die GUI und verbindest dich per Netzwerk auf den Kernel. Ergo für den Fall, dass dein Client ein vollwertiger Rechner ist, must du gar nichts programmieren.
OK. Ja arbeite mich gerade im Angular ein und mir würde da so eine Testanwendung schon gefallen.
Wie sehen die Befehle aus die ich brauche?
//Liste aller Devices und DeviceGroups
IEnumerable<IDevice> devices = DeviceManager.getInstance().Devices;
IEnumerable<IDeviceGroup> deviceGroups = DeviceManager.getInstance().DeviceGroups;
//DeviceGroups Markieren
//Zuerst muss eine Session angelegt werden (ähnlich wie eine GUI die sich verbindet)
ISession s = SessionManager.getInstance().registerSession("WebApp", new string[] { Dns.GetHostName() }, EConnectionType.INTERNAL);
string[] selected = new {
//Irgendwie eine Liste der IDs von Devices und / oder Gruppen erstellen die selektiert werden sollen
}
IDeviceGroup selected = DeviceManager.getInstance().createSelectedDeviceGroup(selected, "WebApp");
//Properties Ändern
var position = selected.PropertiesMerged.FirstOrDefault(c => c.PropertyType == EPropertyType.Position);
s.SessionProgrammer.setPropertyValue(selected.ID, position.ID, new Position(10, 10), false);
//Programmer Clearen
s.SessionProgrammer.clear();
Display More
Hi,
ich baue das ganze jetzt doch anders auf.
Bräuchte folgende Codes:
//Alle Cues:
var cueLists = SceneListManager.getInstance().SceneLists;
//Cues einer Cue
var cl = cueLists.First();
var cuesInThatList = cl.Scenes;
var cueToEdit = cuesInThatList.First();
//In Programmer laden
//Session wie oben
s.SessionProgrammer.SetEditScene(cueToEdit.copy(), EOutputMode.ALL, new ScenelistContentSource(cl.ID, cueToEdit.ID));
//Ändern der Werte im Programmer wie oben, danach ersetzen der Szene wie folgt
IScene scene = (IScene)s.SessionProgrammer.getProgrammerScene(true);
IScene dolly = scene.copy(null);
cueToEdit.CopyPropertiesTo(dolly); //Erweiterungsfunktion. using org.dmxc.lumos.Kernel.Scene.SceneTools erforderlich
var trigger = cueToEdit.GUITriggerValue;
int index = cueToEdit.SceneIndex;
cl.removeScene(cueToEdit);
cl.insertScene(dolly, index, trigger, false);
Display More
Danke
Was muss ich hier machen:
Bei der Stelle
//Zuerst muss eine Session angelegt werden (ähnlich wie eine GUI die sich verbindet)
ISession s = SessionManager.getInstance().registerSession("WebApp", new string[] { Dns.GetHostName() }, EConnectionType.INTERNAL);
kommt folgender Fehler:
IGuiSession IGUISessionManager.registerSession(string name, string[] hosts, EConnectionType tyoe)
Der Typ "ord.dmxc.lumos.Kernel.GUISession.IGUISession" kann nicht implizit in "rd.dmxc.lumos.Kernel.GUISession.ISession" konvertiert werden.
Wie bekomm ich da ne ISession?
Kann ich hier einfach über (ISession) zurück casten?
Folgendes Satz hab ich beim Fehler vergessen:
Es ist bereits eine explizite Konvertierung vorhanden (möglicherweise fehlt eine Umwandlung)
Du kannst einfach nach ISession casten.
Funktioniert wunderbar. Danke
Mein Ziel ist alle Eigenschaften in der Webanwendung die in einer Cue drin sind aufzulisten und einfach nur die Werte manuell zu Ändern.
Bei ganz normalen Positionen und Farben weiß ich wie ich das mache.
Aber wie bekomm ich das mit den Effekten hin? Wenn z.B. auf Tilt ein Sinus Effekt liegt.
Wie kann ich, wenn die einzelenen Einträge, inkl. Effekten im Programmer auslesen?
Soweit bin ich schon. Aber ich möchte hier auch die Effekte anzeigen, quasi die Programmer Ansicht von DMXC3 nachprogrammieren + die Effekte mitanzeigen.
System.Collections.ObjectModel.ReadOnlyCollection<org.dmxc.lumos.Kernel.Scene.Entry.ISceneEntry> sceneEntries = MySession.SessionProgrammer.EditScene.SceneEntrys;
foreach(ISceneEntry sceneEntry in sceneEntries)
{
}
Kann mir jemand helfen?
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.