Snapshot

  • Hallöchen nochmals,


    das erstellen eines Snapshot per PHP klappt zwar, aber es wäre natürlich schön, wenn dies mit der bereitgestellten Funktionalität maito und take_snapshot funktionieren würde.


    Hat einer das in Verbindung mit mjpg-streamer am Start?


    Ich bekomme immer:
    [doorpi.action.SingleActions.take_snapshot] error creating snapshot - maybe fswebcam is missing


    Den Umbau von Ewald kenne ich!


    In einem Event habe ich take_snapshot angesprochen. Klappt aber nicht.
    Die Mail kommt ohne Anhang, d.h. der Versand klappt schon mal.


    1. Muß etwas speziell angelegt werden?
    2. Muß für einen Snapshot der MJPG-Stream beendet werden?


    Auszug doorpi.ini:

    Code
    Sektion [DoorPi]
    snapshot_path = !BASEPATH!/../DoorPiWeb/snapshots/
    number_of_snapshots = 10
    snapshot_size = 1280x720

    und

    Code
    [EVENT_OnStartup]
    10 = sleep:1
    20 = take_snapshot
    30 = mailto:******@********.de,DoorPi gestartet,DoorPi ist da!,true

    Danke. jbadmin

  • Hi, eines kann ich dir beantworten, der mjpg-streamer muss nicht beendet werden da dieser ja benötigt wird.
    ich denke das hier ewald dies besser beantworten kann als ich.


    Ewald würdest Du bitte ihm das mal erklären, danke.

    • Offizieller Beitrag


    das erstellen eines Snapshot per PHP klappt zwar, aber es wäre natürlich schön, wenn dies mit der bereitgestellten Funktionalität maito und take_snapshot funktionieren würde.


    Alles was sich um Vid dreht, ist von anderen entwickelt wurden. Mir wäre es auch lieber es mit Python und im DoorPi Projekt selbst zu lösen.
    Dafür hab ich mir heute doch eine PiCam geholt und werde das vorbereiten.

  • Hallo jbadmin,
    meine Vermutung ist, das in den Modulen mailto.py und take_snapshot.py der Aufruf von fswebcam nicht ersetzt wurde.
    Meine Beschreibung zur Thematik findest Du im Hauptforum. Vielleicht hilft das bei der Fehlersuche weiter. In meinem Aufbau fehlt mittlerweile der mjpeg_streamer, da ich mit einer IP-Kamera im Netzwerk arbeite.
    Beitrag #1293


    Sehr wichtig ist auch die von Andreas (Nea) gemachte Beschreibung für die Implementation des mjpeg_streamers auf Git Hub Issue #130. Hier ist wirklich jeder Hinweis zu beachten.


    !!Achtung!! die im Beitrag #1293 beschriebene Fehlerbereinigung für mailto.py bitte nicht anwenden. Mir ist aufgefallen, dass die Deklaration in späteren Beiträgen beibehalten wurde und dafür im Programmcode, übrigens nur an einer Stelle, sub in subprocess geändert wurde.


    Eines ist mir noch aufgefallen:
    In Deiner doorpi.ini verwendest Du zuerst "take_snapshot", danach dann "mailto".
    Die Auswirkung ist, dass 2 Snapshots erzeugt werden. Einer mit dem Aufruf "take_snapshot", abgelegt in ...../DoorPiWeb/snapshots, der 2. Snapshot wird von mailto erzeugt, abgelegt als doorpi.jpg in /tmp.
    Das kann durchaus von Dir so gewollt sein. Ich wollte nur darauf aufmerksam machen, dass Du 2, quasi gleiche Snapshots unmittelbar hintereinander erzeugst.


    Gruß
    Ewald




    http://www.forum-raspberrypi.d…port?pid=190874#pid190874

  • Danke Ewald für deine Erläuterungen. Jetzt weiß ich auch wieder dass das php script von dir war. Ich hatte lange überlegt ob ich das selber geschrieben hatte, aber daran konnte ich mich garnicht erinnern, oder ob es von jemand anderen war. Nochmals danke für die Idee und das script.

  • Alles was sich um Vid dreht, ist von anderen entwickelt wurden. Mir wäre es auch lieber es mit Python und im DoorPi Projekt selbst zu lösen.
    Dafür hab ich mir heute doch eine PiCam geholt und werde das vorbereiten.


    Hallo Thomas,


    dann werde ich wohl auf Neuigkeiten von dir warten.
    Die Änderung der mailto und take_snapshot sind ja nicht updatesicher.


    Danke, jbadmin

    • Offizieller Beitrag

    Freiwillige Tester nach vorn:


    Branch: https://github.com/motom001/Do…ction_take_snapshot_picam
    Installationsanleitung:
    Anleitung Pi2 + Jessie (Release 2016-02-26) mittels manueller Installation


    Code
    sudo pip uninstall -y doorpi
    sudo rm -r -f /tmp/DoorPi
    git clone https://github.com/motom001/DoorPi.git -b action_take_snapshot_picam /tmp/DoorPi
    cd /tmp/DoorPi
    sudo python ./setup.py install



    Auszug aus der Changelog:


  • Hallöchen,
    erster Schnellschuss liefert im Log:
    2016-03-18 14:31:26,226 [TRACE] [doorpi.action.base] run SnapShotAction with args () and kwargs {'snapshot_path': '/usr/local/etc/DoorPi/../DoorPiWeb/snapshots$
    2016-03-18 14:31:27,121 [TRACE] [doorpi.conf.config_object] get_integer for key number_of_snapshots in section DoorPi (default: 10) returns 10
    2016-03-18 14:31:27,318 [ERROR] [doorpi.action.handler] [G0EDE0] error while fire action SnapShotAction with args () and kwargs {'snapshot_path': '/usr/local/e$
    Traceback (most recent call last):
    File "/usr/local/etc/DoorPi/doorpi/action/handler.py", line 284, in fire_event_synchron
    result = action.run(silent)
    File "/usr/local/etc/DoorPi/doorpi/action/base.py", line 48, in run
    return self.__callback(**self.__kwargs)
    File "/usr/local/etc/DoorPi/doorpi/action/SingleActions/take_snapshot.py", line 49, in get_snapshot_from_picam
    with picamera.PiCamera() as camera:
    File "/usr/lib/python2.7/dist-packages/picamera/camera.py", line 488, in __init__
    self.STEREO_MODES[stereo_mode], stereo_decimate)
    File "/usr/lib/python2.7/dist-packages/picamera/camera.py", line 620, in _init_camera
    prefix="Camera component couldn't be enabled")
    File "/usr/lib/python2.7/dist-packages/picamera/exc.py", line 191, in mmal_check
    raise PiCameraMMALError(status, prefix)
    PiCameraMMALError: Camera component couldn't be enabled: Out of resources (other than memory)


    Werde aber heute Abend noch einmal schauen.
    Danke, jbadmin

  • Hallo Thomas,
    die Überarbeitung von "take_snapshot" ist Dir gut gelungen. Die .jpg werden jetzt mit einem vernünftigen Zeitstempel versehen und werden auch rollierend ersetzt. :)
    Abgefragt wird eine Netzwerkkamera, nicht eine raspberry kamera.


    Was bei mir zuerst nicht ging war der Mailversand. Das lag daran, das jetzt das Parameter "use_ssl" zwingend angegeben werden muss, bei mir mit dem Wert "ssl".


    Meine bisher funktionierende Konfiguration in der doorpi.ini (Original Namensfelder und Passwort ersetzt)

    Code
    [SMTP]
    from = Vorname.Nachnahme@gmx.de
    need_login = true
    password = 1234567890
    port = 587
    server = mail.gmx.net
    use_tls = true
    username = Vorname.Nachnahme@gmx.de


    Fehlermeldung aus doorpi.log


  • Hallo Thomas,
    die Überarbeitung von "take_snapshot" ist Dir gut gelungen. Die .jpg werden jetzt mit einem vernünftigen Zeitstempel versehen und werden auch rollierend ersetzt. :)
    Abgefragt wird bei mir eine Netzwerkkamera, nicht eine raspberry kamera.


    Was bei mir zuerst nicht ging war der Mailversand. Das lag daran, das jetzt das Parameter "use_ssl" zwingend angegeben werden muss, bei mir mit dem Wert "use_ssl = False". Das war bisher nicht notwendig. ;)


    Gruß
    Ewald

  • Hallo,


    da ich jetzt erst wieder ein wenig Zeit hatte, habe ich mich nochmal mit dem Thema beschäftigt.


    2016-03-20 10:46:21,806 [TRACE] [doorpi.action.handler] [KPFRHS] try to fire action SnapShotAction with args () and kwargs {'snapshot_path': ''}
    2016-03-20 10:46:21,810 [TRACE] [doorpi.action.base] run SnapShotAction with args () and kwargs {'snapshot_path': ''}
    2016-03-20 10:46:22,751 [ERROR] [doorpi.action.handler] [KPFRHS] error while fire action SnapShotAction with args () and kwargs {'snapshot_path': ''} for event$
    Traceback (most recent call last):
    File "/usr/local/etc/DoorPi/doorpi/action/handler.py", line 284, in fire_event_synchron
    result = action.run(silent)
    File "/usr/local/etc/DoorPi/doorpi/action/base.py", line 48, in run
    return self.__callback(**self.__kwargs)
    File "/usr/local/etc/DoorPi/doorpi/action/SingleActions/take_snapshot.py", line 48, in get_snapshot_from_picam
    filename = get_next_filename(snapshot_path)
    File "/usr/local/etc/DoorPi/doorpi/action/SingleActions/take_snapshot.py", line 31, in get_next_filename
    os.makedirs(snapshot_path)
    File "/usr/lib/python2.7/os.py", line 157, in makedirs
    mkdir(name, mode)
    OSError: [Errno 2] No such file or directory: ''


    Leider bleibt ein ERROR im log wie beschrieben. Ich bin jetzt kein Spezi, aber meckert er nicht über eine Pfadangabe?


    Probiert habe ich in der Sektion [DoorPi]
    snapshot_path = !BASEPATH!/../DoorPiWeb/snapshots
    # snapshot_path = !BASEPATH!/doorpi/media/snapshots
    snapshot_path =


    Ich wäre um einen Denkanstoß eurerseits verlegen ;)


    Danke, jbadmin

  • Hallo Thomas,


    doorpi wird als Dienst ausgeführt. Also automatisch beim Start.


    Die Verzeichnisse existieren alle!!!


    Was aber komisch ist: ps -ax liefert


    521 tty1 Ss+ 0:00 /sbin/agetty --noclear tty1 linux
    759 ? Sl 8:02 /usr/bin/python /usr/local/etc/DoorPi/main.py start --configfile /usr/local/etc/DoorPi/conf/doorpi.ini --trace
    760 ? Ss 0:00 /usr/sbin/exim4 -bd -q30m
    858 ? S 0:00 /usr/bin/python /usr/local/etc/DoorPi/main.py start --configfile /usr/local/etc/DoorPi/conf/doorpi.ini --trace
    1006 ? Ss 0:00 sshd: pi [priv]


    Wird der doorpi zweimal gestartet?????? Und wenn ja, wo kann ich dies finden und beheben?


    Danke, jbadmin

  • Hi Thomas,


    ok. Und wie komme ich nun meinem Problem auf die Schliche?


    Da ich manuell installiert habe, sind von mir die Skripte take_snapshot.py und mailto.py händisch geupdatet worden.
    Also der Inhalt der Skripte ist damit gemeint.


    Muß ich denn sonst noch eine Änderung vornehmen? Ich bin kein LINUX-Spezi!!!! Sorry.


    Danke und Gruß jbadmin

  • Wer kann mir bitte helfen!!!!!


    Ich versuche immer noch einen snapshot hinzubekommen.


    Jetzt habe ich die Installation neu aufgesetzt. Alles wie es soll!!!!


    Jetzt habe ich auch das Update eingespielt, aber das log meckert immer noch. Ich kapiere es einfach nicht!


    2016-03-21 20:45:42,788 [ERROR] [doorpi.action.handler] [K1IF7O] error while fire action SnapShotAction with args () and kwargs {'snapshot_path': '/tmp'} for e$
    Traceback (most recent call last):
    File "/usr/local/lib/python2.7/dist-packages/DoorPi-2.5.0.1-py2.7.egg/doorpi/action/handler.py", line 284, in fire_event_synchron
    result = action.run(silent)
    File "/usr/local/lib/python2.7/dist-packages/DoorPi-2.5.0.1-py2.7.egg/doorpi/action/base.py", line 48, in run
    return self.__callback(**self.__kwargs)
    File "/usr/local/lib/python2.7/dist-packages/DoorPi-2.5.0.1-py2.7.egg/doorpi/action/SingleActions/take_snapshot.py", line 49, in get_snapshot_from_picam
    with picamera.PiCamera() as camera:
    File "/usr/lib/python2.7/dist-packages/picamera/camera.py", line 488, in __init__
    self.STEREO_MODES[stereo_mode], stereo_decimate)
    File "/usr/lib/python2.7/dist-packages/picamera/camera.py", line 620, in _init_camera
    prefix="Camera component couldn't be enabled")
    File "/usr/lib/python2.7/dist-packages/picamera/exc.py", line 191, in mmal_check
    raise PiCameraMMALError(status, prefix)
    PiCameraMMALError: Camera component couldn't be enabled: Out of resources (other than memory)


    Ich habe den mjpg_streamer jetzt mal ausgeschaltet.


    Arbeite ich mit dem Event mailto, so kommt im log


    2016-03-21 21:17:02,465 [ERROR] [doorpi.action.SingleActions.mailto] send not attachment for this mail: coercing to Unicode: need string or buffer, bool found
    Traceback (most recent call last):
    File "/usr/local/lib/python2.7/dist-packages/DoorPi-2.5.0.1-py2.7.egg/doorpi/action/SingleActions/mailto.py", line 59, in fire_action_mail
    with open(smtp_snapshot, "rb") as snapshot_file:
    TypeError: coercing to Unicode: need string or buffer, bool found


    20 = mailto:xxx@xxxx.de,DoorPi ist da!,DoorPi ist da!,true
    Er kommt also am Ende des Strings nicht mit dem true klar.


    Herzlichen Dank für eure Mühe, jbadmin

  • Hallo Thomas,


    die "!" aus dem Aufruf raus war es nicht.


    Hier die URL:
    /usr/local/bin/mjpg_streamer -i "/usr/local/lib/input_uvc.so -d /dev/video0 -n -r 1024x768 -f 24 –q 80" -o "/usr/local/lib/output_http.so -n -w /usr/local/www -p 8082" >/dev/null 2>&1 &


    Gruß, jbadmin