Probleme Motion , et script python

Bonjour,

Voici mon projet :
En 1er, j’ai Motion qui surveille un mouvement, si mouvement je demarre un script python dans motion.conf :
on_event_start echo "démarrage de box.py" >> /tmp/motion.log | sudo python /home/pi/face/box.py .

Jusque la tout fonctionne.

Voici le début du script python, celui ci fait partit de ce projet, en gros ce qui m’interresse c’est de faire une reconnaissance de visage suite a un mouvement détecter par motion.

import cv2
import os
import config
import face
import hardware
import time

os.system (' echo arret de motion > /tmp/motion.log')
os.system (" sudo service motion stop ")

Ce qui se passe:
motion détecte un mouvement, appel bien le script python.
Le script python ferme motion qui doit libérer la caméra.
Motion se ferme mais la caméra n’est pas dispo, j’ai une série d’erreur :
mmal: mmal_vc_port_enable: failed to enable port vc.null_sink:in:0(OPQV): ENOSPC
mmal: mmal_port_enable: failed to enable connected port (vc.null_sink:in:0(OPQV))0xa89fa0 (ENOSPC)
mmal: mmal_connection_enable: output port couldn’t be enabled

Par contre, si je ferme moi même motion en lancant la même commande qui se trouve dans le script python, tout ce passe bien, aucune erreur.

Pour moi j’ai un problème de permission, entre python et … je coince.

Bonjour,
juste pour tester, essaie de lancer ton script avec sudo devant

Salut,

Et avec un pkill motion ça change un truc ?

Sinon (je n’y connais rien en .py), faudrait pas faire un chmod +x comme pour un .sh ?

++

En effet, avec un pkill motion, ca fonctionne merci.
J’ai bien le script qui demarre, motion stop et libere la caméra mais impossible de sortir du script python avec un Ctrl+C.

alors jai ptete la solution finale a ton probleme

relances ta commande avec un & a la fin, ca demande de lancer en tant que demon ton processus, comme ca, pas de ctrl+c

Courage

Re,

J’espère ne pas dire trop de bêtise, étant en ambiance bruyante et très sollicité.

Je ne connais rien en .py ; je ne fais que du .sh

Bon, en fait, je n’y connais rien en scripts .sh mais j’en fais et ils fonctionnent et ne tournent pas en rond (j’en utilise dans motion).

Par exemple, en simplifiant, si motion détecte un mouvement

  • sur caméra1 = il lance le script notification1 qui envoie un SMS « détection mouvement Caméra1 » + joue un son d’alarme + lit un texte
  • sur caméra2 = il lance le script notification2 qui envoie un SMS « détection mouvement Caméra2 » + joue un son d’alarme + lit un texte
  • sur caméra3 = il lance le script1 notification3 qui envoie un SMS « détection mouvement Caméra3 » + joue un son d’alarme + lit un texte

ça me parait suffisant pour dire qu’il n’existe pas de « heurt » entre les scripts donc les scripts s’exécutent et s’arrêtent.

1 - ça serait faisable en .sh ? (je ne suis pas du tout au calme et pas facile de réfléchir)
2 - Si tu règles les options de motion.conf pour que l’action détection s’arrête rapidement, ça améliore les choses ? (ou, au contraire, ne repart pas trop vite pour ne pas relancer le script)

Edit : je n’avais pas vu la réponse de Glou = à tester en premier lieu évidemment :slight_smile:

" sudo pkill motion & "

Ne fonctionne pas

du moins ne resoud pas le problème

et avec
on_event_start echo "démarrage de box.py" >> /tmp/motion.log | sudo python /home/pi/face/box.py &

oui je me suis mal exprimé, le but est de lancer ton script py « en demon » comme ca tu pourra le lancer comme ca et le tuer avec un pkill ce qui il me semble est ton souhait

Effectivement, je ne vois plus le script.py dans mon terminal.

Merci.

Bonsoir,
Ton script python inclue les fichiers cascades similaires à ceux d’openCV ?