Web-Interface: Unterschied zwischen den Versionen

Aus Deutsches DMXC-Wiki
KKeine Bearbeitungszusammenfassung
 
(4 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
{{Infobox Plugin
| Name = Web-Interface
| Logo =
| Screenshot =
| Beschreibung =
| Hersteller = Michael Kuron
| AktuelleVersion = 1.1.2
| AktuelleVersionFreigabeDatum =
| Status =
| Funktioniertmit = 2.10
| Programmiersprache = php
| Kategorie =
| Lizenz =
| Deutsch =
| Email =
| Homepage =
| Download = http://michael.kuron-germany.de/dmxc/dmxcontrol_php.tar
}}
= Beschreibung =
Seit Version 2.10 bietet DMXControl eine [[Terminal_Schnittstelle|Terminal-Schnittstelle]], über die externe Programme über das Netzwerk auf Funktionen von DMXControl zugreifen können.
Seit Version 2.10 bietet DMXControl eine [[Terminal_Schnittstelle|Terminal-Schnittstelle]], über die externe Programme über das Netzwerk auf Funktionen von DMXControl zugreifen können.
Für den Zugriff auf die Terminal-Schnittstelle wurde von [[User:Mkuron|Michael Kuron]] eine PHP-Klasse erstellt, die die Kommunikation und den Aufruf der Befehle abwickelt.


Auf Basis dieser PHP-Klasse wurde von [[User:Mkuron|Michael Kuron]] ein Web-Interface entwickelt, das sich an den Funktionen der [[PDA-2-DMXC|PDA-Steuerung]] orientiert.
Für den Zugriff auf die Terminal-Schnittstelle wurde von Michael Kuron eine [[PHP-Klasse]] erstellt, die die Kommunikation und den Aufruf der Befehle abwickelt.
[[User:Weissbier|Weissbier]] entwickelt momentan, ebenfalls auf Basis dieser PHP-Klasse, eine Erweiterung des Web-Interfaces zur Benutzung von Kommandobuttons.


==PHP-Klasse==
Auf Basis dieser PHP-Klasse wurde von Michael Kuron ein Web-Interface entwickelt, das sich an den Funktionen der [[PDA-2-DMXC|PDA-Steuerung]] orientiert.
Der User Weissbier entwickelt momentan, ebenfalls auf Basis dieser PHP-Klasse, eine Erweiterung des Web-Interfaces zur Benutzung von Kommandobuttons.


===Download===
= Funktionen  =
http://michael.kuron-germany.de/dmxc/dmxc.inc.php
 
 
===Server-Anforderungen===
Es wird serverseitig mindestens PHP5 benötigt, da PHP4 nur eingeschränkt Objektorientierung unterstützt.
Die Benutzung von PHP 5.2.5 oder höher wird empfohlen.
 
===Syntax===
;setChannel ( int $channel, int $value )
:setzt Kanal $channel auf den Wert $value (0-255).
;int getChannel ( int $channel )
:gibt den aktuellen Wert von Kanal $channel zurück.
 
;array getAllDevices ( )
:gibt ein assoziatives Array mit allen Geräten zurück - die Keys sind die Geräte-IDs, die Werte die Geräte-Namen.
Array
(
    [1] => PAR left (1)
    [2] => PAR left (2)
    [3] => PAR right (1)
    [4] => PAR right (2)
    [5] => Roboscan 518
)
;array getDeviceInfo_byname ( string $device )
:gibt Informationen über das Gerät mit dem Namen $device aus.
Array
(
    [Name] => Roboscan 518
    [StartAddress] => 9
    [PanTilt] => Fine 5 7 6 8
    [Channels] => 9
    [Channel1] => Multifunktion
    [Channel2] => Helligkeit
    [Channel3] => Farbe
    [Channel4] => Gobo
    [Channel5] => Effekte
    [Channel6] => Pan
    [Channel7] => Pan (Fein)
    [Channel8] => Tilt
    [Channel9] => Tilt (Fein)
)
 
;array getCommandPossibilities_byname ( string $module, string $function, string $channel )
:gibt die Befehlsmöglichkeiten aus. Alle Parameter sind optional (wenn keiner angegeben wird, werden die verfügbaren Module ausgegeben; wenn nur $module angegeben wird, werden die Funktionen dieses Moduls ausgegeben; wenn $module und $function angegeben werden, werden die Kanäle dieser Funktion ausgegeben.
Array
(
    [1] => Deaktiviert
    [2] => Audiotrack
    [3] => BeatTool
    [4] => DMX-Ausgabe
    [5] => DMXIn-Remote
    [6] => Effekte
    [7] => Geräte
    [8] => Gruppenauswahl
    [9] => Kommandozeile
    [10] => Master
    [11] => MIDI-Remote
    [12] => Sound Analyzer
    [13] => Submaster
    [14] => Szenenbibliothek
    [15] => Szenenliste
    [16] => Textbuch
;runCommand_byname ( string $module, string $function, string $channel, int $flags, int $value )
:führt den Befehl aus. Als $flags kann flagToggle (Umschaltmodus), flagOverride (Wert verwenden), flagAskValue (Wert abfragen) oder flagIgnoreZero (0 ignorieren) angegeben werden; um mehrere Flags zu verwenden, müssen diese mit + aneinandergereiht werden.
 
===Codebeispiel===
Dieses Code-Beispiel bindet die Klasse ein, instanziert sie und stellt eine Verbindung mit DMXControl auf localhost her und setzt Kanal 1 auf 100%.
<?php
    require_once "dmxc.inc.php";
    $dmxc = new dmxc("127.0.0.1");
    $dmxc->setChannel(1,255)
?>
 
===Changelog===
====Version 1.0====
*Erste Version
*Für DMXControl 2.10 Beta 2 programmiert.
====Version 1.1 (30.08.2008)====
*Timeouts sind jetzt nicht mehr nötig, da mehrzeilige Ausgaben von DMXControl seit dem RC1 mit ".\n" abgeschlossen werden. Dies führt zu einem Geschwindigkeitszuwachs von ca. 1000000% (!).
====Version 1.1.1 (08.09.2009)====
*RunCommand übergibt jetzt den Wert korrekt (die Schnittstelle erwartet z.B. 100000 statt 100.000)
 
=== Known Bugs  ===
 
*Die ChannelNotifications, die die Terminalschnittstelle bietet, sind nicht implementiert
**In einer single-threaded-Programmiersprache wie PHP sind sie recht nutzlos.
**Nach dem Durchlauf des PHP-Skriptes bleibt keine Verbindung zum Client bestehen, sodass die ChannelNotifications auch nicht dazu benutzt werden können, z.B. eine Kanalübersicht im Web-Interface laufend zu aktualisieren. Falls das aber in Kombination mit AJAX nützlich sein könnte, kann man das aber immer noch implementieren.
*Nur ein simultaner User
**Das ist aber eine Beschränkung der DMXControl-Terminalschnittstelle, die nur eine Verbindung gleichzeitig zulässt.
 
*<s>Einige Befehle mit [[#Syntax|RunCommand]] funktionieren nicht - dies ist jedoch ein [http://dmxcontrol.de/forum/thread.php?postid=15211#post15211 Problem von DMXControl und wird in der nächsten Version repariert].</s> Ist ab 2.10RC3 (?) behoben.
 
Die ersten beiden Beschränkungen löst [[Benutzer:Weissbier|Weissbier]] momentan - er programmiert einen Daemon, der bei ChannelNotifications Befehle ausführen kann und wohl auch mehrere parallele Verbindungen zulässt. Ersteres ist vorallem zur Programmierung von Effekten in PHP nützlich (wenngleich dafür eher die Plugin-Schnittstelle benutzt werden sollte); Letzeres erlaubt mehrere Benutzer gleichzeitig und würde auch eine [[#Known_Bugs_2|Beschränkung des Web-Interfaces]] aufheben.
 
== Web-Interface  ==
 
=== Download  ===
 
http://michael.kuron-germany.de/dmxc/dmxcontrol_php.tar
 
=== Funktionen  ===


*Kommandozeile  
*Kommandozeile  
Zeile 117: Zeile 33:
*DIP-Rechner
*DIP-Rechner


=== Screenshots  ===
= Screenshots  =


[[Image:Iphone kommandozeile.jpg]]  
[[Image:Iphone kommandozeile.jpg]]  


=== Browser-Kompatibilität  ===
= Browser-Kompatibilität  =


Das Web-Interface wurde (in standardkonformem Code) für Firefox 2, Firefox 3, Safari 3 und MobileSafari (iPhone OS 2.0) entwickelt. In jedem anderen standardkonformen Browser sollte das Web-Interface daher auch problemlos funktionieren. Besonders ältere Internet Explorer-Versionen sind daher nicht damit kompatibel. Eine Optimierung auf diese älteren Browser ist nicht geplant - es handelt sich hier bei um Bugs in den Browsern und nicht im Web-Interface, wodurch eine Anpassung des Codes an ebendiese Bugs sehr zeitaufwendig ist.  
Das Web-Interface wurde (in standardkonformem Code) für Firefox 2, Firefox 3, Safari 3 und MobileSafari (iPhone OS 2.0) entwickelt. In jedem anderen standardkonformen Browser sollte das Web-Interface daher auch problemlos funktionieren. Besonders ältere Internet Explorer-Versionen sind daher nicht damit kompatibel. Eine Optimierung auf diese älteren Browser ist nicht geplant - es handelt sich hier bei um Bugs in den Browsern und nicht im Web-Interface, wodurch eine Anpassung des Codes an ebendiese Bugs sehr zeitaufwendig ist.  
Zeile 186: Zeile 102:
|}
|}


=== Installation  ===
= Installation  =


#dmxcontrol_php.tar auf den Webserver entpacken.  
#dmxcontrol_php.tar auf den Webserver entpacken.  
#In der Datei ./config.inc.php die Adresse zum DMXControl-Computer (i.d.R. 127.0.0.1) angeben.  
#In der Datei ./config.inc.php die Adresse zum DMXControl-Computer (i.d.R. 127.0.0.1) angeben.  
#Die Datei dom-drag.js von http://www.dynamicdrive.com/dynamicindex11/domdrag/dom-drag.js herunterladen und nach ./Ger=ae=testeuerung kopieren.
#Die Datei dom-drag.js von http://www.dynamicdrive.com/dynamicindex11/domdrag/index.htm (Step2) herunterladen und nach ./Ger=ae=testeuerung kopieren.


=== Changelog  ===
= Changelog  =


==== Version 1.0  ====
== Version 1.0  ==


*Erste Version
*Erste Version


==== Version 1.1 (30.08.2008)  ====
== Version 1.1 (30.08.2008)  ==


*Anpassungen an DMXControl 2.10 RC1  
*Anpassungen an DMXControl 2.10 RC1  
*enthält neue Version 1.1 der [[#Changelog|PHP-Klasse]], dadurch viel schneller  
*enthält neue Version 1.1 der [[PHP-Klasse#Changelog|PHP-Klasse]], dadurch viel schneller  
*StartAddress war in früheren Versionen mal mit nur einem d geschrieben - jetzt ist es korrekt, also musste ich auch das Web-Interface anpassen  
*StartAddress war in früheren Versionen mal mit nur einem d geschrieben - jetzt ist es korrekt, also musste ich auch das Web-Interface anpassen  
*unnötige htmlentities()-Aufrufe entfernt  
*unnötige htmlentities()-Aufrufe entfernt  
*Drag-Felder in der Gerätesteuerung senden jetzt während dem Draggen alle 100ms ihren Wert an DMXControl und nicht mehr erst nach dem Loslassen
*Drag-Felder in der Gerätesteuerung senden jetzt während dem Draggen alle 100ms ihren Wert an DMXControl und nicht mehr erst nach dem Loslassen


==== Version 1.1.1 (08.09.2008)  ====
== Version 1.1.1 (08.09.2008)  ==


*enthält neue Version 1.1.1 der [[#Changelog|PHP-Klasse]]
*enthält neue Version 1.1.1 der [[PHP-Klasse#Changelog|PHP-Klasse]]


==== Version 1.1.2 (23.12.2008)  ====
== Version 1.1.2 (23.12.2008)  ==


*Kleine Probleme bei der Handhabung von Javascript-Events auf dem iPhone behoben.
*Kleine Probleme bei der Handhabung von Javascript-Events auf dem iPhone behoben.


=== Known Bugs  ===
= Known Bugs  =


*Beim Draggen in der Gerätesteuerung wird der neue Wert während dem Draggen nur alle 100ms an DMXControl übertragen - weil sonst mehrere Verbindungen zu geöffnet werden, die Terminal-Schnittstelle aber nur eine zulässt. (Beim Loslassen wird hingegen der Wert sofort übertragen.)  
*Beim Draggen in der Gerätesteuerung wird der neue Wert während dem Draggen nur alle 100ms an DMXControl übertragen - weil sonst mehrere Verbindungen zu geöffnet werden, die Terminal-Schnittstelle aber nur eine zulässt. (Beim Loslassen wird hingegen der Wert sofort übertragen.)  
Zeile 222: Zeile 138:
**Die Adressleiste wird nicht ausgeblendet
**Die Adressleiste wird nicht ausgeblendet


Weitere Bugs siehe [[#Known_Bugs|PHP-Klasse]].
Weitere Bugs siehe [[PHP-Klasse#Known_Bugs|PHP-Klasse]].


==Kommandobuttons==
=Forums-Threads=


==Forums-Threads==
[http://dmxcontrol.de/forum/thread.php?threadid=2181 Web-Interface für DMXC 2.10 (Download)]
[http://dmxcontrol.de/forum/thread.php?threadid=2181 Web-Interface für DMXC 2.10 (Download)]


[http://dmxcontrol.de/forum/thread.php?threadid=2109 (Beta-Forum, Nur für Betatester zugänglich) PHP-Klasse für DMXControl; iPhone-Kommandobox; vollständiges Web-Interface]
[http://dmxcontrol.de/forum/thread.php?threadid=2109 (Beta-Forum, Nur für Betatester zugänglich) PHP-Klasse für DMXControl; iPhone-Kommandobox; vollständiges Web-Interface]


[[Kategorie: Addon]]
[[Kategorie: Plugins DMXControl 2‏‎]]
[[Kategorie: DMXControl 2]]

Aktuelle Version vom 17. September 2013, 23:08 Uhr

Web-Interface
Entwickler Michael Kuron
Aktuelle Version 1.1.2
Funktioniert mit 2.10
Programmier­sprache php
Download

Beschreibung

Seit Version 2.10 bietet DMXControl eine Terminal-Schnittstelle, über die externe Programme über das Netzwerk auf Funktionen von DMXControl zugreifen können.

Für den Zugriff auf die Terminal-Schnittstelle wurde von Michael Kuron eine PHP-Klasse erstellt, die die Kommunikation und den Aufruf der Befehle abwickelt.

Auf Basis dieser PHP-Klasse wurde von Michael Kuron ein Web-Interface entwickelt, das sich an den Funktionen der PDA-Steuerung orientiert. Der User Weissbier entwickelt momentan, ebenfalls auf Basis dieser PHP-Klasse, eine Erweiterung des Web-Interfaces zur Benutzung von Kommandobuttons.

Funktionen

  • Kommandozeile
  • Gerätesteuerung
  • Befehle
  • Kanalübersicht
  • DIP-Rechner

Screenshots

Iphone kommandozeile.jpg

Browser-Kompatibilität

Das Web-Interface wurde (in standardkonformem Code) für Firefox 2, Firefox 3, Safari 3 und MobileSafari (iPhone OS 2.0) entwickelt. In jedem anderen standardkonformen Browser sollte das Web-Interface daher auch problemlos funktionieren. Besonders ältere Internet Explorer-Versionen sind daher nicht damit kompatibel. Eine Optimierung auf diese älteren Browser ist nicht geplant - es handelt sich hier bei um Bugs in den Browsern und nicht im Web-Interface, wodurch eine Anpassung des Codes an ebendiese Bugs sehr zeitaufwendig ist.

Getfirefox.gif Getsafari.gif

Browser Kompatibilität
Firefox 2 ++
Firefox 3 ++
Internet Explorer 6 +
Internet Explorer 7 +
Internet Explorer 8 +
Internet Explorer Mobile (Windows Mobile 5) --
Opera 9.5 +
Opera Mobile 9.5 +
Safari 2 +
Safari 3 ++
Safari Mobile (iPhone 2.0) ++

Legende

++ sehr gut, weil für diesen Browser optimiert
+ gut
0 ungetestet
- schlecht
-- unbenutzbar

Installation

  1. dmxcontrol_php.tar auf den Webserver entpacken.
  2. In der Datei ./config.inc.php die Adresse zum DMXControl-Computer (i.d.R. 127.0.0.1) angeben.
  3. Die Datei dom-drag.js von http://www.dynamicdrive.com/dynamicindex11/domdrag/index.htm (Step2) herunterladen und nach ./Ger=ae=testeuerung kopieren.

Changelog

Version 1.0

  • Erste Version

Version 1.1 (30.08.2008)

  • Anpassungen an DMXControl 2.10 RC1
  • enthält neue Version 1.1 der PHP-Klasse, dadurch viel schneller
  • StartAddress war in früheren Versionen mal mit nur einem d geschrieben - jetzt ist es korrekt, also musste ich auch das Web-Interface anpassen
  • unnötige htmlentities()-Aufrufe entfernt
  • Drag-Felder in der Gerätesteuerung senden jetzt während dem Draggen alle 100ms ihren Wert an DMXControl und nicht mehr erst nach dem Loslassen

Version 1.1.1 (08.09.2008)

Version 1.1.2 (23.12.2008)

  • Kleine Probleme bei der Handhabung von Javascript-Events auf dem iPhone behoben.

Known Bugs

  • Beim Draggen in der Gerätesteuerung wird der neue Wert während dem Draggen nur alle 100ms an DMXControl übertragen - weil sonst mehrere Verbindungen zu geöffnet werden, die Terminal-Schnittstelle aber nur eine zulässt. (Beim Loslassen wird hingegen der Wert sofort übertragen.)
  • Auf dem iPhone:
    • Es kann in der Gerätesteuerung nicht gedraggt werden - dies ist aber ein Bug von MobileSafari (das onMouseDown-Event wird erst nach dem onMousemove-Event ausgelöst) - stattdessen muss man an die Zielposition klicken
    • Es wird in den Feldern, in denen nur Zahlen eingegeben werden dürfen, nicht die Zifferntastatur angezeigt - diesen Bug hat Apple mit der Firmware 2.0 eingeführt (bzw. das Feature gestrichen - in der 1.x ging es nämlich, jetzt taucht es nicht mal mehr in der Dokumentation auf)
    • Die Adressleiste wird nicht ausgeblendet

Weitere Bugs siehe PHP-Klasse.

Forums-Threads

Web-Interface für DMXC 2.10 (Download)

(Beta-Forum, Nur für Betatester zugänglich) PHP-Klasse für DMXControl; iPhone-Kommandobox; vollständiges Web-Interface