FHEM Forum

FHEM - Hausautomations-Systeme => Sonstige Systeme => Thema gestartet von: mrpointblue am 04 Januar 2021, 22:34:56

Titel: Acer Beamer via LAN steuern (Typ P5515)
Beitrag von: mrpointblue am 04 Januar 2021, 22:34:56
Hallo Zusammen,
ich stehe vor einem Problem und hoffe ihr könnt mir helfen.

Ich habe einen Beamer erstanden der einen LAN Anschluss hat mit einem WebFrontend.

Leider scheint es so als gäbe es kein Modul was mir helfen kann. Das einzige was ich finden konnte ist das der Baemer an Crestron angeschlossen werden kann. Mir scheint auch als gäbe es die Möglichkeit Telnet zu nutzen, konnte aber nicht verbinden und kenne auch die befehle nicht.

Vielleicht hat jemand ja eine Idee wie man sich mit dem guten Stück connecten kann.

Letztendlich will ich das ganze mit Alexa verbinden um den Beamer ein und auszuschalten.

Ja man kann sich auch eine Logitech Harmony kaufen etc., aber das will ich ja nicht. Möchte das schon gerne in fhem machen.

Anbei noch zwei Screenshots.
Titel: Antw:Acer Beamer via LAN steuern (Typ P5515)
Beitrag von: MadMax-FHEM am 04 Januar 2021, 22:48:39
Die Screenshots sind das "Browserfenster"?

Dann mal mit F12 "mitschneiden" welche http-Requests geschickt werden, wenn du on/off etc. drückst...

Wenn du das rauskriegst, kannst du mal mit dem HTTPMOD-Device anfangen...

Der Harmony Hub lässt sich aber auch in fhem einbinden, dann kannst du auch per fhem steuern ;)

Gruß, Joachim
Titel: Antw:Acer Beamer via LAN steuern (Typ P5515)
Beitrag von: mrpointblue am 04 Januar 2021, 22:54:45
Hi, danke für die schnelle Antwort. Das mitschneiden hat leider nicht funktioniert, er zeigt mir immer nur die IP Adresse. Mehr leider nicht. Oder liegt das an Chrome ?
Titel: Antw:Acer Beamer via LAN steuern (Typ P5515)
Beitrag von: MadMax-FHEM am 04 Januar 2021, 22:59:37
Hast du F12 und dann muss irgendwo "network" (glaube ich).
Da sollten/könnten die http-Requests kommen...

Außer es ist ein "Plugin" was "nur" im Browser läuft, ansonsten aber anderweitig kommuniziert...

Wenn das so ist, dann musst du wohl wireshark (o.ä.) probieren...

Und dann halt nicht HTTPMOD sondern halt selber senden.
Aber wenn bekannt ist was gesendet werden muss, dann kriegt "man" den Rest auch hin... ;)
Wenn es "nur" an/aus sein soll, dann geht das einfach.
Wenn mehr, dann mal überlegen ein Modul zu "basteln"... ;)

Gruß, Joachim
Titel: Antw:Acer Beamer via LAN steuern (Typ P5515)
Beitrag von: Frank_Huber am 04 Januar 2021, 23:27:50
An wäre ja evtl über wol nen Versuch wert?
Falls er das kann.
Titel: Antw:Acer Beamer via LAN steuern (Typ P5515)
Beitrag von: mrpointblue am 04 Januar 2021, 23:48:42
Hi, sieht nach Java aus und da kenn ich mich mal garnicht aus.

Hab mal die Datei angehangen.

control.htm:23


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>

<head>
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
<script LANGUAGE="javascript" SRC="/control.js" TYPE=
"text/javascript">
</script>
<link REL="stylesheet" REV="stylesheet" HREF="/style.css"
      TYPE="text/css" MEDIA="all">
<title></title>
</head>
<body ONLOAD="window_onload()" STYLE=
"background-color:transparent">
<div ID="control" STYLE="">
<table CLASS="block" CELLSPACING="3" CELLPADDING="5">
<tr VALIGN="top">
<td CLASS="area">
<table CELLSPACING="2" CELLPADDING="2">
<tr>
<td><input TYPE="button" CLASS="button2" ID="pwr" ONCLICK=
"request_projector_info(this, 0)" ONMOUSEOVER=
"javascript:this.style.cursor='pointer';" VALUE="Power ON"></td>
<td><input TYPE="button" CLASS="button2" ID="rst" ONCLICK=
"request_projector_info(this, 0)" ONMOUSEOVER=
"javascript:this.style.cursor='pointer';" VALUE="Reset"
       NAME="ctl"></td></tr>
<tr>
<td><input TYPE="button" CLASS="button2" ID="hid" ONCLICK=
"request_projector_info(this, 0)" ONMOUSEOVER=
"javascript:this.style.cursor='pointer';" VALUE="Hide ON"
       NAME="ctl"></td>
<td><input TYPE="button" CLASS="button2" ID="frz" ONCLICK=
"request_projector_info(this, 0)" ONMOUSEOVER=
"javascript:this.style.cursor='pointer';" VALUE="Freeze"
       NAME="ctl"></td></tr>
<tr>
<td><input TYPE="button" CLASS="button2" ID="syc" ONCLICK=
"request_projector_info(this, 0)" ONMOUSEOVER=
"javascript:this.style.cursor='pointer';" VALUE="Resync"
       NAME="ctl"></td>
