Posts by meigrafd

    Ich weiss nicht genau ob das wie gewünscht funktionieren würde:
    Vielleicht kann man das starten von OpenVPN verzögern indem man die Runlevel Start-Script's verändert :huh:
    Denn soweit ich das sehe wird OpenVPN vor dem Ausführen der rc.local ausgeführt..


    Der Header vom /etc/init.d/openvpn Script sieht so aus:


    Dh. das Script wird beim Runlevel 2 , 3 , 4 und 5 gestartet und beim Runlevel 0 , 1 und 6 gestoppt


    Zu welchem Zeitpunkt wird demnach also über Links in:


    /etc/rc2.d/
    /etc/rc3.d/
    /etc/rc4.d/
    /etc/rc5.d/


    geregelt, und zwar mit S03openvpn
    Kann man mit folgendem Befehl prüfen:

    Code
    ls /etc/rc?.d/*openvpn


    Die Ausgabe wäre dann:

    Code
    root@raspberrypi ~ > ls /etc/rc?.d/*openvpn
    /etc/rc0.d/K01openvpn  /etc/rc2.d/S03openvpn  /etc/rc4.d/S03openvpn  /etc/rc6.d/K01openvpn
    /etc/rc1.d/K01openvpn  /etc/rc3.d/S03openvpn  /etc/rc5.d/S03openvpn
    root@raspberrypi ~ >


    " S " bedeutet Start und " K " bedeutet Kill (also Stop)


    Um jetzt dafür zu sorgen das openvpn möglichst spät ausgeführt wird, könnte man die S03 in S99 umbenennen:

    Code
    for i in $(ls /etc/rc?.d/S??openvpn) ; do mv -f $i $(dirname $i)/S99openvpn; done


    Ergebnis:

    Code
    root@raspberrypi ~ > ls /etc/rc?.d/S??openvpn 
    /etc/rc2.d/S99openvpn  /etc/rc3.d/S99openvpn  /etc/rc4.d/S99openvpn  /etc/rc5.d/S99openvpn
    root@raspberrypi ~ >

    Pick dir mal nicht nur den ersten Satz raus sondern beachte auch den Rest:

    Quote


    Es gibt wohl einige Leute die hier schon etwas weiter sind, wir haben hier aber auch nur die erste Version des Raspberry PIs.


    Welchen Raspberry PI hast du denn?


    Hier gibt es einen Beitrag mit unserem Gerät, welcher aber soweit aber nur TVHeadend erwaehnt
    http://www.techradar.com/news/…nd-record-live-tv-1151587


    Im nächsten Post heisst es:

    Quote


    LiveTV am RPi geht problemlos. Allerdings muss ich zugeben, dass ich den Stick noch nie direkt dran hatte. Bei mir sind die Sticks immer an meinem VDR, der auf kleinen ARM-Maschinen wie der Dockstar oder GoFlex Net läuft bzw. auch an einem TVHeadend auf einer solchen Maschine.


    Auf der URL steht etwas weiter unten:

    Quote


    We tested and configured two USB receiver devices, one for grabbing terrestrial digital television through an aerial and another for grabbing the data from a satellite feed. We'll include instructions for both.


    For DVB-T (terrestrial) reception, we used a Sundtek MediaTV Pro, for DVB-S (satellite) reception, we used the Sundtek SkyTV Ultimate. The latter includes a 12v power adaptor that also needs to be connected.


    But here's the most important requirement: these USB devices must be attached to the Raspberry Pi through a powered USB hub. We wasted two days trying to configure the system, firstly without a hub and secondly with an incompatible hub. In both cases, everything appeared to work but the devices wouldn't find any television channels in a scan. Switching to a powered hub compatible with the Raspberry Pi solved the problem, so we can't emphasise this point enough.


    ..Den rest kann aber auch jeder selber lesen..


    Demzufolge ist das also wie bereits erwähnt eigentlich kein Problem - dort steht auch nichts davon das ein "direktes anschliesen des Sticks an den RPI" nicht funktionieren würde


    Es gibt aber auch verschiedene Sticks von Sundtek, ich habe den "Digital Home" aber mit dem "Pro" soll es besser laufen


    [hr]


    dbv: HD ist leider nicht gleich HD.. Die Sender über Kabel-Deutschland haben leider unterschiedliche Bitraten, so ist zB Sky-Syfy kein Problem aber bei zB Histroy-HD ruckelt es abunzu mal - das kann aber vielleicht auch an meinem Rev1 PI liegen :-/

    Das direkte Playback am RPI funktioniert auch problemlos - TV/Monitor anschliesen, startx, tvheadend oder mplayer starten und TV gucken...


    Wie ich bereits sagte benötigt der Stick stabile 500mA am USB-Port, die der RPI aber leider nicht liefert (nicht stabil genug)
    Deshalb funktioniert der Stick nicht so gut wenn man ihn direkt anschliest - nutzt man aber einen aktiven USB-Hub, gibts da absolut garkeine Probleme
    ..Er funktioniert auch ohne aktivem-Hub aber steigt irgendwann aus usw, also macht ne menge Probleme; deshalb: Aktiver USB Hub und ruhe..


    Ansonsten poste/verlink mal bitte die Seiten wo du das gelesen hast


    Wie gesagt vermute ich einfach mal das entweder diejenigen, die damit angeblich probleme hatten keinen Aktiven USB-Hub genutzt haben, oder etwas anderes falsch gemacht haben - oder du das fehlinterpretierst


    Ich habe jetzt mehrfach gelesen, dass der Stick direkt am RPi nicht wirklich funktionieren soll (Sundtek).


    Da interpretierst du was falsch..
    Damit bezieht man sich auf den Strombedarf - die Sundtek Stick's funktionieren am RPI nur mit einem Aktiven USB-Hub problemlos, der also ein eigenes Netzteil hat um stabile 500mA zu liefern



    Da bei mir der RPI überwiegend ohne Monitor/TV irgendwo in der Ecke herrum liegt, mache ich es genau andersherum: Ich streame vom RPI zu anderen Geräten im Netzwerk :cool:

    Hm wieso 2 Datenbanktabellen?


    Anstatt das doch recht Resourcen-lastige MySQL zu nutzen würde ich SQLite empfehlen, das hat auch eine sehr ähnliche Syntax wie wie die anderen SQL's..
    Durch Verwendung von SQLite würde nicht permanent Prozesse im Hintergrund laufen die unnötigerweise CPU+RAM verballern... SQLite verbraucht zum einen wesendlich weniger und dann auch nur zu dem Zeitpunkt wo Befehle ausgeführt werden, es idlet also kein Prozess im Hintergrund herrum :D


    Code
    apt-get install sqlite3


    Beim arbeiten über die Konsole (also auch in Scripts) muss man dabei immer die Datei angeben, ich nutze hier mal als Beispiel /tmp/daten.sqlite und ungefähr angelehnt was in in dem bash Script da oben gesehen hab ;)


    SQLite3 Datenbanken / Tabelle erstellen:

    Code
    sqlite3 /tmp/daten.sqlite "CREATE TABLE IF NOT EXISTS temperatur (ID INTEGER PRIMARY KEY,Wert TEXT,Zeit INT,Datum TEXT);"


    ..Wobei ich anstatt einzelne Zeit und Datum Werte in den DB einzutragen stattdessen lieber mit dem Unixtimestamp arbeiten würde, damit liese sich viel besser arbeiten: date +%s



    Updaten ist dann genauso wie bei MySQL:

    Code
    sqlite3 /tmp/daten.sqlite "UPDATE temperatur SET Wert=\"$v\" WHERE ID=\"$i\"";


    Oder auch einen neuen Eintrag machen:

    Code
    sqlite3 /tmp/daten.sqlite "INSERT INTO temperatur (Wert,timestamp) VALUES (\"$v\",\"$(date +%s)\")";



    Wenn ihr Scripts schreibt die nicht unbedingt mit " sh " arbeiten müssen würde ich zudem empfehlen stattdessen mit bash zu arbeiten da das mehr kann als sh, vieles is dann auch nicht so umständlich ;)


    Das obige Script könnte dann zB so aussehen:



    Mehr dazu kann auch hier nachgelesen werden: http://www.sqlite.org/docs.html
    (ein paar Besonderheiten gibts bei sqlite3)



    SQLite gibts auch als php Module um damit eben über PHP zu arbeiten:

    Code
    apt-get install php5-sqlite


    Hier meine PHP functions mit der ich arbeite:


    Der restliche PHP Code könnte dann zB so aussehen: (das ist jetzt aber nicht an diesen Thread hier angepasst!)


    Meist verwendete ich */5**** /home/pi/meine.sh für alle 5 Minuten.


    zwischen den Sternchen gehört jeweils ein Leerzeichen


    # Ein Benutzer-Crontab-File besteht aus 6 "Spalten" pro Zeile:
    # 1 - Minute (0-59)
    # 2 - Stunde (0-23)
    # 3 - Tag des Monats (1-31)
    # 4 - Monat des Jahres (1-12)
    # 5 - Tag der Woche (0-6, 0 ist Sonntag)
    # 6 - Absoluter Pfad zum Script


    Also zB:
    */5 * * * * /home/pi/meine.sh


    Quote from Yan


    Ich glaube, dass ich in der Shell mal chmod -x webcamaufnahme.sh eingegeben hatte, sie ließ sich aber manuell ausführen, darum bin ich mir nicht sicher. Mittlerweile habe ich verstanden, dass +x wichtig gewesen wäre. Vielleicht wäre chmod g+x am besten.


    chmod +x reicht eigentlich. Alternativ kannst du aber auch chmod 755 oder chmod 777 setzen..
    Wenn du das Script aber manuell ausführen kannst ( mit: /home/pi/meine.sh ) wird es auch crontab ausführen können..


    Quote from Yan


    Noch sitzt eher die Maschine am Steuer, ich muss erst für den Führerschein büffeln.


    Hehe ;)
    Entweder ist es noch das Standard Password " raspberry " , oder " raspberrypi " , oder es ist noch garkeins gesetzt - in jedemfall kannst du das problemlos mithilfe des " pi " Benutzers neu setzen über folgenden Befehl:

    Code
    sudo passwd root


    ...alle weiteren Fragen die tuboletti gestellt hat kann man aber ignorieren, der hat leider allg. sehr viel Quatsch geschrieben :(


    Quote from Yan

    Bisher war es bei jeder für mich neuen Programmiersprache so, dass ich am Anfang bei jeder Kleinigkeit auf scheinbar große Hürden gestoßen bin, die mit etwas Wissen keine mehr waren. Nebenbei lerne ich bereits vieles über Linux dazu, mit dem ich mich ohne Startprobleme nicht beschäftigt hätte.


    Ich gehe jetzt mal weg von dem Webcamprojekt und lasse den Cronjob alle 5 Min. nur eine Textdatei beschreiben.


    Bash will ich ja auch noch lernen.
    Passt das so?

    Code
    #! /usr/bin/sh
    echo "test" >> crontest.txt


    Ja das ist quasi normal das man beim erlernen neuer Programmiersprachen immer wieder an Klinigkeiten stunden verballert :s , passiert mir auch immer wieder :daumendreh2: :-/


    Bei deinem Script passt der SheBang nicht: #! /usr/bin/sh
    /usr/bin/sh gibts beim RaspBian nicht.. Findest du mit folgendem Befehl raus:

    Code
    find / -name sh


    Korrekt wäre also wenn dann: #! /bin/sh
    (das Leerzeichen ist Oke aber eher nicht gebräuchlich)


    Ich nutze immer " #!/bin/bash " da bash neuer und besser ist, kann auch mehr als sh


    Der sog. SheBang ist quasi der Interpreter, der Verarbeiter des Codes: http://de.wikipedia.org/wiki/Shebang



    Das wäre ggf die Erklärung wieso Cron das script nicht ausführen kann, da es /usr/bin/sh nicht gibt :rolleyes:


    Das kannst du auch über folgenden Befehl prüfen ob crontab Probleme beim Ausführen hat:

    Code
    grep CRON /var/log/syslog

    Eine weitere Möglichkeit wäre zB auch ein Script als /bin/ftpupload


    Das kann man dann über 2 Möglichkeiten nutzen:

    Code
    ftpupload


    Und das Script fragt dich einmal welche Datei du hochladen möchtest und danach wohin es geuploaded werden soll (wenn man nichts angibt wird es nach " / " gepakt)


    Oder man gibt die geforderten Parameter beim ausführen direkt ans Script:

    Code
    ftpupload /root/datei.rar /pub/upload

    Nachdem "ftp" installiert ist kannst und im prinzip immer zum selben FTP-Server connecten willst, kannst die Zugangdaten in der ~/.netrc hinterlegen
    Also wenn du " root " bist dann /root/.netrc


    Der Clou daran ist das du dann nicht jedesmal Login + Password eingeben müsstest, das einzige was du dann nurnoch eingeben musst ist zB

    Code
    ftp meinftpserver


    und der der Verbindungsaufbau läuft wie von selbst ;)


    In der .netrc ist dafür folgendes hinterlegt

    Code
    machine meinftpserver
    login "myusername"
    password "mypassword"


    Die .netrc kann aber auch noch mehr! Was genau kannst du hier nachlesen:

    Code
    man 5 netrc


    Also zB Macros. Im .netrc steht zum Beispiel:

    Code
    machine meinftpserver
    	login "myusername"
    	password "mypassword"
    
    
    macdef uploadtest
    	cd /pub/info
    	bin
    	put filename.tar.gz
    	quit


    Und eingeben brauch ich dann nurnoch:



    Noch ein bischen was zum lesen:
    http://inhalt.serviert.de/wiss…p_transfers_mittels_netrc
    http://www.linux-community.de/…itransfers-automatisieren
    http://sysadminscorner.uherbst.de/dateitransfer/ftp.html
    http://wiki.ubuntuusers.de/Skripte/FTP-Interaktion
    [hr]


    Ich verstehe nur nicht was das

    Code
    cd upload


    soll? Ich bekomme nämlich als "Rückmeldung":

    Code
    upload: no such file or directory


    Mit " cd upload " wechselt man auf dem FTP-Server in das entsprechende Verzeichnis.
    Wenn dort kein "upload" Verzeichnis ist, kann er da natürlich auch nicht rein wechseln :-/

    hehe Oke also kommt dann gleich der Promt wieder wo man den nächsten Befehl eingeben kann...


    Dann wurde das Script anstandlos ausgeführt, also ohne Fehler auszuwerfen usw, wenn das Script dann aber nicht das gemacht hat was es hätte tun sollen, liegt das Problem im Code

    Hast du auch eine Ausgabe kriegt von wegen "Mail send!" ?


    Die EMail kam bei mir gestern keine 2 Sekunden später an, war also wirklich super schnell da :)


    Ansonsten sicherstellen das die Einstellungen in dem PHP korrekt sind, habe gestern Abend darauf verzichtet dafür extra Variablen einzufügen


    Absender:
    $mail->SetFrom("example@gmail.com");


    Empfänger:
    $mail->AddAddress("email@gmail.com");



    Wenn das trotzdem nicht will kannst du auch /var/log/apache2/error.log kontrollieren ob da vielleicht etwas steht

    Was meinst du mit "es passierte nichts" - kam dann einfach der Promt wieder oder war er mit ausführen des Scripts beschäftigt?


    Melde dich mal bitte übers Netzwerk mithilfe Putty auf dem RaspberryPi an und poste hier dann was du eingibst um das Script auszuführen, also sowas wie

    Code
    cd /home/pi/Desktop/Programme
    sudo python LED_Blink.py


    Oder mach ein Bild davon :)



    Ansonsten hast du vielleicht noch ein Problem in deinem Script - ggf das mal in

    Code
    posten

    Standardmässig sind 2 Benutzer vorhanden - einmal der "überalles stehender und mächtigster" Benutzer root, das ist quasi der Administrator... Und einmal der normale Benutzer " pi ", der "sudo" benutzen muss wenn er root-Befehle (wie zB "reboot" oder "apt-get install") ausführe will


    Wenn du mit dem Terminal, oder auch Konsole genannt, unter " startx " arbeitest und das Python Script ausführen willst, gibts 3 bzw 4 Möglichkeiten dies zu tun:


    1) Vorher in das Verzeichnis wechseln wo die Datei liegt und dann mit vorrangestelltem " ./ " die Datei ausführen, also:

    Code
    cd /home/pi/Desktop
    ./python_skript.py


    2) Vorher in das Verzeichnis wechseln wo die Datei liegt und anstatt "./" den zu verarbeiteten Interpreten (SheBang) gefolgt von einem Leerzeichen vorranstellen, also:

    Code
    cd /home/pi/Desktop
    python python_skript.py


    3) Den Vollständigen Pfad zur Datei eingeben:

    Code
    /home/pi/Desktop/python_skript.py


    4) Den Vollständigen Pfad zur Datei eingeben, mit vorrangestelltem Interpreten (SheBang):

    Code
    python /home/pi/Desktop/python_skript.py



    Den Interpreten angeben brauch man i.d.R. nur wenn das Script entweder nicht ausführbar ist, oder in der ersen Zeile des Scripts nicht sowas wie " #!/bin/python " steht (das gibt dem System darüber auskunft welcher Interpret das nachstehende verarbeiten soll), oder man temporär Parameter an den Interpreten übergeben möchte zum Beispiel zum debuggen des Codes...



    So, nun zu dem was auch schon im 2.Post erwähnt wurde:


    Da du anscheint als normaler Benutzer " pi " nicht die nötigen Rechte hast, musst du das Script mit root-Rechten ausführen.
    Das wiederum geht so wie bereits erwähnt, entweder mit vorrangestelltem " sudo " oder das Script direkt als root-Benutzer ausführen..
    Ersteres wäre vermutlich einfacher, also mit sudo. Nun käme es darauf an wo du dich befindest nachdem du das Terminal / Konsole aufgemacht hast, vermutlich direkt in deinem Homedir ( /home/pi ) aber da liegt das Script ja nicht, also kannst du auch kein " sudo ./python_script.py " ausführen weil dann selbstverständlich "No such File" als Fehlermeldung kommt..


    Also musst du eins von den 1-4 Beispielen von oben anwenden - ich würde dir empfehlen direkt in ds Verzeichnis zu wechseln..


    also entweder 1) :

    Code
    cd /home/pi/Desktop
    sudo ./python_script.py


    oder 2) :

    Code
    cd /home/pi/Desktop
    sudo python python_script.py


    alternativ, wenn du tatsächlich im " /home/pi " startest, ginge auch:

    Code
    sudo Desktop/python_script.py


    Um herrauszufinden in welchem Verzeichnis du dich aktuell befindest:

    Code
    pwd

    Ich würd das Ausführen des "mail" Befehls ebenfals in eine kleines Script packen, was dann von cron ausgeführt wird - und da bei dir sendEmail funktioniert würd ich vielleicht anstatt "mail" ebenfals sendEmail nutzen


    Also zB so:


    /root/rebootmail.sh


    Und der "crontab -e" Eintrag wäre dann:

    Code
    @reboot         bash /root/rebootmail.sh


    Oder anstatt sendEmail, ssmtp benutzen