PJLink — ReadMe
ÜBERSICHT — FREISCHALTUNG — SCREENSHOTS
1. Funktionsumfang
Mit diesem Modul kann man Geräte, welche mit PJLink kompatibel sind, steuern und abfragen.
Außerdem kann man in einem beliebigen Intervall den Status (Device-Status/Input/Lampenstunden/Errors/…)
vom Gerät abfragen und diesen in die zugehörigen Variablen schreiben lassen. Alternativ kann
man sich natürlich jederzeit eigene Skripte schreiben und auf die in Punkt 4 aufgelisteten
Funktionen zurückgreifen, um z.B. ein Gerät durch Skriptstart ein-/ausschalten zu lassen.
Leider gibt es nicht sooo tolle Infos zu PJLink und das meiste nur auf Japanisch. Auch kann ich selbst
nicht testen — mangels passender Hardware. Aber die wichtigsten Befehle habe ich direkt eingebaut und
für alles weitere könnt ihr einfach die Funktion "SendCustomCommand" verwenden.
In der Modul-Instanz können die folgenden Einstellungen vorgenommen werden:
- IP Adresse vom Gerät
- Port (default ist 4352)
- Passwort (wenn der PJLink "Zugang" mit einem Passwort geschützt ist)
- Mapping der Inputs (dies kann sich von Gerät zu Gerät unterscheiden — einfach ausprobieren)
- Intervall zum Aktualisieren der Daten (0 = keine automatische Aktualisierung)
Folgende Möglichkeiten stehen über dieses Modul zur Verfügung:
- Abfrage der verfügbaren Inputs
- Abfrage des aktuell aktivierten Input
- Gerät auf einen bestimmten Input schalten
- Power/Device-Status vom Gerät abfragen
- Gerät einschalten
- Gerät ausschalten
- Lampenlaufzeit in Stunden (bei Projektoren)
- Netzwerkname vom Gerät abfragen
- Hersteller vom Gerät abfragen
- Modellbezeichnung vom Gerät abfragen
- Error-Status abfragen
- Custom Commands an das Gerät schicken
Wenn ihr die Inputs verwenden wollt, dann solltet ihr als erstes folgendes Skript ausführen:
$InstanzID = 12345; // Hier die ID der PJLink-Modul-Instanz eintragen
$result = PJLink_Control($InstanzID, "ShowInputs");
print_r($result);
…und danach dann in der Modul-Instanz die Zuweisung vornehmen. Diese sind je nach Gerät etwas
unterschiedlich, deshalb habe ich eingetragen was mir aktuell bekannt ist, aber es für jeden einfach
anpassbar gemacht. Am einfachsten kann der Input ermittelt werden, indem man am Gerät einen Input
aktiviert und dann mit "ShowInput" sich die Nummer des Inputs anzeigen lässt. Am Ende die Mappings
in der Modul-Instanz anpassen und fertig.
Hinweis — 11 bis 19 sind analoge Signale, 21 bis 29 sind composite/component Signale, 31 bis 39
sind digitale Signale, 41 bis 49 sind Speichermedien, 51 bis 59 sind Netwerksignale
2. Systemanforderungen
- IP-Symcon ab Version 4.x
3. Installation
Über die Kern-Instanz "Module Control" folgende URL hinzufügen:
https://GITLAB-BENUTZERNAME:GITLAB-PASSWORT@gitlab.com/BY-IPS-Module/PJLink.git
Die neue Instanz findet ihr dort, wo ihr sie angelegt habt.
4. Befehlsreferenz
PJLink_Update(int $InstanzID);
Aktualisiert die Werte (Input, Device-Status, Lampenstunden, Error-Status) in den Variablen.
$result = PJLink_SetInput1(int $InstanzID, int $InputNr);
Mit dieser Funktion kann das Gerät auf einen bestimmten Input/Eingang geschaltet werden. Will
man z.B. auf "HDMI1" schalten, sendet man "PJLink_SetInput($InstanzID, 32)" an die Modul-Instanz.
Die Nummer hängen davon ab, welche Inputs ihr zur Verfügung habt und welche Nummer diese haben.
Achtung — es gibt den Befehl "%1INPT XX" und den Befehl "%2INPT XX" — da müsst ihr einfach testen.
$result = PJLink_SetInput2(int $InstanzID, int $InputNr);
Mit dieser Funktion kann das Gerät auf einen bestimmten Input/Eingang geschaltet werden. Will
man z.B. auf "HDMI1" schalten, sendet man "PJLink_SetInput($InstanzID, 32)" an die Modul-Instanz.
Die Nummer hängen davon ab, welche Inputs ihr zur Verfügung habt und welche Nummer diese haben.
Achtung — es gibt den Befehl "%1INPT XX" und den Befehl "%2INPT XX" — da müsst ihr einfach testen.
$result = PJLink_Control(int $InstanzID, string $Command);
Schickt den jeweiligen Befehl über PJLink an das Gerät und gibt ein Array mit Informationen zurück.
Bei Werten mit zugehörigen Variablen werden diese auch direkt in die Variablen geschrieben.
Gültige Werte für $Command sind:
- "ShowInputs" >> Listet alle verfügbaren INPUTS auf
- "ShowInput" >> Gibt den aktuell gewählten INPUT aus
- "ShowDeviceStatus" >> Power-Status vom Gerät
- "PowerOff" >> Gerät ausschalten
- "PowerOn" >> Gerät einschalten
- "ShowLampHours" >> Lampenlaufzeit in Stunden
- "ShowNetworkname" >> Netzwerkname vom Gerät
- "ShowManufacturer" >> Hersteller
- "ShowModeltype" >> Modellbezeichnung
- "ShowErrorStats" >> Error Status
$result = PJLink_SendCustomCommand(int $InstanzID, string $CustomCommand);
Mit dieser Funktion könnt ihr alle Befehle an das Gerät senden, die nicht schon fest in diesem
Modul eingebaut sind. Welche Befehle es gibt hängt vom angebundenen Gerät ab. Deshalb habe ich
nur die "üblichen" und wichtigen Befehle fest eingebaut. Alle weiteren Befehle könnt ihr über
diese Funktion absenden.
So könnte man z.B. den Schaltbefehl für den Input "HDMI1" direkt als Befehl an das Gerät schicken:
PJLink_CustomCommand($InstanzID, "%1INPT 32");
Weitere Befehle könnt ihr z.B. hier finden: http://pjlink.jbmia.or.jp/english/dl.html
Alternativ direkt in dieser PDF ab Seite 11: http://pjlink.jbmia.or.jp/data_cl2/PJLink_5‑4.pdf