Bewegungserkennungs und Videoaufzeichnung

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

    ich arbeite derzeit an einem kleinem Projekt.
    Es geht darum das ein Bewegungsensor bei einer Bewegung eine Kamera (Originale Pi Kamera) einschaltet und ein Video macht.
    Leider gibt es einen Fehler



    Fehlermeldung:

    Traceback (most recent call last):
    File "versuch.py", line 31, in <module>
    cam.stop_recording()
    File "/usr/lib/python2.7/dist-packages/picamera/camera.py", line 1359, in stop_recording
    'port %d' % splitter_port)
    picamera.exc.PiCameraNotRecording: There is no recording in progress on port 1


    Könnt ihr mir helfen ?

    Einmal editiert, zuletzt von djkobi (19. Oktober 2015 um 20:28)

  • Schau dir mal bitte genau deine Logik an und beantworte die Frage, wie "if jetzt" sich verhaelt.

  • Zudem sei noch gesagt, dass auf Modulebene sich nur Konstanten, Klassen/Methoden und Funktionen zu befinden haben. Des Weiteren wäre ein Blick in die gpio Doku auch nicht schlecht ("event_detected() function"):

    http://sourceforge.net/p/raspberry-gpio-python/wiki/Inputs/
    http://picamera.readthedocs.org/en/release-1.8…video-to-a-file

    Wenn keine Bewegung erkannt wird bei dir, wird die ``cam.stop_recording()`` Methode ausgeführt. Da aber kein Video aufgezeichnet wird, kann auch keine Aufzeichnung beendet werden. Besser wäre wie oben erwähnt die ``event_detected()`` Funktion zu verwenden.

  • Habe es noch einmal überarbeitet.
    Ich will ja nicht dass das Video eine gewisse Zeit aufgenommen wird sondern das wenn keine Bewegung mehr vorhanden ist es gestoppt wird.



    Der Fehler ist

    Traceback (most recent call last):
    File "test2.py", line 27, in <module>
    picamera.PiCamera.wait_recording(5)
    TypeError: unbound method wait_recording() must be called with PiCamera instance as first argument (got int instance instead)

    Einmal editiert, zuletzt von djkobi (25. Oktober 2015 um 13:53)

  • In Python (so wie in den meisten anderen Programmiersprachen) ist der Vergleichsoperator "==", nicht "=". Und ein einfaches "if now" beziehngsweise "if not now" reicht in diesem Fall voellig, weil das vergleichen von boolschen Werten mit True/False doppelt-gemoppelt ist.

  • Der Fehler den du bekommst bedeutet, dass du versuchst eine Methode aufzurufen, ohne die dazu gehoerige Instanz zu haben. Denn deine Instanz existiert nur in "video_aufnehmen", nicht unten in deinem Schleifenkoerper.

    Und so ohne weiteres ist das mit deinem Code auch nicht moeglich - so etwas (ungetestet!) kann funktionieren:


  • Der Fehler den du bekommst bedeutet, dass du versuchst eine Methode aufzurufen, ohne die dazu gehoerige Instanz zu haben. Denn deine Instanz existiert nur in "video_aufnehmen", nicht unten in deinem Schleifenkoerper.

    Und so ohne weiteres ist das mit deinem Code auch nicht moeglich - so etwas (ungetestet!) kann funktionieren:


    Funktioniert leider nocht nicht ganz.

    Fehlermeldung:

    Traceback (most recent call last):
    File "cam.py", line 39, in <module>
    recorder.start()
    File "cam.py", line 25, in start
    self._camera.start_recording(filename)
    File "/usr/lib/python2.7/dist-packages/picamera/camera.py", line 1238, in start_recording
    camera_port, output_port = self._get_ports(True, splitter_port)
    File "/usr/lib/python2.7/dist-packages/picamera/camera.py", line 786, in _get_ports
    'The camera is already using port %d ' % splitter_port)
    picamera.exc.PiCameraAlreadyRecording: The camera is already using port 1

  • Dieser Code würde funktionieren doch warum funktioniert meiner oben nicht ?

  • Koennte an dem time.sleep liegen, denn sonst sehe ich eigentlich keinen grossen Unterschied. Und noch eine Frage: hat es *garnicht* funktioniert, oder nur beim zweiten mal aufzeichnen nicht?

Jetzt mitmachen!

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