[tuto] Etre alerté d'un nx fichier sur Nas et envoi ds le Cloud

Bonjour,

Présentation

un tuto, pour être alerté (ici, telegram), de la présence de nx fichier sur votre NAS et l’envoi du/des fichiers dans le cloud pour consultation/sauvegarde.
Dans l’exemple ci dessous, c’est la création d’une nouvelle video (.mp4) sur mon NAS qui est poussée sur mon googleDrive et je reçois une notification par Telegram. Cela, via un scénario et des variables.

Prérequis

Il vous faut:

  • plugin: Script, Telegram, CloudSync Pro
  • un NAS (ou un répertoire visible depuis Jeedom).
  • un script (dans mon cas, un shell, très simple)

plugin script

Le script webcam.sh

#!/bin/sh

# Search new file(s) in a recursive directory since previous execution. return all path list in stdout
# 1.0 11/15/2020 CDM creation

#################################### Variables ##########################################
# Directoy to search files
SEARCH_DIR='/mount/private/xiaomi_camera_videos'
# file to search
FILTER_NAME='*.mp4'
# Timestamp file updated every search execution
TIMESTAMP=/var/tmp/webcam.tmp
# Output file for error command (to display in this case)
OUTPUT_ERROR=/var/tmp/webcam_error
ERROR=0

#################################### Functions ##########################################
SearchNewFile()
{
ERROR=0
cd $SEARCH_DIR
FOUND_LIST=$(find . -name $FILTER_NAME -type f -newer $TIMESTAMP 2> $OUTPUT_ERROR)
if [ $? -ne 0 ]; then
    echo "ERROR: Error during find: $(cat $OUTPUT_ERROR)"
    ERROR=1
fi
if [ -n "$FOUND_LIST" ]; then
    echo "$FOUND_LIST"
else
    echo "None"
fi
touch $TIMESTAMP
return $ERROR
}

######################################## Main ###########################################
case $1 in
    'init')
        # Initialisation - create timestamp
        touch $TIMESTAMP $OUTPUT_ERROR
        if [ "$?" -ne 0 ]; then
            ERROR=1
            echo "ERROR: create $TIMESTAMP or $OUTPUT_ERROR failed"
        fi
        ;;
    'search')
        SearchNewFile
        ;;
    'refresh')
        if [ ! -d $SEARCH_DIR ]; then
            ERROR=1
            echo "ERROR: $SEARCH_DIR not found!" >> $OUTPUT_ERROR
        fi 
        ;;
esac

if [ $ERROR -ne 0 ]; then
    exit 1
fi

plugin CloudSync Pro

3 actions dans mon cas, la synchro Daily (syncronise le NAS vers mon google drive), et 2 autres que je pilote manuellement (syncronise tout) et une action de nettoyage de mon google drive.

Scénario

Rien de bien compliqué. Le scénario est provoqué dans mon cas, en cas d’intrusion chez moi.

Explication

Le script initialise un fichier timestamp (action init du script)
Recherche pendant 3 semaines (j’ai vu large!!), et tt les 10 secondes, si une nouvelle vidéo est présente (depuis la précédente exécution) dans mon répertoire SEARCH_DIR (action search du script).
Si oui, j’enregistre le chemin dans une variable Jeedom pour l’envoyer via Telegram.
Le scénario s’arrête après 3 semaines (durée de la boucle) ou si je désactive mon alarme chez moi.
Je n’ai plus qu’a consulter ma video dans mon google drive.

Amélioration

Je constate que je peux recevoir 2 messages Telegram pour un même fichier si la copie par la webcam est tjs en cours (> 10s). Il faudrait que j’historise la détection des nx fichiers par le script pour alerter que les nx et pas ceux qui ont déjà été affichés.
Ajouter le lien de la vidéo Google Drive dans Telegram.

1 « J'aime »