Also stammt der SVDRP-Port so nicht aus dem Paket, sondern wurde von dir extra so gesetzt?
[XBMC Addon] Powersave für VDR
-
-
wenn man halt zu faul ist, diverse skripte oder PHP's anzupassen, die per SVDRP Daten vom VDR gezogen haben, macht mans halt "dreckig"
-
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 - aber bislang ist uns nichts besseres eingefallen... -
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 - 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
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
-
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:
Code
Alles anzeigen################################################################################# # # # The following configuration file is generated automatically by the yaVDR # # system. Don't change this file as every update of yaVDR will overwrite # # the local changes. Instead put your required customizations # # into /etc/yavdr/templates_custom/ based on the original templates # # under /usr/share/yavdr/templates. # # # # http://www.yavdr.org/developer-zone/template-overview/ # # # # # ################################################################################# # # /etc/vdr/lifeguard.conf - configuration file for VDR lifeguard # # See manpage for vdr-addon-lifeguard (`man vdr-addon-lifeguard`) # tcp nfs NFS\ Mount\ is\ still\ active smb locks Files\ open\ on\ SMB\ share.
=> keine "usr" Zeile, trotzdem bekomme ich bei einer dbus - Anfrage:
Coderoot@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:
Coderoot@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
Alles anzeigenApr 16 13:48:05 medix vdr: [22245] dbus2vdr: new message, object /Shutdown, interface org.freedesktop.DBus.Introspectable, member Introspect Apr 16 13:48:05 medix vdr: [22245] dbus2vdr: introspect object /Shutdown with Introspect Apr 16 13:48:05 medix vdr: [22245] dbus2vdr: new message, object /Shutdown, interface de.tvdr.vdr.shutdown, member ConfirmShutdown Apr 16 13:48:05 medix vdr: [22245] dbus2vdr: 1 idle message handler, reusing 0x7f87c40047c0 Apr 16 13:48:05 medix vdr: [23235] dbus2vdr message handler thread started (pid=22137, tid=23235, prio=high) Apr 16 13:48:05 medix vdr: [23235] dbus2vdr: calling shutdown-hook-wrapper /usr/share/vdr-plugin-dbus2vdr/shutdown-wrapper /usr/share/vdr/shutdown-hooks Apr 16 13:48:05 medix shutdown-wrapper: [23236] dbus2vdr-shutdown-wrapper: asking shutdown-hook /bin/sh /usr/share/vdr/shutdown-hooks/S90.acpiwakeup Apr 16 13:48:05 medix shutdown-wrapper: [23236] dbus2vdr-shutdown-wrapper: result(0) = (null) Apr 16 13:48:05 medix shutdown-wrapper: [23236] dbus2vdr-shutdown-wrapper: asking shutdown-hook /bin/sh /usr/share/vdr/shutdown-hooks/S90.custom Apr 16 13:48:05 medix shutdown-wrapper: [23236] dbus2vdr-shutdown-wrapper: result(0) = (null) Apr 16 13:48:05 medix shutdown-wrapper: [23236] dbus2vdr-shutdown-wrapper: asking shutdown-hook /bin/sh /usr/share/vdr/shutdown-hooks/S90.nvram-wakeup Apr 16 13:48:05 medix vdr-nvram-wakeup: nvram-wakeup functionality is disabled Apr 16 13:48:05 medix shutdown-wrapper: [23236] dbus2vdr-shutdown-wrapper: result(0) = (null) Apr 16 13:48:05 medix shutdown-wrapper: [23236] dbus2vdr-shutdown-wrapper: asking shutdown-hook /bin/sh /usr/share/vdr/shutdown-hooks/S91.lifeguard Apr 16 13:48:05 medix shutdown-wrapper: [23236] dbus2vdr-shutdown-wrapper: result(0) = (null) Apr 16 13:48:05 medix shutdown-wrapper: [23236] dbus2vdr-shutdown-wrapper: asking shutdown-hook /bin/sh /usr/share/vdr/shutdown-hooks/S92.xbmcactivity Apr 16 13:48:05 medix shutdown-wrapper: [23236] dbus2vdr-shutdown-wrapper: result(0) = XBMC INACTIVE Apr 16 13:48:05 medix shutdown-wrapper: [23236] dbus2vdr-shutdown-wrapper: asking shutdown-hook /usr/share/vdr/shutdown-hooks/S99.shutdown Apr 16 13:48:05 medix shutdown-wrapper: [23236] dbus2vdr-shutdown-wrapper: result(0) = SHUTDOWNCMD="stop vdr ; /sbin/halt -p" Apr 16 13:48:05 medix vdr: [23235] dbus2vdr: result(0) = SHUTDOWNCMD="stop vdr ; /sbin/halt -p"
???
-
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):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.
-
Zitat von »Snoopy_1978«
Quellcode
1
2
3
4
5
6root@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-plugin-dbus…r/README#L254):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:
Code
Alles anzeigensmb) # samba locks or shares case "$TYPE" in lock*) if [ $(smbstatus -L | wc -l) -gt 2 ]; then REASON=${DESCRIPTION:-"Samba locks"} break 2 fi continue 2 ;; share*) if [ $(smbstatus -S | wc -l) -gt 4 ]; then REASON=${DESCRIPTION:-"Samba shares"} break 2 fi continue 2 ;; *) if [ $(smbstatus -S | grep -cE "$PATTERN\b") -gt 0 ]; then REASON=${DESCRIPTION:-"$PATTERN"} break 2 fi continue 2 ;; esac continue ;;
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:
Code
Alles anzeigensmb) # samba locks or shares case "$PATTERN" in lock*) if [ $(smbstatus -L | wc -l) -gt 2 ]; then REASON=${DESCRIPTION:-"Samba locks"} break 2 fi continue 2 ;; share*) if [ $(smbstatus -S | wc -l) -gt 4 ]; then REASON=${DESCRIPTION:-"Samba shares"} break 2 fi continue 2 ;; *) if [ $(smbstatus -S | grep -cE "$PATTERN\b") -gt 0 ]; then REASON=${DESCRIPTION:-"$PATTERN"} break 2 fi continue 2 ;; esac continue ;;
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:
Codevdr@medix:/usr/share/vdr/shutdown-hooks$ ./S91.lifeguard ABORT_MESSAGE="Files open on SMB share."
VDR mag aber immer noch herunterfahren:
Coderoot@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:
Code
Alles anzeigenSHELL=/bin/bash TERM=linux LC_ALL=de_DE.UTF-8 USER=vdr PATH=/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/sbin:/sbin:/bin _=/usr/bin/env JOB=networking PWD=/ RESULT=ok VDR_CHARSET_OVERRIDE=ISO-8859-9 LANG=de_DE.UTF-8 SHLVL=3 HOME=/var/lib/vdr LANGUAGE=de_DE UPSTART_INSTANCE= LOGNAME=vdr UPSTART_EVENTS=started started stopped INSTANCE= UPSTART_JOB=vdr Mi 17. Apr 11:23:35 CEST 2013 STARTED LIFEGUARD IN SMB BRANCH IN LOCK SUB-BRANCH, this is smbstatus -L smbstatus should not be run setuid FINISHD. THIS IS REASON:
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/smbstatusNun macht vdr-dbus-send alles richtig:
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!