script bash et commande remote

Posez ici vos questions d'utilisation, de configuration de DomoticZ, de bugs, de conseils sur le logiciel lui même dans son utilisation et son paramétrage.
Des forums spécifiques sont ouverts ci-dessous pour regrouper les différents sujets.
laurent1981
Messages : 3
Inscription : 28 févr. 2020, 12:30

script bash et commande remote

Message par laurent1981 »

Bien le bonjour à tous,

Je débute avec domoticz et je rencontre bien entendu des difficultés avec un script fonctionnel en ligne de commande.
En gros, j'ai un script bash qui me prend une photo avec caméra pi, la nomme, la copie, lui applique un filtre (bandeau et écritures) et ensuite l'enregistre sur un nom à base de date et d'heure.
Il fonctionne bien en ligne de commande, meme en ./script.sh mais lorsque je le lance via domoticz, les fichiers sont créés mais ils sont commes protégés en écriture.
Une erreur se marque lorsque je veux les ouvrir et meme lors d'une syncro rcone sur gdrive, ceux ci ne sont pas copiés.
Une idée d'une solution ?
Je compte mettre mon script et le message d'erreur des photos afin de visualiser un peu mieux.

Merci à ceux qui prendront le temps de me lire et encore plus à ceux qui me répondront avec un début de solution.

Laurent.

Code : Tout sélectionner

#!/bin/bash

# Se d?placer dans le dossier idoine au sein du Raspberry Pi
cd /home/pi/Pictures/photos-domoticz

# Cr?er l'image et faire une pause de 15 secondes (car image de belle qualit? alors que le Raspberry Pi est un nano-ordinateur)
raspistill -w 800 -h 600 -o photo_camera.jpg -q 100 
echo "photo_camera.jpg"
sleep 10

# D?finition du format de la date ? inscrire (en texte) sur l'image
time=$(date +"%d/%m/%Y - %H:%M:00")

# Choix automatique de la taille de la police de caract?res (permet le placement des lignes o? il faut dans le bandeau)
if [ $width -ge $height ]
then
pointsize=$(($width))
else
pointsize=$(($height))
fi

echo " Width: $width, Height: $height. Using pointsize: $pointsize"

# Script de transformation de l'image avec cr?ation du bandeau + ajout du texte puis enregistrement sous un autre nom (le nom du fichier ? transf?rer)

convert "photo_camera.jpg" -fill '#DCDCDC' -draw 'rectangle 0,450,800,600' \
-gravity SouthEast -pointsize 18 -font Bookman-DemiItalic -fill '#7F7F7F' -annotate +$pointsize+10 "test3" \
-gravity SouthEast -pointsize 20 -fill '#7F7F7F' -annotate +$pointsize+30 "Lau GO " \
-gravity SouthWest -pointsize 30 -font Bookman-DemiItalic -fill '#000000' -annotate +$pointsize+10 "$time" \
-gravity SouthWest -pointsize 20 -fill '#7F7F7F' -annotate +$pointsize+40 "test3" \
-quality 100 \
"photo_camera2.jpg"
echo "photo_camera2.jpg"
sleep 3

# D?finition d'un autre format de date pour l'ins?rer dans le nom du fichier de sauvegarde
time=$(date +"%Y-%m-%d_%H-%M")

# Copie de l'image modifi?e avec un autre nom pour la garder durablement (le fichier "photo_camera2.jpg" est auto-?cras? en local et en distant)
#mv "photo_camera2.jpg" "$time.jpg"
cp "photo_camera2.jpg" "$time.jpg"
echo "$time.jpg"
sleep 3
aleph0
Messages : 328
Inscription : 27 avr. 2016, 08:06
Localisation : Hérault (34)

Re: script bash et commande remote

Message par aleph0 »

tu peux nous mettre la sortie d'un ls -l sur le répertoire où tu stockes les photos ?
laurent1981
Messages : 3
Inscription : 28 févr. 2020, 12:30

Re: script bash et commande remote

Message par laurent1981 »

Y'a un début de piste effectivement...
-rw-r----- 1 root root 157186 Feb 23 15:55 2020-02-23_15-55.jpg
-rw-r----- 1 root root 156892 Feb 23 15:56 2020-02-23_15-56.jpg
-rw-r----- 1 root root 156886 Feb 23 15:58 2020-02-23_15-58.jpg
-rw-r--r-- 1 pi pi 156886 Feb 23 16:00 2020-02-23_16-00.jpg
-rw-r--r-- 1 pi pi 156886 Feb 23 16:05 2020-02-23_16-05.jpg
-rw-r--r-- 1 pi pi 150235 Feb 23 16:09 2020-02-23_16-09.jpg
-rw-r----- 1 root root 131564 Feb 23 16:10 2020-02-23_16-10.jpg
-rw-r----- 1 root root 153630 Feb 23 16:12 2020-02-23_16-12.jpg
-rw-r----- 1 root root 153528 Feb 23 16:21 2020-02-23_16-21.jpg
-rw-r----- 1 root root 111847 Feb 23 16:23 2020-02-23_16-23.jpg
-rw-r----- 1 root root 243414 Feb 27 18:44 2020-02-27_18-44.jpg
-rw-r----- 1 root root 45269 Feb 27 18:50 2020-02-27_18-50.jpg
-rwxr-xr-x 1 pi pi 1764 Feb 23 16:19 photo.sh
-rw-r----- 1 root root 43438 Feb 27 18:50 photo_camera.jpg
-rw-r----- 1 root root 45269 Feb 27 18:50 photo_camera2.jpg
-rw-r----- 1 root root 156886 Feb 23 15:58 prout.jpg
J'ai laissé tomber les 20 premiers fichiers photos en root ou pi...

