VDR per dbus abfragen

  • Gibt es eine Möglichkeit VDR per DBUS abzufragen?


    Ich möchte herausfinden ob VDR gerade aktiv ist, also ob gerade jemand Fernsehen schaut oder eine Aufnahme läuft.


    Das ganze benötige ich für einen Aktivitätsmanager, der das endgültige Sagen darüber hat, ob der Rechner gerade heruntergefahren werden darf oder nicht.


    Ich weiss, dass man mit Shutdown-Hooks das Abschalten verhindern kann und VDR auch automatisch erkennt ob er gerade Heruntergefahren werden darf. Bei meinem System allerdings ist VDR nicht die Zentrale Komponente. Das System wird nicht via VDR heruntergefahren sondern über die pm-utils. Natürlich könnte ich pm-suspend austauschen und die Entscheidung an VDR übergeben aber das halte ich für eine sehr unsaubere Lösung. Mir wäre es lieber wenn ein Shutdown-Hook der pm-utils den Aktivitätsmanager fragt und daraufhin das Herunterfahren zulässt oder eben nicht. Diese Lösung wäre wesentlich sauberer, da sie sich ohne Probleme in alle Distributionen einbauen lässt.

  • Zitat

    Original von steffen_b
    VDR benutzt kein DBUS. Wäre keine doofe Idee, aber dem ist nicht so. Evtl kannst du svdrp verwenden.


    Hmm, das habe ich schon befürchtet, nachdem der Google nix ausgespuckt hat.


    Wie habt ihr das denn bei yaVDR gelöst? Ihr habt doch das gleiche Problem. Angenommen der VDR fährt sich hoch um eine Aufnahme zu starten. Während die Aufnahme läuft kommt ein Benutzer hinzu und fängt an per XBMC einen Film anzuschauen. Sobald die Aufnahme beendet ist, will VDR natürlich wieder runterfahren. Fragt ihr dann per Shutdown-Hook den XBMC ab um das zu verhindern?


    Oder der umgekehrte Fall: VDR nimmt gerade irgendwas auf. Jetzt fährt aber ein Benutzer per XBMC den Rechner runter. XBMC sendet ja ein Power Event über dbus an HAL was wiederum die pm-utils verwendet. Habt ihr für diesen Fall einfach pm-suspend angepasst?

  • Zitat

    Original von steffen_b
    XBMC ist bis jetzt noch nicht "vernünftig" als Frontend inegriert, steht aber auf unserer TODO. Standardmässig prüfen wir ob XBMC läuft (http://www.yavdr.org/blog/blog…oming-yavdr-03-lifeguard/) im shutdownhook.


    Also wäre so ein Projekt auch für euch interessant. Vielleicht können wir ja ein wenig gemeinsam Brainstormen. Dann würde ich das gleich so programmieren, dass es für euch auch läuft.


    Meine Gedanken waren die:


    Es sollte ein Möglichkeit geben, dass jedes Programm einfach den Rechner suspenden/herunterfahren kann ohne auf andere Prozesse Rücksicht nehmen zu müssen. Damit man nicht an 1000 Stellen irgendwas anpassen muss, sollte das ganze also über die normale Linux Shutdown-/Suspend-Prozedur funktionieren. In dem Fall sind das die Power-Management Utils, die ähnlich wie VDR, Shutdown Hooks aufrufen können. Diese Hooks können das Abschalten auch verhindern.


    Die Funktion von Lifeguard übernimmt also ein Aktivitätsmanager, der mittels Hooks und Modulen einfach erweitert werden kann. Dieser Aktivitätsmanger hat das endgültige Sagen darüber, ob das System gerade "Idle" ist. Der Aktivitätsmanger sollte ebenfalls LIRC überwachen, so dass es egal ist, welches Programm gerade aktiv ist. Wenn irgendwelche IR-Eingaben innerhalb der letzten n Minuten erfolgten, darf nicht heruntergefahren werden.


    Beim Shutdown fragt also ein pm-utils-hook den Aktivitätsmanager, ob ein Shutdown gerade erlaubt ist. Wenn nicht, wird der Shutdown Prozess abgebrochen.


    Soweit so gut. VDR ist jetzt leider ein ganz übler Kandidat, weil man ihn nicht von aussen abfragen kann. Daher gibt es zwei Möglichkeiten: Entweder man sendet dem VDR ein POWER-Button-Event über SVDRP und schaut ob er sein Shutdown-Command früher oder später ausführt oder aber man müsste ein VDR-Plugin schreiben, welches irgendwie den Status nach aussen durchreicht (keine Ahnung ob das geht - kenn ich mich nicht mit aus), so dass er vom Aktivitätsmanager abgefragt werden kann.


    Die zweite Lösung mit dem Plugin wäre hier definitiv die bessere Lösung, da die erste mit dem Power-Button-Event ein Rekursionsproblem aufwirft. Das Shutdown-Command sollte ja ebenfalls die pm-utils aufrufen um das Power-Button-Event auch auszuführen.


    Ein weiteres Problem beim VDR ist, dass man ihn zwingend per Power-Button-Event herunterfahren muss, da er sonst seine Shutdown-Hooks nicht ausführt. Wenn man ihn also direkt per "/etc/init.d/vdr stop" anhält, dann wird das nächste Wakeup-Event nicht gesetzt. Wir brauchen also auf jedenfall irgendeine Lösung für das obige Rekursionsproblem.


    Soweit meine Gedanken. Vielleicht kannst du was dazu sagen. Besonders gut kenne ich mich mit VDR nämlich nicht aus. Hab nur ein wenig rumgespielt. Vielleicht sind einige meiner obigen Annahmen einfach falsch.


    Wäre dankbar für weiteren Input.

Jetzt mitmachen!

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