Wieder war ich auf der Suche nach einer Webanwendung für eine digitale Kamera. Nun alles was zu finden war, ist sehr alt oder funktioniert nicht mehr da PHP5 wirklich komplett ab gekündigt ist. Es ist ein Elend warum die Leute keine Lust haben ihre 4-5 Jahre alte Software nicht mehr pflegen. Gerade erkenne ich dass ich ein wirklich großer Fan von web basierenden OpenSource Anwendungen bin. Nun um was geht es denn?
Nutzung einer Digitalkamera
Da eine Canon EOS 50D im Augenblick ungenutzt herumlag, kam die Idee auf, eine Kameraauslösung per Webinterface zu gestalten. Das ganze sollte per Desktop Browser und mobiles Smartphone/Tablet ebenfalls nutzbar sein. Nun wer mich kennt, weiß dass NodeRED ein fester Bestandteil der Programmierung ist. So kam die Überlegung auf wie steuere ich ein DSLR-Kamera via USB mit dem Raspberry Pi. Folgende Komponenten kamen zum Einsatz :
- Raspberry Pi 3B+
- Raspian als Betriebssystem
- Nextcloud
- Apache Webserver
- MariaDB für Nextcloud
- gPhoto2 als Command Line Tool
- NodeRED + Plugin Dashboard und Base64
- Eine Digital Kamera https://amzn.to/2FU1cnr (*)
Warum werden die oben genannten Komponenten eingesetzt, eine kleine Erklärung zum Verständnis.
Apache Webserver, weil ich damit relativ fit bin und er unproblematisch zu konfigurieren ist. Nextcloud, irgendwie müssen die Bilder ja per Tumbnail sichtbar sein und sollten im Browser die Möglichkeit des Download haben. MariaDB weil Nextcloud es benötigt. gPhoto2 ist das Tool mit dem ich meine Kamera steuern, programmieren und auslösen kann. NodeRED hat eine Programmierumgebung in der eigene Anwendung erstellt werden können und diese über ein Dashboard bedienbar macht.
Es braucht keinen zusätzlichen Webserver da bereits enthalten und über das Dashboard gibt es die Möglichkeit zur Anzeigen von Bedienelementen für Browser am Desktop oder Smartphone. Es ist heutzutage wirklich massiv einfach eine Webanwendung zu bauen ohne wirklich große Programmierkenntnisse. An dieser Stelle möchte ich betonen dass ich kein Programmierer bin, sondern ein Systems Engineer.
Installation Software
Machen wir uns ans Werk. Installieren von Apache2 und Nextcloud auf dem Raspberry. Gehen wir davon aus dass der Raspberry Pi betriebsbereit am Netz hängt und per SSH Zugriff erreichbar ist.
sudo apt install apache2 mariadb-server libapache2-mod-php sudo apt install php-gd php-json php-mysql php-curl sudo apt install php-mbstring php-intl php-imagick php-xml php-zip
sudo apt install gphoto2 nodered
Dann aktuelle Nextcloud Version herunterladen , Stand August 2020
cd /var/www/html sudo wget https://download.nextcloud.com/server/releases/nextcloud-19.0.1.zip sudo unzip nextcloud-19.0.1.zip sudo chown -R pi:www-data nextcloud sudo chmod 750 nextcloud -R
Einrichten der MySQL Datenbank:
sudo mysql CREATE USER 'nextcloud' IDENTIFIED BY 'password'; CREATE DATABASE nextcloud; GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@localhost IDENTIFIED BY 'password'; FLUSH PRIVILEGES; quit
Browser starten für die Installation mit folgender URL:
http://<IP-Adresse-des-Rasperry>/nextcloud
- Admin Benutzer anlegen mit Username und Password
- Einrichten Datenbank
- Erstellen eines Upload Ordner „gphoto2“
- Fertig ist die Installation
Nun einen Symlink erstellen, damit die aufgenommenen Bilder direkt von der Kamera auf den Raspberry Pi gespeichert werden.
gphoto2 --list-ports gphoto2 --auto-detect gphoto2 --summery ln -s /var/www/html/nextcloud/data/BenutzerName/files/gphoto2 /home/pi/gphoto2 vi /home/pi/.gphoto/settings Hinzufügen : gphoto2=filename=/home/pi/gphoto2/%Y-%m-%d-%H-%M-%S %f.%C
Shellscript erstellen damit Bilder aufgenommen werden die dann in Nextcloud gespeichert werden können.
Bitte das Zeichen „\“ in Zeile 6 entfernen.
mkdir /home/pi/bin cat << \EOF > /home/pi/bin/cam.sh #!/bin/sh gphoto2 \--capture-image-and-download sleep 2 sudo -u pi php /var/www/html/nextcloud/occ files:scan – all EOF
Weiteres Script erstellen für Aufnahme von 5 Bildern mit einer Pause von 5 Sekunden:
Bitte das Zeichen „\“ in Zeile 4 entfernen.
cat << \EOF > /home/pi/bin/cam1.sh #!/bin/sh gphoto2 \--capture-image-and-download -F 5 -I 5 sleep 2 sudo -u pi php /var/www/html/nextcloud/occ files:scan – all EOF chmod +x /home/pi/bin/*.sh
Einrichtung NodeRED
Starten von NodeRED :
sudo systemctl enable nodered.service sudo service nodered start sudo service nodered status
NodeRED im Browser starten mit http://<IP-Adresse-des-Raspberry>:1880
Nun den Code unter Menü „Import“ rechts oben einfügen:
https://git.unixweb.net/jhummel/Digital-Camera-NodeRED/raw/branch/master/camera.json
Der Flow sollte bei erfolgreichen Import so aussehen:
Jetzt die Benutzeroberfläche starten im Browser mit http://<IP-Adresse-Raspberry>:1880/ui
Zugriff und Übersicht der aufgenommenen Bilder in Nextcloud hier in der Übersicht.
Viel Spaß beim fotografieren mit der neuen Webanwendung für die digitale Kamera.
Bei Fragen einfach hier kommentieren.
Beste Grüße , Joachim
Alle Artikel auf dieser Seite sind mit einem sogenannte Provision-Links. Wenn du auf so einen Verweislink klickst und über diesen Link einkaufst, bekomme ich von deinem Einkauf eine Provision. Weiterführende Infos gibt es hier unter Punkt 8 in der Datenschutzerklärung https://blog.unixweb.de/datenschutzerklaerung/
Moin,
wie ist denn die Anbindung der Kamera an den Raspberry Pi, damit gPhoto2 darau zugreifen kann ?
Hallo Heinrich
die Kamera wird per USB-Kabel verbunden.
Mit „lsusb“ oder „gphoto2 – auto-detect“ wird die Kamera erkannt
Beste Grüße , Joachim
Das JSON funktioniert nicht. Kannst du es noch einmal hoch laden?