coucou747

Ce blog présente principalement les évolutions du compilateur metalang : les nouveaux backends, les nouvelles corrections de bugs, les nouvelles features, nouvaux tests, son utilisation dans le cadre du concours prologin.

le 18/05/2019

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.08
coté 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.service
Unit]
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.target
il ne nous reste plus qu'a
systemctl enable cam
pour 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

Dans Catégories.

Sujets : #raspberry