Résumé
L’idée en 2 mots.
On dispose d’un Raspberry Pi qui, grâce à un script python, va faire une photo toutes les X secondes/minutes.
Dans un second temps, avec un PC, on récupère les images et on encode directement les photos en une vidéo au format mp4 ; juste en lançant un script bash.
Oui, le scripting est l’outil des fainéant(e)s (ou des partisan(e)s de l’optimisation).
Sommaire
Cet article va comporter 2 parties majeures :
- Le script python qui permet au raspberry Pi de prendre des photos.
- Récupération des images et génération du TimeLapse par script bash.
Mais comme souvent (toujours ???), la Alban, il va causer un peu …
Donc
- Sommaire
- Préambule
- Surveillance vidéo (les photos)
- Génération du TimeLapse
- Conclusion
Préambule
(vous pouvez ne pas lire)
Restez assis ; ça va faire drôle !!!
Épisode 1
Mon four a cramé il y a quelques années.
Changement pour un Rosière (je voulais un Made in France).
Panne durant la période de garantie.
Le technicien dit à mon épouse que la carte mère a grillé. Il parle d’insecte.
Hum … Bizarre … On en reste là.
Épisode 2
Fin août 2022, alors que j’étais en télétravail, les enfants m’appellent car le four « fait une crise d’épilepsie« .
Effectivement, il clignote (au niveau de l’afficheur de l’heure) de façon anarchique … puis « Pchiiiittt » et odeur d’électronique qui prend un coup de chaud.
Je fais sauter la prise spécialisée au compteur + le débranche du mur et je retourne bosser.
Démontage du four le soir ; carte mère cramée avec un truc comme un bout de plastique fondu. Je pense à une sorte de composant isolé par une gaine plastique.
Déclaration à l’assurance et réparation demandée (ça me coûte 76€ de franchise).
Pas de four durant plus d’un mois cause difficulté à avoir la carte mère.
Récupération du four un mardi soir.
Utilisation le mercredi (une famille de 6 ; ça utilise son four !!!).
Épisode 3
Dans la nuit du mercredi au jeudi, on entend un bruit dans la nuit (04h15).
Plus de lumière dans le salon/cuisine.
C’était le disjoncteur de tête de la rangée 3 qui avait sauté
Je remets ; ça re-disjoncte.
Après avoir baissé tous les « fusibles », je remets la ligne = OK.
Je remets tout sauf le four = OK.
Après avoir réenclenché le four, une sorte de « Biiip » se fait entendre et, le temps que j’arrive au four, odeur de cramé … Pas cool …
Je sors le four (oui, à 04h15 du mat’ …) et démonte son chapeau.
Carte mère grillée avec un truc qui ressemble plus à une limace miniature qu’à un bout de plastique 😮
Serait-ce donc ça ???
Du coup … je m’interroge.
Durant l’absence du four, j’ai régulièrement regardé derrière le meuble (sans four, c’est plus facile).
Un matin (je me lève à 06h45), après une nuit de pluie, j’ai vu 2 mini limaces (des trucs vraiment réduits).
Sans blague ?!?!
Surveillance vidéo (les photos)
Du coup, j’ai décidé de me servir de mon intelligence et de mon Raspberry Pi Zero Wifi.
Les limaces sont des animaux plutôt nocturnes donc pouf, je colle une caméra nocturne et je surveille.
L’idée est simple :
Le raspberry Pi tourne sous RasbperryPiOS Lite. Il démarre quand on le branche.
Immédiatement, il réalise une photo puis opère une pause et recommence (oui, on appelle ça une boucle sans fin).
Un petit script fait l’affaire aisément (voir ci-dessous).
Et pour vérifier que ça fonctionne, on colle les images dans un dossier au nom du jour et on diffuse cela dans une galerie en générant un point d’accès.
Cela permet de contrôler le bon positionnement de la caméra.
Petit plus :
La boucle tourne tant que (while) rien ne l’arrête.
J’ai prévu que si un fichier STOP existe dans le dossier « photos », le script s’arrête.
Un simple touch /var/www/html/photos/TOUCH permet de stopper la prise de photos.
#!/usr/bin/python3 # -*- coding: utf-8 -* import os import time from datetime import datetime CurrentWorkingDir= "/var/www/html" archiveDir = "photos" def photo(): fileName = time.strftime("%Y-%m-%d_%Hh%Mm%S")+".jpg" os.system('raspistill -w 1296 -h 972 -o '+DossierPhotos+'/'+fileName+'') DirName = time.strftime("%Y-%m-%d") DossierPhotos = ""+CurrentWorkingDir+"/photos/"+DirName+"" if (os.path.isdir(""+DossierPhotos+"") == False): os.mkdir(""+DossierPhotos+"") os.chmod(""+DossierPhotos+"",0o777) while True : photo() time.sleep(24) STOP=int(os.popen("ls /var/www/html/photos/ | grep STOP | wc -l").read()) if STOP < 1 : continue else : break #end
Génération du TimeLapse
Bon, on veut voir si des visiteurs nocturnes sont venus (et aussi « comment » ; « par où »).
Je me connecte sur le réseau du Raspberry Pi via son point d’accès.
Ensuite, je lance un simple script bash (oui, je ne bosse qu’en Linux).
Celui-ci me demande le dossier à récupérer.
Si je suis le 08/11/2022, je veux donc récupérer le dossier généré la veille; je tape donc « 2022-10-07 ».
Ensuite, vient la question du nombre d’images par seconde (pour le TimeLapse).
Suite à ces 2 questions, un dossier « 2022-10-07 » est créé sur mon PC puis un rsync est lancé pour copier toutes les images du dossier « 2022-10-07 » du Rpi dans le dossier « 2022-10-07 » du PC.
Une fois toutes les photos synchronisées, le script dit de se place dans le dossier qui a été créé et il lance l’encodage vidéo avec ffmpeg.
Le script tient en 13 lignes avec les interlignes donc en seulement 7 lignes.
Je vous l’offre :
#!/bin/bash read -p "dossier au format AAAA-MM-JJ : " dossier && read -p "Tu veux combien d'images par secondes ? (2 ; 5 ; 10 ; 24 ???)' : " images && mkdir $dossier && rsync -avz alban@192.168.80.10:/var/www/html/photos/$dossier/* /home/alban/$dossier/ && cd $dossier && ffmpeg -framerate $images -pattern_type glob -i '*.jpg' -c:v libx264 -pix_fmt yuv420p $dossier"_"$images.mp4
Conclusion
Bon, je sais … Tout le monde ne surveille pas des limaces, mais vous pouvez adapter à votre usage 😉
Oui, ma maison (neuve en 2008) a été très mal réalisée ; ce n’est pas un jugement de valeur, mais un fait puisque la preuve est posée par l’image : défaut majeur d’étanchéité.
Dommage que la décennale ne soit passée car, sinon, j’attaquais le constructeur (qui est aussi le promoteur).
Car maison qui ne respecte pas les règles + mise en danger (on aurait pu avoir 3 départs d’incendie d’origine électrique !)
Voici 2 vidéos réalisées après avoir bouché bien des trous laissés en place par le constructeur. J’ai coulé de la colle à carrelage à la seringue (avec bien des difficultés) + mis du ruban adhésif de travaux où je pouvais.
Mais elles sont revenues le 14/10/2022.
J’ai donc déplacé la caméra pour comprendre d’où elles sortaient … Et j’ai trouvé !
Depuis, j’ai donc dû me résigner à fabriquer un coffre en MDF (de récup) et, compte tenu du nombre de tuyaux (posés n’importe comment en plus), à injecter de la mousse expansive (je voulais éviter car c’est de la saloperie chimique).
Depuis, plus une seule limace.
Comme quoi si XXXX avait fait son boulot comme il faut …
IMPRESSIONNANT