Forum: PC-Programmierung Epson Projektor 4750 per Kommandozeile steuern


von Tom (thricuni)


Lesenswert?

Hallo zusammen,
ihr hier seid so ziemlich meine letzte Hoffnung.
Problem kurz beschrieben: Ich habe einen Epson Projektor 4750w und 
möchte mit einem ElgatoSteamDeck eine "kleine" Mediensteuerung bauen: 
Sprich bei Tastendruck soll der Beamer aus dem Mute-Modus gehen und die 
Leistung der Lampe auf 100% gehen. Und das ganze soll eben per 
Kommandozeile passieren, damit man es in die ElgatoSoftware einbinden 
kann.
Nun habe ich die Anleitung schon auf und ab gelesen - und auch das Netz 
durchforscht - leider auch ohne Erfolg. Ja, völlig verrückt: Ich habe 
auch ChatGPT gefragt, aber das weiß nur was die EpsonDoku weiß und das 
geht nicht.
Wie ist mein Stand: Mit YAT kann ich den Projekor über das ESC/VP.net 
einwandfrei ansprechen und er macht was er soll, aber eben nur aus dem 
GUI des YAT. Aber es funktioniert wirklich nur YAT. Selbst meine 
sonstige Allzweckwaffe Putty versagt an der Stelle. Und auch das 
klassische Telnet aus der CMD bekommt keine Verbindung hin. Und ich 
denke, dass könnte das Problem sein. Ich habe aber im YAT schon 
geschaut, ob da besondere Einstellungen sind. Nein, steht alles einfach 
auf Standard. Nichts gesondert in der Verbindung angehakt.
Hat jmd mit der Problematik schon Berührung gehabt und kann mir 
weiterhelfen?
Wäre echt eine feine Sache. Ich weiß auch, dass die Beschreibung nicht 
erschöpfend ist. Also löchert mich bitte damit, was ihr wissen müsst um 
die Richtung zu finden!!
Sonst mal im Voraus herzlichen Dank.

von Εrnst B. (ernst)


Lesenswert?

Einfach mal mitloggen, was die Software so anders macht?

LA am RS232, Wireshark für's Netzwerk oder USB?

von Christoph db1uq K. (christoph_kessler)


Angehängte Dateien:

Lesenswert?

Die Kurzanleitung
https://download.epson-europe.com/pub/download/3779/epson377999eu.pdf

Hier gibt es einen  "ESC/VP21 Command User’s Guide (vJ)", als 
Excel-Tabelle daraus wird als PDF gedruckt 15MByte:
https://www.epson.de/de_DE/support/sc/epson-eb-4750w/s/s1208#manuals

Aber man kann die Zeile, die als einziges "4750W" enthält, mit 
Strg-Klick auf die zutreffenden Teile reduzieren, hier in ein PDF 
gedruckt 12 Seiten.
Steht darin nicht genug?

https://support.atlona.com/hc/en-us/articles/360048888054-IP-Control-of-Epson-Projectors
eine Anleitung zu dem Protokoll

: Bearbeitet durch User
von Tom (thricuni)


Lesenswert?

Hallo Christoph,
zunächst vielen Dank für die Infos.
Allerdings ist jetzt nicht wirklich was neues dabei.
Wie gesagt, die Befehle kenne ich und bekomme die auch mit YAT über das 
GUI an den Projektor. Nur per Kommandozeile habe ich keinen Erfolg. Ich 
hatte die Erwartung per Telnet auf den Projektor zu kommen (mit Port 
3629), aber bis jetzt keinen Erfolg. Wenn du in die Richtung noch eine 
Idee hättest?

von Εrnst B. (ernst)


Lesenswert?

Tom schrieb:
> Ich hatte die Erwartung per Telnet auf den Projektor zu kommen (mit Port 3629)

Garkein Verbindungsaufbau oder sofort wieder disconnect?

Telnet ist kein reines TCP, da gibt's auch ein paar Steuer-Codes. Evtl. 
stört sich der Projektor daran und schmeißt dich gleich wieder raus?

