Universelles Protokoll zur Beameransteuerung - PJLINK

Hallo,
ich habe mich jetzt schon etwas länger mit der Möglichkeit universeller Ansteuerung für Beamer beschäftigt. Viele Beamer unterstützen PJLINK. Darüber ist sowohl eine Steuerung als auch Statusabfrage möglich.

Unter folgendem Link findet man die Funktionsweise des Protokolls:

Ich habe es jetzt via ClientSocket probiert mit einem _SendText, jedoch reagiert der Projektor scheinbar nicht. Bin mir auch nicht sicher ob man das lieber via php lösen sollte, jedoch läuft das ja eigentlich über TCP wenn ich das richtig verstehe. Ich hatte es schonmal über rs232 laufen, jedoch wäre eine Netzwerklösung wesentlich schöner.

Vielleicht könnt ihr mir ja ein bischen auf die Sprünge helfen?!

PS: Es gibt ein Programm welches PJLINK auf Midi verarbeitet. Eine Midiintegration von IPS ist mir allerdings garnicht bekannt.

Wäre euch sehr dankbar für Hilfestellungen.

Wir haben das bei einem Kunden mal genutzt. Im Prinzip geht das so:

CSCK_SendText(46203, "%1POWR 1".CHR(0xD));   // ON

paresy

Vielen Dank für die Rückmeldung. Ich habe es fast genauso (nur ohne <.CHR(0xD)>) probiert, allerdings funktioniert weder command noch response.

Für den Projektor habe ich ein Client Socket angelegt mit dem entsprechendem Port 1024 (kann man auf dem Webinterface auch verändern). Dieser wird auch erfolgreich geöffnet. Wenn ich dann den Befehl ausführe kommt auch kein Fehler sondern es gibt einfach nur keine Reaktion.

PJLINK scheint aber zu funktionieren, da ich mit der App ProjectorRemote (HalfdanJ | Projector MIDI Remote) den Beamer ein und ausschalten kann.

Könnte mir bitte jemand auf die Sprünge helfen?

Gesendet von iPhone mit Tapatalk

Hast du evtl. den PJLink Zugang per Kennwort geschützt?

paresy

Nein leider nicht. Über das Programm (diese MIDI Bridge) lässt er sich ja ansprechen. Das heißt ohne Passwort reagiert der Beamer auf das PJLINK Signal. Würde es aber gerne via IPSymcon ansprechen und nicht noch eine externe Software zwischen hauen, zumal ja Midi dann auch nicht implementiert ist.

In diesem Dokument ist die Funktion des Protokolls beschrieben. Ich komme leider echt nicht weiter wäre echt für jeden Tipp dankbar.

Hi!

Ganz so einfach, wie paresy geschrieben hat, ist es nicht. Aber schwer ist es auch nicht.

In verständlich geschrieben läuft es quasi so ab > IPS schickt ein „Hallo“ an den Beamer mit PJLink, dieser antwortet mit einem bestimmten Code. Diesen Code, zusammen mit einem evtl. gesetzten Passwort und dem eigentlichen Befehl steckt man in MD5 und schickt das zusammen an den Beamer. Der antwortet danach mit „OK“ oder schickt die Antworten zu einer Abfrage und die Verbindung wird wieder geschlossen.

Auf GitHub gibt es dazu einige kompliziert geschrieben Beispiele, aber für eine Anregung reicht es :wink:

Vor kurzem habe ich auch für jemanden ein PJLink (Control) IPS-Modul geschrieben und es mit in meine Sammlung aufgenommen :wink:

Grüße,
Chris

Hello,

A PJLink Class1/Class2 open source pure PHP class implementation is available here: http://syscoal.users.phpclasses.org/package/10284-PHP-Control-data-projectors-via-socket-connections.html

A GitHub link is also available: https://github.com/multiOTP/pjlink

Best regards,

Andre

Hi,

