[XBMC Addon] Powersave für VDR

  • Also stammt der SVDRP-Port so nicht aus dem Paket, sondern wurde von dir extra so gesetzt?

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Hab das ganze Konstrukt yavdr-tools für XBMC <-> dbus2vdr nun grundsätzlich am laufen, technisch funzt es, ABER:


    Jetzt wird der PowerOff verhindert, weil dbus2vdr einen aktiven Benutzer vermutet... klar, der automatisch in LXDE angemeldete, der XBMC per Autostart startet.
    (Ich hab richtig verstanden, dass die Anfrage vom XBMC and VDR, ob heruntergefahren werden kann, nur von dbus2vdr unabhängig vom lifeguard - Plugin behandelt wird?)


    Fazit bisher:
    Das Konstrukt per Hand in einem Standard - Minimal Ubuntu mit einem Desktop Environment (wenns auch nur ein minimales LXDE ist) nachzubauen, ist schon recht aufwendig. Da ists fast einfacher, sich eure Distri am WE (wenn kein Timer läuft und man ein wenig Zeit hat ;) ) mal testweise auf den HTPC im WoZi zu packen...

  • Jetzt wird der PowerOff verhindert, weil dbus2vdr einen aktiven Benutzer vermutet... klar, der automatisch in LXDE angemeldete, der XBMC per Autostart startet.
    (Ich hab richtig verstanden, dass die Anfrage vom XBMC and VDR, ob heruntergefahren werden kann, nur von dbus2vdr unabhängig vom lifeguard - Plugin behandelt wird?)


    Das funktioniert so: dbus2vdr hat einen Shutdown-Wrapper, der in der Voreinstellung die ganzen Shutdown-Hooks des VDR aufruft, wenn der VDR meldet, dass er herunterfahren könnte (damit vermeidet man es unnötigerweise den User inaktiv zu setzen und kann einfach zwischendrin mal den Status abfragen)
    Dass ein User angemeldet ist, ist ein mögliches Kriterium für das Lifeguard-Addon, man kann das aber durchaus abschalten, wenn man will.


    Fazit bisher:
    Das Konstrukt per Hand in einem Standard - Minimal Ubuntu mit einem Desktop Environment (wenns auch nur ein minimales LXDE ist) nachzubauen, ist schon recht aufwendig.


    Es hat niemand gesagt, dass es einfach ist :unsch - aber bislang ist uns nichts besseres eingefallen...

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Das funktioniert so: dbus2vdr hat einen Shutdown-Wrapper, der in der Voreinstellung die ganzen Shutdown-Hooks des VDR aufruft, wenn der VDR meldet, dass er herunterfahren könnte (damit vermeidet man es unnötigerweise den User inaktiv zu setzen und kann einfach zwischendrin mal den Status abfragen)
    Dass ein User angemeldet ist, ist ein mögliches Kriterium für das Lifeguard-Addon, man kann das aber durchaus abschalten, wenn man will.

    War auch meine erste Vermutung, daher habe ich in der lifeguard.conf die "usr" Zeile auskommentiert. Das hat aber nix geändert... deswegen dachte ich, dbus2vdr läuft unabhängig vom lifeguard. Wenn dbus aber die Shutdown Hooks abfragt, spielt das ja doch ne rolle..


    Es hat niemand gesagt, dass es einfach ist :unsch - aber bislang ist uns nichts besseres eingefallen...

    *g* das hab ich auch nie gedacht, zeigt ja auch, wieviel Zeit und Energie in eurer Distri steckt, Kompliment dafür :tup
    Der ehrgeiz, das doch noch hinzufriemeln ist ja irgendwie doch noch da ;)

  • hmm... da muß ich vorhin an irgendeiner stelle krumme finger gehabt haben.. das PowerOff funzt jetzt mit deaktivierter "use" Zeile in der lifeguard.conf trotz angemeldetem Benutzer.... danke schon mal sehr bis hierhin für die tolle unterstützung :cool1

  • Bin seit dem WE nun auf yaVDR 0.5 + XBMC 12.1 aus dem testing ppa; primäres Frontend ist XBMC.
    Das Ganze funzt ootb bestens.


    Nun experimentiere ich erneut mit dem Konstrukt yaVDR-Tools <-> vdr-plugin-dbus2vdr <-> vdr-addon-lifeguard <-> yaVDR-WebFrontend und irgendwie ist da noch der Wurm drin oder ich hab da noch n Verständnisproblem:


    1) Habe im Webfrontend im Abschnitt "lifeguard" Probehalber nur die Punkte "NFS" und "SMB" aktiviert. Dementsprechend sieht die lifeguard.conf nun so aus:



    => keine "usr" Zeile, trotzdem bekomme ich bei einer dbus - Anfrage:

    Code
    root@medix:/etc/vdr# vdr-dbus-send /Shutdown shutdown.ConfirmShutdown
    method return sender=:1.35 -> dest=:1.36 reply_serial=2
       int32 901
       string "user is active"
       int32 0
       string ""


    obwohl doch gar nicht nach aktiven Benutzern gesucht werden soll....


    2) Da scheints noch einen Bug im yaVDR - WebFrontend zu geben, denn nach einem Reload desselben sieht der lifeguard Abschnitt so aus, wie im Anhang "lifeguard.jpg"


    Firebug sieht man im Anhang "firebug.jpg"
    (Die lifeguard.conf ist korrekt, scheint also nur ein Anzeigeproblem zu sein....)


    3) Die SMB "Überwachung" scheint auch noch fehlerhaft zu sein, denn wenn ich auf nem anderen Rechner eine Aufnahme über SMB laufen habe, sieht smbstatus erwartungsgemäß so aus:

    Code
    root@medix:~# smbstatus -L
    Locked files:
    Pid      	Uid    	DenyMode   Access  	R/W    	Oplock       	SharePath   Name   Time
    --------------------------------------------------------------------------------------------------
    17260    	666    	DENY_NONE  0x100081	RDONLY 	NONE         	/srv/vdr/video.00   X-Men_Origins#3A_Wolverine/2011-11-06.20.05.6-0.rec   Tue Apr 16 13:37:30 2013
    17260    	666    	DENY_NONE  0x20089 	RDONLY 	EXCLUSIVE+BATCH  /srv/vdr/video.00   X-Men_Origins#3A_Wolverine/2011-11-06.20.05.6-0.rec/00001.ts   Tue Apr 16 13:37:35 2013


    Trotzdem fährt VDR runter, das sind die Einträge im syslog:



    ???

  • Code
    root@medix:/etc/vdr# vdr-dbus-send /Shutdown shutdown.ConfirmShutdown
    method return sender=:1.35 -> dest=:1.36 reply_serial=2
       int32 901
       string "user is active"
       int32 0
       string ""


    obwohl doch gar nicht nach aktiven Benutzern gesucht werden soll....


    Damit fragst du ja nur den VDR (und nicht das System selbst), ob er denkt, dass ein User aktiv ist - und die PVR-Addons verursachen z.B. immer Useraktivität (bzw. setzen die Inaktivitätsdauer auf 0), solange sie verbunden sind.
    Daher fragt das Addon ja auch ohne Berücksichtigung dieser VDR-Benutzeraktivität nach (siehe https://github.com/yavdr/vdr-p…blob/master/README#L254):

    Code
    vdr-dbus-send /Shutdown shutdown.ConfirmShutdown bool:true


    Zum WFE kann ich leider nichts sagen, das ist nicht mein Gebiet. Am besten mal im Bugtracker melden.


    Zum lifeguard-Addon gab es schon einige Threads, die eine Verbesserung des Verhaltens bei Samba-Freigaben beschrieben haben - die Abfrage scheint wohl nicht allzu zuverlässig zu sein - evtl. kannst du ja mal den lifeguard-Shutdown-Hook (/usr/share/vdr/shutdown-hooks/S91.lifeguard) einzeln nach einem "set -x" in der Shell laufen lassen und schauen weshalb der bei dir das Herunterfahren nicht verhindert.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Das ich VDR direkt abfrage ist mir klar... aber da es ja auch für lifeguard eine "usr" Konfiguration gibt, habe ich die Meldung "User active" darauf bezogen. Das damit das PVR-Addon vom XBMC gemeint ist, wird da nicht wirklich klar *find* . Wobei ... ich mein, XBMC wäre zu dem Zeitpunkt gar nicht aktiv gewesen... hmm... morgen noch mal genau drauf achten.


    Zum lifeguard-Addon gab es schon einige Threads, die eine Verbesserung des Verhaltens bei Samba-Freigaben beschrieben haben - die Abfrage scheint wohl nicht allzu zuverlässig zu sein - evtl. kannst du ja mal den lifeguard-Shutdown-Hook (/usr/share/vdr/shutdown-hooks/S91.lifeguard) einzeln nach einem "set -x" in der Shell laufen lassen und schauen weshalb der bei dir das Herunterfahren nicht verhindert.

    OK, werde ich moren probieren, gerade läuft ne Aufnahme ;)

    Zum WFE kann ich leider nichts sagen, das ist nicht mein Gebiet. Am besten mal im Bugtracker melden.

    Mach ich...

  • Zitat von »seahawk1986«
    Zum lifeguard-Addon gab es schon einige Threads, die eine Verbesserung des Verhaltens bei Samba-Freigaben beschrieben haben - die Abfrage scheint wohl nicht allzu zuverlässig zu sein - evtl. kannst du ja mal den lifeguard-Shutdown-Hook (/usr/share/vdr/shutdown-hooks/S91.lifeguard) einzeln nach einem "set -x" in der Shell laufen lassen und schauen weshalb der bei dir das Herunterfahren nicht verhindert.


    OK, werde ich moren probieren, gerade läuft ne Aufnahme ;)


    Habs gefunden.... da ist ein Fehler im S91.lifeguard Script:


    Das steht im "Auslieferungszustand" drin:



    Da $TYPE für die betr. Zeile ja "smb" ist, geht er immer in den Default Zweig; und "$(smbstatus -S | grep -cE "locks\b")" ist immer == 0 ;)


    Das sollte also wohl eigentlich richtig heißen:


    So funzt es auf jeden Fall....

  • OK, zu früh gefreut.....


    S91.lifeguard bei geöffneter Datei im smb-share per Hand (als VDR) ausgeführt ergibt das korrekte Ergebnis:

    Code
    vdr@medix:/usr/share/vdr/shutdown-hooks$ ./S91.lifeguard 
    ABORT_MESSAGE="Files open on SMB share."


    VDR mag aber immer noch herunterfahren:

    Code
    root@medix:/usr/share/vdr/shutdown-hooks# vdr-dbus-send /Shutdown shutdown.ConfirmShutdown boolean:true
    method return sender=:1.28 -> dest=:1.62 reply_serial=2
       int32 990
       string "stop vdr ; /sbin/halt -p"
       int32 0
       string ""


    Habe daraufhin ein wenig Logging nach /tmp in die S91.lifeguard eingebaut (zu Beginn ein env, dann ein date und ein paar echo's und smbstatus -L mit Umlenkung ins log aufgerufen ....), das ist das Ergebnis vom vdr-dbus-send:



    smbstatus mag es wohl nicht, wenn es von einem Prozess gestartet wird, der den User gewechselt hat ("setuid - läuft").


    Das brachte mich auf die Spur eines Thread aus 2007, wo jmd. schon mal ähnliches probiert hat incl. Lösung:


    http://www.vdr-portal.de/board/thread.php?postid=611210


    Dies ist dann jetzt die endgültige Lösung:


    1.) Im S91.lifeguard ein "sudo" vor smbstatus -L voranstellen
    2.) in der sudoers diese Zeile am Ende einfügen:
    vdr ALL=NOPASSWD: /usr/bin/smbstatus


    Nun macht vdr-dbus-send alles richtig:

    Code
    root@medix:/usr/share/vdr/shutdown-hooks# vdr-dbus-send /Shutdown shutdown.ConfirmShutdown boolean:true
    method return sender=:1.28 -> dest=:1.40 reply_serial=2
       int32 992
       string "Files open on SMB share."
       int32 224
       string ""

Jetzt mitmachen!

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