Autor Thema: Neues Modul für Epson-Projektoren  (Gelesen 18143 mal)

Offline fheminist

  • New Member
  • *
  • Beiträge: 10
  • Gesendet von meinem t42 triple mit Tapatalk
Antw:Neues Modul für Epson-Projektoren
« Antwort #45 am: 06 Mai 2021, 20:44:01 »
Hallo zusammen,

habe nun den Epson TW750, da der TW650 anscheinend auf dem Versandweg beschädigt wurde...
Bei dem Epson TW750 wurde die Authentifizierung vom "Epson Web Control" auf "digest" Authentifizierung umgestellt....

Die get-Request-Commants sind gleich geblieben (also wie beim TW650 mit aktualisierter FW).


Hier das angepasste python-Skript:

#!/usr/bin/python3

## -- ------------------------------------------------------------ --
## C.H @ Marl
##  funktioniert mit Epson TW650
##  20210429: neue FW nach Reparatur, daher pfad von /cgi-bin/directsend
##      auf /cgi-bin/Remote/directsend angepasst
##      aktuelle FW vom Beamer: 0900 8864 CZK 2V 115
##  20210506 ab Epson tw750 wurde die Auth-Methode geändert...
##       nicht mehr HTTPBasicAuth (alt) sondern... HTTPDigestAuth (neu)
## -- ------------------------------------------------------------ --

import requests
import re
import time
import sys
from requests.auth import HTTPDigestAuth    ## 20210506 auth neu ab tw750

projectorAddress = 'http://192.168.179.48'
username = 'EPSONWEB'
password = 'admin'


## auth = requests.auth.HTTPBasicAuth(username, password)   ## 20210506 bis tw650 geht das hier
auth = requests.auth.HTTPDigestAuth(username, password)     ##    ab epson tw750 geht nur diese zeile...
headers= {'Referer': projectorAddress + '/cgi-bin/webconf'}

def getRequest(url):
    return requests.get(projectorAddress + url, auth = auth, headers = headers)
 
def postRequest(url, data):
  return requests.post(projectorAddress + url, data = data, auth = auth, headers = headers)

def projectorIsOn():
    r = postRequest('/cgi-bin/webconf', {'page': '03'}) # Get info page
    retval = r.text.find('Der Projektor befindet sich im Standby-Modus.') == -1  ## klappt nun auch...
    print(retval)
    return retval
 

def turnProjectorOn():
  if not projectorIsOn():
      getRequest('/cgi-bin/Remote/directsend?KEY=3B')
     
def turnProjectorOff():
  if projectorIsOn():
      getRequest('/cgi-bin/Remote/directsend?KEY=3B')
      time.sleep(0.3)
      getRequest('/cgi-bin/Remote/directsend?KEY=3B')
     
argument = sys.argv[1] or ''
if sys.argv[1] == 'on':
  turnProjectorOn()
elif sys.argv[1] == 'off':
  turnProjectorOff()
elif sys.argv[1] == 'hdmi1':
    getRequest('/cgi-bin/Remote/directsend?SOURCE=30')
elif sys.argv[1] == 'hdmi2':
  getRequest('/cgi-bin/Remote/directsend?SOURCE=A0')
elif sys.argv[1] == 'pc':
  getRequest('/cgi-bin/Remote/directsend?KEY=44')
elif sys.argv[1] == 'lan':
  getRequest('/cgi-bin/Remote/directsend?KEY=53')
elif sys.argv[1] == 'usb':
  getRequest('/cgi-bin/Remote/directsend?KEY=85')
elif sys.argv[1] == 'screenmirror':
  getRequest('/cgi-bin/Remote/directsend?KEY=56')
elif sys.argv[1] == 'mute':
  getRequest('/cgi-bin/Remote/directsend?KEY=3E')
elif sys.argv[1] == 'volumeDown':
  getRequest('/cgi-bin/Remote/directsend?KEY=57')
elif sys.argv[1] == 'volumeUp':
  getRequest('/cgi-bin/Remote/directsend?KEY=56')
elif sys.argv[1] == 'longforward':
  getRequest('/cgi-bin/Remote/directsend?KEY=D5')
elif sys.argv[1] == 'forward':
  getRequest('/cgi-bin/Remote/directsend?KEY=D7')
elif sys.argv[1] == 'longrewind':
  getRequest('/cgi-bin/Remote/directsend?KEY=D4')
elif sys.argv[1] == 'rewind':
  getRequest('/cgi-bin/Remote/directsend?KEY=D6')
elif sys.argv[1] == 'play':
  getRequest('/cgi-bin/Remote/directsend?KEY=D1')
elif sys.argv[1] == 'pause':
  getRequest('/cgi-bin/Remote/directsend?KEY=D3')
elif sys.argv[1] == 'stop':
  getRequest('/cgi-bin/Remote/directsend?KEY=D2')
else:
  print("cmd not found .... Run script with parameter eg with 'on' or 'off'")
  sys.exit(1)

sys.exit(0)


Pypjlink hat bei mir leider nicht geklappt... Das hatte ich zwischenzeitlich auch mal probiert. Entweder ich hab die Installation verbockt, oder evtl. schlägt hier auch die auth ins leere.

VG


 
« Letzte Änderung: 08 Mai 2021, 15:46:33 von fheminist »
4*FB (Mesh), MySql+TVH+TriaxSatIP@Synology, 6*Kodi-RPis, Grafana, EpsonTW650+DIY-Lift, 3*IPCam@TVH, RoborockS6
6*Maxcio bulbs, 15*Nodemcu&WemosD1, 20*GosundSP1, 12*Shelly25 2*1er, 8*MC400A, 5*CometDect, 2*HM-Sec-Sco, abgelöst: diyCurls, 433Mhz, JeeLink, DenonAVR, FS20, HM-LC-Bl1PBU-FM, HM-CC-RT-DN

Online Frank_Huber

  • Hero Member
  • *****
  • Beiträge: 4445
Antw:Neues Modul für Epson-Projektoren
« Antwort #46 am: 06 Mai 2021, 20:59:22 »
Pypjlink hat bei mir leider nicht geklappt... Das hatte ich zwischenzeitlich auch mal probiert. Entweder ich hab die Installation verbockt, oder evtl. schlägt hier auch die auth ins leere.

Wenn Du PJLink im Beamer Menü hast kannst Du dort die Auth abschalten. (ist per Default ohne Passwort)

Wenn Du keine Einstellungen dafür findest kann er es vermutlich nicht.

Offline fheminist

  • New Member
  • *
  • Beiträge: 10
  • Gesendet von meinem t42 triple mit Tapatalk
Antw:Neues Modul für Epson-Projektoren
« Antwort #47 am: 08 Mai 2021, 15:20:20 »
Hallo Frank,

ne die Einstellung habe ich nicht, dann ist zumindest klar, warum es bei mir nicht geklappt hat.

Danke für den Tipp.
 
4*FB (Mesh), MySql+TVH+TriaxSatIP@Synology, 6*Kodi-RPis, Grafana, EpsonTW650+DIY-Lift, 3*IPCam@TVH, RoborockS6
6*Maxcio bulbs, 15*Nodemcu&WemosD1, 20*GosundSP1, 12*Shelly25 2*1er, 8*MC400A, 5*CometDect, 2*HM-Sec-Sco, abgelöst: diyCurls, 433Mhz, JeeLink, DenonAVR, FS20, HM-LC-Bl1PBU-FM, HM-CC-RT-DN

 

decade-submarginal