Außerdem: Wie willst du per Telnet Binärdaten "eintippen"?

Wenn in der Anleitung "ESC/VP.net\x10\x03..." steht, darf da kein "\" 
und kein "x" über die Leitung gehen, sondern exakt die Bytes 45 53 43 2F 
56 50 2E 6E 65 74 10 03 ...

von Harald K. (kirnbichler)


Lesenswert?

Erzeuge Dir mit einem Hexeditor Dateien, in denen die nötigen Binärcodes 
drinstehen.

Die kannst Du dann mit cUrl an Deinen Projektor übertragen, das müsste 
so gehen:

1
curl -T datei.bin telnet://12.34.56.78:3629


12.34.56.78 ist die IP-Adresse Deines Projektors, 3629 ist die 
Portnummer, die Du weiter oben genannt hast.

von Εrnst B. (ernst)


Lesenswert?

Harald K. schrieb:
> Die kannst Du dann mit cUrl

Beachten: Das "echte" curl.exe verwenden, nicht das unter Windows 
mitgelieferte. Das ist in der Windows-(Power-)Shell nur ein Alias auf 
Microsoft.PowerShell.Utility.Invoke-WebRequest, welches den Namen 
entsprechend nur "WebRequests" macht.

von Tom (thricuni)


Lesenswert?

So - ich bin jetzt mal zu dem System gefahren und werde die Tipps 
testen.
@Harlad: Hast du für die "echte" curl.exe eine Bezugsquelle?

von Harald K. (kirnbichler)


Lesenswert?

Εrnst B. schrieb:
> Das ist in der Windows-(Power-)Shell

Die muss man nicht benutzen. Aus der richtigen Kommandozeile aufgerufen 
meldet sich ein richtiges curl, nämlich das  hier:
1
c:\>curl -V
2
curl 8.0.1 (Windows) libcurl/8.0.1 Schannel WinIDN
3
Release-Date: 2023-03-20
4
Protocols: dict file ftp ftps http https imap imaps pop3 pop3s smtp smtps telnet tftp
5
Features: AsynchDNS HSTS HTTPS-proxy IDN IPv6 Kerberos Largefile NTLM SPNEGO SSL SSPI threadsafe Unicode UnixSockets


Das Original für alle möglichen Betriebssysteme gibts hier:

https://curl.se/

von Christoph db1uq K. (christoph_kessler)


Lesenswert?


von Tom (thricuni)


Lesenswert?

okay, dafür schon mal Danke.
Nun hätte ich noch die Frage, wie ich die BIN-Datei erzeuge?

von Harald K. (kirnbichler)


Angehängte Dateien:

Lesenswert?

Mit einem Hexeditor?

Heute gibt es ja jeden Scheiß online im Internet:

https://tomeko.net/online_tools/hex_to_file.php?lang=en

Dort z.B. "deadface" eingetippt, und die beiliegende Datei fällt raus.

von Tom (thricuni)


Lesenswert?

nur ist es richtig, dass danach immer noch per editor der text drin 
steht?
hex für aufruf ist ja:
4553432F56502E6E6574100300000000
und für einschalten:
505752204F4E

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Kann man "telnet" auch mit Filezilla übertragen? Das habe ich früher 
benutzt um Dateien in unseren Messgeräten in den Rechner zu holen und 
umgekehrt. Aber ich meine, das ist eine Benutzeroberfläche für 
ftp-Transfers. ftp ist in Firefox mittlerweile abgeschafft, war 
anscheinend zu unsicher geworden.

von Εrnst B. (ernst)


Lesenswert?

Ein weiteres Problem könnte sein, dass das Protokoll auch bestimmte 
Timings einhalten muss.

Zumindest auf der einen Seite, die Christoph oben verlinkt hat, ließt 
sich das so als müsste man zwischen dem, ich nenn's mal Login, 
"ESC/VP.net...." und dem danach folgendem Kommando eine kurze Pause 
einlegen...

von Tom (thricuni)


Lesenswert?

