[yaVDR 0.5] Tester gesucht: yaVDR-Tools XBMC-Addon

  • Hallo,
    da XBMC als alleiniges Frontend in yaVDR schon immer gewisse Probleme gemacht hat, habe ich mal versucht eine Lösung zu schaffen, die sich besser am VDR als wichtigstes Element des Systems orientiert. Vielen Dank an Telperiar, der eine sehr gute Vorlage geliefert hat und an BJ1, dessen Skript für TVheadend mir ebenfalls einige interessante Ideen aufgezeigt hat.


    Funktionen des Addons sind:

    • XBMC bekommt einen angepassten Inaktivitätstimer, der in Abstimmung mit dem VDR läuft (unter Berücksichtigung von Plugin-Aktivität, laufenden und anstehenden Timern sowie der Shutdown-Hooks des VDR), die vom xvdr-plugin erzeugte Benutzeraktivität am VDR wird ignoriert - dies funktioniert sowohl wenn XBMC nachträglich gestartet wurde als auch wenn es als primäres Frontend läuft. Für XBMC gibt es zwei Aktivitätskriterien: Benutzereingaben und das Abspielen von Medien.
    • Bestimmte Einstellungen aus dem Setup-Menü des VDR (und ggf. seiner Plugins) können in XBMC konfiguriert werden (Einstellungen, die das xvdr-Addon setzt, habe ich bewusst ausgelassen)
    • Wurde der VDR für eine Aufnahme gestartet (NextWakeupTime in der setup.conf im Bereich von 600s um den Start des VDR), soll er sich - solange keine Benutzeraktion in XBMC erfolgt - nach der Aufnahme zum nächst möglichen Zeitpunkt herunterfahren
    • Wird beim Drücken der Power-Taste auf der Fernbedienung das Plugin mit dem Argument "check" aufgerufen (siehe weiter unten) überprüft das Plugin, ob der VDR das Herunterfahren verhindern würde - falls ein Herunterfahren zum aktuellen Zeitpunkt nicht möglich ist, wird es automatisch weiter versucht, bis der Benutzer es durch Aktivität in XBMC unterbricht
    • Erweiterter Upstart-Job für das Beenden von XBMC, um feiner differenziert steuern zu können, unter welchen Bedingungen ein sicherer Shutdown erfolgen kann


    Bekannte Einschränkungen:

    • Das Plugin liest beim Start die Einstellungen aus dem VDR ein und überschreibt damit erst mal die voreingestellten Werte in XBMC - werden diese danach in XBMC verändert, werden diese Einstellungen in den VDR übernommen (was nach dem Schließen des Konfigurationsmenüs ca. 20 Sekunden dauern kann).
    • Im Gegensatz zum bekannten Verhalten des VDR wird die Wiedergabe von Live-TV als Aktivität interpretiert - XBMC wird dann also nicht abschalten, solange dieses läuft.
    • Das Warten auf die Antwort einer dbus-Abfrage dauert ca. 1 Sekunde - dadurch kann der Shutdown von XBMC bzw. des Systems ein paar Sekunden länger dauern als bislang gewohnt, da die Abfrage z.T. zweizeitig erfolgt (um ggf. XBMC wieder zu starten, wenn ein Shutdown nicht möglich ist), funktioniert aber hoffentlich zuverlässiger als mit der bisherigen Lösung.


    TODO:

    • Weitere Einstellungen des VDR-Setups (und evtl. der Standard-Plugins von yaVDR) auch über XBMC konfigurierbar machen - hier suche ich noch Vorschläge, welche VDR-Einstellungen da Sinn machen würden
    • Lokalisierte Meldungen in XBMC, die Optionen sind schon jetzt auf deutsch und auf englisch verfügbar


    Die erste Version richtet sich insbesondere an Tester, die idealerweise auch beim Debuggen helfen können, wenn sie Fehler finden (oder zumindest einen relevanten Auszug aus dem XBMC-Log unter /var/lib/vdr/.xbmc/temp/xbmc.log mit aktivierter Debug-Ausgabe des Plugins liefern können).
    Da das Addon einige sehr neue Fähigkeiten des vdr-plugin-dbus2vdr voraussetzt (vielen Dank an mini73 dafür), muss die aktuellste Version verwendet werden. Seit heute morgen ist sie in testing-vdr für yaVDR 0.5alpha1 verfügbar und wird im Zuge eines normalen "sudo apt-get update && sudo apt-get dist-upgrade" installiert.


    Insbesondere würde mich interessieren, ob das automatische Herunterfahren funktioniert und auch das Beenden dieses Modus durch Benutzeraktivität klappt, wenn der VDR automatisch für eine Aufnahme gestartet wurde (was ich selbst schlecht testen kann, da ich momentan keinen Test-VDR dafür frei habe)


    Systemvoraussetzungen:

    • yaVDR 0.5alpha1 mit den aktuellsten Updates (eine Benutzung auf anderen Systemen, auf denen der VDR mit dem aktuellen dbus2vdr-Pluginlaufen ist prinzipiell auch möglich, dann muss die Auswertung der Shutdown-Codes und der vom yaVDR-Tools Addon erzeugten Dateien noch analog zur /etc/init/xbmc-exit.conf und dem neuen XBMC-Shutdown-Hook (https://github.com/seahawk1986…b/master/S92.xbmcactivity) in yaVDR durchgeführt werden und erfordert daher vermutlich etwas Bastelarbeit).


    Installationsanleitung:

    • XBMC als Option für das Lifeguard-Addon im Webfrontend (siehe http://www.yavdr.org/documenta…e/ch01s05.html#wfe-common) deaktivieren, sonst funktioniert das Plugin nicht wie erwartet...
    • Aktuelle Updates einspielen:

      Code
      sudo apt-get update && sudo apt-get dist-upgrade


    • das eigentliche XBMC-Addon installieren:

      Code
      sudo apt-get install xbmc-addon-yavdrtools


      Das Addon taucht dann in den Addon-Einstellungen unter "Dienste" bzw. "Services" auf.

    • Andere Energiespar-Funktionen zum Abschalten des Systems wie die von XBMC und z.B. dem xvdr-PVR Addon sollten natürlich (wie auch im Auslieferungszustand von yaVDR eingestellt) deaktiviert bleiben, da sie mit dem Addon kollidieren würden und nicht darauf ausgelegt sind auf den VDR und die in yaVDR verankerten Upstart-Skripte im gleichen Maße Rücksicht zu nehmen wie das hier vorgestellte Addon.
    • Falls XBMC als primäres Frontend genutzt werden soll (also im WFE gesetzt ist) sollte man in der /var/lib/vdr/.xbmc/userdata/keymaps/remote.xml die Zeile

      Code
      <power>XBMC.Quit()</power>

      durch diesen Aufruf ersetzen:

      Code
      <power>XBMC.RunScript(service.vdr.yavdr-tools,"check")</power>


      Wer mag kann diese Funktion auch im Skin entsprechend statt den XBMC-Shutdown-Funktionen eintragen (für Confluence: DialogButtonMenu.xml des Skins, kann aber je nach Skin variieren).


    Da XBMC durch die voreingestellte GUI-Aktualisierung im Auslieferungszustand auch bei ruhendem Home-Bildschirm von XBMC eine höhere CPU-Auslastung erzeugt als der VDR mit dem softhddevice-Frontend (liegt nicht an meinem Addon ;)), schlage ich die Nutzung einer advancedsettings.xml vor, die als /var/lib/vdr/.xbmc/userdata/advancedsettings.xml folgendes beinhaltet:

    Code
    <advancedsettings>
       <gui>
           <algorithmdirtyregions>1</algorithmdirtyregions>
           <nofliptimeout>0</nofliptimeout>
       </gui>
       <lookandfeel>
           <enablerssfeeds>false</enablerssfeeds>
       </lookandfeel>
    </advancedsettings>


    Ich freue mich auf Rückmeldungen, Verbesserungsvorschläge und konstruktive Kritik - viel Spaß damit :mua

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

    Einmal editiert, zuletzt von seahawk1986 ()

  • Hallo seahawk,


    seit dem dbus2vdr update habe ich Verbindungsabbrüche zum xvdr-Client. Das neue xbmc-addon-yavdrtools habe ich noch nicht installiert.






    Hilft das neue xbmc-addon-yavdrtools dagegen?


    Gruß


    Murry

  • seit dem dbus2vdr update habe ich Verbindungsabbrüche zum xvdr-Client.


    Das kann ich hier in meinen XBMC-Logs nicht nachvollziehen. Was steht denn zu der Zeit im Syslog?
    Das dbus2vdr-Plugin ist nicht von mir sondern von min73 - ich weiß nicht, ob da etwas geändert wurde, dass das beeinflussen kann.


    Hilft das neue xbmc-addon-yavdrtools dagegen?


    Nein, da ist nichts drin, was die Kommunikation des XVDR-Addon mit dem VDR verbessern könnte.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Lokalisierte Meldungen in XBMC, die Optionen sind schon jetzt auf deutsch und auf englisch verfügbar


    Das ist kein Hit, sofern du unter dem Root-Ordner des Addons einen Ordner languages/german bzw. languages/english mit einer strings.xml drin liegen hast. Alles, was du machen musst, um zu lokalisieren ist:


    Code
    __addonname__ = 'service.vdr.yavdr-tools'   # wie es in der addon.xml auch heisst
    __settings__ = xbmcaddon.Addon(id=__addonname__)
    __path__ = __settings__.getAddonInfo('path')
    __LS__ = __settings__.getLocalizedString


    unter __LS__(ID-Nummer) stehen jetzt die lokalisierten Strings zur Verfügung.


    Also anstelle von:


    Code
    xbmc.executebuiltin("XBMC.Notification(' Hallo Welt,Da bin ich,5000,weltkugel.png')")


    notierst du einfach:


    Code
    xbmc.executebuiltin('XBMC.Notification(' + __LS__(30030)  + ',' + __LS__(30031) + ',5000,' + __mySymbolForWeltkugel__ + ')')


    wobei für 30030, 30031


    in der jeweiligen strings.xml (Verzeichnisse german bzw english) stehen:

    Code
    <string id=30030>Hallo Welt</string>
    <string id=30031>Da bin ich!</string>


    bzw.


    Code
    <string id=30030>Hello World</string>
    <string id=30031>Here I am!</string>


    Selbst Variablensubstitution ist mit der strings.xml möglich.


    Code
    <string id=0815>Der nächste Timer wird auf %s gesetzt</string>


    Wobei dir die Formatierung von %s vollkommen frei steht ;)


    BJ1

  • Ja, danke BJ1 - die Methode hatte ich in deinem Skript schon gesehen :) - das kommt noch, mehr würde mich aktuell aber interessieren wie gut das Addon selbst arbeitet.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • mehr würde mich aktuell aber interessieren wie gut das Addon selbst arbeitet


    Da kann ich leider nicht weiter helfen - hier läuft kein VDR mehr (ja, werft mit Steinen ;) ). Ich habe mit XBMC und TVHeadend das Optimum für mich gefunden. Dank CF-Karte als "Systemplatte" kann ich auch mal andere Sachen (OpenElec, Mythtv) ausprobieren. Die Welt ist halt bunt...


    BJ1

  • ja, werft mit Steinen


    Wer außer den Bart- und Steinverkäufern würde wirklich davon profitieren?

    Dank CF-Karte als "Systemplatte" kann ich auch mal andere Sachen (OpenElec, Mythtv) ausprobieren. Die Welt ist halt bunt...


    Ich schaue auch ab und an gerne mal über den Tellerand (für sowas gibt es ja VMs, USB-Sticks und Wechselfestplatten)- aber mein Leidensdruck ist insbesondere seit dem das softhddevice-Plugin so gut läuft nicht sonderlich hoch...

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Moin!


    seit dem dbus2vdr update habe ich Verbindungsabbrüche zum xvdr-Client


    Wenn, dann ist das unabsichtlich, die beiden Plugins haben eigentlich gar nichts miteinander zu tun.
    Spiel doch einfach wieder eine alte Version ein und schau nach, ob das immer noch so ist.


    Lars.

  • Wenn, dann ist das unabsichtlich, die beiden Plugins haben eigentlich gar nichts miteinander zu tun.
    Spiel doch einfach wieder eine alte Version ein und schau nach, ob das immer noch so ist.


    Hallo Lars,


    das hat sich geklärt. Der vdr hatte sich über meine externe Festplatte beschwert (Verzeichnisse zu lang) und dadurch kann es zu diesen Verhalten. Seitdem ich die Festplatte abgezogen habe, geht es wieder ganz normal.


    Gruß


    Murry

  • Hi Seahawk, ich hab dein Addon jetzt seit ner Woche installiert, vielen Dank dafür.
    Ich hab jedoch das Problem, das beim Ausschalten XBMC neu startet, obwohl eigentlich nichts aktiv ist.
    Im Log steht "XBMC inactive", ein paar sekunden später jedoch "XBMC active", es sieht für mich aus, als ob die shutdown - hooks zwei mal aufgerufen werden, ist das beabsichtigt ?
    Ich habs jetzt umgangen indem ich einfach im S92.xbmcactivity aus dem exit 1 ein exit 0 gemacht hab, ist natürlich schlecht wenn XBMC wirklich aktiv bleiben soll, hier mal das Log bei Originalzustand:


  • Ich hab jedoch das Problem, das beim Ausschalten XBMC neu startet, obwohl eigentlich nichts aktiv ist.


    Hallo nc17,
    das muss ich mir nochmal ansehen, beim Testen ging das bei mir eigentlich...
    Wie schaltest du ab? Nutzt du den normalen Menü-Eintrag oder machst du das über den empfohlenen Shutdown-Befehl für Fernbedienung bzw. eine angepasste Menü-Funktion?


    Hast du noch das XBMC-Log (/var/lib/vdr/.xbmc/temp/xbmc.log) dazu?

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Ich schalte es wie von dir empfohlen über die Powertaste mit <onclick>XBMC.RunScript(service.vdr.yavdr-tools,"check")</onclick> bzw. über den XBMC - Ausschalttimer mit <onclick>XBMC.AlarmClock(shutdowntimer,XBMC.RunScript(service.vdr.yavdr-tools,"check"))</onclick> ab.


    Die beiden Logs:




  • Ich habe jetzt testweise in der xbmc-exit.conf vor dem Befehl zum Löschen der /tmp/xbmc-active ein sleep 5 eingebaut, jetzt fährt er herunter, scheinbar wird die Datei hier zu bald gelöscht und wieder erstellt, warum und wodurch weißt du evtl besser.



    edit: Scheint irgendwie doch Zufall gewesen zu sein, beim nächsten Versuch ging es wieder nicht, hab den Befehl zum Löschen auskommentiert, das geht...

    Einmal editiert, zuletzt von nc17 ()

  • Erstellt sollte die Datei erst wieder werden, wenn XBMC neu gestartet wird (und damit die yavdrtools aufgerufen werden).
    Kannst du mal probieren, ob es hilft das in das case-Konstrukt statt dem sleep vor dem Löschen der Datei einzubauen:

    Code
    [...]
    case $EXIT_STATUS in
        64|66)
            echo 0 > /tmp/xbmc-active
    [...]

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Dann baue ich das erstmal so ein :)
    Die nächste Version des Addons bekommt dann noch mal eine sauberere Verwaltung des ganzen.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Ich werd dann am Wochenende mal testen ob das automatische Ausschalten nach der Aufnahme klappt, ich hatte zwar letztens Timer gesetzt die auch aufgenommen hatten, aber da konnte ich nicht nachvollziehen ob die Kiste nicht eventuell durch den VDR-Timeout ausgeschalten wurde als ich wieder zu Hause war.


    Nebenbei: Gehört zwar nicht hier rein, aber wenn du schon dabei bist etwas anzupassen ;) :


    - Die Farbtasten funktionieren nicht im LiveTV - Modus, oder sind zumindest weniger sinnvoll belegt, hast du dafür noch einen anderen Plan? Ich hab jedenfalls bei mir in der remote.xml noch folgendes drin:

    Code
    <TV>
    	<remote>
      	<red>XBMC.ActivateWindowAndFocus(MyPVR, 34,0, 13,0)</red>     	<!-- Recordings -->
      	<green>XBMC.ActivateWindowAndFocus(MyPVR, 31,0, 10,0)</green> 	<!-- EPG -->
      	<yellow>XBMC.ActivateWindowAndFocus(MyPVR, 35,0, 14,0)</yellow>  <!-- Timer -->
      	<blue>ContextMenu</blue>                                      	<!-- Kontextmenue -->
    	</remote>
      </TV>


    - In die xbmc.conf sollte noch n vdr-dbus-send /Remote remote.Disable ||: rein, ansonsten hält der VDR im Hintergrund durch Druck der Pause-Taste beispielsweise das LiveTV-Signal an, egal wo ich mich in XBMC befinde.

  • - Die Farbtasten funktionieren nicht im LiveTV - Modus, oder sind zumindest weniger sinnvoll belegt, hast du dafür noch einen anderen Plan? Ich hab jedenfalls bei mir in der remote.xml noch folgendes drin:


    Ah schön, wenn der TV-Modus noch extra Tasten zulässt (wie ist es mit Aufzeichnungen, weißt du zufälligerweise, ob man da noch getrennt Tasten dafür definieren kann?), dann kann man da was machen - aktuell sollte wie für den normalen Videowiedergabemodus folgendes eingestellt sein:

    • ROT = Wechsel zum HOME-Bildschirm
    • GRÜN = 30s zurück springen
    • GELB = 30s nach vorne Springen
    • BLAU = Codec-Info


    - In die xbmc.conf sollte noch n vdr-dbus-send /Remote remote.Disable ||: rein, ansonsten hält der VDR im Hintergrund durch Druck der Pause-Taste beispielsweise das LiveTV-Signal an, egal wo ich mich in XBMC befinde.


    Guter Hinweis, damit das aber auch einen eventuellen VDR-Neustart überlebt, ist er aber wohl besser den Lirc-Sockel für den VDR auf über ein Template für die /etc/default/vdr auf LIRC=/dev/null zu lenken...

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Das ist leider ein Problem, es gibt nur ein FullscreenVideo, so weit ich weiß und deshalb ist die Tastenbelegung im Vollbild überall gleich.


    Ich hab selbst auch --lirc=/dev/null in den OPTIONS von /etc/default/vdr, das Template /usr/share/yavdr/templates/etc/default/vdr/10_main also so zB anpassen?



    Wie kann man das process-template bei Frontendwechsel automatisch mit ausführen lassen ?



    edit: Ok, hab den Ordner gefunden: /usr/share/yavdr/events/change-frontend
    Mal schauen wo das Sinn macht...

    Einmal editiert, zuletzt von nc17 ()

Jetzt mitmachen!

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