Pi zero, timeleaps
Je me suis offert un raspberry pi zero, avec le module caméra, pour observer mon chaton. C'est pas super puissant, mais ça suffit pour beaucoup d'usages...$ cat /proc/cpuinfo processor : 0 model name : ARMv6-compatible processor rev 7 (v6l) BogoMIPS : 997.08coté mémoire, on est un peu léger par contre :
Mem: 369M
Et c'est dommage puisque je compte utiliser la ram pour monter un système de fichiers temporaire pour des captures d'images, histoire de libérer la carte SD.
J'ai mis un fichier dans /var/www/cam.sh :#!/bin/bash p=/var/www/html/ram mkdir $p mount -t tmpfs -o size=32m tmpfs $p while true ; do d=`date +%D_%R | sed -e s/\\\\//-/g` for i in {001..060}; do raspistill -q 100 -w 640 -h 480 -o "$p/image$i.jpg" sleep 10 done convert -delay 0.25 -loop 0 "$p/*.jpg" "$p/timeleaps.gif" scp "$p/timeleaps.gif" "maxime@192.168.1.30:timeleaps_$d.gif" done
La ligne pour le SCP, c'est pour sauvegarder les timeleaps sur une autre machine, histoire de : libérer le tmpfs, et sauver ça sur une machine dédiée au stockage. La ligne pour convert crée le timeleaps avec imagemagick (à installer si besoin). C'est une commande gourmande en ram, la limite sur la profondeur de la timeline se trouve ici...
Ensuite dans /etc/systemd/system/cam.serviceUnit] Description=webcam photo service After=network.target StartLimitIntervalSec=0 [Service] Type=idle KillMode=process Restart=always RestartSec=1 User=root ExecStart=/bin/bash /var/www/cam.sh [Install] WantedBy=multi-user.targetil ne nous reste plus qu'a
systemctl enable campour activer le service, et c'est parti, on a une timeleaps de la caméra dans www :)
Une meilleur version du script consiste à attendre qu'imagemagick nous donne une différence avant de commencer la capture.
ile Edit Options Buffers Tools Sh-Script Help #!/bin/bash p=/var/www/html/ram mkdir -p "$p" mount -t tmpfs -o size=32m tmpfs "$p" while : ; do raspistill -q 100 -w 320 -h 200 -o "$p/image_start.jpg" -n while : ; do sleep 1 raspistill -q 100 -w 320 -h 200 -o "$p/image_end.jpg" -n score=$((compare -metric RMSE "$p/image_start.jpg" "$p/image_end.jpg" NULL) 2>&1 | cut -d ' ' -f 1) #echo "score=$score" st=`echo "$score < 1000" | bc` if [ $st -eq 0 ]; then break; fi done unlink "$p/image_start.jpg" unlink "$p/image_end.jpg" d=`date +%D_%R | sed -e s/\\//-/g` for i in {001..020}; do raspistill -q 100 -w 640 -h 480 -o "$p/image$i.jpg" -n sleep 0.1 done convert -delay 0.25 -loop 0 "$p/*.jpg" "$p/timeleaps.gif" scp "$p/timeleaps.gif" "maxime@192.168.1.30:timeleaps_$d.gif" done