<td><input TYPE="button" CLASS="button2" ID="srs" ONCLICK=
"request_projector_info(this, 0)" ONMOUSEOVER=
"javascript:this.style.cursor='pointer';" VALUE="Source"
       NAME="ctl"></td></tr>
<tr>
<td><input TYPE="button" CLASS="button2" ID="eco" ONCLICK=
"request_projector_info(this, 0)" ONMOUSEOVER=
"javascript:this.style.cursor='pointer';" VALUE="Eco mode"
       NAME="ctl"></td>
<td><input TYPE="button" CLASS="button2" ID="ref" ONCLICK=
"javascript:window.location.reload()" ONMOUSEOVER=
"javascript:this.style.cursor='pointer';" VALUE="Refresh"
       NAME="ctl"></td></tr></table></td>
<td CLASS="area">
<table CELLSPACING="5">
<tr>
<td>Source</td>
<td><select SIZE="1" ID="src" ONCHANGE=
"request_projector_info(this, 1)" NAME="ctl">
<option VALUE="0" >No Signal</option>
<option VALUE="1" >D-Sub</option>
<option VALUE="2" >Composite</option>
<option VALUE="3" SELECTED>HDMI 1/MHL</option>
<option VALUE="4" >HDMI 2</option></select></td></tr>
<tr>
<td COLSPAN="2" CLASS="catalog2">Image</td></tr>
<tr>
<td>Brightness</td>
<td><input TYPE="button" CLASS="button" ID="brid" VALUE="-"
       ONCLICK="request_projector_info(this, 2)" NAME="ctl">
       <input TYPE="text" CLASS="text" ID="bri" VALUE="50"
       ONCHANGE="" NAME="ctl"> <input TYPE="button" CLASS="button"
       VALUE="+" ID="bria" ONCLICK=
       "request_projector_info(this, 2)" NAME="ctl"></td></tr>
<tr>
<td>Contrast</td>
<td><input TYPE="button" CLASS="button" ID="cond" VALUE="-"
       ONCLICK="request_projector_info(this, 2)" NAME="ctl">
       <input TYPE="text" CLASS="text" ID="con" VALUE="50"
       ONCHANGE="" NAME="ctl"> <input TYPE="button" CLASS="button"
       VALUE="+" ID="cona" ONCLICK=
       "request_projector_info(this, 2)" NAME="ctl"></td></tr>
<tr>
<td>Keystone</td>
<td><input TYPE="button" CLASS="button" ID="vksd" VALUE="-"
       ONCLICK="request_projector_info(this, 2)" NAME="ctl">
       <input TYPE="text" CLASS="text" ID="vks" VALUE="0"
       ONCHANGE="" NAME="ctl"> <input TYPE="button" CLASS="button"
       VALUE="+" ID="vksa" ONCLICK=
       "request_projector_info(this, 2)" NAME="ctl"></td></tr>
<tr>
<td>Gamma</td>
<td><input TYPE="button" CLASS="button" ID="gamd" VALUE="-"
       ONCLICK="request_projector_info(this, 2)" NAME="ctl">
       <input TYPE="text" CLASS="text" ID="gam" VALUE="1.8"
       ONCHANGE="" NAME="ctl"> <input TYPE="button" CLASS="button"
       VALUE="+" ID="gama" ONCLICK=
       "request_projector_info(this, 2)" NAME="ctl"></td></tr>
<tr>
<td>Color Temp</td>
<td><input TYPE="button" CLASS="button" ID="ctpd" VALUE="-"
       ONCLICK="request_projector_info(this, 2)" NAME="ctl">
       <input TYPE="text" CLASS="text" ID="ctp" VALUE="CT1"
       ONCHANGE="" NAME="ctl"> <input TYPE="button" CLASS="button"
       VALUE="+" ID="ctpa" ONCLICK=
       "request_projector_info(this, 2)" NAME="ctl"></td></tr>
<tr>
<td>Display Mode</td>
<td><select ID="mod" ONCHANGE="request_projector_info(this, 1)"
NAME="ctl">
<option VALUE="0" SELECTED>Bright</option>
<option VALUE="1" >Presentation</option>
<option VALUE="2" >Standard</option>
<option VALUE="3" >Video</option>
<option VALUE="5" >
User</option></select></td></tr></table></td>
<td CLASS="area">
<table CELLSPACING="2">
<tr>
<td COLSPAN="2" CLASS="catalog2">Audio</td></tr>
<tr>
<td>Volume</td>
<td><input TYPE="button" CLASS="button" ID="vold" VALUE="-"
       ONCLICK="request_projector_info(this, 2)" NAME="ctl">
       <input TYPE="text" CLASS="text" ID="vol" VALUE="0"
       ONCHANGE="" NAME="ctl"> <input TYPE="button" CLASS="button"
       ID="vola" VALUE="+" ONCLICK=
       "request_projector_info(this, 2)" NAME="ctl"></td></tr>
<tr>
<td COLSPAN="2" CLASS="catalog2">Managment</td></tr>
<tr>
<td>Aspect Ratio</td>
<td><select ID="apr" ONCHANGE="request_projector_info(this, 1)"
NAME="ctl">
<option VALUE="0" SELECTED>Auto</option>
<option VALUE="2" >4:3</option>
<option VALUE="3" >16:9</option>
<option VALUE="4" >L.Box</option></select> </td></tr>
<tr>
<td>Digital Zoom</td>
<td><input TYPE="text" CLASS="text" ID="zom" VALUE="1.0x"
ONCHANGE="" NAME="ctl"> <input TYPE="button" CLASS="button"
       ID="zoma" VALUE="+" ONCLICK=
       "request_projector_info(this, 2)" NAME="ctl"></td></tr>