Genau, dass mit der "Pause" habe ich gerade nochmal getestet - sogar ehe 
ich den Beitrag gelesen habe.
Also wie: In dem YAT habe ich mir Schaltflächen angelegt. Ich habe 
"Aufruf" genannt, das ESC/VP.net - und dann eben die einzelnen Befehle, 
on, off, mute on, mute off, hell und dunktel. Für eine gewisse Zeit 
behält er sich auch den "Aufruf" und man kann die einzelnen Befehle 
aufrufen.
Sprich zwischen dem Anklicken ist eine natürliche Pause.
Dann habe ich einfach mal noch eine Schaltfläche angelegt, wo ich stur 
die beiden Befehle für "Aufruf" und "Power On" hintereinander 
geschrieben habe. Damit kann er dann übers YAT nichts anfangen.
Ich habe dann versucht eine BIN für den Aufruf zu machen und eine für 
das PowerOn - und die hintereinader aufzurufen. Funktioniert auch nicht.
Allerdings könnte man denken, dass der Aufruf an sich funktioniert.
Ich kann morgen nochmal einen Screenshot machen wie es mit dem curl 
aussieht.
Aber wie ich die "Pause" mit Hex organisieren soll ... da bin ich dann 
doch raus.
Ich frag mich auch, ob ich mich so blöde anstelle, oder es so wenig 
genutzt wird oder wo der Haken ist.

von Tom (thricuni)


Lesenswert?

Ernst hatte noch gefragt, wie er sich verhält, wenn ich mich versuche 
per Telnet zu verbinden: Es blink der Cursor am leeren Fenster des CMD 
mit Titel Telnet - und sobald ich eine Taste drücke um etwas einzugeben 
fliege ich raus.
Ich dachte eben das der Ansatz mit dem Telnet noch das einfachste sein 
könnte - über eine Batchdatei die einzelnen Befehle abschicken, dann 
wäre die "kleine Pause" auch geklärt ....

von Εrnst B. (ernst)


Lesenswert?

Tom schrieb:
> Ich frag mich auch, ob ich mich so blöde anstelle, oder es so wenig
> genutzt wird oder wo der Haken ist.

Der Haken ist: telnet, curl und co sind zwar ganz nett um mal schnell 
was zu testen, aber eben kein Ersatz für ein richtiges Programm, was das 
ESC/xyz-Protokol implementiert.

Wenn du dich mit solchen Tools durchhangeln willst: Schau nach ob dein 
Projektor auch das Session-Lose Protokoll über UDP implementiert hat... 
da könnte es reichen für alle nötigen Befehle passende Binärdateien 
vorzubereiten und diese per netcat (oder Windows-Like in der Powershell 
per system.Net.Sockets.Udpclient) zu senden.

Ansonsten: Programmier dir halt einen passenden Fünfzeiler. Notfalls 
auch in der Powershell, da geht auch TCP.

von Tom (thricuni)


Lesenswert?

Wenn man wüsste was man in den fünf Zeilen schreiben muss wäre das 
sicherlich ganz einfach 😃
Hatte es auch schon mal per Python versucht. Aber das wurde auch nichts.
Da fehlt mir ehrlicherweise dann doch etwas der Ansatz

von Εrnst B. (ernst)


Lesenswert?

Tom schrieb:
> und sobald ich eine Taste drücke um etwas einzugeben
> fliege ich raus.

Die erste Taste muss ein "E" sein, die zweite ein "S" usw. und 
spätestens beim Suchen der Taste, die ein 0x00 sendet, bist du raus...

Wenn du auch beim "E" rausfliegst: Evtl. zu langsam, evtl. versucht dein 
Telnet-Client (telnet ≠ TCP) per diversen IAC DO/DONT usw. Parameter 
auszuhandeln.

von Tom (thricuni)


Lesenswert?

> Ansonsten: Programmier dir halt einen passenden Fünfzeiler. Notfalls
> auch in der Powershell, da geht auch TCP.
Vielleicht hat ja jemand einen Ansatz dafür

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.