Posts by belvsdragon

    Viele kennen das wohl, dass man To-Do-Listen, Notizen und so weiter gern in Form einer einfachen Textdatei niederschreibt. Der ein oder andere wird sich vielleicht auch schon mal in die Auszeichnungssprache Markdown verliebt haben.

    Da ich nun gern auch meinen Kalender als einfache Text/Markdowndatei führen möchte, habe ich mir überlegt, dass doch bestimmt schon mal jemand die gleiche Idee gehabt haben muss und nach einem CLI-Programm bzw. Shellscript gesucht, dass einfach nur Datum und Wochentag als Liste in eine Textdatei schreibt. Leider bin ich bisher nicht fündig geworden.

    Vorgestellt hatte ich mir das folgendermaßen:

    Leider ist das auf Dauer wirklich mühselig, einen ganzen Jahreskalender so per Hand runterzutippen. Und wo bliebe denn da auch die Herausforderung?

    Irgendwie müsste das ganze mit

    Code
    date +%d

    für die Zahl des jeweiligen Tag im Monat,

    Code
    date +%a

    für den Namen des Wochentags und

    Code
    date -d=STRING

    für die Wahl des entsprechenden Datums zu machen sein.

    Code
    cal

    und

    Code
    ncal

    bringen mich leider nicht weiter. Vielleicht wäre das ganze mit Gnu gcal zu lösen.

    Falls jemand schon eine fertige Lösung kennt oder jemandem ein Licht in Bezug auf ein mögliches Shellscript aufgegangen ist, wäre ich dankbar.

    Problem gelöst:
    Der weg über die autoboot.txt funktioniert aufgrund eines Firmware-Bugs nicht, weshalb die Verantwortlichen für NOOBS da auch nichts dran ändern können. Denen geht es quasi wie mir. :D

    Aber es gibt ein Workaround:

    Code
    sudo su -c 'echo 7 > /sys/module/bcm2708/parameters/reboot_part'
    sudo reboot

    Die 7 muss man durch die Partition ersetzten, die man starten will. In meinem Fall waren das die 6 bzw. 8. Herausfinden kann man das über:

    Code
    sudo fdisk -l

    Das sieht dann so aus:

    Code
    Device Boot      Start         End      Blocks   Id  System
    /dev/mmcblk0p1            2048      238281      118117    e  W95 FAT16 (LBA)
    /dev/mmcblk0p2          245760    62268415    31011328   85  Linux extended
    /dev/mmcblk0p3        62268416    62333951       32768   83  Linux
    /dev/mmcblk0p5          253952     1302527      524288   83  Linux
    /dev/mmcblk0p6         1310720     1474559       81920    c  W95 FAT32 (LBA)
    /dev/mmcblk0p7         1482752    30832639    14674944   83  Linux
    /dev/mmcblk0p8        30834688    30957567       61440    c  W95 FAT32 (LBA)
    /dev/mmcblk0p9        30965760    62261247    15647744   83  Linux

    Die richtigen Partitionen erkennt man an der FAT32 Formatierung, wobei die erste immer die Recovery-Partition von NOOBS ist. Im Zweifel dann einfach ausprobieren, welche welche ist.

    Und beim Neustart steht der Wert dann wieder auf 0.

    Das einzige, das ich nicht verstehe ist, warum sudo su -c da steht? Ist sudo und su -c nicht in etwa das gleiche? Und warum dann beides hintereinander?

    Ich bin grad dabei Retropie und Raspbmc unter NOOBS 1.3.9 zum laufen zu bringen und wollte über zwei Shell Scripts zwischen beiden hin und her wechseln können. Unter Raspbmc mit dem Advanced Launcher und unter Retropie über einen neu angelegten "Emulator". Sah für den Anfang auch ganz einfach aus, da man ja angeblich nur eine autoboot.txt auf der Recovery-Partition erstellen muss. Die müsste man dann ja einfach nur über ein Shell Script umschreiben und dann eben reboot.
    Nur leider hab ich ziemlich schnell festgestellt, dass mein Script alles richtig macht, aber trotzdem nicht funktioniert.

    Das Problem ist auch schhon bekannt:
    https://github.com/raspberrypi/noobs/issues/150
    https://github.com/raspberrypi/noobs/issues/195

    Da kann man schon etwas hämisch werden, wenn die Leute hinter NOOBS ihre Software im Vergleich zu BerryBoot schon so sehr abspecken und dann nicht mal grundsätzliche Funktionen im Griff haben. Ob die mit NOOBS sich selbst meinen? ;)


    Kann mir jemand sagen, ob das auch mit BerryBoot gehen würde?

    Also den Schritt

    Code
    apt-get install oracle-java7-jdk


    kann man weglassen. Das Oracle Java Development Kit ist bei Raspbian schon dabei. Und das muss ich jetzt mal loswerden, weil überall immer behauptet wird JDownloader würde nicht gut auf dem Raspberry Pi laufen und überhaupt solle man doch einfach pyload nehmen:
    Wenn man JDownloader mit

    Code
    sudo nano /etc/xdg/lxsession/LXDE/autostart
    Code
    @java -Xmx512m -jar /home/pi/.jd/JDownloader.jar


    in die LXDE Autostartdatei einträgt und in den Einstellungen von JDownloader festlegt, dass er beim start sofort mit dem downloaden beginnt, dann dauert es von vom Einschalten des Raspberry Pi bis zum Downloadbeginn exakt 5 Minuten. Und danach läuft das ganze wie geschmiert. Die GUI des JDownloader reagiert dank hardfloat-Unterstützung des JDK von Oracle super flüssig! Ich hatte das ganze auch schon mal mit OpenJDK ausprobiert und das lief wirklich an der Grenze zur Unbenutzbarkeit. Scheinbar hält sich bei den meisten dieser Eindruck.


    Tipp: Da der JDownloader, wenn er ins Tray minimiert ist, noch weniger CPU in Anspruch nimmt, sollte man ihn minimiert starten lassen und zudem den unnötigen Splash-Screen ausschalten.

    Habe es selbst rausgefunden. Wer es ausprobieren will:

    Code
    sudo apt-get install pdmenu fbi omxplayer
    Code
    nano /home/pi/.pdmenurc

    Und dann das hier einfügen und speichern:


    Und dann pdmenu starten:

    Code
    pdmenu -c

    Seit längerem geht mir die Idee nicht aus dem Kopf ein Media Center für die Konsole zu machen. In vielen Fällen braucht man ja nur ein Menü, was den Inhalt von Ordnern anzeigen kann und beim dem für den jeweiligen Ordner ein bestimmtes Programm zum öffnen der Dateien festgelegt ist:

    Videos - OMXPlayer
    Bilder - fbi (framebuffer imageviewer) oder fim
    Radiorecorder - streamripper
    Chiptunes - xmp (Extended Module Player)
    Ebooks - speedreader (https://github.com/pasky/speedread)
    Youtube - pi-yt (https://github.com/rjw57/yt)
    Musik - MOC, cmus, MPD...
    Podcasts - Mashpodder
    PDFs - green (https://github.com/schandinat/green)
    Feedreader - newsbeuter

    nette Spielereien wären dabei z.B. noch:
    Uhr - tty-clock
    Kalender - cal
    Bildschirmschoner - cmatrix

    Die Auswahl an Programmen, die man in so eine Oberfläche packen könnte, wäre riesig und man könnte sich in vielen Punkten locker mit XBMC messen. Mich hat an XBMC immer schon etwas gestört, dass es so aufgeblasen wirkt. Am Anfang dachte ich, man könnte das ganze einfach als Shell-Script mit dialog machen. Dann könnte man auch eine Variante mit xdialog machen. Aber dann bin ich auf pdmenu gestoßen und dialog wirkt dagegen recht unansehnlich und etwas kompliziert. Bei pdmenu kann man ziemlich einfach die Farbgestaltung ändern und es ist generell sehr übersichtlich aufgebaut.


    http://manpages.ubuntu.com/manpages//jaun…1/pdmenu.1.html
    http://manpages.ubuntu.com/manpages//jaun…pdmenurc.5.html
    http://eureka.ykyuen.info/2009/12/26/pdm…ed-linux-users/
    http://www.bertera.it/index.php/2012…er-with-pdmenu/
    http://digfound.blogspot.de/search/label/pdmenu
    http://osworld.pl/pdmenu-czyli-j…-sie-z-konsola/
    https://inconsolation.wordpress.com/2014/02/26/pdm…-geek-showoffs/
    http://kmandla.wordpress.com/2011/03/24/a-mix-of-six/

    External Content www.youtube.com
    Content embedded from external sources will not be displayed without your consent.
    Through the activation of external content, you agree that personal data may be transferred to third party platforms. We have provided more information on this in our privacy policy.

    Als Arbeitstitel für das Projekt habe ich kurzerhand CLIPiMC gewählt:
    [C]ommand-[L]ine [I]nterface Raspberry [Pi] [M]edia [C]enter
    Es steckt das Wort Clip drin, was ganz nett ist. Man denkt dabei an Videoclips und ist damit schon sehr nah an der Bedeutung des ganzen. Für bessere Namensvorschläge bin ich jederzeit offen. ;)

    Jetzt zur eigentlichen Frage:
    Weiß jemand wie ich ein Menü in pdmenu erstellen kann, das die Dateien eines Ordners anzeigt und bei dem jeder Menüpunkt die entsprechende Datei mit einem festgelegten Programm wie z.b. OMXPlayer aufruft?

    Das hier aus der man-Datei für pdmenurc geht glaube ich in die richtige Richtung, aber weiter bin ich momentan noch nicht:

    makemenu
    This flag lets you generate menus on the fly as
    pdmenu(1) is running. It runs the command, then
    processes the output of the command as if it were
    a pdmenurc file.

    Here is a sample use of this flag. It creates a
    menu of people who are logged on, and lets you
    talk to one of them. Notice the use of remove to
    clear the menu after we use it.

    group:_Talk
    exec::makemenu: \
    echo "menu:talk:Talk"; \
    for u in ‘users‘; do \
    echo "exec:$u::talk $u"; \
    done
    show:::talk
    remove:::talk
    endgroup

    "Das ganze ist in Deutschland in dieser Bauform illegal, allein schon weil der Raspi sein CE-Zeichen nicht für diese Betriebsart bekommen haben kann. Zudem erlaubt die Bundesnetzagentur zwar seit 2006 den Betrieb von Mini-UKW-Sendern, aber diese dürfen nicht mehr als 50 nW abstrahlen (max. effektive Strahlungsleistung). Damit lässt sich üblicherweise ein Umkreis von rund 10 Metern abdecken. Der Raspi dürfte aber die zulässige Sendeleistung locker überschreiten. Experimentierfreudige Nutzer berichten, dass er auch mehrere 100 Meter überbrückt, wenn man ein Stück Draht am Ausgangspin anlegt. Deshalb und auch wegen den Harmonischen, muss man von einem Betrieb hierzulande abraten."
    http://www.heise.de/hardware-hacks…en-1921154.html

    Liegt also auch am CE-Zeichen.

    Meinst du so?

    "Wechselschalter für Steckdosen Version 1"

    #! /bin/bash

    #Status der Steckdose lesen
    status=`cat /home/pi/Steckdosen/dose1`


    #Verzeichnis wechseln
    cd /home/pi/raspberry-remote


    if [ $status = "aus" ]
    then
    echo 'an' | sudo tee -a > /home/pi/Steckdosen/dose1
    sudo ./send 10100 1 1

    elif [ $status = "an" ]
    then
    echo 'aus' | sudo tee -a > /home/pi/Steckdosen/dose1
    sudo ./send 10100 1 0
    fi

    "Wechselschalter für Steckdosen Version 2"

    #!/bin/bash

    status_datei=/tmp/Steckdose_1

    #Status der Steckdose
    [ -f $status_datei ] && status=`cat $status_datei` || status=aus

    if [ $status = "aus" ]; then
    echo an > $status_datei
    sudo /home/pi/raspberry-remote/send 10100 1 1
    elif [ $status = "an" ]; then
    echo aus > $status_datei
    sudo /home/pi/raspberry-remote/send 10100 1 0
    fi

    Ist halt ziemlich unübersichtlich für mich, wenn ich den Beitrag aktualisiere. Vielleicht ist die Anzahl der Spoiler auch limitiert? :helpnew:

    Quote

    Etwas herunterzuladen ist immer eine Hemmschwelle. Ich fände es sinnvoll, die Skripte als Code einzubinden.

    Shellskripte sind ja ohnehin nie besonders lang.

    Da hast du recht. Aber ich fände es sinnvoll beides zu tun. Also Script als Code einbinden und gleichzeitig als Attachment dranhängen. Dann wäre es einfacher die Liste oben fortzuführen.

    Ohne Antenne am Raspberry Pi kann ich mit meinem ganz normalen Radiowecker, der 1,5m vom Raspberry Pi entfernt steht, ein super Signal empfangen. Auf größere Distanz funktioniert es aber nicht. Ist das dann auch illegal? Haben die Störungen eine größere Reichweite? Es gibt doch auch diese FM-Transmitter fürs Auto usw.

    Quote

    Eigentlich programmiert man modular bzw mit Templates. Sprachen kann man so einfacher hinzufügen als jedesmal den Quellcode des "Programms" duplizieren zu müssen. Ausserdem will man nicht 20x den eigentlichen Code bearbeiten/verändern/optimieren sondern eben nur ein mal Icon_wink Immer wiederkehrende Abläufe packet man zB auch in sog. Functions (Anweisungen), damit man diese nicht 20x bearbeiten muss wenns dort nen Fehler gab oder man diese erweitern möchte sondern eben nur ein mal und der Aufruf bleibt gleich..

    Also ich hatte mich vor kurzem mal an einer Zeitansage auf Spanisch versucht und da stößt man auf ganz andere Probleme als im Deutschen. Aber vielleicht lässt sich das ja trotzdem so modular, wie du das vorschlägst, vereinfachen. Das wäre natürlich professioneller. :thumbs1:

    Quote

    Das würde ich auch begrüßen. Hätte auch das ein oder andere Skript zum einstellen

    Hab mal ein Thread dazu aufgemacht: Raspberry Pi-Shell-Scripte-Sammlung

    Du hast mal ein Shell-Script geschrieben und es nie veröffentlicht, weil es für dich zu unbedeutend war, weil du dein Projekt an einem bestimmten Zeitpunkt verworfen hast oder weil du dich schlichtweg nicht getraut hast? Dann ist hier genau der richtige Ort dies nachzuholen. Egal ob du es halb aus irgendwelchen Wikis zusammenkopiert oder professionell progammiert hast, wenn es funktioniert, dann lade es hoch.

    Die Idee hierzu ist aus folgendem Thread entstanden: Zeitansage-Script + Datumsansage-Script

    Alle hochgeladenen Scripte werden nach und nach von mir als Attachment an diesen Post drangehangen.

    Zeitansage (tts_time_de1.sh)
    Datumsansage (tts_date_de1.sh)
    Wechselschalter für Steckdosen Version 1 (Beitrag #4)
    Wechselschalter für Steckdosen Version 2 (Beitrag #5)

    Das ist wirklich mal eine super Erklärung! Die for-Schleife, sed, basename und das mit dem Inkludieren hab ich soweit verstanden. Das mit

    Code
    TIME=${TIME//%HOUR%/$hours}


    muss ich mir nochmal näher anschauen. Trotzdem: Wieder was gelernt! :)
    Ich hab mal ein paar Fragen/Aussagen versammelt, die dafür Sprechen würden doch Einzelscripte zu verwenden. So ganz will mir dieser Ansatz nämlich nicht aus dem Kopf gehen. :D


    Was ist, wenn ich verschiedene Cronjobs anlegen will und zu verschiedenen Tageszeiten unterschiedliche Sprachen bei der Zeitansage nehmen will?
    Ist das dann nicht flexibler für jede Sprache ein einzelnes Script zu nehmen?

    Würde das nicht auch mehr dem KISS-Prinzip entsprechen?
    Wenn ich mich schon schwer mit der Auslagerung in verschiedene Sprachdateien tue... Wäre bestimmt anfängerfreundlicher.

    Ich sehe die Hackability des ganzen auch größer, wenn jedes Script für sich funktioniert und einfach in ein anderes Script reinkopiert werden kann.

    Verständnisfrage: Wenn die ganzen If-Anweisungen für sprachliche Unregelmäßigkeiten wie das "Es ist ein(s) Uhr"-Problem auch in die Sprachdateien wandern, ist dann das Hauptscript sowieso nicht ziemlich leer?

    Wird das nicht ziemlich unübersichtlich, wenn man für eine Sprache 3 verschiedene Versionen macht und alles einer Datei versammelt?

    Quote


    Das versteh ich jetzt irgendwie nich icon_question2.gif
    Selbst wenn der Satzbau in einer anderen Sprache anders wäre, könnte man das flexibel regeln - habe mir die Mühe jetzt nur nicht gemacht ums nicht allzu kompliziert wirken zu lassen icon_wink.gif

    Man kann mit 'Platzhalter'n arbeiten und in den lang_X.sh Dateien die vollständigen Sätze mit Platzhalter einfügen. Im Script wird dann der Platzhalter mit der entsprechenden Variablen ersetzt und friedefreudeeierkuchen icon_biggrin2.gif

    Also ich glaube, das ist jetzt alles nicht mehr so ganz mein Level. Aber ich würd mich freuen, wenn du das ganze weiterentwickelst.

    Ich finde, man könnte ja mal eine Shell-Scripte Sammlung für den Raspberry Pi machen. Es gibt ja einige nützliche Sachen, die nur ziemlich verstreut im Netz herumliegen. Und da das meiste unter CC oder ähnlichen Lizensen steht wäre es ja ganz praktisch das alles mal zu einem Paket zu verschnüren. Mir fällt da zum Beispiel Bashpodder ein (http://lincgeek.org/bashpodder/)...