Application web qui met en graphiques les mesures de température et d'hygrométrie ainsi que la vidéo surveillance d'un terrarium munie d'un Raspberry PI.
Le Raspberry PI utilisé est le modèle 4 avec 2Go de RAM muni de Raspbian Lite. La vidéo s'appuie sur la caméra fisheyes à vision nocturne et le logiciel Motion combiné au frontend MotionEye. Le capteur est un AM2302 et mesure la température et l'hygrométrie.
Lire l'article de blog dédié à ce projet
Développé et testé avec PHP 7.4, composer et npm requis.
git clone https://gitnet.fr/deblan/terrarium-web.git
cd terrarium-web
composer install
npm install
Éditer le fichier .env
et renseigner DATABASE_URL
. Indiquer également l'adresse web de la caméra (via motion).
php bin/console doctrine:migrations:diff
php bin/console doctrine:migrations:execute --up XXXXXXXXXXXXX
Ajouter une mesure de température :et une mesure d'hygrométrie :
http POST 'https://application/api/temperature/create' date='2020/04/04 18:40:02' value=30.200000762939453
Ajouter une mesure d'hygrométrie :
http POST 'https://application/api/hygrometry/create' date='2020/04/04 18:40:02' value=25.799999237060547
Les vidéos générées par Motion doivent être copiées dans public/motion/snapshots
.
Voici le script qui réalise la copie depuis le serveur de l'application web :
#!/bin/sh
SNAPSHOTS_DIRECTORY="$HOME/web/motion/snapshots/"
rsync -avz --exclude lastsnap.jpg $1 --delete pi@terrarium:/var/lib/motioneye/Camera1/ "$SNAPSHOTS_DIRECTORY"
for PARENT in "$SNAPSHOTS_DIRECTORY"*; do
for MOVIE in "$PARENT"/*.mp4; do
THUMB="$(echo "$MOVIE" | sed 's/.mp4/.jpg/')"
MIDDLE=$(ffprobe "$MOVIE" 2>&1 | grep Duration: | egrep -o "[0-9]*:[0-9]*:[0-9]*.[0-9]*" | awk -F ':' '{print ($3+$2*60+$1*3600)/2}')
ffmpeg -i "$MOVIE" -vcodec mjpeg -vframes 1 -an -f rawvideo -s 300x168 -ss $MIDDLE "$THUMB"
done
done