(Gelöst)YaVDR 0.5: Unterscheidung Aufwachen per Timer vs. Aufwachen per Powertaste?

  • Hallo,


    da ich meinem VDR gerne beibringen möchte, den Ferseher und den Verstärker per cec-client an- bzw. aus zu schalten, stellt sich mir die Frage, wie ich unterschieden kann, ob der VDR automatisch, wegen eines Timers aufwacht oder ob ich ihn manuell angeschaltet habe. Im ersten Fall soll der Fernseher natürlich nicht angehen, im zweiten natürlich schon.



    Habt Ihr da nen Tipp?



    Gruß


    joachim

    Registrieter VDR User Nr. 1237


    2 Mal editiert, zuletzt von joachim-h ()

  • Schau dir mal die /etc/init/vdr-frontend.conf an. Wenn der PC durch einen Timer geweckt wird oder Du die Powertaste auf der FB drückst aber noch eine Aufnahme läuft dann detached das Skript das Frontend, ansonsten startet das Frontend ganz normal.


    Vielleicht kannst du dir ja in das Skript was dazu basteln das wenn der PC durch einen Timer geweckt wird der TV und Receiver ausgeschaltet bleiben/werden.




    MegaX

    Gruß MegaX


  • Ich hab's anhand der Zeit bis zum nächsten Timer abgeleitet: Zeit bis zum nächsten Timer

    streamdev-Server: ASRock J3160, MLD 5.5 testing, Mystique SaTiX-S2 V3 Dual + DuoFlex S2, 8GB, 60GB System,

    streamdev-Client 1: NUC6CAYS (Intel HD Graphics 500), MLD 5.5 testing, One For All URC 7960,

    streamdev-Client 2: NUC6CAYH (Intel HD Graphics 500), MLD 5.5 testing, One For All URC 7960,

    Media-Server: Synology DS215j

    AV-Geräte: Hisense H65MEC5550, Dali Zensor 5 AX, Teufel S6000SW


  • Danke, für die guten Tipps! Da werde ich mal reinschauen.

    Registrieter VDR User Nr. 1237


  • Äh Wayne, sorry für die dumme Frage (habe heute heftige Kopfschmerzen) aber, wo hast Du den Upstart-Job denn eingebunden? Dein Script sieht gar nich nach einem Upstart-Job aus (kein "start on", kein "stop on")?



    Danke und Gruß


    Joachim

    Registrieter VDR User Nr. 1237


  • Moin!


    vdr-frontend macht es auch über die Startzeit, allerdings über dbus2vdr, weil man das einfach fragen kann, ob der vdr manuell gestartet ist oder nicht. Einfach mal im readme von dbus2vdr nachlesen. Und dann am besten python benutzen, das wird dann richtig übersichtlich ohne viel gegreppe usw.


    Lars.

  • Äh Wayne, sorry für die dumme Frage (habe heute heftige Kopfschmerzen) aber, wo hast Du den Upstart-Job denn eingebunden? Dein Script sieht gar nich nach einem Upstart-Job aus (kein "start on", kein "stop on")?

    Ich hab' das Skript und den Upstart-Job geteilt:


    Mein Upstart-Job:


    Das usb-steckdosen-check-timer.sh - Skript:

    streamdev-Server: ASRock J3160, MLD 5.5 testing, Mystique SaTiX-S2 V3 Dual + DuoFlex S2, 8GB, 60GB System,

    streamdev-Client 1: NUC6CAYS (Intel HD Graphics 500), MLD 5.5 testing, One For All URC 7960,

    streamdev-Client 2: NUC6CAYH (Intel HD Graphics 500), MLD 5.5 testing, One For All URC 7960,

    Media-Server: Synology DS215j

    AV-Geräte: Hisense H65MEC5550, Dali Zensor 5 AX, Teufel S6000SW


  • @Wanye: Vielen Dank.


    mini73: Ganz so kompliziert ist das mit Bash auch nicht:

    Code
    /usr/bin/vdr-dbus-send /Shutdown shutdown.ManualStart | grep true
    if [ $? = 1 ]; then
        echo 'on 0' | /usr/bin/cec-client -s
    fi

    Registrieter VDR User Nr. 1237


  • Moin!


    Ja, sieht auch ok aus. Da meine Programmierwurzeln im C(++/#)-Bereich liegen, tue ich mich mit Shell manchmal etwas schwer.
    Außerdem finde ich solche grep-Konstrukte immer etwas fragil. Sollte dbus-send seine Ausgabe (aus welchen Gründen auch immer) ändern, klappt's nicht mehr und man wundert sich.


    In Python sähe es so aus:

    Code
    import dbus
    bus = dbus.SystemBus()
    Shutdown = bus.get_object('de.tvdr.vdr', '/Shutdown')
    manual = Shutdown.ManualStart(dbus_interface = 'de.tvdr.vdr.shutdown')
    if manual:
      print "manual vdr start"
    else:
      print "timer vdr start"


    Statt des print dann einfach die passende Aktion einfügen.


    Lars.

  • Hmm..
    hast du dir mal das UActivity-Plugin angesehen?
    Das macht genau das was du willst ;)


    [size=10]nOpacity: Icons
    [size=10]skindesigner: tryoutsglassy

  • Das klingt wirklich, als würde das die Probleme lösen. Upstart ist nicht ganz so einfach, da ich Suspend benutze.
    Allerdings habe ich einen stable yaVDR und würde das nur ungern ändern. Obwohl noPacity auch interessant aussieht.....



    Joachim

    Registrieter VDR User Nr. 1237


  • Ich habe mir jetzt folgendermaßen beholfen.


    ich habe einen Upstart-Job namens
    /etc/init/vdr-cec-on.conf angelegt. Inhalt:


    Der schaltet den Fernseher bei Start des VDR-Jobs ein. (Lustigerweise funktioniert das jetzt bei einem Reboot nicht. :) )


    Dann wollte ich einen analogen Befehl in die Shutdown-Hooks eintragen, aber egal wo ich in eintrage (/etc/ver/shutdown-hooks/290.custom oder sogar /usr/share/vdr/shutdown-hooks/S99.shutdown) wird der Befehl

    Code
    echo 'standby 0' | cec-client -s

    zwar ausgeführt, unterbindet aber das Herunterfahren (bzw suspend).


    Mal sehen, wie ich das gelöst bekomme.


    Gruß


    Joachim

    Registrieter VDR User Nr. 1237


  • Mal sehen, wie ich das gelöst bekomme.


    Du musst dafür sorgen, dass der einen Exit-Code 0 liefert, wenn es den Shutdown nicht abbrechen soll - also z.B.

    Code
    echo 'standby 0' | cec-client -s ||:


    und wenn es in einem eigenen Skript passiert am besten noch das ans Ende:

    Code
    exit 0

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Moin,


    "starting vdr" wird nicht funktionieren, da du einen schon gestarteten vdr brauchst, um ihn zu fragen, wie er gestartet wurde.
    Es muss also "started vdr" sein.


    Und dann muss wahrscheinlich noch das Schlüsselwort "task" auftauchen, weil du ja keinen Serivce startest, sondern nur eine Aktion, die auf einen gestarteten Service reagiert.


    Upstart ist wirklich nicht leicht zu durchschauen... :)
    Ein Blick ins Upstart Cookbook ist auch immer hilfreich.


    Lars

  • @seahwak:
    leider nein, genau das

    Code
    [echo 'standby 0' | cec-client -s ||:

    steht in S.90-custom und damit passiert genau das beschriebene. Befehl wird ausgeführt, shutdown wird aber unterbrochen.


    mini73:
    Dann werde ich das nochmal entsprechend bearbeiten. Beim Wakeup aus dem S3 funktioniert es aber genau so wie ich es geschrieben habe.


    Gruß


    Joachim

    Registrieter VDR User Nr. 1237


  • mini73: Nö

    Registrieter VDR User Nr. 1237


  • Zu Upstart:
    Du schreibst aber auch, dass es bei einem Reboot nicht geht.
    Wenn es beim Wakeup funktioniert, dann nur, weil die Auswertung irgendwie zum gleichen Ergebnis führt wie das, was du eigentlich beabsichtigst. Dbus2vdr loggt Aufrufe im syslog, findest du da den Aufruf von ManualStart? Wenn nicht, weißt du, dass der grep was anderes macht, als du denkst, wenn doch, dann läuft der vdr irgendwie schon, was aber eigentlich nicht sein kann, da er auf deinen Job warten muss.


    Ich äußere nur meine Bedenken, wenn alles für dich klappt, ist deine Lösung schon in Ordnung.
    Ich würde aber nicht verstehen, warum sie funktioniert. :)


    Lars

  • Zum Shutdown:
    Ich frage nur doof, weil ich mich manchmal auch doof anstelle: das "exit 0" steht in einer eigenen Zeile, oder?


    Lars

  • Zu Upstart: Da hat Du sicher recht, ich werde das auch noch ändern.


    Zu shutdown: Ja, das steht in einer eigenen Zeile.

    Registrieter VDR User Nr. 1237


Jetzt mitmachen!

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