[solved] svdrpsend Screenshot mit der S2-6400 schlägt fehl (jetzt mit ifttt.com Rezept und Script)

  • Moin,


    ich würde gerne ein Screenshot meines Fernsehbildes erstellen und mittels ifttt an mein Philips Hue weiterleiten.


    Leider bekomme ich es nicht hin.


    dory ~ # svdrpsend GRAB - 85 | cat
    220 dory SVDRP VideoDiskRecorder 2.0.2; Wed Jul 2 12:28:34 2014; UTF-8
    451 Grab image failed
    221 dory closing connection


    Per Dateiname geht es gar nicht. Das 'cat' ist nur zum debuggen drin, später verarbeite ich es anders weiter.


    Hat jemand einen Tip für mich?


    Gruß Magnus

  • Vielleicht eine zu alte Version der Firmware für die Karte - was für eine Distribution verwendest du denn?
    Laut http://www.hubertus-sandmann.h…ne.de/VDR.htm#DVB-Treiber muss man das Modul noch mit der passenden Option laden lassen, damit der Grab-Befehl funktioniert:

    Damit der Treiber zukünftig grundsätzlich mit der richtigen Interrupt-Option geladen wird und auch der Grab-Befehl funktioniert, ist in der Datei /etc/modprobe.d/99-local.conf noch folgender Inhalt zu ergänzen:

    Code
    # SAA716x_ff
    # parm: int_type:force Interrupt Handler type: 
    #       0=INT-A, 1=MSI, 2=MSI-X. default INT-A mode (int)
    # parm: int_count_enable: enable counting of interrupts (int)
    # parm: verbose: verbose startup messages, default is 1 (yes) (int)
    # parm: video_capture:capture digital video coming from STi7109: 0=off, 1=one-shot. default off (int)
    
    
    options saa716x_ff int_type=1 video_capture=1

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Moin!


    Das war der entscheidene Hinweis!


    Vielen Dank dafür!


    Ich verwende übrigens Gentoo mit veraltetem vdr, Treibern und Firmware.


    Ich arbeite aber gerade dran das wieder upzudaten. ;)
    Die Option des Moduls funktioniert aber zum Glück schon mit meinen Verionen.


    Gruß Magnus

  • Moin nochmal,


    da war ich etwas zu voreilig.


    Zwar kann ich jetzt den Befehl ohne Fehler absetzen, aber ich bekomme da kein gültiges JPG raus.


    Code
    svdrpsend GRAB -| sed -n -e 's/^216-//p' -e '1ibegin-base64 644 -' -e '$a====' | uudecode > grab.jpg
    
    
    uudecode fatal error:
    standard input: invalid input����JFIF��C


    Habe schon verschiedene Sachen probiert, aber ich finde leider keine Lösung.


    Gruß Magnus

  • Klappt es denn mit der Angabe eines Dateinamens oder landet dann auch keine passende Datei im grab Verzeichnis?

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • tach!


    Mit einem Dateinamen funktioniert es leider so gar nicht.


    Code
    dory ~ # svdrpsend GRAB wurstwasser.jpg 85
    220 dory SVDRP VideoDiskRecorder 2.0.2; Wed Jul  2 14:09:57 2014; UTF-8
    550 Grabbing to file not allowed (use "GRAB -" instead)
    221 dory closing connection


    Magnus

  • Mit einem Dateinamen funktioniert es leider so gar nicht.


    Dann gib dem VDR doch mal ein Verzeichnis mit, in das er die Bilder ablegen darf:

    Code
    -g DIR,   --grab=DIR     write images from the SVDRP command GRAB into the
                               given DIR; DIR must be the full path name of an
                               existing directory, without any "..", double '/'
                               or symlinks (default: none, same as -g-)

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Dann bleibt jetzt nur noch die Frage offen warum das mit dem Dekodieren der Bilder in der Shell nicht mehr wie im Wiki angegeben klappt.


    Ich denke der Fehler ist, dass da die Zeilenenden "\r\n" in der Ausgabe von svdrpsend drin bleiben und dann das base64-encodierte Binary ungültig ist - wenn man die entfernt klappt es:

    Code
    svdrpsend GRAB - | sed -n -e 's/^216-//p'  | tr -d '\r\n' | sed -e '1ibegin-base64 644 -' -e '$a====' | uudecode > test.jpg

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Moin,


    vielen Dank nochmal für deine Unterstützung.


    Ich dachte die Umbrüche gehören darein. Da fehlt es mir dann einfach an fundierten Fachwissen.


    Damit es dann komplett ist hier das Ergebnis:


    Der Script den ich per Cron aufrufe (muss ich noch verschönern):

    Code
    dory DVB # cat /usr/local/bin/screenshot2hue.sh
    #!/bin/bash
    /usr/bin/svdrpsend GRAB - 75 | sed -n -e 's/^216-//p'  | tr -d '\r\n' | sed -e '1ibegin-base64 644 -' -e '$a====' | uudecode > /tmp/hue.jpg
    echo "VDR Screenshot an Hue weiterleiten #vdr2hue" | /usr/bin/mail -s "VDR Screenshot an Hue weiterleiten #vdr2hue" -a /tmp/hue.jpg -r muster@mann.de trigger@ifttt.com


    Das passende ifttt Rezept .


    Gruß Magnus

Jetzt mitmachen!

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