<tr>
<td>Projection</td>
<td><select ID="prj" ONCHANGE="request_projector_info(this, 1)"
NAME="ctl">
<option VALUE="0" SELECTED>Front</option>
<option VALUE="1" >
Rear</option></select></td></tr>
<tr>
<td>Startup Screen</td>
<td><select ID="lgo" ONCHANGE="request_projector_info(this, 1)"
NAME="ctl">
<option VALUE="0" SELECTED>acer</option>
<option VALUE="1" >
User</option></select></td></tr></table></td></tr></table></div>
<form><input TYPE="hidden" ID="pwstatus" NAME="pwmode"
       VALUE="0"> <input TYPE="hidden" ID="srcmd" NAME=
       "smode" VALUE="1"> <input TYPE="hidden" ID=
       "freeze" NAME="freeze" VALUE="0"> <input TYPE=
       "hidden" ID="hide" NAME="hide" VALUE="0">
       <input TYPE="hidden" ID="ecomd" NAME="ecomd" VALUE=
       "0"> 
</form>
</body>
</html>
Titel: Antw:Acer Beamer via LAN steuern (Typ P5515)
Beitrag von: amenomade am 05 Januar 2021, 02:35:20
Der postet einfach "pwr=Power ON" an http://192.168.2.19/tgi/control.tgi

Probiere mal
define acer HTTPMOD http://192.168.2.19/tgi/control.tgi 0
attr acer set01Name powerOn
attr acer set01Data pwr=Power ON
attr acer set02Name powerOff
attr acer set02Data pwr=Power OFF
attr acer verbose 5


Mach dann ein "set acer powerOn" und "set acer powerOff" und zeig mal die Log. Es kann sein, dass noch ein Paar Cookies und Header gesetzt werden müssen, und der Port scheint zu wechseln. Oder sind das sockets? Mal sehen.
Titel: Antw:Acer Beamer via LAN steuern (Typ P5515)
Beitrag von: mrpointblue am 05 Januar 2021, 09:10:16
Hi Danke,
da hab ich glatt noch was vergessen.

1. Die Passwort abfrage habe ich vergessen zu erwähnen, die er anfangs immer abfragt.
> Username ist auswählbar und per default immer Administrator.

2. Nach nutzen deines Vorschlags mit HTTPMOD kommt beim setzen von PowerOn die Meldung
"set value is not numeric"
Titel: Antw:Acer Beamer via LAN steuern (Typ P5515)
Beitrag von: amenomade am 05 Januar 2021, 12:22:36
1. => Dann bitte auch die Passwortabfrage in einer .har Log mitloggen (F12 Tool noch VOR dem ersten Aufruf der Seite starten)
Titel: Antw:Acer Beamer via LAN steuern (Typ P5515)
Beitrag von: mrpointblue am 05 Januar 2021, 12:35:49
Hi,  anbei die HAR Datei.
Titel: Antw:Acer Beamer via LAN steuern (Typ P5515)
Beitrag von: amenomade am 07 Januar 2021, 01:38:33
Da fehlt aber die Anmeldung
Titel: Antw:Acer Beamer via LAN steuern (Typ P5515)
Beitrag von: mrpointblue am 07 Januar 2021, 11:55:59
Hi, oh Sorry.
Hab den Log nochmal gemacht.

Hier nun mit Anmeldung.

Titel: Antw:Acer Beamer via LAN steuern (Typ P5515)
Beitrag von: amenomade am 09 Januar 2021, 18:42:09
Das wird schwierig: das POST login.tgi braucht als Data:
Username=1&Response=f2997b9b1e6723477d92120f48d7d5a0
Diese Response wird per javascript (login.js) vorher kalkuliert.

Es wäre interessant zu wissen, ob diese Response immer gleich ist (die scheint abhängig vom Passwort zu sein), wenn Du dich mehrmals nacheinander als admin anmeldest. Wenn ja, könnten wir es "hartkodieren".
Titel: Antw:Acer Beamer via LAN steuern (Typ P5515)
Beitrag von: mrpointblue am 09 Januar 2021, 22:57:36
Hi, super Danke.

Scheint sich bei jeder Anmeldung zu ändern. Ich habs mal geprüft, jetzt lautet der Response


[/size]
8dcccda92dd79c67b06822e57e590dd2
Titel: Antw:Acer Beamer via LAN steuern (Typ P5515)
Beitrag von: amenomade am 10 Januar 2021, 01:46:29
Ja, habe ich danach gesehen: es gibt ein "Challenge", das auch mitkodiert wird. Heisst... die einzige Möglichkeit ist, diese Javascript Funktionen in Perl umzubauen... Mit ein bisschen Glück ist die md5 javascript Funktion 1 zu 1 gleich wie die standard Perl Funktion.
Titel: Antw:Acer Beamer via LAN steuern (Typ P5515)
Beitrag von: amenomade am 11 Januar 2021, 00:14:26
Also... Probiere mal so:

define acer HTTPMOD http://192.168.2.19/home.htm 0

attr acer reAuthRegex TYPE="button" VALUE="Login"
attr acer sid01URL http://192.168.2.19/home.htm
attr acer sid01IdRegex (?s)ID="Challenge" VALUE=.*?"(.*?)">
attr acer sid02URL http://192.168.2.19/tgi/home.tgi
attr acer sid02Data Username=1&Response=%%resp%%