Il faut que je trouve le moyen de logger mon script en utilisateur pi et non en root il me semble...
laurent1981
Messages : 3
Inscription : 28 févr. 2020, 12:30

Re: script bash et commande remote

Message par laurent1981 »

Merci pour ton éclaircissement, je suis venu "a bout" de mon problème.
Voici mon ls -i sur mon dossier :
-rw-r----- 1 root root 153528 Feb 23 16:21 2020-02-23_16-21.jpg
-rw-r----- 1 root root 111847 Feb 23 16:23 2020-02-23_16-23.jpg
-rw-r----- 1 root root 243414 Feb 27 18:44 2020-02-27_18-44.jpg
-rw-r----- 1 root root 45269 Feb 27 18:50 2020-02-27_18-50.jpg
-rw-r--r-- 1 pi pi 243275 Feb 29 12:29 2020-02-29_12-29.jpg
-rw-r----- 1 pi pi 242087 Feb 29 12:30 2020-02-29_12-30.jpg
-rw-r----- 1 pi pi 241676 Feb 29 12:32 2020-02-29_12-32.jpg
-rw-r----- 1 pi pi 240524 Feb 29 12:33 2020-02-29_12-33.jpg
-rw-r----- 1 pi pi 241987 Feb 29 12:35 2020-02-29_12-35.jpg
-rw-r----- 1 pi pi 243124 Feb 29 12:39 2020-02-29_12-39.jpg
-rwxr-xr-x 1 pi pi 1764 Feb 23 16:19 exphoto.sh
-rwxr-xr-x 1 pi pi 1786 Feb 29 12:28 photo.sh
-rw-r----- 1 pi pi 316394 Feb 29 12:39 photo_camera.jpg
-rw-r--r-- 1 pi pi 243124 Feb 29 12:39 photo_camera2.jpg

Code : Tout sélectionner

#!/bin/bash

# Se d?placer dans le dossier idoine au sein du Raspberry Pi
cd /home/pi/Pictures/photos-domoticz

# Cr?er l'image et faire une pause de 15 secondes (car image de belle qualit? alors que le Raspberry Pi est un nano-ordinateur)
sudo -u pi raspistill -w 800 -h 600 -o photo_camera.jpg -q 100 
echo "photo_camera.jpg"
sleep 10

# D?finition du format de la date ? inscrire (en texte) sur l'image
time=$(date +"%d/%m/%Y - %H:%M:00")

# Choix automatique de la taille de la police de caract?res (permet le placement des lignes o? il faut dans le bandeau)
if [ $width -ge $height ]
then
pointsize=$(($width))
else
pointsize=$(($height))
fi

echo " Width: $width, Height: $height. Using pointsize: $pointsize"

# Script de transformation de l'image avec cr?ation du bandeau + ajout du texte puis enregistrement sous un autre nom (le nom du fichier ? transf?rer)

convert "photo_camera.jpg" -fill '#DCDCDC' -draw 'rectangle 0,450,800,600' \
-gravity SouthEast -pointsize 18 -font Bookman-DemiItalic -fill '#7F7F7F' -annotate +$pointsize+10 "test3" \
-gravity SouthEast -pointsize 20 -fill '#7F7F7F' -annotate +$pointsize+30 "Lau GO " \
-gravity SouthWest -pointsize 30 -font Bookman-DemiItalic -fill '#000000' -annotate +$pointsize+10 "$time" \
-gravity SouthWest -pointsize 20 -fill '#7F7F7F' -annotate +$pointsize+40 "test3" \
-quality 100 \
"photo_camera2.jpg"
echo "photo_camera2.jpg"
sleep 3

# D?finition d'un autre format de date pour l'ins?rer dans le nom du fichier de sauvegarde
time=$(date +"%Y-%m-%d_%H-%M")

# Copie de l'image modifi?e avec un autre nom pour la garder durablement (le fichier "photo_camera2.jpg" est auto-?cras? en local et en distant)
#mv "photo_camera2.jpg" "$time.jpg"
sudo -u pi cp "photo_camera2.jpg" "$time.jpg"
echo "$time.jpg"
sleep 3

exit 0
La manière n'est peut etre pas la plus belle mais elle a l'avantage de fonctionner !
Merci pour le coup de pouce !
:D

Laurent.
Répondre