Il est possible de récupérer vos photos provenant de votre appareil photo reflex numérique en utilisant un cùble USB
, mais ce nâest probablement pas la solution la plus rapide.
Lâinterface USB de votre appareil photo reflex numĂ©rique peut vous sembler assez inutile, en rĂ©alitĂ© cette interface Ă intĂ©rĂȘt pour auditer ou configurer ce pĂ©riphĂ©rique.
Sous Linux, gPhotoÂČ prend en charge la synchronisation de lâhorloge interne de lâappareil photo avec celle de lâordinateur pour de nombreux modĂšles. La liste complĂšte des modĂšles supportĂ©s est disponible sur le site de gPhotoÂČ.
Jâai bien galĂ©rĂ© pour ce billet, que jâai commencĂ© Ă Ă©crire courant 2019, car il y a 3 problĂšmes distincts Ă rĂ©soudre.
- Les appareils photos que jâai testĂ© ne gĂšrent pas les changements dâheures entre lâĂ©tĂ© et lâhiver, hors câest mon problĂšme principal. Jâai mis du temps Ă comprendre quâune gestion des fuseaux horaire sans prendre en compte lâheure dâhivers/Ă©tĂ© Ă©tait au final complexifiait le problĂšme,
- Il y a un bug entre gphotoÂČ et les appareils de type CANON EOF : la conversion entre lâheure courante de lâordinateur et lâheure UTC de lâappareil est Ă©trange (Ce bug identifiĂ© nâa pas avancĂ© depuis 2019),
- Les forums recopie la mĂȘme erreur. Les forums français, en particulier, appliquent une rĂšgle dĂ©finie pour des pays qui nâont pas de changement dâheure dans lâannĂ©e ayant comme consĂ©quence que cela ne fonctionne quâen hivers⊠Je ne comprends pas vraiment, car je nâai trouvĂ© aucun appareil photo qui rĂ©solvais correctement ce point.
gphotoÂČ
La commande gphotoÂČ vous aidera pour cette tĂąche qui sâinstalle comme suit :
sudo apt update && sudo apt install -y gphoto2
Pour utiliser gphotoÂČ, il faut bien-sur que le cĂąble USB
soit connectĂ©, que lâappareil photo soit allumĂ© (faite attention Ă son extinction automatique), et que le systĂšme de fichier de lâappareil photo ne soit pas montĂ© (cela est gĂ©nĂ©ralement fait automatiquement).
Plus de dĂ©tail dans le billet sur lâinstallation de gPhotoÂČ
En général, vous devrez penser à démonter le « disque » qui sera monté par votre systÚme.
Pour obtenir la liste des commandes disponible avec votre appareil photo, vous pouvez utiliser :
gphoto2 --list-config
Cela validera que gphotoÂČ est capable de communiquer avec votre appareil photo.
Les appareils supportés
Actuellement, plus de 2400 modĂšles dâappareils photos sont supportĂ©s, correspondant Ă 231 marques, je ne vais donc pas faire la liste ici.
gphoto2 --list-cameras
Notez quâil est possible que votre appareil photo soit supportĂ© sans pour autant ĂȘtre prĂ©sent dans cette liste, pour savoir comment votre modĂšle est dĂ©tecte vous pouvez utiliser :
gphoto2 --auto-detect
gphoto2 --summary
-
Ex: gphoto2 --summary
Camera summary: Manufacturer: Canon Inc. Model: Canon EOS 700D Version: 3-1.1.4 Serial Number: 5556df3ac4089b73c8b4eba88e12c069 Vendor Extension ID: 0xb (1.0) Capture Formats: JPEG Display Formats: Association/Directory, Script, DPOF, MS AVI, MS Wave, JPEG, CRW, Unknown(b103), Unknown(bf02), Defined Type, Unknown(b104), Unknown(b105) Device Capabilities: File Download, File Deletion, File Upload No Image Capture, No Open Capture, Canon EOS Capture, Canon EOS Capture 2 Storage Devices Summary: store_00020001: StorageDescription: SD VolumeLabel: None Storage Type: Removable RAM (memory card) Filesystemtype: Digital Camera Layout (DCIM) Access Capability: Read-Write Maximum Capability: 31902400512 (30424 MB) Free Space (Bytes): 31902236672 (30424 MB) Free Space (Images): -1 Device Property Summary: Property 0xd402:(read only) (type=0xffff) 'Canon EOS 700D' Property 0xd407:(read only) (type=0x6) 1 Property 0xd406:(readwrite) (type=0xffff) 'Unknown Initiator' Property 0xd303:(read only) (type=0x2) 1 Battery Level(0x5001):(read only) (type=0x2) Enumeration [100,0,75,0,50] value: 100% (100)
Ensuite, vous pouvez connaßtre la liste des propriétés accessibles avec votre modÚle :
gphoto2 --list-config
Et Ă©ventuellement rĂ©cupĂ©rer lâensemble des valeurs :
gphoto2 --list-all-config
Autre commandes
Une autre commande que vous pouvez exécuter sans risque, est de récupérer le compteur de photo.
gphoto2 --get-config /main/status/shuttercounter
Ensuite gphotoÂČ prend en charge la capture de photo, et peut Ă©galement lire et Ă©crire dans la mĂ©moire de lâappareil photo (en gĂ©nĂ©ral, la carte SD).
Ces fonctionnalitĂ©s ne sont pas inintĂ©ressantes, mais elles ne correspondent pas Ă une utilisation traditionnelle dâun appareil photo.
Nâutilisant pas ces fonctionnalitĂ©s, je ne mâĂ©talerais pas sur cette partie.
Plus de dĂ©tail dans le billet sur lâ[installation de gPhotoÂČ]((/post/2019/08/06.installation-gphoto2.html)
Notion prĂ©alable Ă la configuration de lâheure
-
La notion dâepoch
Lâepoch (de lâanglais « époque » ou « Úre ») reprĂ©sente la date initiale Ă partir de laquelle est mesurĂ© le temps par les systĂšmes dâexploitation ou par certains langages.
Notez quâil nây a pas de systĂšme de mesure moins arbitraire que dâautre. La date et lâheure Ă©tant par nature des conventions.
L'epoch Posix ou l'epoch Unix (aussi appelĂ©e heure Unix, heure Posix, Unix Timestamp, etc) est une mesure du temps basĂ©e sur le nombre de secondes Ă©coulĂ©es depuis le 1er janvier 1970 00:00:00 UTC. Elle est utilisĂ©e principalement dans les systĂšmes qui respectent la norme POSIX, dont les systĂšmes de type Unix, dâoĂč son nom.
La date avant cette l'epoch Posix sont représenté sur une forme négative.
La plupart des langages de programmation utilisent Ă©galement cette reprĂ©sentation pour les dates. Par exemple : C/C++, Java, JavaScript, Perl, PHP, Python, RubyâŠ
Configuration de lâheure
La configuration de lâheure est sans doute la plus utile et la plus courante.
Pour rĂ©cupĂ©rer lâheure de lâappareil photo, vous devez utiliser :
gphoto2 --get-config datetime
Label: Camera Date and Time
Readonly: 0
Type: DATE
Current: 1622796649
Printable: ven. 04 juin 2021 10:50:49
Help: Use 'now' as the current time when setting.
END
Pour mettre Ă jour lâheure de votre appareil photo, la solution la plus simple :
gphoto2 --set-config datetime=now
gphoto2 --set-config datetime=$( date +%s ) # epoch Posix
Constatons que pour rĂ©cupĂ©rer le nombre de seconde depuis le 1er janvier 1970, il est possible dâutiliser la commande date
comme suit :
date +%s
Cependant cette commande ne fonctionne pas avec les réflexes EOS CANON. La solution est de passer par le nom complet de la propriété :
gphoto2 --set-config /main/settings/datetime=now
gphoto2 --set-config /main/settings/datetime=$( date +%s )
Cela rĂ©sout cependant que partiellement le problĂšme, car il faut encore tenir compte du dĂ©calage liĂ© au fuseau horaireâŠ
Du coup, il existe une alternative, au moins, pour les appareils de type « CANON EOS » :
gphoto2 --set-config /main/actions/syncdatetime=1
Bon, en rĂ©alitĂ©, ça ne fonctionne pas non plus, car il est peu probable que vous souhaitiez avoir lâheure UTC sur votre appareil photo.
Au final, la solution passe par la propriété /main/settings/datetimeutc
et on doit recalculer lâheure pour tenir compte du fuseau horaire. Je vous gagne du temps lâutilisation de /main/actions/syncdatetimeutc
ne résous rien.
đ Configuration prĂ©alable
En fait, une partie du problĂšme vient de lâappareil, sur mon « Canon EOS 700D », il y a un rĂ©glage du fuseau horaire, mais cela ne tient pas compte du changement dâheure entre hivers et Ă©tĂ©.
Cela implique dâavoir une solution boiteuseâŠ
Je vous propose une solution qui permettra de configurer lâheure de votre de maniĂšre plus comprĂ©hensible.
Pour cela il faut définir le fuseau horaire de votre appareil photo à UTC ± 00:00, en général, cela correspond à un réglage pour la ville de Londres (« london »).
Et Ă partir ce maintenant, on utilisera les rĂ©glages UTC pour configurer lâheure de lâappareil photo en tenant compte du dĂ©calage de lâordinateur.
Jouons avec la dateâŠ
On se rappelle, que si votre fuseau horaire est une heure en avance par rapport Ă lâheure UTC, il faudra soustraire 1Ă60Ă60 secondesâŠ
Pour la France mĂ©tropolitaine, en hivers (au moins pour lâinstantâŠ), il faut utiliser quelque chose comme cela :
gphoto2 --set-config /main/settings/datetimeutc=$(( $( date +%s ) + 1*60*60 ))
Et en Ă©tĂ©, en France mĂ©tropolitaine, en hivers (au moins pour lâinstantâŠ), il faut utiliser quelque chose comme cela :
gphoto2 --set-config /main/settings/datetimeutc=$(( $( date +%s ) + 2*60*60 ))
Bon, câest pas mal, mais personnellement, je ne trouve pas cela satisfaisant, jâaimerais bien ne pas avoir Ă mâoccuper du dĂ©calage horaire, et mâappuyer sur la configuration globale de lâordinateur.
Nous allons devoir "bricoler" la date, pour ĂȘtre Ă mĂȘme de dĂ©terminer
voici les notions nécessaires:
date +%s # Permet dâafficher lâheure courante sous la forme epoch Posix
date +'%F %T' # Permet dâafficher lâheure courante sous la forme YYYY-MM-DD hh:mm:ss
Nous allons avoir besoin de convertir une date donnée en secondes (epoch Posix):
date "+%s" --date="2018-04-01 12:33:45"
Pour convertir une date donnée en son équivalent UTC, il faut utiliser:
date -u --date=@$(date "+%s" --date="2018-04-01 12:33:45")
et pour connaĂźtre lâheure UTC courante :
date -u --date=@$(date "+%s" --date="$( date +'%F %T' )")
Et si on fait le calcul suivant, on obtient notre dĂ©calage horaire courant par rapport Ă lâheure UTC :
echo $(( $( date -u +"%s" --date="$( date +'%F %T' )" ) - $( date -u +"%s" ) ))
đ Solution
Et on a enfin une solution pour mettre Ă jour lâheure de notre appareil photo qui tiens compte du fuseau horaire ainsi que dâun Ă©ventuel changement dâheure :
gphoto2 --set-config /main/settings/datetimeutc=$( date -u +"%s" --date="$( date +'%F %T' )" )
gphoto2 --get-config datetime
On rappelle que cela implique que vous avez désactivé la gestion des fuseaux horaire sur votre apparie photos et que cela peut se faire en sélectionnant quelque-chose qui parle de UTC ou de Londres.
Références
- Les autres billets sur gPhotoÂČ,
- The gphoto.org website [EN]
- The gPhotoÂČ Manual [EN]
- Setting datetime incorrectly handles timezones
- L'epoch Posix (et Ă©galement epoch Unix):
- DĂ©finition de Epoch
- DĂ©finition de l'Heure Unix
኿