attr acer replacement01Regex %%resp%%
attr acer replacement01Mode expression
attr acer replacement01Value Digest::MD5::md5_hex("adminPASSWORT$sid")

attr acer setURL http://192.168.2.19/tgi/control.tgi
attr acer set01NoArg 1
attr acer set01Name powerOn
attr acer set01Data pwr=Power ON
attr acer set02NoArg 1
attr acer set02Name powerOff
attr acer set02Data pwr=Power OFF

attr acer enableCookies 1
attr acer enableControlSet 1
attr acer verbose 5


PASSWORT in replacement01Value ist natürlich durch dein Passwort zu ersetzen.
Titel: Antw:Acer Beamer via LAN steuern (Typ P5515)
Beitrag von: mrpointblue am 12 Januar 2021, 00:21:18
Hi,
schonmal vielen Dank.

Es kommt zwar was zurück aber scheint nicht ganz zu klappen.

Hier der Eventlog.

2021.01.12 00:18:48 5 : acer: set called with reread
2021.01.12 00:18:48 4 : acer: GetUpdate called (reread)
2021.01.12 00:18:48 5 : acer: AddToQueue adds type update to URL http://192.168.2.19/home.htm, no data, no headers, retry 0, initial queue len: 0
2021.01.12 00:18:48 5 : acer: HandleSendQueue called from AddToSendQueue, qlen = 1
2021.01.12 00:18:48 5 : acer: Replace called for type update, regex (?^:%%resp%%), mode text, value Digest::MD5::md5_hex("admin$sid") input:
2021.01.12 00:18:48 5 : acer: Replace called for type update, regex (?^:%%resp%%), mode text, value Digest::MD5::md5_hex("admin$sid") input:
2021.01.12 00:18:48 5 : acer: Replace called for type update, regex (?^:%%resp%%), mode text, value Digest::MD5::md5_hex("admin$sid") input: http://192.168.2.19/home.htm
2021.01.12 00:18:48 4 : acer: HandleSendQueue sends update with timeout 2 to http://192.168.2.19/home.htm, No Data, No Header
2021-01-12 00:18:48 HTTPMOD acer reread
2021.01.12 00:18:48 5 : acer: ReadCallback called from __ANON__
2021.01.12 00:18:48 4 : acer: Read callback: request type was update retry 0, header: HTTP/1.0 200 OK Connection: close, body length 1340
2021.01.12 00:18:48 5 : acer: Read callback: body <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8"> <script LANGUAGE="javascript" SRC="/home.js" TYPE= "text/javascript"> </script> <link REL="stylesheet" REV="stylesheet" HREF="/style.css" TYPE="text/css" MEDIA="all"> <title></title> </head> <body ONLOAD="window_onload()" STYLE= "background-color:transparent"> <div ID="home" STYLE=""> <div CLASS="block"> <p CLASS="welcome" ALIGN="center">Welcome to acer Projector Web Server</p> <p CLASS="wel_ip" ALIGN="center">IP:<span ID="ipadlb" CLASS= "wel_ip"></span>192.168.2.19</p> <p CLASS="wel_ip" ALIGN="center">MAC:<span ID="macadr" CLASS= "wel_ip"></span>00:60:E9:1B:6B:CA</p> <p CLASS="prompt">Projector Status</p> <table> <tr> <td HEIGHT="25px" CLASS="catalog">Model Name:</td> <td ID="model">P5515</td></tr> <tr> <td HEIGHT="25px" CLASS="catalog">System Status:</td> <td ID="syssta">Standby</td></tr> <tr> <td HEIGHT="25px">Display Source:</td> <td HEIGHT="25px" ID="dissrc">No Signal</td></tr> <tr> <td HEIGHT="25px">Lamp Hours:</td> <td HEIGHT="25px" ID="lamphr">0</td></tr> <tr> <td HEIGHT="25px">Image Mode:</td> <td HEIGHT="25px" ID="dismod">0</td></tr> <tr> <td HEIGHT="25px">Error Status:</td> <td HEIGHT="25px" ID="errsta">Normal</td></tr></table></div> </div> </body> </html>
2021.01.12 00:18:48 4 : acer: BodyDecode found no charset header (bodyDecode was set to auto)
2021.01.12 00:18:48 5 : acer: GetCookies is looking for Cookies
2021.01.12 00:18:48 5 : acer: ExtractSid called, context reading, num 0
2021.01.12 00:18:48 4 : acer: checking for redirects, code=200, ignore=0
2021.01.12 00:18:48 4 : acer: no redirects to handle
2021.01.12 00:18:48 5 : acer: Read callback sets LAST_REQUEST to update
2021.01.12 00:18:48 5 : acer: CheckAuth is checking buffer with ReAuthRegex (?^:TYPE="button" VALUE="Login")
2021.01.12 00:18:48 5 : acer: CheckAuth decided no authentication required
2021.01.12 00:18:48 5 : acer: Read starts parsing response to update with defined readings:
2021.01.12 00:18:48 4 : acer: Read response to update didn't match any Reading
2021.01.12 00:18:48 5 : acer: HandleSendQueue called from ReadCallback, qlen = 0
2021.01.12 00:18:48 5 : acer: HandleSendQueue found no usable entry in queue
Titel: Antw:Acer Beamer via LAN steuern (Typ P5515)
Beitrag von: amenomade am 12 Januar 2021, 01:49:07
Das klappt doch:

Zitat2021.01.12 00:18:48 5 : acer: Read callback: body <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8"> <script LANGUAGE="javascript" SRC="/home.js" TYPE= "text/javascript"> </script> <link REL="stylesheet" REV="stylesheet" HREF="/style.css" TYPE="text/css" MEDIA="all"> <title></title> </head> <body ONLOAD="window_onload()" STYLE= "background-color:transparent"> <div ID="home" STYLE=""> <div CLASS="block"> <p CLASS="welcome" ALIGN="center">Welcome to acer Projector Web Server</p> <p CLASS="wel_ip" ALIGN="center">IP:<span ID="ipadlb" CLASS= "wel_ip"></span>192.168.2.19</p> <p CLASS="wel_ip" ALIGN="center">MAC:<span ID="macadr" CLASS= "wel_ip"></span>00:60:E9:1B:6B:CA</p> <p CLASS="prompt">Projector Status</p> <table> <tr> <td HEIGHT="25px" CLASS="catalog">Model Name:</td> <td ID="model">P5515</td></tr> <tr> <td HEIGHT="25px" CLASS="catalog">System Status:</td> <td ID="syssta">Standby</td></tr> <tr> <td HEIGHT="25px">Display Source:</td> <td HEIGHT="25px" ID="dissrc">No Signal</td></tr> <tr> <td HEIGHT="25px">Lamp Hours:</td> <td HEIGHT="25px" ID="lamphr">0</td></tr> <tr> <td HEIGHT="25px">Image Mode:</td> <td HEIGHT="25px" ID="dismod">0</td></tr> <tr> <td HEIGHT="25px">Error Status:</td> <td HEIGHT="25px" ID="errsta">Normal</td></tr></table></div> </div> </body> </html>

Die Daten sind da.

IP:192.168.2.19
MAC:00:60:E9:1B:6B:CA
Model Name:P5515
System Status:Standby
Display Source:No Signal
Lamp Hours:0
Image Mode:0
Error Status:Normal

Das heisst, Du bist erfolgreich angemeldet. Du musst nur noch die gewünschte Readings mit readingXXName und readingXXRegex oder reading XXXPath extrahieren. Z.B:
attr acer reading01Name Status
attr acer reading01Regex syssta">(.*?)<

attr acer reading02Name ErrStatus
attr acer reading02Regex errsta">(.*?)<


Wie geht jetzt ein "set" Befehl?
Titel: Antw:Acer Beamer via LAN steuern (Typ P5515)
Beitrag von: mrpointblue am 12 Januar 2021, 08:08:37
Hi, ja das klappt schon.
Der ,,Power On" Befehl klappt leider nicht.

Ich weis aber nicht wieso
Titel: Antw:Acer Beamer via LAN steuern (Typ P5515)
Beitrag von: amenomade am 12 Januar 2021, 19:20:15
Zitat von: mrpointblue am 12 Januar 2021, 08:08:37
Hi, ja das klappt schon.
Der ,,Power On" Befehl klappt leider nicht.

Ich weis aber nicht wieso

Zeig mal die Log mit verbose 5 beim set Befehl
Titel: Antw:Acer Beamer via LAN steuern (Typ P5515)
Beitrag von: mrpointblue am 17 Januar 2021, 16:42:53
Hi, hier der Log mit verbose 5

