Posts by rapidochol


    rc.local ist eine Datei, deren Inhalt beim Start des Pis ausgeführt wird.
    Wichtig: nur beim Start des Pis und nicht beim Login eines Nutzers.

    Ändern kann man den Inhalt hier, z.B. mit dem Editor Nano:

    Code
    sudo nano /etc/rc.local

    Entferne mal in Zeile 14 das "Ü" und ersetze es durch "Ue".
    Das ist zwar ein Kommentar, aber scheint trotzdem einen Fehler zu erzeugen.

    Vielen Dank für die Klarstellung zu rc.local: so kurz und treffend habe ich dazu noch keine Ausführung gelesen.

    Mit der Python 3 IDE sind Umlaute im Kommentar möglich, in anderen. z. B. geany kommen Fehlermeldungen. (??)


    ... mich hätte es nur interessiert was dies PIL macht ...

    LG Toni

    PIL: Library zur Bearbeitung von Bilddateien, Bildern, etc.; ist unter Raspbian nicht ganz einfach zu installieren (s. diverse Threads)

    Jetzt fehlt nur noch ein Teil, ein Startscript, das die html-Datei beim Neustart in das Verzeichnis /tmp kopiert:

    Dieses Skript unterstellt, dass die Datei in /var/www abgelegt ist - ein anderes selbst erstelltes Verzeichnis wäre eigentlich besser.
    Wie das ganze einzurichten ist s. Installationsprotokoll Punkt 9 zu finden oben im Beitrag #7.

    Bitte beachten: die Zeilenschaltungen müssen aus einem Linuxeditor stammen, ggf. also bitte ggf. abtippen,
    aus Windows geht das nicht wegen der unterschiedlichen Zeilenschaltung(0D0A) !

    Schön dass das jetzt funktioniert.
    Als nächsten Schritt kannst du die Dateien in die RAM-Disk legen.
    Dazu prüfst Du bitte, ob diese bereits existiert ( df -h), wenn nein, dann Vorgehen lt. Installationsprotokoll (s.Beitrag #7) die Zeilen 2 bis 4.

    Danach kannst du die Dateien
    1. index.lighttpd.html (meine Version, s. oben Beitrag #12)
    2. dein Bild unter dem Namen "AktuellesBild.jpg"
    in den Ordner /tmp ablegen

    Jetzt die Konfigurationsdatei des Webservers (lighttpd) die 9. Zeile ändern:

    server.document-root = "/tmp"

    Dann sollte das Bild im LAN einfach unter der IP des Raspberry wieder zu sehen sein.
    Wenn das geht, startest du testweise die Datei Version3.py (unten angehängt) und schon solltest du sekündlich aktualisiert das Bild deiner Cam auf dem Remoterechner sehen können.
    Eine erkannte Bewegung wird vom Raspberry dokumentiert.


    Bei der Motion dedection muss schon mehr Intelligenz dahinter stecken, dass das funktioniert.


    Vollkommen richtig; um hier richtig gute Ergebnisse zu erhalten, sind professionelle Anstrengungen im Bereich der KI erforderlich.
    Darum soll es in diesem Thread nicht gehen.
    Die Intention ist, für den Anfänger (ich selbst) die Materie verständlich zu machen. (Fertige Lösungen zur Anwendung finden sich hier im Forum und im Netz zur Genüge)

    Derzeitiger Stand:
    1. Die Übertragung der aufgenommenen Bilder per Webserver ins LAN (um z.B. die Kamera auszurichten oder um einfach in den Aufnahmebereich zu sehen) funktioniert.
    2. Ein erster Versuch der Bewegungserkennung per Pythonskript funktioniert.


    1. Installation einschl. Webserver


    2. Pythonskript


    404-Not Found

    bedeutet, dass der Webserver die Datei "index.lighttpd.html" nicht findet.
    Schau bitte in der Konfigurationsdatei nach (sudo leafpad /etc/lighttpd/lighttpd.conf), in welchem Verzeichnis sie zu finden sein muss (server.document-root).
    Wenn dort steht "/xyz", dann öffne ein LXTerminal, gib ein "cd /xyz" dann sollte in der nächsten Zeile stehen in grün z.B. pi@raspberrypi und direkt danach in blau /xyz. Dann gib ein "dir" und dann sollten verschiedene Dateien angezeigt werden, zumindest aber die gesuchte.

    Zum Testen ändere einfach in der Konfigurationsdatei die 9. Zeile in die ursprüngliche Version:
    server.document-root = "/var/www"

    Dann öffne auf dem Rechner den Explorer und gib die IP des Raspberry ein. Wenn dann die Platzhalterseite erscheint, gehe wieder zum Raspberry, überschreibe die Datei index.lighttpd.html mit der im Beitrag #9 angehängten Datei und lege in genau diesem Pfad die Bilddatei "AktuellesBild.jpg" ab. Dann solltest du das Bild auf dem Rechner schon sehen können.
    Die aktuell aufgenommenen Aufnahme sind dann im selben Pfad abzulegen.
    Den Ordner /tmp habe ich nur benutzt, weil ich mein Projekt für Dauerbetrieb auslegen will und das macht die SD-Karte nicht mit.

    Hallo Tony,

    das Installationsprotokoll stellt mein eigenes Vorgehen beim aktuellen Projekt dar.
    Es sollte eigentlich nur eine Anregung sein.
    Am besten installierst du zuerst Lighttpd. (Punkt 5)
    Direkt danach kannst du probieren, ob der Server läuft: im Explorer des Rechners einfach die IP des Raspberry eingeben.
    Du siehst den Server (Indexseite mit Erläuterungen). Dort ist beschrieben, wo sich die Indexdatei befindet.
    Diese kannst du mit der angehefteten Seite überschreiben.
    Im selben Verzeichnis legst du die Bilder der Cam unter dem Namen "AktuellesBild.jpg" ab.
    Die Seite wird sekündlich aktualisiert, d.h. immer das gerade aktuell abgelegte Bild wird angezeigt.
    Dieses Vorgehen ist für die Dauer nicht geeignet. Die SD-Karte hat nur eine begrenzte Anzahl von Schreibzugriffen, nach ein paar Tausend ist da Schluss.

    Viel Vergnügen
    R.

    Hallo Tony,

    dein Rechner sieht die Bilder der Cam gar nicht. Du musst sie ihm senden.
    Dazu benötigst Du einen Server, z.B. Lighttpd. Wenn der läuft, gibst du die IP des Raspberry im Explorer ein und siehst sofort die Indexseite des Servers (Lighttpd). Dann musst Du nur noch das aktuelle Bild der Kamera in die Indexseite des Servers einbauen und diese jede Sekunde aktualisieren lassen. Ich habe mein Installationsprotokoll angehängt, dort findest Du die Linuxbefehle.
    Bitte die Datei nur unter Linux editieren, nie unter Windows; die unterschiedliche Zeilenschaltung bedingt blödsinnige Fehler.
    Viel Erfolg

    R.

    den ersten Fehler habe ich jetzt gefunden: Die früher funktionierende Skriptdatei habe ich vor der Neuinstallation auf meinem Win-Rechner gespeichert und zur besseren Lesbarkeit editiert. Dadurch wurde die Win-Zeilenschaltung eingebaut (0D 0A). Raspbian benutzt dafür nur 0A. Das zusätzliche Byte 0D wird dann falsch interpretiert.

    Damit ist das Problem noch nicht gelöst.

    Ich habe also das Miniskript test2 erstellt:

    Bash
    #!/bin/sh
    echo "geht"

    Wenn ich das System mit Shebang richtig verstanden habe, sollte sich jetzt das Skript (Ausführen:Jeder) direkt aufrufen lassen. Geht aber nicht so wie im Tut. beschrieben sondern:

    Code
    pi@raspberrypi ~ $ cd Desktop
    pi@raspberrypi ~/Desktop $ dir
    Fehlermeldungen.txt    kopiere.sh test2
    Installationsprotokoll.txt  test1 WifiConfig_fehlt.txt
    pi@raspberrypi ~/Desktop $ test2
    bash: test2: Kommando nicht gefunden.
    pi@raspberrypi ~/Desktop $ ./test2
    geht
    pi@raspberrypi ~/Desktop $


    Was bedeutet die Fehlermeldung Kommando nicht gefunden?

    Viele Grüße
    RD

    PS. gibt es für Raspberry Pi einen schönen HexEditor?

    Hallo Euch allen,

    vielen Dank für die freundlichen Antworten.

    Wie verlangt habe ich mein Script angehängt. Um es hochladen zu können, habe ich es in .txt umbenannt.
    Original hat es keine Namenserweiterung. Ich hatte es ursprünglich nicht mitgeschickt, da es eigentlich nur eine gerinfügig veränderte Kopie aus dem Tutorial ist.
    Dateieigenschaften sind u.a. Dateityp Shell-Skript, Berechtigung Ausführen : Jeder
    In einem Tut. war beschrieben, das Skript sei vor dem Aktivieren über update-rc.d durch testweises Ausführen zu überprüfen habe ich dies versucht:
    _________________________________________________________________________________________________________________


    _________________________________________________________________________________________________________________


    Bitte entschuldigt meine Anfängerunkenntnis.
    @Magic_M: Ist die Verwendung von Code Tags so richtig?.

    Nochmals vielen Dank
    RD

    Hallo Forum,

    beim Versuch, ein Startscript zu erstellen, treten unerwartete Probleme auf.

    Trotz Vorgehens nach Tutorials wie z.B.

    Turael
    June 10, 2013 at 9:27 PM

    oder

    http://jankarres.de/2014/07/raspbe…men-einrichten/

    kommen Fehler ohne Ende.
    Ich möchte eine einfache Routine schreiben, die beim Systemstart eine Datei kopiert.
    Die Sache hatte ich bereits am Laufen. Um alles fehlerfrei zu bekommen, habe ich ein ganz neues System (wheezy vom 5.5.2015) neu installiert und dann das bereits erprobte Startscript versucht laufen zu lassen. Ging nicht.

    Deshalb versuchte ich die Beispielscripte der beiden Tutorials einfach ohne Änderung zum Laufen zu kriegen. Die Datei war jeweils ausführbar gemacht und sollte durch direkten Aufruf laufen. Ging aber erst, als ich sh vor dem Dateinamen eingab. Den gleichen Effekt fand ich auch bei einem Testscript (Zweizeiler, Shebang in der ersten Zeile und echo in der zweiten), ausführbar (jeder), funktioniert nur durch Voranstellen von "sh".
    Wenn ich nun sh vor die Beispielscripte stelle, kommt die Fehlermeldung: Syntax error: word unexpected (expecting "in").

    Beim Studium anderer Threads bin ich auf ähnliche Fehler gestoßen, die für mich die Frage aufwerfen: kann hier eine Änderung im neuesten Wheezy vorliegen, die die Interpretation der Scripte anders als bei der Version vom Februar laufen lässt.

    RD.

    Problem gelöst:

    import picamera
    import time
    import os

    with picamera.PiCamera() as camera:
    camera.resolution = (600,400)
    camera.start_preview()
    time.sleep(2)
    while (True):
    time.sleep(1)
    camera.capture('/tmp/A.jpg') # Schreibzugriff dauert zu lang, führt zu Aussetzern in der Übertragung
    os.rename('/tmp/A.jpg','/tmp/AktuellesBild.jpg') # abspeichern unter anderem Namen, dann umbenennen

    Hier der Sachstand zum Thread - bisher bin ich so weit gekommen:

    1. Fertiges System (Raspbian) mit WLAN und remote-control auf SD
    2. RAM-Disk (/tmp) erstellen (http://www.gtkdb.de/index_36_2303.html)
    3. Lighttpd installieren (sudo apt-get install lighttpd)
    (logfiles und aktuelles Bild in RAM-Disk speichern (lighttpd Konfiguration))
    4. aktuelles Bild in html Datei (Standard-Webseite ) einbinden
    5. index.lighttpd.html aus /var/www nach /tmp kopieren per Startscript:
    _______________________________________________________________________________
    #! /bin/sh
    ###BEGIN INIT INFO
    # Provides: kopiere
    # Required-Start:
    # Required-Stop:
    # Default-Start: 2 3 4 5
    # Default-Stop: 0 1 6
    # Short-Description: kopiert Datei(en) in Verzeichnis tmp
    # Description: tmp wird beim Abschalten gelöscht,
    ### END INIT INFO

    #Switch case fuer den ersten Parameter
    case "$1" in
    start)
    cp /var/www/*.* /tmp
    ;;
    stop)
    echo "Ende"
    ;;
    restart)
    cp /var/www/*.* /tmp
    ;;
    *)
    cp /var/www/*.* /tmp
    ;;
    esac

    exit 0
    _______________________________________________________________________________
    Erster Test Pythonscript:
    import picamera
    import time

    with picamera.PiCamera() as camera:
    camera.resolution = (600,400)
    camera.start_preview()
    time.sleep(2)
    while (True):
    time.sleep(1)
    camera.capture('/tmp/AktuellesBild.jpg')
    _______________________________________________________________________________

    Es funktioniert leidlich. Ein Problem scheint das Abspeichern des Bilds zu sein. Die HTML-Datei wird jede Sekunde aktualisiert um immer das aktuelle Bild darzustellen. Das funktioniert aber nicht zuverlässig, hier gibt es immer wieder Aussetzer. Ich vermute, dass sich hier Schreib- und Lesezugriffe in die Quere kommen. Dieses Problem scheint nicht lösbar.

    Ideen sind willkommen, ich werde über den Fortgang berichten.

    Wenns recht ist, möchte ich mich hier anhängen, da ich fast die gleiche Fragestellung schon seit einiger Zeit verfolge.

    Mein Ansatz ist geringfügig anders:

    Den Livestream erhalte ich aus der Bibliothek picamera (Dave Jones).

    Als Server habe ich Lighttpd installiert. Deren Indexseite kann ich vom LAN aus sofort abrufen.
    Aber wie bekomme ich den Stream in diese Indexseite.

    Zum Thema finden sich massenhaft Anleitungen und fertige Lösungen hier im Forum und im Netz.
    Dennoch wäre es schön, zu verstehen, wie die Sache im Detail abläuft.

    Gibt es im Netz oder im Forum dazu Informationen, die ich noch nicht gefunden habe? Gibt es geeignete Literatur?

    Viele Grüße
    Huldreich :denker:

    In diesem Projekt komme ich sehr zögerlich voran.

    Mein Konzept sieht derzeit so aus:

    Auf dem Pi läuft als Server Lighttpd - funktioniert.

    Picamera soll den Stream des Cameramoduls liefern.

    Wenn ich die Sache nach aufwändiger Recherche richtig verstehe, gibt Picamera den Stream an einen Socket, von dort wird er in die HTML-Seite von Lighttpd eingebunden.
    Allerdings habe ich noch nirgends einen Hinweis gefunden, wie dies gehen kann.

    Hat jemand eine Idee, wo ich suchen kann?

    Hier
    https://github.com/waveform80/pistreaming
    ist eine phantastische Möglichkeit für einen Streamserver angegeben - funktioniert exzellent.

    Dazu möchte ich gerne wissen:

    Wer hat mit diesem Paket schon gearbeitet?

    Trotz Suche habe ich noch keinen Thread zu diesem Thema gefunden - falls dieser irgendwo bereits existieren sollte, bitte ich um Info.

    Ist es möglich, den Stream nur dann einzuschalten, wenn er abgefragt wird?

    Ich würde nämlich in der Zwischenzeit den RaspberryPi mit anderen Aufgaben betrauen.

    Eine neue Idee, wie wäre es damit:

    Wir nehmen eine oder zwei vollformatige Aufnahmen pro Sekunde auf. Vor dem Vergleich des neuen Bilds mit der vorangegangenen Aufnahme zum Erkennen einer Bewegung speichern wir dieses Bild in einer RAM-Disk ab.

    Wenn es jetzt gelingt, das Bild in Apaches HTML-Datei einzubinden und bei Aktualisierung neu darzustellen, wäre das Problem gelöst. Ich habe leider keine Ahnung, ob und wenn ja wie dieser zweite Teil lösbar ist. Kann jemand helfen?

    Klar, das ist sicher auch eine gute Lösung, aber eben nicht was ich suche.

    Derzeit will ich versuchen, einen Stream über einen ApacheServer auszugeben, damit das aktuelle Bild immer einfach in einem Browser abzufragen ist.
    Das wie geht ist mir dabei allerdings noch nicht klar.
    Kann mir jemand die Fragen beantworten:
    1. Wo finde ich eine Anleitung, wie auf dem Raspberry die HTML-Datei (index) von Apache2 am einfachsten zu editieren ist, wie ein Container für den Stream dort eingebaut wird und wie der Stream von Picamera in den Container gelenkt wird.
    2. Der picameraAutor Dave Jones soll einen Thread im Raspberryforum haben, diesen konnte ich trotz ggln usw. nicht finden. Kann mir jemand Auskunft geben?