Hallo,
da HDMI-CEC noch sehr rudimentär ist und ich den AC3 Downmix trotzdem irgendwie automatisch schalten möchte versuche ich mir grade selbst was zu basteln. Ich habe einen Denon AVR X1000, den kann man schön über`s Netzwerk abfragen.
Ich habe mir schon ein kleines Phyton-Skript gebaut. Was mir noch fehlt ist ein Trigger und wie ich den AC3 Downmix steuern kann.
Code
#!/usr/bin/env python
import socket
ip = '192.168.178.3'
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((ip, 23))
nachricht = 'PW?\r'
s.send(nachricht)
pwstatus = s.recv(1024)
print (pwstatus)
if pwstatus == 'PWON\r':
nachricht = 'SI?\r'
s.send(nachricht)
sistatus = s.recv(1024)
print (sistatus)
s.close()
if pwstatus == 'PWON\r' and sistatus == 'SISAT/CBL\r':
print ("Vorraussetzungen erfuellt")
else:
print ("Vorraussetzungen nicht erfuellt")
Alles anzeigen
1. Ich würde das Skript gern beim Ereignis "HDMI: now connected" (Taucht im messages-log auf) ausführen. Ist das irgendwie machbar?
2. Wie kann ich den AC3 downmix steuern?
Bisher hab ich noch nix mit Phyton gemacht, ich hoffe dass was ich da zusammengefrickelt habe ist soweit ok?
EDIT: Und hier mein funktionierendes Plugin
Python
import socket
from Plugins.Plugin import PluginDescriptor
from Components.config import config
from enigma import hdmi_cec
def myCallback(cmd):
print "[AC3-Switch] trigger received", cmd
ip = '192.168.178.3'
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((ip, 23))
nachricht = 'PW?\r'
s.send(nachricht)
pwstatus = s.recv(1024)
if pwstatus == 'PWON\r':
print "[AC3-Switch] AVR ON"
nachricht = 'SI?\r'
s.send(nachricht)
sistatus = s.recv(1024)
s.close()
if pwstatus == 'PWON\r' and sistatus == 'SISAT/CBL\r':
print "[AC3-Switch] AVR Source is SAT/CBL"
print "[AC3-Switch] set AC3 to passthrough"
config.av.downmix_ac3.value = False
else:
print "[AC3-Switch] set AC3 to downmix"
config.av.downmix_ac3.value = True
config.av.downmix_ac3.save()
def main(session, **kwargs):
print "[AC3-Switch] Get Instance"
instance = hdmi_cec.getInstance()
instance.cec_register_raw_command(0x8c)
instance.receivedRaw.get().append(myCallback)
def Plugins(**kwargs):
return PluginDescriptor(
name="Denon Control",
description="Denon AVR fernsteuern",
where = PluginDescriptor.WHERE_SESSIONSTART,
fnc=main)
Alles anzeigen