FotoBox Projekt für den Raspberry Pi [C++/Qt/wiringPi/gphoto2]

  • Hi maxhofi,


    Dankeschön! Freut mich immer wieder zu lesen, dass meine Software gebraucht und auch genutzt wird :love:


    Zur Ansteuerung der Spiegelreflexkamera wird 'gphoto2/libgphoto2' benutzt. Auf der libgphoto2 Projekt Webseite habe ich überprüft, ob deine Kamera "Sony Alpha-A6000" auch unterstützt wird. Sie wird unterstützt, muss aber im richtigen Modus betrieben werden: Sony Alpha-A6000 (Control): Image Capture, Trigger Capture, Configuration / Sony Alpha-A6000 (MTP): -. Stelle also bitte sicher, dass der "Control" Modus eingestellt ist!


    Die FotoBox Anwendung ruft einfach "gphoto2" (Kommandozeilen Anwendung mit Schnittstelle zu libgphoto2) mit den entsprechenden Parametern auf. Im Einstellungs-Dialog legt man zum Beispiel den Dateinamen/Verzeichnis fest und dieser wird dann in der Software vor dem eigentlichen Aufruf eingefügt.

    gphoto2 --capture-image-and-download --keep --filename %1 --set-config /main/settings/capturetarget=1 --force-overwrite

    %1 wird durch Verzeichnis, das aktuelle Datum/Zeit und den Dateiname ersetzt. Somit entsteht schlussendlich dieser beispielhafter Aufruf:

    gphoto2 --capture-image-and-download --keep --filename "/home/pi/pictures/2019_..._evetname.jpg" --set-config /main/settings/capturetarget=1 --force-overwrite


    Wir benutzten eine Canon EOS 100D und damit wir die Bilder zusätzlich noch auf der Kamera SD Karte sichern, ist dieser Parameter --set-config /main/settings/capturetarget=1 angefügt. Du könntest also mal zum Testen diesen Aufruf im Terminal ausführen:

    gphoto2 --capture-image-and-download

    und testen ob es nun klappt. Evtl. benötigst du für deine Kamera weitere/andere Parameter.


    Wenn du dann eine passende Konfiguration gefunden hast, kannst du diese im "Einstellungs-Dialog --> Fortgeschrittenen Tab --> Kommandozeile" ändern und mir natürlich nicht vergessen mir davon zu berichten. :)


    Viele Grüße, Thomas

  • Hallo Thomas,

    vielen Dank für deine Antwort!

    Die Kamera habe ich im richtigen Modus und kann auch über die Komandozeile problemlos Fotos aufnehmen und am Wunschort speichern (mit deinem vorgeschlagenen Befehl). Mit Fotobox wird auch ein Foto aufgenommen. Nur habe ich jetzt raus bekommen, dass dieses Bild immer in /home/pi gespeichert wird, egal was ich für einen Ordner "photo folder" angebe. Das Problem, dass mir das Bild nach dem aufnehmen nicht angezeigt wird besteht immer noch. Es kommt immer noch zu gleichen Fehlermeldung "Error: Taking a photo isn't working correctly".

    Ich werde nun nochmal den ganzen Raspberry neu aufsetzen und schauen ob das Problem immer noch da ist. Gibt es denn einen einfachen Weg die Fotobox über die Kommandozeile zu starten? bis jetzt muss ich immer den Raspberry neu booten.


    Vielen Dank und Grüße!


    Max

  • Hallo Thomas,

    ich habe jetzt nochmal den ganzen Raspberry neu aufgesetzt und alles wie von dir angegeben neu installiert. Leider klappt es immer noch nicht. Das Bild wir aufgenommen und unter /home/pi abgespeichert. Die Anzeige innerhalb von Fotobox funktioniert nicht und die schon genannte Fehlermeldung kommt. Ich habe es auch mit der älteren Version der Fotobox 1.3.2 probiert mit gleichem Ergebnis/Fehler.



    Hast du eine Idee wo der Fehler liegen könnte? Ich dachte, Fotobox findet das Bild zum anzeigen nicht und bringt deswegen die Fehlermeldung. Allerdings kommt die Fehlermeldung auch, wenn ich als Pfad von "photo folder" /home/pi einstelle. Die erstellten Bilder haben theoretisch auch die korrekten Rechte, dass sie zumindest angezeigt werden sollten.


    Vielen Dank und Grüße!


    Max

  • Hallo maxhofi,


    starte bitte die FotoBox Anwendung, drücke den Button "Voreinstellungen" um die Werkseinstellungen zu laden, dann starte die FotoBox (Ok Button) und beende sie wieder. Wichtig ist das starten der FotoBox, da nur dadurch die Settings dauerhaft gespeichert werden.

    Danach bitte erneut starten, auf den Tab "Fortgeschritten" gehen und unter "Kommandozeile" diesen Wert löschen --set-config /main/settings/capturetarget=1. Im Textfeld sollte dann nur noch folgende stehen:

    Code
    --capture-image-and-download --keep --filename %1 --force-overwrite

    Dann bitte nochmal testen.


    Quote

    Gibt es denn einen einfachen Weg die Fotobox über die Kommandozeile zu starten?

    Du kannst einfach einen Doppelklick auf die Anwendung machen, um sie zu starten.


    Viele Grüße, Thomas

    Edited once, last by tomikais: Frage beantwortet. ().

  • Hallo Thomas,

    super vielen Dank! So funktioniert es jetzt!

    im Textfeld sollte dann nur noch folgende stehen:

    Code
    --capture-image-and-download --keep --filename %1 --force-overwrite

    Wahrscheinlich ist es echt dumm von mir - aber wenn ich auf die Anwendung (die entpackte Datei??) doppelklicke, werde ich nur gefragt, mit welchem Programm ich diese "shared libary fieles" öffnen möchte. Oder meinst du etwas anderes mit der "Anwendung"? Ich hab leider keine große Ahnung von Linux, tut mir leid wenn das eine echt dumme Frage ist.


    Vielen Dank trotzdem und Grüße!


    Max

  • Hallo Thomas,


    Das schaut gut aus, Danke.

    Gibt es eine Möglichkeit einen Banner in die Bilder einzubauen, oder sogar 3 oder 4 Bilder mit einem Banner zu einem Bild zusammenbauen zu lassen? :)

    Und damit dann auch vier mal mit Countdown die Kamera auslösen zu lassen?


    Als Anregung ;) mit imagemagik kann man das machen. mit dem Paket kommt der Befehl montage mit einem Bsp wie ich mal 4er Bilder gebaut habe:

    Code
    # zuerst die oben beiden Bilder zusammenfügen
    montage ~/photobooth_images/*1.jpg ~/*2.jpg -tile 2x1 -geometry +10+10 ~/temp_montage2.jpg
    # Dann die unteren beiden Bilder
    montage ~/photobooth_images/*3.jpg ~/*4.jpg -tile 2x1 -geometry +10+10 ~/temp_montage3.jpg
    # Und dann das obere Doppel, der Banner und das untere Doppel
    montage ~/temp_montage2.jpg ~/photobooth_label.jpg ~/temp_montage3.jpg -tile 1x3 -geometry +0+0 ~/temp_montage4.jpg

    VG,

    Felix



    Edit:

    Eine Frage dazu noch zu den PINs, muss bei dir der Pin auf Masse oder Plus gezogen werden, bzw. wie ist das gedacht?
    Wofür der Output? Eine LED? Wann wird der ausgelöst, im Leerlauf oder nur kurz während des Auslösens und dann wie Lange. (Um Bsp. ein Fotolicht (kein Blitz) zu steuern)


    Edited once, last by Hobo ().

  • Hallo maxhofi,


    freut mich, dass es nun mit deiner Kamera funktioniert! Mit der nächsten Version werde ich den Teil mit den Parametern noch etwas umbauen müssen damit ich den oben vorgeschlagenen Befehl auch als Voreinstellung mit ausliefern kann.

    Der Fehler mit dem Doppelklick war schwieriger, da ich hier zuerst keinen Ansatzpunkt hatte. Habe es nach langem suchen trotzdem herausgefunden:^^:. In dem neue Docker Image ist Position-independent executables (PIE) aktiviert. Die erzeugte Anwendung wird dann in dem Datei-Explorer von Raspbian falsch interpretiert. Sie wird als shared object und korrekterweise als Anwendung erkannt. Ausführen konnte man die Anwendung aber ohne Probleme z.B. indem man FotoBox aus dem Terminal gestartet hat. Sei es drum^^ habe es bereits gefixt. Doppelklick startet die Anwendung nun wieder! :shy:


    Hallo Hobo,


    ja, klingt nach einem interessanten neuen Feature! Idee: Man kann wählen ob man noch einen Befehl oder vll. sogar ein Skript ausführen möchte, bevor das Bild angezeigt wird. Dazu müsste es noch möglich sein, dass man eine gewisse Anzahl an Durchgängen definieren kann. Hierzu gibt es auch schon ein etwas älteres Ticket im GitLab. Habe deine Idee in meine GitLab Feature Liste aufgenommen: "Skript or command before display photo".

    Wie du sicher mitbekommen hast, ist bei der aktuellen Version 1.3 jetzt erst einmal stabilisieren und bug fixing angesagt. Deswegen schiebe ich auch wie das Feature "Ausdrucken der Bilder" auf die kommende Version 1.4.

    Leider bin ich immer noch 'Einzelkämpfer' und komme nur Schritt für Schritt voran. Könnte mich natürlich auf die neuen tollen Features stürzen aber ich denke eine stabile, Ressourcen schonende und nahezu "fehlerfreie" Software ist uns bestimmt allen lieber :) Daher bitte ich hier noch etwas um Geduld. Für Version 1.3 ist noch folgendes geplant:

    Leider habe ich von Elektrotechnik kaum einen Plan :conf:. Damals von einem Arbeitskollegen grob in der Mittagspause das allgemeine Prinzip erklärt bekommen, kurz die Raspberry GPIO Schaltpläne angeschaut und mich dann mit "try an error" zum jetzigen Ergebnis gehangelt.

    Falls du dich hier etwas besser auskennst, ich benutze das wiringPi Framework. Der OUTPUT PIN wird auf 'OUTPUT' gesetzt, der INPUT PIN wird als 'INPUT' Pin gesetzt und auf "HIGH" abgefragt. Wenn er HIGH ist, wird die FotoBox aktiviert. Auszug aus der Klasse Buzzer:


    Mit LEDs oder Ansteuerung eines Blitzes mache ich zur Zeit noch nichts!


    Viele Grüße, Thomas

  • Hallo Thomas,

    Danke für dein großartiges Projekt. Das ist genau das was ich brauche ;)

    Leider habe ich genau das gleiche Problem wie auch andere schon beschrieben haben. Mit Doppelklick lässt sich die Fotobox nicht öffnen.

    Hab’s mit meinen beiden RPi‘s probiert; Model 3 (Stretch) und Model 3+ (buster).

    Bei beiden bin ich genau nach der Installationsanleitung vorgegangen, die du beschrieben hast. Soweit so gut, alles lief reibungslos. Die Fotobox 1.3.3 runter geladen und entpackt. Doppelklick drauf, leider nichts. Ich werde immer gefragt mit welchem Programm ich es öffnen will. Auch mit Autostart funktioniert es es nicht, ebenso wenig wenn ich die Fotobox aus dem Terminal starten möchte.

    Ich hoffe du kannst mir weiter helfen.

  • Hallo Hamiltoneon,


    lieben Dank :blush:

    Werde im Lauf des Tages, die neue Version 1.3.4 der FotoBox releasen und damit sollte es gelöst sein! :bravo2: Falls es jedoch immer noch nicht funktionieren sollte, dann melde dich bitte erneut! :helpnew:


    Viele Grüße, Thomas

  • Hallo zusammen,


    wie versprochen und gerade noch so pünktlich :^^: version 1.3.4:

    • bugfixes
      • Linux: "Doppelklick" startet die Anwendung wieder
      • Bildschirme mit niedriger Auflösung können jetzt wieder auf die Windows-Steuerelemente zugreifen
      • Der Einstellungsdialog ist jetzt ein normales Fenster, das zum Beispiel maximiert werden kann
      • Entfernen eines Canon-spezifischen Kameraparameters aus den standard Befehlszeilenoptionen von gphoto2 (wenn ihr in der Vergangenheit Probleme mit eurer Spiegelreflexkamera hattet, klicken auf "Voreinstellungen" und probiert nochmal die FotoBox Anwendung aus)
      • Öffnen von Hyperlinks in den Textfeldern funktionieren wieder
    • Wenn auf "Standard wiederherstellen" geklickt wird, werden die Einstellungen sofort gespeichert (es wird direkt in die Einstellungsdatei geschrieben)
    • Ein Hilfedialog wurde hinzugefügt, um allgemeine/spezielle Befehlszeilenoptionen für "gphoto2" und "raspistill" anzuzeigen
    • Raspbian Buster wird nun unterstützt (Raspbian Jessie wird nicht mehr unterstützt)
    • Beim Start der Anwendung wird nun das Logo der FotoBox angezeigt
    • README aktualisieren (FAQ Häufig gestellte Fragen)

    Viele Grüße, Thomas

    Edited once, last by tomikais: release notes hinzugefügt ().

  • Beides geht nicht ? Buster ist teilweise noch voller Bugs .. da war mir Jessie lieber..

    Moin, du meinst sicherlich Raspbian Stretch oder? Denke nicht das du noch Jessie benutzt oder?


    Raspbian Stretch, basiert auf Debian Stretch und wird natürlich noch unterstützt! ;)

    Raspbian Jessi, basiert auf Debian Jessie und war der Vorgänger von Stretch. Es wurde am 2015-04-25 veröffentlicht bzw. hatte offizielles "End of Life" am 2018-06-17. Die letzte Raspbian Stretch version wurde am 05.07.2017 veröffentlicht. Stretch hat da noch ein paar Tage bis zum offiziellen "End of Life". Danach werde ich auch sicherlich nicht direkt den Support aufgeben.

    Quelle: https://wiki.debian.org/DebianReleases#Production_Releases / https://en.wikipedia.org/wiki/Raspbian


    Alte Betriebssysteme zu unterstützen macht nur sehr viel Aufwand und hat keinen Mehrwert. Des weiteren werden mit den neuen OS Version auch neuere Qt Versionen ausgeliefert. Das bringt neue Möglichkeiten mit sich :geek:


    Viele Grüße, Thomas

  • Hallo Thomas,

    Doppelklick funktioniert super, ebenso raspistill mit der pi cam (v1.3.4).


    Leider erkennt die Fotobox meine DSLR Kamera nicht (Nikon D3200). Wenn ich die FB starte erscheint libEGL warning: DRI2: failed to authenticate, was ich leider nicht interpretieren kann.

    Ich vermute es liegt an gphoto, denn wenn ich im Terminal gphoto2 --auto-detect eingebe ist zunächst alles in Ordnung.


    Modell Port

    ----------------------------------------------------------

    Nikon DSC D3200 usb:001,006


    Also die Kamera wird unterstützt, was sich mit http://www.gphoto.org/proj/libgphoto2/support.php deckt.

    Aber mit --capture-image-and-download erscheint

    *** Fehler (-53: »Konnte das USB-Gerät nicht beanspruchen«) ***


    Nun, nach stundenlangen googeln und manuals durchlesen, ist mein Latein am Ende :(

    Auch diesmal hoffe ich auf deine Hilfe.


    Viele Grüße


    P.S. Vielleicht hilft dir dieses LogFile weiter: my-logfile.txt

  • Hallo Hamiltoneon,


    danke für die Rückmeldung über den Doppelklick. :thumbup:

    Quote

    libEGL warning: DRI2: failed to authenticate

    Die Warnung habe ich auch (selbst mit Raspbian Buster). Habe mal früher versucht raus zu bekommen wieso diese Warnung von Qt kommt, konnte aber nichts aussagekräftiges finden. Müsste jetzt nach neueren Informationen schauen. Die FotoBox Anwendung startet ja oder? Denke das die Meldung nicht mit deinem Kamera Problem zusammenhängt.


    Die Meldung bezüglich deiner Kamera kommt von gphoto2 und somit nicht von meiner Anwendung. Denke du hast mit libgphoto2 ein Problem und ich bin kein libgphoto2/gphoto2 Spezialist. FotoBox benutzt diese für sich eigenständige Anwendung nur. mhberry hatte auch mal ein ähnliches Problem und konnte es erfolgreich lösen: gphoto2 'Konnte das USB-Gerät nicht beanspruchen'


    Viele Grüße, Thomas

    Edited once, last by tomikais ().

  • Sorry, war zu faul alle Beiträge zu lesen (/schäm). Aber jetzt funktioniert alles.

    Vielen vielen Dank für die Tipps und die tolle Arbeit.

    :danke_ATDE:

  • Hallo Thomas,


    tolles Projekt, was du da gestartet hast.


    Nachdem ich erfolgreich meine alte Wurlitzer-Box mithilfe von fruitbox (siehe engl.sprachiges Raspi-Forum) "voll elektronifiziert" habe, steht nun das Projekt "Fotobox bauen" vor der Tür.

    Habe mich dann nach intensivem Studieren von Bauvorschlägen entschieden, das Projekt von adlerweb nachzubauen - bislang nur mit mäßigem Erfolg trotz xmaligem Installieren (jessie-lite, stretch-lite based), weil immer wieder neue Probleme auftauchen und leider für mich als Hardware-Typ und eher Hobby-Programmierer vieles verschwiegen wird, was an Voraussetzungen vorliegen und erstmal mühsam recherchiert werden muss.


    Daher, und weil mir dein duales Konzept mit Raspi-Kamera und DSLR-Kamera Support super gefallen hat, will ich meine Zeit eher hier investieren.


    Bevor ich starte, wollte ich - falls noch nicht bekannt - dich darauf hinweisen, dass Gordon leider sein "Wiring Pi" framework nicht mehr weiter verfolgen wird.

    Evtl. musst du dann auf die pigpio-lib ("http://abyz.me.uk/rpi/pigpio/") umsteigen. Allerdings ist aktuell ja nicht viel von den GPIOs in Benutzung, nur der Trigger-Taster, wenn ich das richtig verstanden habe, oder?


    An Fragen sind bei mir aktuell schon einige aufgetaucht:

    1. Welchen Access-Point verwendest du und wie ist er mit dem Raspi verbunden? (hard- und softwaremäßig)

    2. Installiert die aktuelle Software einen eigenständigen Webbrowser auf dem Raspi und kannst du deinen Hinweis mit dem QR-Code etwas näher erläutern ("auf der Rückseite der Box .."), bzw. wie man die Bilder dann auf sein Handy laden kann.

    3. Kann man die Dateinamen der gespeicherten Bilder anpassen (z.B. mit prefix, Zeitangabe etc.) oder gibt das eine evtl. installierte Gallery vor?

    4. Muss ich eine lite-Version von stretch oder buster oder die Vollversion installieren? (wenn "Nur-Fotobox-Anwendung", dann reicht doch die lite, oder?)


    Gebe mich jetzt mal ans Installieren und melde mich wieder, je nachdem, wie weit ich gekommen bin und wenn noch Klärungs-Fragen oder Ideen zur Weiterentwicklung aufgetaucht sind, wovon ich ausgehe.


    Grüße und vorab schon mal besten Dank für deine intensiven Vorarbeiten

    Raimund

  • Hallo rpt007,


    schön das du hier her gefunden hast und dir jetzt nach der Jukebox auch eine Fotobox baust 8). Danke für den Tipp mit der deprecated wiringPi library. Werde dann mit Version 1.4 oder 1.5 das Framework wechseln. Das sollte aber auch nicht wirklich problematisch sein, da ich nur einen Taster abfrage...


    Nun zu deinen Fragen:

    1. Welchen Access-Point verwendest du und wie ist er mit dem Raspi verbunden? (hard- und softwaremäßig)

    --> Wenn man ein offline Hotspot betreibt, muss man den Smartphones Internet Zugriff vorgaukeln. Deshalb habe ich mich für OpenWrt und somit auch für einen geeigneten Router entschieden. Die Wahl fiel auf den sehr kompakten "TP-Link TL-WR902AC v3". Mit einem Linux Kernel Mod bekommt man dann auch sogar das 5 Ghz WLAN zum laufen :geek: Der Raspberry Pi hänt dann direkt an dem einen LAN Port des Routers.

    2. Installiert die aktuelle Software einen eigenständigen Webbrowser auf dem Raspi und kannst du deinen Hinweis mit dem QR-Code etwas näher erläutern ("auf der Rückseite der Box .."), bzw. wie man die Bilder dann auf sein Handy laden kann.

    --> Auf der Rückseite der Box ist eine kleine Anleitung und der angedeutete QR Code abgebildet. Man soll sich mit dem WLAN "FotoBox" verbinden, kann dann die Webseite http://foto.box in einen Browser eingeben oder den QR Code abscannen, welcher eigentlich auch die genannte Webseite aufruft.

    3. Kann man die Dateinamen der gespeicherten Bilder anpassen (z.B. mit prefix, Zeitangabe etc.) oder gibt das eine evtl. installierte Gallery vor?

    --> Der Prefix ist fest, damit ich sicherstellen kann, dass ich keine Bilder überschreibe. Dazu nehme ich einfach Datum und Uhrzeit. Den Postfix, kannst du entsprechend selbst wählen. Damit ich immer die aktuelle Uhrzeit auf dem Pi habe (kein Internet - keine aktuelle Zeit/Datum), habe ich eine Real Time Clock (RTC) auf meinem Raspberry Pi verbaut. Als Gallery nehme ich pigallery2.

    4. Muss ich eine lite-Version von stretch oder buster oder die Vollversion installieren? (wenn "Nur-Fotobox-Anwendung", dann reicht doch die lite, oder?)

    --> Also es gibt ja drei Versionen. Du brauchst auf jeden Fall eine mit Desktop. Ob du die 'FULL' oder die abgespecktere Desktop nimmst ist dir überlassen. Ich persönlich nehme immer die abgespeckte version. Brauche ja z.B. keine Office Suite auf meiner FotoBox ;) Die 'LITE' ohne Desktop fällt somit raus. Zukünftig könnte ich wahrscheinlich mit der ein oder anderen Anpassung die lite variante auch unterstützen. Mache mir da auch mal ein Ticket.


    Viele Grüße, Thomas