[gelöst] yaVDR 0.5: Abbruch des Shutdown/Suspend wenn cec-client benutzt wird um Fernseher abzuschalten

  • Hallo,


    nachdem ich es mit freundlicher Unterstützung aus dem Forum geschaftt habe, per cec-client und HDMI-CEC-Modul meinen Fernseher beim Start des VDRs anschalten zu lassen (siehe diesen Thread). würde ich jetzt gerne den Fernseher auch entsprechend ausschalten, wenn der VDR herunterfährt.


    Ich benutze S3-Suspend, da sich mein Mainboard sonst weigert für Timer wieder hoch zu fahren.


    Zuerst hatte ich den cec-client-Aufruf einfach in die /etc/vdr/shutdown-hooks/S90.cutom gepackt. Damit wird der Befehl zwar ausgeführt (Übrigens muss der Benutzer "vdr" Mitglied der "dialout"-Gruppe sein) aber der Shutdown wird abgebrochen. Um das genauer zu untersuchen, habe ich das ganze in ein externens Skript ausgelagert und mir an verschieden Stellen den exit status ($?) ausgeben lassen, da ein exit status <0> ja einen Abbruch des Shutdowns erzeugen soll.


    /etc/vdr/shutdown-hooks/S90.custom


    /usr/bin/vdr-cec-off.sh


    /tmp/exit

    Code
    Exit status am Begin des Skripts: 0
    Exit status am Ende des Skripts: 0
    Exit Status  nach Skriptaufruf: 0


    Trotzdem unterbricht der vdr den shutdown und ist auch später nicht in der Lage selbst herunterzufahren. Leider steht im Syslog nichts aufschlussreiches.


    syslog


    Danach folgen nur noch Meldungen vom Screen Grab für das Live-Plugin. Wen keine Aufnahme ansteht fehlen natürlich die entsprechenden Einträge.



    Irgendjemand ne Idee?



    Danke.


    Joachim

    Registrieter VDR User Nr. 1237


    4 Mal editiert, zuletzt von joachim-h ()

  • Ich habe nochmal was probiert und habe jetzt nur folgendes in die S90.custom geschrieben:


    Das "quit" Kommmando sorgt dafür, dass der cec-client nur ein mal startet und sich dann sofort wieder beendet. Auf der Konsole klappt das auch, in der S90.custom führt es allerdings, wie oben beschriebenen dazu, dass nur das Frontend detached wird. Dannach passiert gar nichts mehr. Im Log steht nur:

    Code
    Oct 12 16:56:22 HTPC vdr-shutdown: executing /usr/share/vdr/shutdown-hooks/S90.custom as shell script


    Danach läuft im Log alles wie im normalen Betrieb weiter. Der VDR fährt nicht herunter.


    Gruß


    Joachim

    Registrieter VDR User Nr. 1237


  • Code
    echo 'standby 0' | /usr/bin/cec-client -s


    Wenn der cec-client eine Ausgabe erzeugt (was liefert das normalerweise?), könnte das eventuell zum Abbruch führen, weil das "eval $result_data" fehlschlagen kann (eventuell er bleibt auch hängen - je nachdem was drin steht): https://github.com/flensrocker…r/debian/vdr-shutdown#L37
    Eventuell geht es schweigend:

    Code
    echo 'standby 0' | /usr/bin/cec-client -s > /dev/null 2>&1 ||:

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

    Einmal editiert, zuletzt von seahawk1986 ()

  • Werde ich später mal versuchen, wenn ich wieder zu hause bin. Der cec-client liefert nämlich tatsächlich einiges an Ausgabe auf STDOUT.


    Gesendet von meinem GT-N7000 mit Tapatalk 4

    Registrieter VDR User Nr. 1237


  • Danke Seahawk,


    das war's. Mein VDR schaltet jetzt beim runterfahren in den Standby den Fernseher aus! :D


    Gruß


    Joachim

    Registrieter VDR User Nr. 1237


  • Suuuuper, so soll es (fast) sein. :D Aber, was muss man noch einstellen, damit er auch bei einer laufenden
    Aufnahme den Fernseher ausschaltet ;o))
    Bei einer laufenden Aufnahme wird er nicht ausgeschaltet, sonder es kommt nur die Meldung, dass er
    später ausgeschaltet wird :evil:


    Danke und Grüsse


    Dirk

    Hardware VDR-1 und VDR-2: Zotac D2550 ITX WIFI Supreme, ATRIC IR-Empfänger, Streacom-Gehäuse, Logitech Harmony Touch, 6 x Sundtek
    MediaTV Pro, 4 x Sundtek SkyTV Ultimate auf Server mit
    Zotac D2550 ITX WIFI Supreme, NAS QNap 412, Software: yaVDR-0.6.1 - Kodi 16

  • Aber, was muss man noch einstellen, damit er auch bei einer laufenden
    Aufnahme den Fernseher ausschaltet


    Du könnest das über das Frontend-Skript lösen, indem du die Funktion soft_detach erweiterst (https://github.com/yavdr/yavdr…ddevice-02-script.py#L148)
    So sollte es eigentlich klappen (wenn nicht sollte etwas in /var/log/upstart/vdr-frontend.log landen - bitte Leerzeichen beachten!):

    Code
    def soft_detach():
        detach()
        try:
            subprocess.call("echo 'standby 0' | /usr/bin/cec-client -s", shell=True)
        except Exception as e:
            print "failed to call cec-client:", e
        settings.timer = gobject.timeout_add(300000,send_shutdown)
        return False

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

    Einmal editiert, zuletzt von seahawk1986 ()

  • Dikilee: Wenn du den Vorschlag von Seahawk1986 ausprobierst und dann auch noch prüfst ob nichts schlimmes passiert, wenn man gar keinen CEC-Adapter hat, dann würde ich mich dafür einsetzen,
    diese Änderung in die Distribution zu übernehmen. Ich habe nämlich auch solch einen Adapter, aber bisher nicht die Zeit gefunden mich um diese Details zu kümmern.


    Gerald


    HP Proliant MicroServer Gen8, Xeon E3-1230, 12 GB RAM, 3xWD red 2TB im RAID 5, 2xSundtek MediaTV Home DVB-C/T, L4M TWIN-C/T, Ubuntu Server 14.04.1, Plex Media Server
    Samsung UE55H6470

  • Wie ist das denn beim Einschalten? Sollte man beim Attachen des Frontends nicht noch dafür sorgen, dass sich der TV einschaltet?

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Wie ist das denn beim Einschalten? Sollte man beim Attachen des Frontends nicht noch dafür sorgen, dass sich der TV einschaltet?


    Macht schon Sinn, was aber generell noch fehlt ist das Umleiten der Lautstärke-Tasten auf den AVR, wie das XBMC schon beherrscht.


    Gerald


    HP Proliant MicroServer Gen8, Xeon E3-1230, 12 GB RAM, 3xWD red 2TB im RAID 5, 2xSundtek MediaTV Home DVB-C/T, L4M TWIN-C/T, Ubuntu Server 14.04.1, Plex Media Server
    Samsung UE55H6470

  • Da müsste dann vermutlich ein C++ kundiger ran und den libcec-daemon mal aufmöbeln, oder?

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Dikilee: Wenn du den Vorschlag von Seahawk1986 ausprobierst und dann auch noch prüfst ob nichts schlimmes passiert, wenn man gar keinen CEC-Adapter hat, dann würde ich mich dafür einsetzen,
    diese Änderung in die Distribution zu übernehmen. Ich habe nämlich auch solch einen Adapter, aber bisher nicht die Zeit gefunden mich um diese Details zu kümmern.


    Gerald

    Könnte man das nicht im Webinterface einstellbar gestalten? Da brauchen doch nur Rauten in den entsprechenden .conf Dateien gesetzt werden.
    Das Einschalten funktioniert auch ohne gestarteten lib-cec-deamon. Kann es sein das nur der cec-client alleine für das Ein- und Ausschalten reicht?


    Für den Betrieb des VDR reichen doch diese einfachen An/Aus-Befehle. Der TV ist doch nur Monitor und man benötigt dann auch nur eine Fernbedienung,
    zudem eine die man sich ausgesucht hat.


    Gruß


    Dirk

    Hardware VDR-1 und VDR-2: Zotac D2550 ITX WIFI Supreme, ATRIC IR-Empfänger, Streacom-Gehäuse, Logitech Harmony Touch, 6 x Sundtek
    MediaTV Pro, 4 x Sundtek SkyTV Ultimate auf Server mit
    Zotac D2550 ITX WIFI Supreme, NAS QNap 412, Software: yaVDR-0.6.1 - Kodi 16

  • Wie ist das denn beim Einschalten? Sollte man beim Attachen des Frontends nicht noch dafür sorgen, dass sich der TV einschaltet?

    Genau attachen, dettachen und Runterfahren sollten ausgewertet werden und den TV über den CEC-Adapter entsprechend ein- oder ausschalten.
    Das wäre ein super Feature und mehr braucht man doch meiner Meinung nach für den Betrieb des VDR auch gar nicht.


    Gruß


    Dirk

    Hardware VDR-1 und VDR-2: Zotac D2550 ITX WIFI Supreme, ATRIC IR-Empfänger, Streacom-Gehäuse, Logitech Harmony Touch, 6 x Sundtek
    MediaTV Pro, 4 x Sundtek SkyTV Ultimate auf Server mit
    Zotac D2550 ITX WIFI Supreme, NAS QNap 412, Software: yaVDR-0.6.1 - Kodi 16

  • Kann es sein das nur der cec-client alleine für das Ein- und Ausschalten reicht?


    Ja, aber da ich keine pasenden Geräte habe habe weiß ich nicht, was man senden müsste um den TV einzuschalten.

    Für den Betrieb des VDR reichen doch diese einfachen An/Aus-Befehle. Der TV ist doch nur Monitor und man benötigt dann auch nur eine Fernbedienung,
    zudem eine die man sich ausgesucht hat.


    Das kommt auf den Ansatz an, es scheint auch Leute zu geben, die den VDR über CEC mit der TV-Fernbedienung steuern wollen...

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Das kommt auf den Ansatz an, es scheint auch Leute zu geben, die den VDR über CEC mit der TV-Fernbedienung steuern wollen...

    Ja schon, habe ich ja auch gemacht. Allerdings hat man bei der "Wunschfernbedienung" einigen Komfort und Funktionen mehr und ist da völlig frei.


    Gesendet sollen in diesem Fall ja nur


    in der z.B. cec-start.conf das script:




    in der s90.custom der Befehl:

    Code
    echo 'standby 0' | /usr/bin/cec-client -s > /dev/null 2>&1 ||:


    je nachdem was gerade erforderlich ist. Man kann es ja verwenden oder auch nicht.


    Gruß


    Dirk

    Hardware VDR-1 und VDR-2: Zotac D2550 ITX WIFI Supreme, ATRIC IR-Empfänger, Streacom-Gehäuse, Logitech Harmony Touch, 6 x Sundtek
    MediaTV Pro, 4 x Sundtek SkyTV Ultimate auf Server mit
    Zotac D2550 ITX WIFI Supreme, NAS QNap 412, Software: yaVDR-0.6.1 - Kodi 16

  • Moin,


    Wie wäre es denn mit Verzeichnissen für vdr-frontend, um Hooks für attach, detach usw. Hinterlegen zu können?
    Irgendwo unter /var/lib/vdr-frontend oder /usr/share/vdr-frontend, keine Ahnugg, wo sowas hingehört.
    Und dann attach.d, detach.d usw. wie bei anderen Hooks auch.


    Lars.

  • Hallo Seahawk,


    Ja, aber da ich keine pasenden Geräte habe habe weiß ich nicht, was man senden müsste um den TV einzuschalten.


    Das hängt möglicherweise von der verwendeten Hardware ab. Bei mir (VDR am Recevier, Receiver am Fernseher), hat der Fernseher die Adresse "0" und der Befehl zum Einschalten lautet damit:

    Code
    echo 'on 0' | /usr/bin/cec-client -s

    .
    Wenn ich mich gerade recht erinnere, muss der user vdr übrigens Mitglied in der Gruppe dialout sein.



    BooStar hatte in meinen Thread über das anschalten des Fernsehers hier doch vielleicht das UActivity Plugin zu nutzen. Da das ja jetzt in stable ist, könnte man doch mal darüber nachdenken.


    Gruß


    Joachim

    Registrieter VDR User Nr. 1237


  • BooStar hatte in meinen Thread über das anschalten des Fernsehers hier doch vielleicht das UActivity Plugin zu nutzen. Da das ja jetzt in stable ist, könnte man doch mal darüber nachdenken.


    Das ist halt kein absolut zuverlässiges Kriterium - wenn man z.B. einen XBMC-PVR-Clients nutzt, denkt der VDR auch es sei ein Nutzer aktiv... https://github.com/pipelka/vdr…rc/xvdr/xvdrserver.c#L307
    https://github.com/opdenkamp/x…iserver/vnsiserver.c#L268

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Wie wäre es denn mit Verzeichnissen für vdr-frontend, um Hooks für attach, detach usw. Hinterlegen zu können?

    Das macht die Geschichte halt wieder potentiell ziemlich langsam - immerhin braucht das furchtbar ineffiziente Shutdown-Hook System bei einigen deutlich über 30 Sekunden, was ansonsten mit einem kleinen Python-Skript in maximal ein paar Sekunden abzufragen wäre...

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Dann Python-Snippets als Plugin?
    Ein Template an der richtigen Stelle kann ja auch schon reichen, es müsste nur ein vernünftiges Skelett vorgegeben werden.


    Lars.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!