Bonjour à tous.
Pour ma domotique, j’ai des caméras dont je ne peux récupérer l’information de détection de mouvement. J’ai donc configurée la caméra afin qu’elle envoie les images vers mon serveur ftp. Pour ne pas surcharger Jeedom, j’ai créé un scénario qui copie les images du ftp vers Jeedom si l’alarme est activée et active un virtuel en cas de mouvement détecté.
Voici le code :
$tps_entre_execution_scenario = 5; //Temps en minutes entre 2 éxécutions du scénario
$ftp_url = '192.168.xxx.xxx';
$ftp_user = 'xxxxx';
$ftp_pwd = 'xxxxx';
$ftp_folder = 'xxxxx';
$ftp_date_folder = date('Ymd');
$ftp_today_folder = $ftp_folder . '/' . $ftp_date_folder . '/images';
$folder_where_download = '../../plugins/camera/data/records/';
$camera_id = '291'; // Numéro de la caméra dans Jeedom
$camera_name = 'Caméra-extérieur-avant_';
$virtuel_mouvement="#[Extérieur][Virtuel caméra avant][Mouvement]#"; // Chemin du virtuel qui sera mis à jour si détection d'une image (mouvement)
$destination_folder = $folder_where_download . $camera_id;
// on se connecte au serveur FTP
$conn_id = ftp_connect($ftp_url);
$login_result = ftp_login($conn_id, $ftp_user, $ftp_pwd);
ftp_pasv($conn_id, true);
// on liste les fichiers présents
$files = ftp_nlist($conn_id, $ftp_today_folder);
if(!empty($files)){
// Définition du fuseau horaire
setlocale(LC_TIME, ['fr', 'fra', 'fr_FR']);
foreach($files as $file){
// Format du nom de l'image de la caméra avant A22031806262510.jpg
// Ayymmddhhmmssxx.jpg
$file_name = substr($file,-19);
$file_datetime = '20'.substr($file_name,1,2).'-'.substr($file_name,3,2).'-'.substr($file_name,5,2).' '.substr($file_name,7,2).':'.substr($file_name,9,2).':'.substr($file_name,11,2);
$last_execution_time = date("Y-m-d H:i:s",strtotime('-'.$tps_entre_execution_scenario.' minutes'));
// Vérification que c'est une nouvelle image
if ( $file_datetime >= $last_execution_time ){
// Mise à jour du virtuel détection mouvement
cmd::byString($virtuel_mouvement)->event(1);
$scenario->setLog('Copie de : '.$file_name);
// Renomme le fichier image pour jeedom
$file_name = $camera_name.'20'.substr($file_name,1,2).'-'.substr($file_name,3,2).'-'.substr($file_name,5,2).'_'.substr($file_name,7,2).'-'.substr($file_name,9,2).'-'.substr($file_name,11,2).'.jpg';
$scenario->setLog(' vers :'.$file_name);
// copie de l'image dans jeedom
ftp_get($conn_id, $destination_folder.'/'.$file_name, $file, FTP_BINARY);
}
}
} else {
// Mise à jour du virtuel détection mouvement
cmd::byString($virtuel_mouvement)->event(0);
}
// on clos la connexion
ftp_close($conn_id);
Quand je lance ce scénario en cliquant sur Exécuté, le scénario se déroule correctement et copie bien les images, mais lors de l’exécution automatique (toutes les 5 minutes) le log du scénario me montre bien que les images sont copiées mais sur Jeedom je n’ai aucune image.
Savez vous pourquoi cela ne fonctionne pas en automatique?
Faut-il faire quelque chose de spécial avec la commande ftp_get() ?
Merci
Jeedom version 4.2.14
