Überwachungskameraprojekt

  • Hallo Forum,

    neu hier habe ich noch nicht den ganzen Überblick über dieses Forum - bin hier hoffentlich richtig.

    Für mein aktuelles Projekt möchte ich eine Überwachungskamera selbst programmieren.

    Dafür gibt es, wie ich in verschiedenen Threads fand, fertige Lösungen (Motion, Motionpie), alle gut, aber leider nicht modifizierbar, zumindest nicht einfach.
    Um die Sache zu beherrschen, halte ich es für notwendig, das Programm selbst zu schreiben. Als alter Pascalprogrammierer habe ich Python ausgesucht, zur Ansteuerung der Hardware (Kameramodul) picamera.

    Konzept einer Überwachungskamera

    Ziel: gut dokumentiertes Programm einer Ü-Kamera in Python auf Basis von picamera

    1. Bilder bei Bewegung (vorhandene Programmteile) aufnehmen
    2. Filme bei Bewegungserkennung (vorhandene Programmteile) aufnehmen
    3. Speichern von Filmen und Bildern auf dem LAN-Server (per WLAN)
    4. Oberfläche für Einstellungen incl. Fenster mit aktuellem Stream zur Kameraausrichtung zugänglich von Explorer (Android) per WLAN
    (5. VPN Zugriff per Netz)

    Für die Punkte 1-3 habe ich Anleitungen gefunden.

    Für Punkt 4. benötige ich Hilfe, da ich nicht weiß, wonach ich suchen muss. Ich möchte einfach im Explorer die IP (LAN) eingeben, so dass sich RaspberryPi mit einem Bildschirm mit Einstelloptionen und einem Fenster mit dem aktuellen Kamerastream meldet.

    Auf Wunsch werde ich über den Fortgang des Projekts berichten.

  • 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?


  • 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.

    Verzögerungs freies Streamen (lowest streaming latency)

  • 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?

  • Also meiner Meinung nach geht das nicht so einfach. Ich lasse mich aber gerne eines besseren belehren.
    Wenn man einfach nur zwei Aufnahmen vergleicht und eine Wolke zieht vorbei wird es schon einen Fehlalarm geben. Bei der Motion dedection muss schon mehr Intelligenz dahinter stecken, dass das funktioniert.
    Es muss ein Bereich des Bildes definiert werden und auch wie viele pixel sich ändern müssen um zu triggern.
    Ich halte generell von dem was ich bisher davon gesehen habe nicht sehr viel. Besser finde ich einen pir sensor einzusetzen, der dann die Aufnahme bei einem event startet.
    Das arbeitet sehr zuverlässig und ist mehr gegen äußere Einflüsse geschützt.

  • 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 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.

    Einmal editiert, zuletzt von rapidochol (28. Juni 2015 um 12:21)

  • 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


  • 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.

    Schau mal hier, ich baue gerade an was ähnlichem Tür-Freisprech-Einrichtung samt Picam (IR-Version).

    bimbo385
    18. Juni 2015 um 17:01

    Einmal editiert, zuletzt von secpri (28. Juni 2015 um 23:25)

  • Prinzipiell hat meigrafd dir schon die Antwort gepostet:

    http://elinux.org/RPi-Cam-Web-Interface

    bietet dir die Möglichkeit von Motion Detection, Bilder zu speichern und den Stream in andere Seiten einzubinden.
    Zugegeben man muss sich da ein wenig durch die Seite wühlen bis man fündig wird aber ich hab damit schon mal gearbeitet, es sollte alles gehen... ggf. mit tricksen
    hatte sowas ähnliches mal als Nebeneffekt durch den Bau eines Webinterfaces für nen Robo... nur halt leider nicht Dokumentiert... wie immer war ich zu faul *selbst an der Nase pack* -.-


  • 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

Jetzt mitmachen!

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