ePlakat mit Raspberry

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hi Leute!

    Ich bin neu hier in eurem Forum. Ich hoffe Ihr könnt mir mit meinem Projekt weiterhelfen.

    Projekt:

    Ich möchte gerne an 12 Standorten (die sind nicht untereinander verbunden) jeweils auf einem Bildschirm/Fernseher eine Slideshow anzeigen.

    Die Bilder für die Slideshow sollen anhand von einem FTP Mirror auf den jeweiligen Pi synchronisiert werden. es werden die Fotos von einer Zentrale aus in 12 verschieden Verzeichnisse am FTP hochgeladen. Der Pi soll in einem Zyklus von 15 Minuten mit dem Mirror kontrollieren ob es eine Änderung gibt.

    Weiters soll die Slideshow beim Starten vom Pi automatisch mitstarten.

    Stand der Dinge (folgendes habe ich schon geschaft):

    Synchronisierungs Script - status: erledigt
    - mit LFTP habe ich ein SH Datei erstellt die mir die Synchronisierung durchführt

    Automatischer Aufruf der SH - status: offen
    - ich habe versucht die SH mit Crontab im hintergrund aufzurufen - leider funktioniert mir dies nicht - habs als normaler user und als SUDO versucht den Eintrag zu machen funktioniert aber nicht;

    Anzeige der Bilder am Monitor - status: offen
    - die Anzeige der Bilder habe ich mit FEH/QIV und XBMC versucht leider kein erfolg

    Autostart von Slideshow bei Start - status: offen
    - da ich das mit der Anzeige noch nicht hin bekommen habe ist dieser punkt auch noch offen


    Ich hoffe jemand in der Community kann mir helfen. Wäre wirklich super.

    MFG Aljoscha

  • Hallo!

    Ich habe das schon gesehen das QIV das mit der Slideshow kann. ich stecke aber dabei das download Skript als Cronjob im Hintergrund auszuführen

    wenn ich das script (downl.sh) ausführe dann wird diese auch durchgeführt. wie in diversen Anleitungen habe ich dann mit crone -e den folgenden Eintrag gemacht:

    15 * * * * ./downl.sh

    diesen gespeichert und crontab neu gestartet. wenn ich aber die 15 Minuten warte passiert nicht. (Synchronisierung von Bildern findet nicht statt zuerst 10 bilder am PI - am server dann alle bilder bis auf eines gelöscht - somit sollte wenn das script ausgeführt wird nur mehr eine bild im ordner am pi sein dem ist aber nicht so)

    hab ich da was falsch gemacht oder verstehe ich das nicht. (ist leicht möglich bin mit Linux nicht so bewandert)

    mfg

    p.S.: hab es auch mit sudo cron -e versucht auch keine Änderung

  • Wenn ich das richtig verstanden habe funktioniert nur das Löschen der alten Bilder nicht? (also das -e ?)
    Das klingt nach einem Rechteproblem.

    Ist "15 * * * * ./downl.sh" der komplette Eintrag in der Crontab? Dann fehlt da der Benutzer. Es müßte wie

    15 * * * * root /kompletter/pfad/zu/downl.sh

    aussehen.

    Einmal editiert, zuletzt von orb (6. Februar 2013 um 12:55)

  • In der Normalen Crontab vom Debian wird kein Benutzername eingetragen.
    Das wird nur in den Dateien erledigt, die unter /etc/cron.* liegen.
    (/etc/cron.hourly
    /etc/cron.weekly
    /etc/cron.daily
    /etc/cron.monthly
    Die in diesen Verzeichnissen werden vom Cron-Daemon zu dem entsprechenden Zeitpunkt ausgeführt. Dort gibt es eine weitere Spalte, die den Benutzernamen des Benutzers enthält, unter dem das Script ausgeführt werden soll.

    Die Benutzer-Crontab wird mit "crontab -e" ausgeführt, wenn man der Benutzer ist.
    Verwendet wird der Editor, der in der Variablen "EDITOR" steht. Gibt es diese variable nicht, oder ist diese leer, kann man die Crontab nicht bearbeiten.
    Speichert man die geänderte Crontab, wird auch der Cron-Deamon von dieser Änderung informiert.
    Ansehen kann man sich die Crontab mittels "crontab -l"

    Ist man "root", kann man die Crontabs anderer Benutzer mittels "crontab -l -u <benutzerkennung>" oder "crontab -e -u <benutzerkennung>" scih ansehen oder bearbeiten.

    In der Crontab, und in den von der Crontab gestarteten Scripten, immer den kompletten Pfad zu dem aufgerufenen Programm eintragen.

    Die Crontab des Benutzer läd nicht die komplette Umgebung. Besonders nicht die Pfad-Variable.

    Möchte man sich dieses ersparen, kann man am Anfang des Scriptes eine eigene Umgebung setzten.

    Scripte immer im Unix-Modus speichern, da die zum ausführen von Scripten verwendeten Shells den Windows-Zeilenumbruch nicht mögen.

    Beim Testen von Scripten, die per Crontab ausgeführt werden, das Ergebnis immer in eine Datei schreiben. Auch daran denken, dass das Ergebnis bei einem Aufruf aus der Crontab anders aussehen kann als wenn man das script direkt per Hand aufruft.

    Leitet man das Ergebnis eines Crontab-Aufrufes nicht um, wird jedes mal für den Benutzer, unter dessen Kennung das Script durch die Crontab aufgerufen wird, eine Mail erstellt.

    Die normale Benutzercontab hat den folgenden Aufbau:

    Code
    m h  dom mon dow   command


    m: Minute
    h: Stunde
    dom: Tag des Monats
    mon: Monat
    dow: Tag der Woche
    command: Auszuführender Befehl

    Bei "dow" ist ein Eintrag von 0 bis 7, oder eine Kombination davon möglich. 0 und 7 sind jeweils Sonntag.Bis auf "command" kann jeder Eintrag auch ein * enthalten, dass heißt dann, dass der Befehl bei jedem dieser Ereignisse ausgeführt wird.

    In den "Zeitspalten" trägt man den gewünschten Zeitpunkt ein. Jedes mal, wenn dieser Zeitpunkt für alle Spalten erfüllt ist, wird der entsprechende Befehl aufgerufen.

    Der Zeitpunkt kann auch "errechnet" werden. Ein "*/5" in der Minuten-Spalte, bedeutet, dass der Befehl alle 5 Minuten ausgeführt wird. In der Stundenspalte wäre es zu jeder Stunde, die ohne Rest durch 5 teilbar wäre...

    Das Ergebnis des Befehls in der "Command"-Spalte kann man in eine Datei umleiten. Es gibt zwei Ergebnis-Ausgaben. Einmal die normale Ausgabe (Standardausgabe), und einmal die Fehlerausgabe.
    Diese kann man in die gleiche Datei oder zwei Unterschiedliche Dateien umleiten.
    Gibt das Script bei seinem Ablauf etwas aus, so landet das in der Standardausgabe.

    Leitet man die Ausgabe um, so kann man die Datei erweitern oder bei jeder Ausgabe neu erstellen.
    Ein Aufruf, der jeden zweiten Tag alle sieben Minuten, ausgeführt werden, und dessen Ausgabe vernichtet werden soll, sieht dann so aus:

    Code
    */7 */2 * * * /pfad/zum/befehl > /dev/null 2> /dev/null


    Schreibt man "> /pfad/zur/datei 2> /dev/null", wird das Ergebnis der Standard-Ausgabe in die benannte Datei Datei geschrieben. Und zwar bei jedem Aufruf des Scriptes durch die Crontab neu. Mit ">> /pfad/zur/datei 2> /dev/null" wird die Datei jedes mal erweitert.

    Will man den gesamten Scriptablauf eines per Crontab aufgerufenen Scriptes in der Datei sehen, kann man bei Bash, Korn- oder Bourne-Shell scripten das durch einfügen von "set -x" im Script erreichen. schreibt man später ein "set +x" in das Script, werden die folgenden Aufrufe nicht in die Datei geschrieben.
    (Andere Scriptesprachen verwenden andere Befehle).

    Die Fehlerausgabe, in die mit "2>" oder "2>>" weitergeleitet wird, kann man natürlich auch in eine Datei umleiten.

    "/dev/null" ist der Große Mülleimer. Dort kann man jederzeit alles reinschreiben.

    Möchte man etwas auffüllen, kann man "/dev/zero" verwenden. Das liefert eine unbegrenzte Anzahl von Binären Nullen.

    Computer ..... grrrrrr

    Einmal editiert, zuletzt von Rasp-Berlin (14. Februar 2013 um 14:36)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!