Terrarium ========= 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](https://www.deblan.io/post/580/monitoring-d-un-terrarium) ![](https://upload.deblan.org/u/2020-03/5e7aa73f.jpg) Installation ------------ ### Récupération du projet et installation des dépendances Développé et testé avec PHP 7.4, [composer](https://getcomposer.org/) et [npm](https://www.npmjs.com/) requis. ``` git clone https://gitnet.fr/deblan/terrarium-web.git cd terrarium-web composer install npm install ``` ### Configuration Éditer le fichier `.env` et renseigner [`DATABASE_URL`](https://symfony.com/doc/4.4/configuration.html#configuring-environment-variables-in-env-files). 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 ``` Exemples d'appels à l'API avec [httpie](https://httpie.org/) ------------------------------------------------------------ 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 ``` Videos ------ 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 ```