HDMI CEC per commandline

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • HDMI CEC per commandline

      Hallo zusammen,

      gibt es eine möglichkeit die ID's der verfügbaren CEC-Geräte per commandline auszulesen ?
      und gibt es eine möglichkeit HDMI-CEC befehle per commandline zu senden ?

      (beipielsweise soll tv nicht angehen, wenn ich die vu einschalte, da ich viel radio damit höre. ich würde aber gerne das tv-gerät späte dazuschalkten können und der fernseher selber ist nicht per http/telnet/commandline/WOL steuerbar)
      und in zeiten von alexa wäre es schön, wenn man das per commandline da einpflegen könnte :)

      ein- und ausschaltbefehle würden mir völlig reichen, mehr als bild macht mein tv eh nicht.

      ich glaube ich habs gefunden, sollte mit den cec-utils gehen (cec-client)

      schade dass man nicht editieren kann...

      es gibt hier zwar den cec-client aber ich weiß nicht, wie ich den nutzen soll/kann

      hat jemand nen tipp, wie ich per commandline cec-befehle ausgeben kann ?
      Gruß wsxws

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von wsxws ()

    • hier muss doch irgendwer das python-zeugs bessere verstehen als ich.

      in dem vti-hdmi-.cec plugin kann man auf 'TV einschalten' oder auf 'TV ausschalten' gehen und der Fernseher geht halt eben an oder aus.
      Welcher Befehl wird denn da jeweils ausgeführt ?
      Gruß wsxws
    • Das kommt immer auf die weiteren Einstellungen und Deine Wünsche an. Du kannst, wenn der FS ein + aus geschaltet wird, die VU Box mit ein + ausschalten
      ( mit Hilfe der FS Bedienung/ Zeile 5 + 6)
      Mit FB der Box - die VU ein und ausschalten und der FS geht nach dem Hochfahren der Box, an und beim Ausschalten mit Aus (Zeilen 7-10) Ich arbeite nur mit der VU FB
      1-HDMI.jpg

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von nick222 ()

    • Der Fernseher soll garnicht angehen, bis ich ihm das sage.
      Die VU rennt teilweise stunden, bis der TV gebraucht wird.
      Von daher brauche ich die commands, damit ich die in Alexa (habridge) einpflegen kann.
      Gruß wsxws
    • Wenn Du den Fernseher sowie so separat einschalten willst, gebe doch statt TV ein erst mal "nichts" ein.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von nick222 ()

    • ich glaube du vestehtst nicht was ich möchte.
      dass nichts passiert kann ich selber.

      ich möchte per commanline ein hdmi-cec befehl zum einschalten meines tv senden. <<-- das da

      und nichts anderes und kein workaround. einfach nur die commandline.

      und da das mit einfachen click in dem plugin geht muss es ja einen solchen befehl geben, der genau dann ausgeführt wird. und eben genau diesen befehl würde ich gerne wissen.
      Gruß wsxws

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von wsxws ()

    • Quellcode

      1. Eigentlich sollte er an enigma2 dann folgendes senden:
      2. elif self["config"].getCurrent() == self.hdmitvpwroff:
      3. address = int("0",16)
      4. cecmessage = int("36",16)
      5. cmd = struct.pack('B',cecmessage)
      6. logcmd = "[VTI HDMI-CEC] send cec message %x to %x" % (cecmessage,address)
      7. elif self["config"].getCurrent() == self.hdmitvpwron:
      8. address = int("0",16)
      9. cecmessage = int("04",16)
      10. cmd = struct.pack('B',cecmessage)
      11. logcmd = "[VTI HDMI-CEC] send cec message %x to %x" % (cecmessage,address)
      12. if cmd:
      13. eHdmiCEC.getInstance().sendMessage(address, len(cmd), str(cmd))
      14. Damit bekommt es :
      15. für TVoff: eHdmiCEC.getInstance().sendMessage(0, len(struct.pack('B',36)), str(struct.pack('B',36)))
      16. für TVon: eHdmiCEC.getInstance().sendMessage(0, len(struct.pack('B',04)), str(struct.pack('B',04)))
      Alles anzeigen
      wie mache ich aus diesen infos eine simple batch-datei die meinen ferseher einschaltet ?
      Gruß wsxws
    • Ich schaue auch gerade wie ich hdmi-cec per commandline steuern kann. Gefunden hab ich auf dem feed cec-client.

      Install per

      Quellcode

      1. root@vuduo2:~# opkg install cec-utils


      Dann reboot und

      Quellcode

      1. root@vuduo2:~# cec-client -l
      2. Found devices: NONE

      Leider wird meine duo2 so nicht erkannt. Bedeutet das, cec-client funktioniert nur mit per externen device wie z.B. pulse-eight?

      In einem Blog hab ich gesehen, das der Raspberry z.B als device selber erkannt wird


      Quellcode

      1. pi@RPI ~ $ cec-client -l
      2. Found devices: 1
      3. device: 1
      4. com port: RPI
      5. vendor id: 2708
      6. product id: 1001
      7. firmware version: 1
      8. type: Raspberry Pi
    • yup, genau da war ich auch schon.

      vu findet nix (bei mir ne 4k) und der pi findet sich selber.
      der pi wäre für mich aber auch keine lösung, weil der ganz woanders im netzwerk hängt und keine hdmi-verbindung zu av-receiver oder tv hat.

      sollte schon irgendwie über die box gehen.
      Gruß wsxws
    • Per commandline kannst du vergessen, hdmi cec auf der vu geht nur über enigma2 mit eHDMICec, um also von extern cec commandos auszuführen musst du dir ein plugin schreiben und um von ha bridge aus cec kommandos auszuführen zu können auch noch einen mini webserver

      Ist aber nix kompliziertes

      Gesendet von meinem SM-G920F mit Tapatalk
      VMC
      EPG Share
      VU Alexa Skill
      Fluid Next
      Global Search

      Spenden sind immer herzlich willkommen... einfach hier klicken und das ganze an sbeatz76@googlemail.com schicken
    • hm
      das device /dev/hdmi-cec gibts
      cec-client kann sich aber leider nicht mit dem device unterhalten, sonst wäre man mit

      echo 'on 0' | cec-client -s /dev/hdmi-cec
      und
      echo 'standby 0' | cec-client -s /dev/hdmi-cec
      nämlich schon fertig

      sowas würde ich als 'nix kompliziertes' beschreiben.

      nen enigma2-plugin kann ich für meinen teil auf jeden fall nicht schreib, da habsch keinen plan von.
      da hat nicht zufällig jemand anders lust und interesse dran sowas zu machen ?
      Gruß wsxws
    • I want to ask the same. Anyone got this working?

      I have Apple TV, which when I turn on the TV automatically switch to HDMI2.

      I want to do the same with Vu+ Uno, which is on HDMI1. I want to program a "switch to HDMI1" trough HDMI-CEC command to a button on the remote control.
    • Würde mich auch hier mit einklingen: Würde gerne die VU+ nutzen wollen, um den Fernseher zu steuern. cec-client funktioniert aber nicht, weil enigma den Zugriff auf das Device blockiert hält. Irgendeine Idee, wie ich von der Kommandozeile aus genauso wie mit cec-client den Fernseher ansteuern kann?
      Alternativ gerne auch via Openwebif - brauch nur "irgendeine" Möglichkeit von außen! :)

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von prodigy7 () aus folgendem Grund: Edit

    • wenn das plugin generell nicht funktioniert solltest du auch mal die einstellungen von av-receiver (sofern vorhanden) und TV anschauen, da muss man das cec-gedönse auch einschalten.

      ansonsten konnte ich auch mit den automatischen schaltvorgängen nix anfangen, da ich mit der box auch radio höre (und dazu braucht man den fernseher nun wirklich nicht) oder auch andere geräte als die vu an dem receiver benutze. (da war das automatische ein/ausschalten auch nicht wirklich hilfreich)
      deswegen habe ich im plugin anhängende einstellungen gemacht und das ein-/ausschalten auf eine taste gelegt.
      das ist natürlich besonders interessant für harmony-hub-benutzer mit allen daraus resultierenden möglichkeiten (commandline/ha-bridge/alexa/...) ;)
      Dateien
      • hdmi_cec.png

        (81 kB, 67 mal heruntergeladen, zuletzt: )
      Gruß wsxws

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von wsxws ()

    • prodigy7 schrieb:

      Irgendeine Idee, wie ich von der Kommandozeile aus genauso wie mit cec-client den Fernseher ansteuern kann?

      Ohne zu wissen was der cec-client alles kann (den kenne ich nicht),
      ich habe mir 2 Scriptbefehle "tvan" und "tvaus" zurechtgebastelt.

      Diese beiden Komandos kann ich an der Konsole benutzen.
      Dazu muss das HDMI-CEC Plugin allerdings funktionieren.
      Diese beiden Befehle simulieren dann einfach das "TV einschalten" und "TV ausschalten" aus dem Plugin.
      Zusätzlich wird beim Einschalten am AV-Receiver und am TV die richtige "Quelle" ausgewählt.

      Also zumindest TV Ein/Aus-schalten funktioniert so an der Konsole ... dafür hätte ich eine fertige Lösung im Angebot, fals dir das reicht.
    • Die angehängte ipk enthält die beiden Scripte und installiert diese korrekt.

      An der Konsole kann man dan eingeben:

      tvan
      tvaus


      Das schaltet dann den TV mit einer Zeitverzögerung von 1-5 Sekunden an bzw. aus.
      Das HDMI-CEC Plugin muss vorher installiert und angeschaltet sein und natürlich auch funktionieren.
      Dateien
    • vielen dank.
      haste die TVC.pyo selbst gemacht ?
      wenn ja, hätteste dafür vielleicht auch eine editierbare version ?

      bei mir funktioniert das plugin, auch das schalten per fernbedienung funzt, deine ipk aber so leider nicht. wenn man das anpassen könnte wäre dementsprechend klasse
      Gruß wsxws

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von wsxws ()

    • Ja die TVC.pyo ist selbstgebastelt.

      Das ist der Quelltext meiner aktuellen TVC.py.

      Die aus der ipk ist die vorherige Version.
      Ohne ipk geht es aber nicht, denn die enthält die passende Installroutine.


      Python-Quellcode

      1. # -*- coding: utf-8 -*-
      2. import struct,time,os
      3. from Components.config import config
      4. from threading import Thread
      5. from enigma import eHdmiCEC
      6. def Exec_def():
      7. Exec_File='/tmp/EXEC'
      8. FileAus='/tmp/TVAUS'
      9. FileAn='/tmp/TVAN'
      10. cmd1 = struct.pack('BBB',int('0x82',16),int("0x" + str(config.hdmicec.tvinput.value) + str(config.hdmicec.avinput.value),16),int("0x00",16))
      11. cmd2 = struct.pack('B',int('0x04',16))
      12. cmd3 = struct.pack('B',int('0x36',16))
      13. try:
      14. f=open(Exec_File,"w")
      15. f.write(' ')
      16. f.close()
      17. except:
      18. pass
      19. while os.path.isfile(Exec_File)==True:
      20. time.sleep(5)
      21. if os.path.isfile(FileAus)==True:
      22. try:
      23. os.unlink(FileAus)
      24. eHdmiCEC.getInstance().sendMessage(int('0x00',16), len(cmd3), str(cmd3))
      25. except:
      26. os.unlink(Exec_File)
      27. if os.path.isfile(FileAn)==True:
      28. try:
      29. os.unlink(FileAn)
      30. eHdmiCEC.getInstance().sendMessage(int('0x00',16), len(cmd2), str(cmd2))
      31. time.sleep(0.5)
      32. eHdmiCEC.getInstance().sendMessage(int("0x0F",16), len(cmd1), str(cmd1))
      33. time.sleep(0.5)
      34. eHdmiCEC.getInstance().sendMessage(int('0x00',16), len(cmd2), str(cmd2))
      35. except:
      36. os.unlink(Exec_File)
      37. Exec_Thread=Thread(target=Exec_def)
      38. Exec_Thread.daemon = True
      39. Exec_Thread.start()
      Alles anzeigen