hast Du das inzwischen ans Laufen bekommen? Wenn nicht, würde ich mir das mal ansehen (habe einen EH-TW650, der müsste daseigentlich auch können) und ggfs. ein Symcon Modul für PJLINK schreiben. Ich habe schon eines für einen JVC Beamer geschrieben, das braucht aber scheinbar niemand, daher mache ich mir die Arbeit für ein neues Modul, wenn es außer mir noch jemand braucht… :slight_smile:

VG
Bernd

Du kannst mal @Bayaro anschreiben. Soweit ich weiß, hat er auf seiner Homepage bereits ein fertiges Modul, welches er auch demnächst in den Store stellen wollte :smiley:

paresy

Gut zu wissen, dann muss ich mir die Arbeit nicht machen… :slight_smile:

https://www.bayaro.net/pjlink/

Oh das ist aber schon echt lange her…das war die Lösung…Ich hoffe es ist verständlich :upside_down_face:
Hier die Struktur:

Anfrage Skript

<? CSCK_SendText(17889, "%1POWR ?".CHR(0x0D)); ?>

Auswertung

<? if($_IPS['VALUE'] == "%1POWR=0".chr(0x0d)) SetValue(22402, 0); else if($_IPS['VALUE'] == "%1POWR=1".chr(0x0d)) SetValue(22402, 1); else if($_IPS['VALUE'] == "%1POWR=2".chr(0x0d)) SetValue(22402, 2); ?>

Ansteuerung

<? if (GetValue(50203) == true) { CSCK_SendText(17889, "%1POWR 1".CHR(0x0D)); // ON } if (GetValue(50203) == false) { CSCK_SendText(17889, "%1POWR 0".CHR(0x0D)); // ON } ?>

Das sehe ich mir mal an. Tatsächlich reicht es mir, wenn ich den Beamer automatisch ausschalten kann, da ich im Standby gar keine Netzwerk Connectivity haben will.

Der Plan ist, den Beamer über „Alles aus“ o.ä. erst über PJLINK auszuschalten und dann ein paar Minuten später (Nachlauf Kühlung) den Strom abzustellen. An geht er dann automatisch, wenn ich wieder Strom auf den Anschluss gebe.

Ich steuere meinen Beamer (PJLink Class 2) zur Zeit über Skripte an bzw. frage den Status ab.
Jetzt ist mir nur noch nicht klar ob ich eigentlich immer eine Anfrage senden muss? Im Beamer kann ich im Menü selber PJLink Nachricht einschalten, was ja zur Nutzung der PJLink Benachrichtigungsfunktion dient. Dort kann ich die IP Adresse von IP-Symcon angeben.
Jetzt stellt sich mir die Frage was brauche ich auf Seite von IP-Symcon um die Benachrichtigung entgegen zu nehmen und was für einen Port nutzte ich da? Ist hier ein Server Socket oder ein UDP Socket zu wählen? Welchen Port muss ich da einstellen, im Beamer kann ich da nichts angeben, ist das dann automatisch 4352?
Hat jemand eine Erfahrung wann der Beamer dann etwas sendet bzw. hat jemand das schon passend mit einem Socket zum empfangen der Benachrichtungen in IP-Symcon konfiguriert?

Hallo Fonzo,
habe jetzt auch einen Beamer mit PJLink Class 2.
Kannst du evtl. mal ein Beispiel-Script posten, ich möchte das Rad nicht neu erfinden.
Danke, Peter

Hallo,

so, habe nun meinen Beamer mit PJLink eingebunden:

  1. Client-socket angelegt mit Beamer-IP und Port 4352.
  2. Registervariable angelegt, die auf Auswertungs-PGM zeigt
  3. Auswertungsprogramm wertet die Rückmeldungen des Beamers entsprechend aus und füllt Variablen wie Lampenzeit, Power on/off usw.
  4. PJLink function angelegt. Hier wird ein array mit den auszuführenden Befehlen übergeben. Die function öffnet den socket, führt die Befehle aus und schliesst den Socket.

Wenn jemand Bedarf hat, kann ich gerne das bisher vorhandene posten.

Grüße, Peter