Rechner abschalten nach Aufnahme?

  • Ich glaube BJ1 verzichtet mit seinem Vorschlag auf die Nutzung des Inaktivitäts-Timeouts...


    - Geht der Chef ins Bett und drückt Power (auf der FB!), wird der Service neu gestartet. Liegt nichts an, wird runtergefahren, vorher werden Timer gesetzt. Läuft eine Aufnahme oder liegt demnächst eine an, sagt der Service "Ok, Auschalten ist vorgemerkt - aber erst, wenn die Aufnahme durch ist".


    Hast du da ein Code-Beispiel?

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Ich glaube BJ1 verzichtet mit seinem Vorschlag auf die Nutzung des Inaktivitäts-Timeouts...


    Dann dürfte es aber schwer sein die VDR-Aktivität zu triggern. Dann muss sich dieses Überwachungsplugin ja überall reinhängen. Useraktivität ist ja mehr als zu wissen ob die Fernbedienung gedrückt wird. Useraktivität können ja auch Hintergrundprocesse sein (z.B. ein XBMC-Client der remote verbunden ist).


    cu

  • Das hängt ja immer von der individuellen Anforderung an das System ab, ob man auf mehr als User-Aktivität an der Fernbedienung achten möchte (mit dem dbus-Plugin kann man das für den VDR zumindest schon mal abfragen ob da noch Plugins werkeln oder ob der Shutdown aufgrund eines Shutdownhooks verhindert wurde) - bei XBMC gibt es AFAIK nur den Inaktivitäts-Timeout für Eingaben und die Möglichkeit abzufragen ob gerade Medien wiedergegeben werden - viel mehr dürfte soweit ich es weiß nur schwer umzusetzen sein.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • bei XBMC gibt es AFAIK nur den Inaktivitäts-Timeout für Eingaben und die Möglichkeit abzufragen ob gerade Medien wiedergegeben werden


    Das ist richtig. Wobei ich den Inaktivitäts-Timeout verwende.

    Ich glaube BJ1 verzichtet mit seinem Vorschlag auf die Nutzung des Inaktivitäts-Timeouts..


    Ebenfalls richtig. Ich muss ehrlich sein, den Inaktivitätstimer (vom VDR) habe ich nie gebraucht.

    Zitat

    Useraktivität ist ja mehr als zu wissen ob die Fernbedienung gedrückt wird. Useraktivität können ja auch Hintergrundprocesse sein (z.B. ein XBMC-Client der remote verbunden ist).


    Das könnte man noch implementieren. Wobei ich da Bauchschmerzen habe. Meine Installationen laufen autark. Die sind weder auf TV-Server angewiesen noch dienen sie als Server für andere Clients. Einfach nur HTPCs - all in One.


    BJ1

    Einmal editiert, zuletzt von BJ1 ()

  • BJ1:

    Hast du da ein Code-Beispiel?


    Mich würde vor allem interessieren, wie du den Start/Stop den Dienstes bei Tastendrücken umsetzt.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Hast du da ein Code-Beispiel?


    Hier ist die Main-Loop des Plugins:


    Das Prozedere findet in den ersten Codezeilen statt. Ist xbmc.GetGloblaIdleTime < als die Laufzeit des Services, wurde eine Taste gedrückt oder XBMC aus dem Idle-Zustand geweckt. Ansonsten wird zyklisch (CYCLE) gepollt, ob Aufnahmen laufen. Wäre z.B. per SVDRP ebenfalls möglich. Das Script (Service) wird übrigens per <Power>-Event in der keymap.xml getriggert. Wird der Service gestartet, testet dieses auf eine vorhandene PID. Gibts die nicht, wurde der Service beim Starten von XBMC (Wakeup) mit gestartet, ist sie vorhanden - wars der Chef mit der Power-Taste bei bereits laufendem XBMC. Der Service wird übrigens auch beim Einschalten sofort beendet, wenn es für diesen Service nichts zu tun gibt.


    BJ1

  • Das Script (Service) wird übrigens per <Power>-Event in der keymap.xml getriggert.


    Geht das über executebuiltin('XBMC.RunScript(/path/to/myscript.py)')? Für Services habe ich das so nicht dem Wiki entnehmen können, dass das geht... nur für Skripte.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Code
    <power>XBMC.RunScript(script.program.pvrmanager)</power>


    Ob ein Script ein Script oder ein Service ist, nagelst du in der addon.xml fest...


    BJ1

  • Ok, danke - wieder was gelernt :)

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Mann, was bin ich blöde :)
    Da meine Installation außer der in diesem Thread angesprochenen "Eigenschaft" richtig gut und stabil läuft, wollte ich wieder basteln.
    Ich habe mir die service.vdr.powersafe-0.1.0.zip heruntergeladen und die Zeilen, wie von seahawk1986 empfohlen, in der Datei powersave.py geändert.


    Dann bin ich gescheitert, leider :(


    Zuerst habe ich wieder eine *.zip Datei daraus gemacht und wollte das in XBMC als Addon installieren. XBMC meldet... falsches Format.


    Dann habe ich den Befehl ausprobiert: root@XBMC:/test/service.vdr.powersafe/resources/lib python powersave.py


    Die Ausgabe ist:

    Zitat

    Traceback (most recent call last):
    File "powersave.py", line 2, in <module>
    import xbmc, xbmcaddon, xbmcgui, xbmcplugin
    ImportError: No module named xbmc

    Wie kann diese Datei installiert werden? Weiß da jemand etwas?

    SSD1: Asus AT3IONT-I, Mystique SaTiX-S2 V2 Dual, MLD 5.1 stable, SATA 1TB, Harmony FB 700, Atric Einschaltmodul
    SSD2: Testsystem - Hardware wie SSD1, MLD 5.1 stable
    Raspi3 mit MLD 5.3 stable, DVB-S Stick, FB an GPIO

  • Wie kann diese Datei installiert werden? Weiß da jemand etwas?


    XBMC nutzt den Python-Interpreter des Systems, führt den Code aber in seinem eigenen Context aus.

    Zuerst habe ich wieder eine *.zip Datei daraus gemacht und wollte das in XBMC als Addon installieren. XBMC meldet... falsches Format.


    Magst du mir die mal schicken, dann werfe ich einen Blick drauf

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • seahawk1986
    Ich habe dir die Datei per PN geschickt. Wäre toll, wenn du dich mit meinem "Unvermögen" auseinandersetzen würdest.
    Ich habe mit dem im Apple System integrierten Programm gezippt.

    SSD1: Asus AT3IONT-I, Mystique SaTiX-S2 V2 Dual, MLD 5.1 stable, SATA 1TB, Harmony FB 700, Atric Einschaltmodul
    SSD2: Testsystem - Hardware wie SSD1, MLD 5.1 stable
    Raspi3 mit MLD 5.3 stable, DVB-S Stick, FB an GPIO

    Einmal editiert, zuletzt von eivissa ()

  • XBMC nutzt den Python-Interpreter des Systems, führt den Code aber in seinem eigenen Context aus


    ...und bindet in diesem Fall seine eigenen xbmc*-Module (gui, addon, ...) ein. Dem "System"-Python-Interpreter sind die xbmc*-Module nicht bekannt, daher die Fehlermeldung.


    Ich kann sehr gerne mal "syntaktisch" rüberschauen. Mit dem Testen selbst wird das leider nichts, da hier kein VDR läuft...


    BJ1


    [EDIT]: Die Änderungen hast du aber wohl Linux-konform abgespeichert? Soweit ich weiss, wird bei Apple (bis vor OS X) [CR] als Zeilenende genutzt (Linux [LF], Windows [CRLF])

    Einmal editiert, zuletzt von BJ1 ()

  • Hallo
    Dank seahawk1986 läuft das XBMC-Addon-Powersave fast wie es soll. Aber leider nur fast. :(
    Kurz die Hintergründe:
    Der XBMC/VDR Rechner wird normalerweise vom VDR heruntergefahren, indem in der remote.conf nur ein Eintrag steht:

    Code
    LIRC.Power  	Standby


    Dazu wurden aus der Lircmap.xml die Einträge von Standby oder Power entfernt. (Welchen... habe ich vergessen)


    Stand bis heute:
    Rechner wacht auf für Timer-Aufnahmen und geht wieder aus nach der eingestellten Zeit im Addon (30 min)
    Wenn mehrere Timer anstehen, ohne daß der Rechner über VDR heruntergefahren wird, wacht er nicht mehr auf.
    Also -> ein Timer am Morgen... funktioniert, da am Abend vorher der Rechner via FB (VDR) abgeschaltet wurde. Dreißig Minuten nach Ende der Aufnahme schaltet sich der Rechner aus.
    Beim nächsten Timer, ca. drei Stunden später, schaltet sich der Rechner nicht mehr ein. Die FB wurde indessen nicht angerührt.


    Schön wäre es, wenn der Rechner bei längerer Abwesenheit für Timer einschalten würde und danach wieder ausgeht und wieder aufnimmt, ohne daß der "Chef" vor der Glotze sitzt. ;)

    SSD1: Asus AT3IONT-I, Mystique SaTiX-S2 V2 Dual, MLD 5.1 stable, SATA 1TB, Harmony FB 700, Atric Einschaltmodul
    SSD2: Testsystem - Hardware wie SSD1, MLD 5.1 stable
    Raspi3 mit MLD 5.3 stable, DVB-S Stick, FB an GPIO

  • Schön wäre es, wenn der Rechner bei längerer Abwesenheit für Timer einschalten würde und danach wieder ausgeht und wieder aufnimmt, ohne daß der "Chef" vor der Glotze sitzt.


    Ich muss mal nachsehen, ob ich da alle Vorkommen von self.setWakeUp() erwischt habe, sonst ist eigentlich nur der VDR selbst dafür verantwortlich, wann er den Wakeup-Timer über sie Shutdown-Hooks setzt...

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Ah, da hat Dropbox die falsche Version übernommen bzw. die richtige falsch benannt - lösch mal das Addon aus XBMC und nimm die Datei: https://dl.dropbox.com/u/960809/service.vdr.powersafe.zip

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • seahawk1986
    Die neue Datei funktioniert nicht, XBMC mosert wegen Skriptfehler.
    Eine Lösung ist momentan auch nicht wichtig, ich habe gestern yaVDR 05 installiert. Du schreibst im announce Thread, es sei eine alpha Version. Bei mir läuft sie momentan als stable :) trotz des bösen Plugins vom besten Freund.

    SSD1: Asus AT3IONT-I, Mystique SaTiX-S2 V2 Dual, MLD 5.1 stable, SATA 1TB, Harmony FB 700, Atric Einschaltmodul
    SSD2: Testsystem - Hardware wie SSD1, MLD 5.1 stable
    Raspi3 mit MLD 5.3 stable, DVB-S Stick, FB an GPIO

  • Hallo,


    ich habe das Problem mit Bash Scripten für mich gelöst.


    Als Hauptfrontend läuft xbmc mit xvdr. Steht eine Aufnahme an, wacht der Rechner auf, nimmt auf, und XBMC schickt den Rechner wieder schlafen. Das funktioniert mit Suspend oder auch mit richtigem Shutdown.


    In XBMC eingestellt habe ich eine Nutzerinaktivität von 20 Minuten. Ausschalten Aktion: Bereitschaft
    XBMC nutzt zum herunterfahren Consolekit und da kann man eingreifen, falls das System heruntergefahren werden soll. Allerdings muss man an einer System Datei herumfummeln, was leider nicht Updatesicher ist (AFAIK muss HAL deinstalliert werden fall vorhanden).
    Stösst XBMC einen Shutdown an, so wird das Script /usr/lib/ConsoleKit/scripts/ck-system-stop gestartet:

    Bash
    #!/bin/sh
    touch /tmp/XBMCShutdown
    svdrpsend hitk power
    exit 0
    #... ab hier original code, der nicht ausgeführt wird


    Dann gibt es noch einen Shutdown hook, der prüft ob die Datei /tmp/XBMCShutdown existiert, wenn ja exit 0, sonst prüfen ob XBMC läuft und wenn ja exit 1.


    Das ist im Grunde schon alles. XBMC triggert den Shutdown und Consolekit deligiert ihn weiter an vdr. XVDR scheint dann jedenfalls nicht mehr dazwischenzufunken. Scheinbar weiss er wann schluss ist.


    Zum Suspenden via pm-utils muss man eigentlich nichts machen, außer ein entsprechendes Script anzulegen. Bei mir sieht das so aus:


    /usr/lib/pm-utils/sleep.d/100dvb

    Wie man sieht, wird lediglich vdr beendet und dann der Rechner schlafen gelegt. Die Programmierung des Aufwachtermins übernimmt ein Script, das auch über einen shutdown-hook gestartet wird, falls der Rechner über das XBMC Menü heruntergefahren wird.

    Grüße


    Hannemann

Jetzt mitmachen!

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