2021-01-17 16:40:28 HTTPMOD acer powerOn
2021.01.17 16:40:29 5 : acer: ReadCallback called from __ANON__
2021.01.17 16:40:29 4 : acer: Read callback: request type was update retry 0, header: HTTP/1.0 200 OK Connection: close, body length 1340
2021.01.17 16:40:29 5 : acer: Read callback: body <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8"> <script LANGUAGE="javascript" SRC="/home.js" TYPE= "text/javascript"> </script> <link REL="stylesheet" REV="stylesheet" HREF="/style.css" TYPE="text/css" MEDIA="all"> <title></title> </head> <body ONLOAD="window_onload()" STYLE= "background-color:transparent"> <div ID="home" STYLE=""> <div CLASS="block"> <p CLASS="welcome" ALIGN="center">Welcome to acer Projector Web Server</p> <p CLASS="wel_ip" ALIGN="center">IP:<span ID="ipadlb" CLASS= "wel_ip"></span>192.168.2.19</p> <p CLASS="wel_ip" ALIGN="center">MAC:<span ID="macadr" CLASS= "wel_ip"></span>00:60:E9:1B:6B:CA</p> <p CLASS="prompt">Projector Status</p> <table> <tr> <td HEIGHT="25px" CLASS="catalog">Model Name:</td> <td ID="model">P5515</td></tr> <tr> <td HEIGHT="25px" CLASS="catalog">System Status:</td> <td ID="syssta">Standby</td></tr> <tr> <td HEIGHT="25px">Display Source:</td> <td HEIGHT="25px" ID="dissrc">No Signal</td></tr> <tr> <td HEIGHT="25px">Lamp Hours:</td> <td HEIGHT="25px" ID="lamphr">0</td></tr> <tr> <td HEIGHT="25px">Image Mode:</td> <td HEIGHT="25px" ID="dismod">0</td></tr> <tr> <td HEIGHT="25px">Error Status:</td> <td HEIGHT="25px" ID="errsta">Normal</td></tr></table></div> </div> </body> </html>
2021.01.17 16:40:29 4 : acer: BodyDecode found no charset header (bodyDecode was set to auto)
2021.01.17 16:40:29 5 : acer: GetCookies is looking for Cookies
2021.01.17 16:40:29 5 : acer: ExtractSid called, context reading, num 0
2021.01.17 16:40:29 4 : acer: checking for redirects, code=200, ignore=0
2021.01.17 16:40:29 4 : acer: no redirects to handle
2021.01.17 16:40:29 5 : acer: Read callback sets LAST_REQUEST to update
2021.01.17 16:40:29 5 : acer: CheckAuth is checking buffer with ReAuthRegex (?^:TYPE="button" VALUE="Login")
2021.01.17 16:40:29 5 : acer: CheckAuth decided no authentication required
2021.01.17 16:40:29 5 : acer: UpdateReadingList created list of reading.* nums to parse during getUpdate as 01 02 03 04 05
2021.01.17 16:40:29 5 : acer: Read starts parsing response to update with defined readings: 01,02,03,04,05
2021.01.17 16:40:29 5 : acer: ExtractReading Status with regex /(?^:syssta">(.*?)<)/...
2021.01.17 16:40:29 5 : acer: ExtractReading for reading01-1 sets Status to Standby
2021.01.17 16:40:29 5 : acer: ExtractReading value as hex is 5374616e646279
2021.01.17 16:40:29 5 : acer: ExtractReading Lamphours with regex /(?^:lamphr">(.*?)<)/...
2021.01.17 16:40:29 5 : acer: ExtractReading for reading02-1 sets Lamphours to 0
2021.01.17 16:40:29 5 : acer: ExtractReading value as hex is 30
2021.01.17 16:40:29 5 : acer: ExtractReading Error Status with regex /(?^:errsta">(.*?)<)/...
2021.01.17 16:40:29 5 : acer: ExtractReading for reading03-1 sets Error Status to Normal
2021.01.17 16:40:29 5 : acer: ExtractReading value as hex is 4e6f726d616c
2021.01.17 16:40:29 5 : acer: ExtractReading MAC Adress with regex /(?^:macadr">(.*?)<)/...
2021.01.17 16:40:29 5 : acer: ExtractReading MAC Adress did not match
2021.01.17 16:40:29 5 : acer: ExtractReading for context reading, num 05 - no individual parse definition
2021.01.17 16:40:29 4 : acer: Read response matched 3, unmatch 2 Reading(s)
2021.01.17 16:40:29 5 : acer: Read response to update matched Status Lamphours Error Status
2021.01.17 16:40:29 5 : acer: Read response to update did not match MAC Adress Model Name
2021-01-17 16:40:29 HTTPMOD acer Status: Standby
2021-01-17 16:40:29 HTTPMOD acer Lamphours: 0
2021-01-17 16:40:29 HTTPMOD acer Error Status: Normal
2021.01.17 16:40:29 5 : acer: HandleSendQueue called from ReadCallback, qlen = 1
2021.01.17 16:40:29 5 : acer: Replace called for type set01, regex (?^:%%resp%%), mode text, value Digest::MD5::md5_hex("admin$sid") input:
2021.01.17 16:40:29 5 : acer: Replace called for type set01, regex (?^:%%resp%%), mode text, value Digest::MD5::md5_hex("admin$sid") input: pwr=Power ON
2021.01.17 16:40:29 5 : acer: Replace called for type set01, regex (?^:%%resp%%), mode text, value Digest::MD5::md5_hex("admin$sid") input: http://192.168.2.19/tgi/control.tgi
2021.01.17 16:40:29 4 : acer: HandleSendQueue sends set01 with timeout 2 to http://192.168.2.19/tgi/control.tgi, data: pwr=Power ON, No Header
2021.01.17 16:40:29 5 : acer: ReadCallback called from __ANON__
2021.01.17 16:40:29 4 : acer: Read callback: request type was set01 retry 0, header: HTTP/1.0 200 OK Connection: close, body length 1340
2021.01.17 16:40:29 5 : acer: Read callback: body <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8"> <script LANGUAGE="javascript" SRC="/home.js" TYPE= "text/javascript"> </script> <link REL="stylesheet" REV="stylesheet" HREF="/style.css" TYPE="text/css" MEDIA="all"> <title></title> </head> <body ONLOAD="window_onload()" STYLE= "background-color:transparent"> <div ID="home" STYLE=""> <div CLASS="block"> <p CLASS="welcome" ALIGN="center">Welcome to acer Projector Web Server</p> <p CLASS="wel_ip" ALIGN="center">IP:<span ID="ipadlb" CLASS= "wel_ip"></span>192.168.2.19</p> <p CLASS="wel_ip" ALIGN="center">MAC:<span ID="macadr" CLASS= "wel_ip"></span>00:60:E9:1B:6B:CA</p> <p CLASS="prompt">Projector Status</p> <table> <tr> <td HEIGHT="25px" CLASS="catalog">Model Name:</td> <td ID="model">P5515</td></tr> <tr> <td HEIGHT="25px" CLASS="catalog">System Status:</td> <td ID="syssta">Standby</td></tr> <tr> <td HEIGHT="25px">Display Source:</td> <td HEIGHT="25px" ID="dissrc">No Signal</td></tr> <tr> <td HEIGHT="25px">Lamp Hours:</td> <td HEIGHT="25px" ID="lamphr">0</td></tr> <tr> <td HEIGHT="25px">Image Mode:</td> <td HEIGHT="25px" ID="dismod">0</td></tr> <tr> <td HEIGHT="25px">Error Status:</td> <td HEIGHT="25px" ID="errsta">Normal</td></tr></table></div> </div> </body> </html>
2021.01.17 16:40:29 4 : acer: BodyDecode found no charset header (bodyDecode was set to auto)
2021.01.17 16:40:29 5 : acer: GetCookies is looking for Cookies
2021.01.17 16:40:29 5 : acer: ExtractSid called, context set, num 01
2021.01.17 16:40:29 4 : acer: checking for redirects, code=200, ignore=0
2021.01.17 16:40:29 4 : acer: no redirects to handle
2021.01.17 16:40:29 5 : acer: Read callback sets LAST_REQUEST to set01
2021.01.17 16:40:29 5 : acer: CheckAuth is checking buffer with ReAuthRegex (?^:TYPE="button" VALUE="Login")
2021.01.17 16:40:29 5 : acer: CheckAuth decided no authentication required
Titel: Antw:Acer Beamer via LAN steuern (Typ P5515)
Beitrag von: amenomade am 17 Januar 2021, 20:29:47
Kannst Du bitte auch ein "list" vom HTTPMOD im jetzigen Stand bitte liefern?

Ich würde ein paar Headers noch setzen, insb:
set01Header01 Referer: http://192.168.2.19/control.htm
Titel: Antw:Acer Beamer via LAN steuern (Typ P5515)
Beitrag von: mrpointblue am 17 Januar 2021, 20:42:35
Hi, den Header hab ich gesetzt. Befehl nimmt er aber nicht.

Was super funktioniert das man die Daten lesen kann, somit klappt das mit dem Passwort.


defmod acer HTTPMOD http://192.168.2.19/home.htm 180
attr acer userattr replacement01Mode:reading,internal,text,expression,key
attr acer DbLogExclude .*
attr acer enableControlSet 1
attr acer enableCookies 1
attr acer reAuthRegex TYPE="button" VALUE="Login"
attr acer reading01Name State
attr acer reading01Regex syssta">(.*?)<
attr acer reading02Name Lamphours
attr acer reading02Regex lamphr">(.*?)<
attr acer reading03Name Error_State
attr acer reading03Regex errsta">(.*?)<
attr acer reading04Name Model_Name
attr acer reading04Regex model">(.*?)<
attr acer replacement01Mode expression
attr acer replacement01Regex %%resp%%
attr acer replacement01Value Digest::MD5::md5_hex("PaSsWoRd$sid")
attr acer room Kino
attr acer set01Data pwr=Power ON
attr acer set01Header01 Referer: http://192.168.2.19/control.htm
attr acer set01Name powerOn
attr acer set01NoArg 1
attr acer set01URL http://192.168.2.19/tgi/control.tgi
attr acer set02Data pwr=Power OFF
attr acer set02Name powerOff
attr acer set02NoArg 1
attr acer sid01IdRegex (?s)ID="Challenge" VALUE=.*?"(.*?)">
attr acer sid02Data Username=1&Response=%%resp%%
attr acer sid02URL http://192.168.2.19/tgi/home.tgi
attr acer sidURL http://192.168.2.19/home.htm
attr acer stateFormat Status:State <br/> Lampenstunden: Lamphours
attr acer verbose 5
attr acer webCmd powerOn:powerOff

setstate acer Status:Standby <br/> Lampenstunden: 0
setstate acer 2021-01-17 20:39:36 Error_State Normal
setstate acer 2021-01-17 20:39:36 Lamphours 0
setstate acer 2021-01-17 20:39:36 Model_Name P5515
setstate acer 2021-01-17 20:39:36 State Standby

Titel: Antw:Acer Beamer via LAN steuern (Typ P5515)
Beitrag von: amenomade am 17 Januar 2021, 23:57:45
Mach mal noch dazu

attr acer  set01Header02 Content-type: application/x-www-form-urlencoded

und wenn dass immer noch nicht reicht, probiere mit
attr acer set01Data pwr=Power%20ON
attr acer set02Data pwr=Power%20OFF
Titel: Antw:Acer Beamer via LAN steuern (Typ P5515)
Beitrag von: mrpointblue am 18 Januar 2021, 16:58:07
Hallo, leider nicht.
Hmm.
Bei dem Set Befehl hab ich beides probiert. Klappt leider nicht.

Im Anhang die HAR wenn ich den Beamer per Dashboard starte und ausschalte.


2021.01.18 16:57:34 5 : acer: set called with powerOn
2021.01.18 16:57:34 5 : acer: set found option powerOn in attribute set01Name
2021.01.18 16:57:34 4 : acer: set will now set powerOn
2021.01.18 16:57:34 5 : acer: AddToQueue adds type set01 to URL http://192.168.2.19/tgi/control.tgi, data pwr=Power ON, header Referer: http://192.168.2.19/control.htm Content-type: application/x-www-form-urlencoded, retry 0, initial queue len: 0
2021.01.18 16:57:34 5 : acer: HandleSendQueue called from AddToSendQueue, qlen = 1
2021.01.18 16:57:34 5 : acer: Replace called for type set01, regex (?^:%%resp%%), mode expression, value Digest::MD5::md5_hex("admin$sid") input: Referer: http://192.168.2.19/control.htm Content-type: application/x-www-form-urlencoded
2021.01.18 16:57:34 5 : acer: Replace called for type set01, regex (?^:%%resp%%), mode expression, value Digest::MD5::md5_hex("admin$sid") input: pwr=Power ON
2021.01.18 16:57:34 5 : acer: Replace called for type set01, regex (?^:%%resp%%), mode expression, value Digest::MD5::md5_hex("admin$sid") input: http://192.168.2.19/tgi/control.tgi
2021.01.18 16:57:34 4 : acer: HandleSendQueue sends set01 with timeout 2 to http://192.168.2.19/tgi/control.tgi, data: pwr=Power ON, header: Referer: http://192.168.2.19/control.htm Content-type: application/x-www-form-urlencoded
2021-01-18 16:57:34 HTTPMOD acer powerOn
2021.01.18 16:57:35 5 : acer: ReadCallback called from __ANON__
2021.01.18 16:57:35 4 : acer: Read callback: request type was set01 retry 0, header: HTTP/1.0 200 OK Connection: close, body length 1340
2021.01.18 16:57:35 5 : acer: Read callback: body <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8"> <script LANGUAGE="javascript" SRC="/home.js" TYPE= "text/javascript"> </script> <link REL="stylesheet" REV="stylesheet" HREF="/style.css" TYPE="text/css" MEDIA="all"> <title></title> </head> <body ONLOAD="window_onload()" STYLE= "background-color:transparent"> <div ID="home" STYLE=""> <div CLASS="block"> <p CLASS="welcome" ALIGN="center">Welcome to acer Projector Web Server</p> <p CLASS="wel_ip" ALIGN="center">IP:<span ID="ipadlb" CLASS= "wel_ip"></span>192.168.2.19</p> <p CLASS="wel_ip" ALIGN="center">MAC:<span ID="macadr" CLASS= "wel_ip"></span>00:60:E9:1B:6B:CA</p> <p CLASS="prompt">Projector Status</p> <table> <tr> <td HEIGHT="25px" CLASS="catalog">Model Name:</td> <td ID="model">P5515</td></tr> <tr> <td HEIGHT="25px" CLASS="catalog">System Status:</td> <td ID="syssta">Standby</td></tr> <tr> <td HEIGHT="25px">Display Source:</td> <td HEIGHT="25px" ID="dissrc">No Signal</td></tr> <tr> <td HEIGHT="25px">Lamp Hours:</td> <td HEIGHT="25px" ID="lamphr">0</td></tr> <tr> <td HEIGHT="25px">Image Mode:</td> <td HEIGHT="25px" ID="dismod">0</td></tr> <tr> <td HEIGHT="25px">Error Status:</td> <td HEIGHT="25px" ID="errsta">Normal</td></tr></table></div> </div> </body> </html>
2021.01.18 16:57:35 4 : acer: BodyDecode found no charset header (bodyDecode was set to auto)
2021.01.18 16:57:35 5 : acer: GetCookies is looking for Cookies
2021.01.18 16:57:35 5 : acer: ExtractSid called, context set, num 01
2021.01.18 16:57:35 4 : acer: checking for redirects, code=200, ignore=0
2021.01.18 16:57:35 4 : acer: no redirects to handle
2021.01.18 16:57:35 5 : acer: Read callback sets LAST_REQUEST to set01
2021.01.18 16:57:35 5 : acer: CheckAuth is checking buffer with ReAuthRegex (?^:TYPE="button" VALUE="Login")
2021.01.18 16:57:35 5 : acer: CheckAuth decided no authentication required
Titel: Antw:Acer Beamer via LAN steuern (Typ P5515)
Beitrag von: Hardlife am 17 April 2021, 12:46:27
Hi liebe Mitstreiter,


auch ich bin aufgrund meines neuen Beamers (Acer P5630) an dem Thema sehr interessiert...
Leider sind auf dem Gebiet meine Kenntnisse mehr als rudimentär und ich bekomme es trotz vieler Versuche einfach nicht gebacken   :'(

Könnt ihr mir hier bitte etwas auf die Sprünge helfen?
Soo gern würde ich meinen Projektor automatisieren...

Ich habe mal mit Firefox eine har-Datei erzeugt und diese angehängt.
Als erstes Versuchs-Beispiel mal das "klicken" auf den Eco-Modus-Button auf der Web-Oberfläche "http://192.168.0.7/control.asp"
(ich springe direkt ind die asp ohne Umweg über "http://192.168.0.7/index.asp")
Die Web-Oberfläche besitzt keinen Passwortschutz und kann einfach so aufgerufen werden

Wie kann ich das in fhem nachbilden?

EDIT 1:
Ich komme voran...  ;D
Ich schreibe das hier mal als Edit rein, eventuell benötigt es ja auch jemand anders...
-> mittels Umweg über curl klappts schon mal:
curl 'http://192.168.0.7/form/control_cgi' -H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0' -H 'Accept: */*' -H 'Accept-Language: de,en-US;q=0.7,en;q=0.3' --compressed -H 'Content-type: application/x-www-form-urlencoded' -H 'Origin: http://192.168.0.7' -H 'DNT: 1' -H 'Connection: keep-alive' -H 'Referer: http://192.168.0.7/control.asp' --data-raw 'eco=eco'


EDIT 2:
So, ich habe es jetzt mittels CURL und bash-Scripts (über FHEM-Dummy-Schalter) umgesetzt
Nicht sehr schön und auch nicht elegant, aber es funktioniert - und mehr wollte ich ja nicht...  8)