Digitale Kamerasteuerung mit gPhoto2 und NodeRED

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

Startseite von NodeRED
Installation Base64
Installation Dashboard

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

Benutzeroberfläche für die Kamera

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

Die mit Sternchen (*) gekennzeichneten Verweise sind 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/

2 Kommentare

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.