Posts by Ich Bins

    Jetzt könnte ich eigentlich mit der gesamten Funktionsweise sehr zufrieden sein. :)

    Leider ist jetzt bei Tageslicht die erste Sekunde der Videoaufnahmen total überbelichtet

    und erst danach kommen wie aus dem Nebel die Konturen hervor.

    Die Miniaturbilder der Video-Dateien sind weiß.

    In der mainloop habe ich wegen den Nachtaufnahmen mit schwachem IR-Licht

    camera.brightness = 65

    eingestellt aber erst in der aktuellen Version wird das vermutlich zum Problem. Deswegen habe ich es

    jetzt hier

    if not light_sensor.light_detected:

    camera.brightness = 65

    irled.on()

    print("Licht an")

    eingetragen.


    Das Tageslicht-Verhalten wurde dadurch etwas besser aber bei strahlendem Sonnenlicht ist der Anfang der Videos noch immer extrem überbelichtet.


    Fällt Euch Experten auch dazu ein Lösung ein?

    Hallo Dennis,


    funzt leider nicht. Gleiche Fehlermeldung wie in #41.


    Bitte verwende für weitere Änderungen diese eigentlich identische Version mit Deiner letzten Version. Ich habe darin nur Texte angepasst.


    Hallo Hofei,


    Deine Version 1 konnte das Problem nicht beheben. Nach dem Klick auf

    und dem anschließenden Script-Neustart wurde wieder


    Python 3.7.3 (/usr/bin/python3)

    >>> %Run 'ProzessPool#37V1.py'

    mmal: mmal_vc_port_enable: failed to enable port vc.null_sink:in:0(OPQV): ENOSPC

    mmal: mmal_port_enable: failed to enable connected port (vc.null_sink:in:0(OPQV))0xca4ef0 (ENOSPC)

    mmal: mmal_connection_enable: output port couldn't be enabled

    Traceback (most recent call last):

    File "/home/ich-bins/ProzessPool#37V1.py", line 105, in <module>

    main(pool)

    File "/home/ich-bins/ProzessPool#37V1.py", line 78, in main

    camera = picamera.PiCamera()

    File "/usr/lib/python3/dist-packages/picamera/camera.py", line 433, in __init__

    self._init_preview()

    File "/usr/lib/python3/dist-packages/picamera/camera.py", line 513, in _init_preview

    self, self._camera.outputs[self.CAMERA_PREVIEW_PORT])

    File "/usr/lib/python3/dist-packages/picamera/renderers.py", line 558, in __init__

    self.renderer.inputs[0].connect(source).enable()

    File "/usr/lib/python3/dist-packages/picamera/mmalobj.py", line 2212, in enable

    prefix="Failed to enable connection")

    File "/usr/lib/python3/dist-packages/picamera/exc.py", line 184, in mmal_check

    raise PiCameraMMALError(status, prefix)

    picamera.exc.PiCameraMMALError: Failed to enable connection: Out of resources


    ausgegeben.


    Deine Version 2 hingegen konnte beim Testen zwei mal problemlos gestartet werden. :thumbup:

    Zu früh gefreut.


    Das Script konnte erneut ohne PI-Neustart und Fehlermeldung gestartet werden und zeigte im Thonny-Terminal


    Warte auf Bewegung


    Als dann di PIR Bewegung erkannten wurde nachfolgende Fehlermeldung in das Thonny-Terminal geschrieben.


    >>> %Run 'ProzessPool#30.py'

    Warte auf Bewegung

    Bewegung erkannt - 20211020_123209

    Wasserwerfer an/aus

    Video-Aufnahme läuft

    Aufnahme beendet - 20211020_123220

    Fertig für nächste Bewegungserkennung - 20211020_123220

    Warte auf Bewegung

    Übertragung von 20211020_123209.h264 abgeschlossen

    AVC-H264 import - frame size 1920 x 1080 at 30.000 FPS

    Importing AVC-H264: | | (01/100)

    .

    .

    Importing AVC-H264: |=================== | (99/100)


    AVC Import results: 298 samples - Slices: 5 I 293 P 0 B - 0 SEI - 5 IDR

    Saving to /home/ich-bins/motioneye/Camera1/20211020_123209.mp4: 0.500 secs Interleaving

    ISO File Writing: | | (01/100)

    .

    .

    ISO File Writing: |=================== | (99/100)

    Transkodierung abgeschlossen

    Original 20211020_123209.h264 entfernt

    Bewegung erkannt - 20211020_123312

    Traceback (most recent call last):

    File "/home/ich-bins/ProzessPool#30.py", line 101, in <module>

    main(pool)

    File "/home/ich-bins/ProzessPool#30.py", line 89, in main

    camera.annotate_text = date_time

    File "/usr/lib/python3/dist-packages/picamera/camera.py", line 3604, in _set_annotate_text

    self._check_camera_open()

    File "/usr/lib/python3/dist-packages/picamera/camera.py", line 540, in _check_camera_open

    raise PiCameraClosed("Camera is closed")

    picamera.exc.PiCameraClosed: Camera is closed



    Im Thonny-Assistant wurde parallel ausgegeben:


    Warnings

    May help you find the cause of the error.

    ProzessPool#30.py

    Line 86 : Expression "MOTION_SENSORS[0].wait_for_motion() and MOTION_SENSORS[1].wait_for_motion()" is assigned to nothing


    Bei der Suche nach "picamera.exc.PiCameraClosed:Camera is closed" entdeckte ich diese Unterhaltung.

    Demanch sieht es für mich so aus als würde das erneute Aufrufen von

    camera = picamera.PiCamera()

    den GPU-Speicher aufzehren.


    Wie könnte die Lösung aussehen?

    Hallo Hofei,

    das Problem tauchte bisher nur im Zusammenhang mit ProzessPoolExecutor auf.

    camera.close() habe ich nach camera.stop_recording() eingefügt, Flasche mit warmen Wasser gefüllt und vom Balkon baumeln lassen.

    Nach der Aufnahme von einem Flaschen-Video stoppte ich das Script und startet es erneut - !BINGO!

    Die Fehlermeldungen blieben aus. :thumbup:

    Hallo DeaD_EyE,


    jetzt habe ich erst einmal den GPU-Speichers von 256 auf 512 erhöht. An das Firmware-Update habe ich mich noch nicht herangetraut.

    Nach dem Ändern des GPU-Speichers erhalte ich beim erneuten Starten des Scriptes


    >>> %Run 'ProzessPool#30.py'

    mmal: mmal_vc_port_enable: failed to enable port vc.null_sink:in:0(OPQV): ENOSPC

    mmal: mmal_port_enable: failed to enable connected port (vc.null_sink:in:0(OPQV))0x686cd0 (ENOSPC)

    mmal: mmal_connection_enable: output port couldn't be enabled

    Traceback (most recent call last):

    File "/home/ich-bins/ProzessPool#30.py", line 100, in <module>

    main(pool)

    File "/home/ich-bins/ProzessPool#30.py", line 76, in main

    camera = picamera.PiCamera()

    File "/usr/lib/python3/dist-packages/picamera/camera.py", line 433, in __init__

    self._init_preview()

    File "/usr/lib/python3/dist-packages/picamera/camera.py", line 513, in _init_preview

    self, self._camera.outputs[self.CAMERA_PREVIEW_PORT])

    File "/usr/lib/python3/dist-packages/picamera/renderers.py", line 558, in __init__

    self.renderer.inputs[0].connect(source).enable()

    File "/usr/lib/python3/dist-packages/picamera/mmalobj.py", line 2212, in enable

    prefix="Failed to enable connection")

    File "/usr/lib/python3/dist-packages/picamera/exc.py", line 184, in mmal_check

    raise PiCameraMMALError(status, prefix)

    picamera.exc.PiCameraMMALError: Failed to enable connection: Out of resources

    Hallo Hofei,


    wenn ich Deine Änderungen richtig erkannt habe wird der Wasserwerfer jetzt

    mit der Kombination start_watercannon(water_led) und water_led.blink(on_time=1, off_time=0.5, n=1, background=True) aufgerufen.


    Damit funzt der Wasserwerfer und in den Videos ist zu Beginn auch der Wasserstrahl zu sehen.

    Alle h264-Videos sind im NAS angekommen.

    Der kürzeste zeitliche Abstand zw. den Videos beträgt 13 sek. Bei diesem Test war ich der "Kater" und war vermutlich nicht aktiv genug vor den PIR.

    Es sind zwei Videos dabei die nur 5 sek. lang sind und dementsprechend auch nur ca. 11 Mb groß sind, bei der Aufnahme davor ist eine Unregelmäßigkeit im Terminal-Protokoll (rot formatiert).

    Terminal-Ausgabe-#30.pdf


    Der Script-Neustart gelingt nur nach einem PI-Neustart.


    mmal: mmal_vc_port_enable: failed to enable port vc.null_sink:in:0(OPQV): ENOSPC

    mmal: mmal_port_enable: failed to enable connected port (vc.null_sink:in:0(OPQV))0x6d02c0 (ENOSPC)

    mmal: mmal_connection_enable: output port couldn't be enabled


    Backend terminated or disconnected. Use 'Stop/Restart' to restart.


    Kann das damit zusammenhängen?

    da die Worker/Prozesse einmal gestartet werden und aktiv bleiben.

    Hallo Dennis,


    hier ist der Code mit dem ich jetzt noch einmal getestet habe.

    Anbei noch einmal die Terminal Ausgabe dazu. Ohne Fehlermeldung wurden vier 10 sec. Videos im Abstand von 11 - 15 sec aufgenommen aber ohne Aktivierung des Wasserwerfers. In der Terminal Ausgabe fehlen auch " Wasserwerfer an" und Wasserwerfer aus".

    Terminal-Ausgabe2.pdf

    Seltsam war, als ich in Thonny einen Teil der Terminal Ausgabe markiert und die Markierung mit der Maus nach oben gezogen habe wurde das Markieren blockiert und Chromium versuchte die Adresse des PI zu erreichen aber scheiterte mit der Meldung "Die Website ist nicht erreichbar".


    Gute N8

    Es sieht so aus als dass der Code läuft ohne die PIR zu beeinflussen. Anbei die Terminal-Ausgabe.

    Terminal-Ausgabe.pdf

    Seltsam ist, dass beim zweiten Mal heiße Flasche schwenken um 23:55:03 eine doppelt so große mp4 erzeugt wurde.

    Im NAS ist die h264 nur halb so groß. Die anderen Dateien stimmen bis auf wenige Kb überein.


    Zur Fehlermeldung im Beitrag 4 noch der Hinweis, dass diese Meldung oder eine sehr ähnliche Meldung erscheint, wenn vor dem Starten des Scriptes MotionEye und somit auch Motion die picamera in Beschlag hat. Aus diesem Grund habe ich den Autostart von MotionEye deaktiviert.

    Bei der ProcessPoolExecutor Variante erhalte ich beim erneuten Versuch das Script zu starten diese Meldung. Damit ich es erneut starten kann muss ich den PI neu starten. Das ist mir bereits beim Testen (Beitrag 4) aufgefallen.

    mmal: mmal_vc_port_enable: failed to enable port vc.null_sink:in:0(OPQV): ENOSPC

    mmal: mmal_port_enable: failed to enable connected port (vc.null_sink:in:0(OPQV))0x703090 (ENOSPC)

    mmal: mmal_connection_enable: output port couldn't be enabled


    Backend terminated or disconnected. Use 'Stop/Restart' to restart.


    Hier ist der Wirk-Code mit der ProcessPoolExecutor Variante.

    Im Wirkbetrieb verursacht die Version von DeaD_EyE und ebenfalls die Version von Dennis ununterbrochen PIR-Bewegungserkennung.

    Ich kann mir das nur so erklären, dass die parallelen Prozesse Schwankungen oder Störungen in der gemeinsamen Stromversorgung verursachen und dadurch die PIR verrückt spielen. Alles hängt an dem original PI-Netzteil.

    Ich gehe davon aus, dass bei beiden Versionen Transfter ins NAS und Erzeugung des mp4-Videos zur selben Zeit ablaufen.

    Wie kann man diese beiden Funktionen hintereinander starten?

    Hallo Dennis, hallo DeaD_EyE,


    vielen herzlichen Dank für Eure Hilfe.


    Hatte ich "blindes Huhn" etwa ganz unten im vierten Beitrag so eine Vorahnung?

    Kann es sein, dass die neuen Variablen h264_video und mp4_video nicht korrekt übergeben werden?

    Jetzt funzt es eigentlich. Nachdem ich die Pause am Ende auf eine Sek. reduziert habe ist vermutlich das eingetreten was ich befürchtet hatte.

    Wenn das nächste Video bereits aufgenommen wird bevor transfer und change_video_format fertig sind kommt der gesamte Prozess außer Tritt.

    Die h264-Videos werden laufend erzeugt sind aber nicht mehr mind. 20 Mb groß sondern einige Mb kleiner. So wie es aussieht werden alle h264-Videos ins NAS kopiert und auch alle mp2-Videos erzeugt obwohl einige Ausnahmefehler im Terminal ausgegeben werden. Die Videos sind auch okay.



    Ausschnitt aus dem Terminal-Protokoll

    /home/ich-bins/motioneye/Camera1/20211017_123128.mp4

    Transkodierung abgeschlossen

    Original /home/ich-bins/motioneye/Camera1/20211017_123118.h264 entfernt

    Transkodierung abgeschlossen

    Original /home/ich-bins/motioneye/Camera1/20211017_123128.h264 entfernt

    Ausnahmefehler: [Errno 2] No such file or directory: '/home/ich-bins/motioneye/Camera1/20211017_123128.h264'

    Transkodierung abgeschlossen

    Ausnahmefehler: [Errno 2] No such file or directory: '/home/ich-bins/motioneye/Camera1/20211017_123047.h264'

    Ende Video-Aufnahme - 12:32:59

    Start Video-Aufnahme - 20211017_123259

    Übertragung von /home/ich-bins/motioneye/Camera1/20211017_123118.h264 abgeschlossen

    /home/ich-bins/motioneye/Camera1/20211017_123118.mp4


    Cannot find file /home/ich-bins/motioneye/Camera1/20211017_123118.h264

    Error importing /home/ich-bins/motioneye/Camera1/20211017_123118.h264: Requested URL is not valid or cannot be found

    Ausnahmefehler: Command '['MP4Box', '-fps', '30', '-add', PosixPath('/home/ich-bins/motioneye/Camera1/20211017_123118.h264'), PosixPath('/home/ich-bins/motioneye/Camera1/20211017_123118.mp4')]' returned non-zero exit status 1.

    Ende Video-Aufnahme - 12:33:09

    Start Video-Aufnahme - 20211017_123309

    Ende Video-Aufnahme - 12:33:19

    Start Video-Aufnahme - 20211017_123319

    Übertragung von /home/ich-bins/motioneye/Camera1/20211017_123149.h264 abgeschlossen

    /home/ich-bins/motioneye/Camera1/20211017_123149.mp4

    AVC-H264 import - frame size 1920 x 1080 at 30.000 FPS

    Importing AVC-H264: | | (01/100)

    Importing AVC-H264: | | (02/100)

    Importing AVC-H264: | | (03/100)

    Importing AVC-H264: | | (04/100)

    Importing AVC-H264: |= | (05/100)

    Importing AVC-H264: |= | (06/100)

    Übertragung von /home/ich-bins/motioneye/Camera1/20211017_123139.h264 abgeschlossen

    /home/ich-bins/motioneye/Camera1/20211017_123139.mp4

    Importing AVC-H264: |= | (07/100)


    So extrem wird es im Wirkbetrieb nicht ablaufen.

    Nachdem ich jetzt 200 Sek. Pause eingefügt habe werden seltsamerweise wieder Ausnahmefehler

    PosixPath('/home/ich-bins/motioneye/Camera1/20211017_123118.mp4')]'

    gemeldet aber es läuft ohne ersichtliche Fehler weiter.

    Jetzt habe ich str(new_video_file) getestet. Danach erhalte ich jedoch noch hin und wieder diesen Ausnahmefehler und ständig


    Cannot find file /home/ich-bins/motioneye/Camera1/20211017_132110.h264

    Error importing /home/ich-bins/motioneye/Camera1/20211017_132110.h264: Requested URL is not valid or cannot be found


    Jetzt muss ich erst mal den Wirk-String ergänzen und testen.


    Viele Grüße

    Ich Bins

    Hallo Dennis,


    auch nach Deinen verständlichen Beispielen ist die Erstellung des mp4-Videos gescheitert.

    Das Pfad-Objekt new_video_file muss in ein str umgewandelt werden

    An zwei für mich sinnvoll erscheinenden Positionen habe ich str eingesetzt und erhielt wieder Fehlermeldungen.

    Erste Variante.


    Zweite Variante.

    Hallo Dennis,

    stimmt Du hast recht, mit Deiner Thread Lösung wurde Wasser marsch und Video-Aufnahme parallel möglich.

    Habe es jedoch in diesem Zusammenhang nicht mehr auf dem Schirm gehabt.

    Dieses Script möchte ich auch erweitern, zur besseren Übersichtlichkeit habe ich für diese Anfrage PIR und Wasserwerfer aus dem Script entfernt.

    Nach dieser Änderung wird das h264-Video ins NAS übertragen.


    Video-Aufnahme - 20211016_183912

    Ende Video-Aufnahme - 18:39:22

    Übertragung von /home/ich-bins/motioneye/Camera1/20211016_183912.h264 abgeschlossen

    Übertragung von /home/ich-bins/motioneye/Camera1/20211016_183912.h264 abgeschlossen


    Die Funktion change_video_format stolpern über irgendwas.


    [Importer] Unknown input file type for "/home/ich-bins/motioneye/Camera1/20211016_183912.mp4"

    [Importer] Unknown input file type for "/home/ich-bins/motioneye/Camera1/20211016_183912.mp4"

    Error importing /home/ich-bins/motioneye/Camera1/20211016_183912.mp4: Requested URL is not valid or cannot be found

    Error importing /home/ich-bins/motioneye/Camera1/20211016_183912.mp4: Requested URL is not valid or cannot be found

    Ausnahmefehler: Command '['MP4Box', '-fps', '30', '-add', PosixPath('/home/ich-bins/motioneye/Camera1/20211016_183912.mp4'),

    PosixPath('/home/ich-bins/motioneye/Camera1/20211016_183912.mp4')]' returned non-zero exit status 1.


    (Die Zeilen wurden teilweise doppelt ausgegeben)


    Das h264-Video wird danach nicht entfernt.

    Hallo DeaD_EyE,


    nach dem hoffentlich richtigen Einfügen Deiner Korrektur wurde die Datei 20211016_134901.h264 erstellt aber gleich wieder gelöscht und ich erhalte diese Meldung.


    Start Video-Aufnahme - 20211016_134901

    Ende Video-Aufnahme - 13:49:11

    Ausnahmefehler: [Errno 2] No such file or directory: '/home/ich-bins/motioneye/Camera1/20211016_134901.h264'


    Aktueller Zustand:

    Hallo DeaD_EyE,


    vielen Dank.


    Wenn ich das Script richtig interpretiere werden die Funktionen transfer und change_video_format jetzt in der Funktion task aufgerufen und nicht mehr in der Funktion main.

    In das komplette Script habe ich vor dem Starten sleep auf 300 erhöht.


    Beim Starten erhalte ich im Terminal


    Start Video-Aufnahme - 20211015-184409

    Ende Video-Aufnahme - 18:44:19


    Nach etwas mehr als einer Minute stoppte ich das Script.


    Im Ordner home/ich-bins/motioneye/Camera1 wird kurz ein h264-Video gespeichert und gleich danach entfernt. Ein mp4-Video wird nicht erzeugt.

    Im NAS kommt das h264-Video nicht an.


    Starte ich erneut erhalte ich im Terminal

    mmal: mmal_vc_port_enable: failed to enable port vc.null_sink:in:0(OPQV): ENOSPC

    mmal: mmal_port_enable: failed to enable connected port (vc.null_sink:in:0(OPQV))0x703090 (ENOSPC)

    mmal: mmal_connection_enable: output port couldn't be enabled


    Backend terminated or disconnected. Use 'Stop/Restart' to restart.


    Ohne einen Reboot geht in Thonny nichts mehr.

    Beim erneuten Starten und Beenden gleiches Spiel wie bereits beschrieben. Wenn ich jedoch das Script nicht beende erhalte ich im Terminal


    Start Video-Aufnahme - 20211015_191534

    Ende Video-Aufnahme - 19:15:44

    Start Video-Aufnahme - 20211015_192044

    Ende Video-Aufnahme - 19:20:54

    Start Video-Aufnahme - 20211015_192555

    Ende Video-Aufnahme - 19:26:05

    Start Video-Aufnahme - 20211015_193105

    Ende Video-Aufnahme - 19:31:15


    Für mich als Python-Laie sieht es so aus, wie wenn die Funktionen transfer und nicht gestartet wird

    und die Funktion change_video_format beim manuellen Beenden die picamera blockiert.


    Kann es sein, dass die neuen Variablen h264_video und mp4_video nicht korrekt übergeben werden?


    Viele Grüße

    Ich Bins