(Gelöst)YaVDR 0.5: Unterscheidung Aufwachen per Timer vs. Aufwachen per Powertaste?

  • Hallo Lars,


    das ist ja das selttsame. Die letzte Meldung im Log zum Shutdown lautet

    Code
    vdr-shutdown: executing /usr/share/vdr/shutdown-hooks/S90.custom as shell script

    Dannach erscheint dort nichts mehr zum Thema und der VDR versucht weiterhin, natürlich ohne Erfolg, ale fünf Minuten herunterzufahren.


    Der Inhalt meiner S.90-custom sieht so aus

    Code
    echo 'standby 0' | cec-client -s ||:
    exit 0


    Gruß


    Joachim

    Registrieter VDR User Nr. 1237


  • BTW: Mit

    Code
    start on started vdr

    im Uptart-Job wird das skript gar nicht mehr ausgeführt. Ich glaube ich muss mir Upstart noch mal sehr viel genauer ansehen.

    Registrieter VDR User Nr. 1237


  • BTW: Mit

    Code
    start on started vdr

    im Uptart-Job wird das skript gar nicht mehr ausgeführt. Ich glaube ich muss mir Upstart noch mal sehr viel genauer ansehen.


    Beim Booten oder beim Aufwachen aus dem S3? Hast du das "task" auch drin?
    "task" ist immer dann nötig, wenn der Upstart-Job keinen Daemon, sondern ein "endlich laufendes" Programm startet (darf auch mehrere Minuten dauern).



    Das "env enabled=1" scheint auch überflüssig, da es in deinem Job nicht ausgewertet wird. Wird wohl ein Überbleibsel von wayne's Script sein?


    Wird der vdr denn beim Aufwachen neu gestartet? Das syslog von so einem Vorgang wäre hilfreich.


    Lars.

  • Der Inhalt meiner S.90-custom sieht so aus

    Code
    echo 'standby 0' | cec-client -s ||:
    exit 0

    Ist nur ne Vermutung von mir, aber könnte es sein das es funktioniert wenn du den Pfad mit angibst?

    Code
    echo 'standby 0' | /usr/bin/cec-client -s ||:
    exit 0



    MegaX

    Gruß MegaX


  • Danke für die vielen Antworten. Leider hilft es alles nix. :D


    mini73:
    Leider hilft auch task und end scriptnix. So wird der Fernseher weder beim Resume noch beim regulären Booten eingeschaltet.


    Auch beim resume wird der VDR gestartet:

    Code
    Jul  9 17:56:01 HTPC vdr: [5833] VDR version 1.7.27 started


    MegaX:
    Ne, der Pfad hilft hier nichts. Der Aufruf wird ja auch ausgeführt und der Fernseher abgeschaltet. Das Problem ist ja, dass der Suspend/Shutdown danach nicht weiterläuft.
    Ich hab' auch mal (nur zur Sicherheit) einfach nur "sleep 10" in dei S90.custom geschrieben und alles andere auskommentiert. Das funktioniert (soll heissen, der suspend/shutdown läuft weiter).
    Das heisst, es liegt eindeutig an cec-client.


    Gruß


    Joachim

    Registrieter VDR User Nr. 1237


  • OK. Wer testet kann auch was erfahren. Der Upstart-Job wird ausgeführt (andere Befehle funktionieren), nur der cec-client Aufruf funktioniert nicht. Wahrscheiclich wird er vom falschen User ausgeführt.Warum der allerdings schon in der laten Form des Upsatrt-Skripts funktioniert hat (und ich habe Zeugen :D) kann ich echt nicht sagen.

    Registrieter VDR User Nr. 1237


  • OK. Wer testet kann auch was erfahren. Der Upstart-Job wird ausgeführt (andere Befehle funktionieren), nur der cec-client Aufruf funktioniert nicht. Wahrscheiclich wird er vom falschen User ausgeführt.Warum der allerdings schon in der laten Form des Upsatrt-Skripts funktioniert hat (und ich habe Zeugen :D) kann ich echt nicht sagen.


    Wenn der CEC-Adapter erst später aktiv wird, dann kann der Skript sehr wohl funktionieren, aber ins Leere gehen.


    Gerald


    HP Proliant MicroServer Gen8, Xeon E3-1230, 12 GB RAM, 3xWD red 2TB im RAID 5, 2xSundtek MediaTV Home DVB-C/T, L4M TWIN-C/T, Ubuntu Server 14.04.1, Plex Media Server
    Samsung UE55H6470

  • Moin,


    Wie wird denn der Adapter aktiviert? Gibt es ein udev Event dafür? Dann muss man das in die Upstart-Bedingung mit einbauen. Wie man da udev Events abfragt, weiß ich aber gerade nicht. Bei Upstart 1.8 gibt es da glaube ich eine bridge, aber ob die bei 1.6 (precise Standard) auch aktiv ist, weiß ich nicht. Hab auch gerade nicht viel Zeit, das zu suchen.


    Lars.

  • Moin!


    Hier der Abschnitt über udev im Upstart Cookbook:
    http://upstart.ubuntu.com/cookbook/#upstart-udev-bridge


    Auf meinem Testsystem hab ich Upstart 1.8, da hab ich auch die upstart-udev-bridge. Ob die bei dir auch läuft, siehst du daran, ob es einen entsprechenden Upstart-Job gibt:

    Code
    $ status upstart-udev-bridge
    upstart-udev-bridge start/running, process 345


    Interessant wäre wahrscheinlich sowas wie usb-device-added bzw. usb-device-changed. Aber wie da auch zu lesen ist, muss der Adapter zum Zeitpunkt dieses Events noch nicht vollständig verfügbar sein. Aber das lässt sich dann vielleicht mit einem sleep im Script lösen.


    Poste doch mal die Ausgabe von

    Code
    udevadm info --name=/dev/pfad/zum/cec-adapter --query=all
    udevadm info --name=/dev/pfad/zum/cec-adapter --query=all --attribute-walk


    damit ich sehe, was für Attribute das Ding hat. Am interessantesten sind wahrscheinlich vendor, serial usw.
    Dann ließe sich der Upstart-Job erweitern um:

    Code
    start on started vdr and usb-device-changed ID_VENDOR_ID=... ID_MODEL_ID=... ID_SERIAL=...


    Ob das changed-Event aber auch während des Betriebs irgendwann auftritt, weiß ich nicht, dann würde der Task noch mal gestartet werden. Aber das ist vermutlich nicht weiter wild, denn entweder ist der TV dann schon an oder er wird gar nicht erst angeschaltet.


    Lars.

  • Hallo mini73,


    Aber bitteschön:


    Die upstart-udev-bridge guibt es im stable yaVDR auch.


    udevadm info --name=/dev/ttyACM0--query=all


    und


    udevadm info --name=/dev/ttyACM0--query=all --attribute-walk


    Ich versuch mal was damit zu basteln.


    Gruß


    Joachim

    Registrieter VDR User Nr. 1237


  • Moin!


    Ich würde wahrscheinlich einfache Upstart-Jobs erstellen, die nur einen Eintrag im syslog machen, z.B.:

    Code
    task
    start on started vdr and usb-device-added ID_VENDOR_ID=2548 ID_MODEL_ID=1001
    
    
    script
    /usr/bin/env | /usr/bin/logger -t usb-device-added
    end script


    und dann noch einen für usb-device-changed, um zu sehen, welche von denen in welcher Reihenfolge gefeuert werden.
    Wahrscheinlich wird's das added-Event mit ID-Einträgen gar nicht geben, sondern nur das changed-Event. Könnte sein, dass die ID-Felder bei added noch gar nicht existieren und deshalb der Filter nicht funktioniert.
    Sonst einfach nur "start on started vdr and usb-device-added", dann bekommt man aber für alle angeschlossenen USB-Geräte einen Eintrag.


    Lars.

  • OK. Weiteres rumprobieren hat folgendes erbracht:


    Der Startzeitpunkt des Upstartjob ist (noch) nicht das Problem. Wenn ich start on started vdr angebe startet der Upstartjob ja auch bei sudo restart vdr.Das der Job startet habe ich überprüft. Selbst bei laufendem System mit gerade erfolgreich manuell getestetem cec-client wird aber der der Befehl nicht ausgeführt. Ich habe dann den ganzen Block um den dbus2vdr und cec-client in ein Script in /usr/bin ausgelagert und dieses vom Upstartjob afrufen lasen. Zur Kontrolle habe ich im Upstart-Job und dem Script jeweils einen Touch-Befehl mitgegeben um zu testen ob sie wirklich aufgerufen werden und Befehle ausgeführt werden. Resultat wieder: Upstart-Job läuft, touch wird ausgeführt, aber das Skript nicht gestartet (und auch der touch-Befehl darin natürlich nicht).


    Wieder zurück zur Upstart-Anleitung. Irgendwas stimmt da gar nicht.

    Registrieter VDR User Nr. 1237


  • Bei einem "restart vdr" werden aber nicht die udev-Events ausgelöst. Die müssten aber kommen, wenn du bei laufendem vdr das Ding aus- und wieder einstöpselst.


    Ansonsten sind auch logger-Aufrufe hilfreich, ist quasi printf-Debugging. Ausgaben mit "echo" findest du sonst auch unter /var/log/upstart/<jobname>.log. Syslog finde ich persönlich aber praktischer.


    Lars.

  • Das "task" hast du aber schon drin, oder? Das ist wichtig (meiner Meinung nach).
    http://upstart.ubuntu.com/cookbook/#task


    Aber ich stimme dir zu, Upstart ist nicht einfach zu erlernen... Ich bin da auch weit weg von "Guru", ich rate mit dir mit. :)


    Lars.

  • Funktioniert das bei dir?


    Lars.

  • Hallo Lars,


    Bei einem "restart vdr" werden aber nicht die udev-Events ausgelöst. Die müssten aber kommen, wenn du bei laufendem vdr das Ding aus- und wieder einstöpselst.


    In meiner Testversion stand ja nur noch start on started vdr und die Funktion des cec-client abe ich zuvor "per Hand" getstet.


    Das "task" hast du aber schon drin, oder? Das ist wichtig (meiner Meinung nach).


    Ja, hatte ich drin.


    Funktioniert das bei dir?


    So. Jetzt ist es passiert! :§$% Jetzt hast Du es getan!! :firedevil Jetzt musst Du mir erklären, warum ein Python-Script da funktioniert und ein BASH-Script das das selbe macht nicht. :wand


    Dein Script funktioniert bisher in allen Lebenslagen (Restart vdr, reboot, resume). Ob die dbus-Abfrage immer richtig funktioniert (Wenn Start per Timer) muß ich noch ausprobieren.


    Vielen, vielen Dank für Deine Hilfe!


    Ich markiere den Thread jetzt erst mal als "gelöst" und mache wegen des Problems mit der S.90-custom vileicht einen neuen auf.



    Gruß


    Joachim

    Registrieter VDR User Nr. 1237


  • Moin,


    Schön, dass es funktioniert. Ich hab aber keine Ahnung, warum ein Shellscript nicht geht.
    Aber die dbus2vdr-Abfragen sind sowieso viel schöner in Python... :)


    Vielleicht komme ich heute Abend auch noch mal dazu, eine Shell-Variante auszuprobieren, keine Ahnung, ob mir da eine passende Erklärung einfällt.


    Lars.

  • Hallo,


    funktioniert wirklich super. Was muss man denn da noch eintragen, damit
    beim Shutdown der TV auch wieder automatisch ausgeschaltet wird?


    Danke


    Dirk

    Hardware VDR-1 und VDR-2: Zotac D2550 ITX WIFI Supreme, ATRIC IR-Empfänger, Streacom-Gehäuse, Logitech Harmony Touch, 6 x Sundtek
    MediaTV Pro, 4 x Sundtek SkyTV Ultimate auf Server mit
    Zotac D2550 ITX WIFI Supreme, NAS QNap 412, Software: yaVDR-0.6.1 - Kodi 16

  • Hi..
    na am besten in:


    [size=10]nOpacity: Icons
    [size=10]skindesigner: tryoutsglassy

Jetzt mitmachen!

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