Execution de fichier audio avec motioneye sur raspberry pi3

Résolu
Damdam -  
 Damdam -
Bonsoir,

j’ai récemment installé motioneye sur mon raspberry pi3, je souhaiterai lancer un fichier mp3 lors de la détection de mouvement.Or après de nombreuse recherche et essai je ne réussi pas à entendre le fichier audio.
J’ai fait plusieurs script notamment en python et sh je vois bien que le script s’exécute (je crée un fichier dans le script puis je lance le fichier mp3). Le fichier se crée correctement mais je ne sais pas se qu’il se passe pour le fichier audio.En console le script s’exécute correctement et le son est audible sans aucun souci.

Quelqu’un pour une idée ?

17 réponses

  1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 943
     
    Bonjour,

    Les erreurs lirc ne sont pas grave (c'est pour gérer des télécommandes infra rouges, on peut les ignorer). Je ne vois pas d'erreur. Est-ce que si tu lances cette commande
    mplayer
    depuis un terminal et avec ce fichier son, tu as du son ? Vérifie notamment le volume, si les enceintes sont allumées etc.

    Et vérifie que
    pi
    est dans le groupe
    audio
    :

    grep audio /etc/group


    Bonne chance
    1
  2. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 943
     
    Bonjour,

    Le message n'est pas très clair à ce stade.

    Un fichier mp3 ne s'exécute pas puisque c'est un fichier de données. On peut imaginer exécuter un lecteur mp3 (e.g.
    mplayer
    ) et passer en paramètre le chemin du fichier mp3. Je ne sais pas comment marche
    motioneye
    , mais dans le doute, j'aurais tendance à passer le chemin absolu du fichier mp3 (e.g. /home/toto/musique.mp3).

    Ensuite ce serait peut-être intéressant de nous indiquer :
    • le contenu du script et de voir ce qu'il retourne quand tu l'exécutes dans un terminal
    • comment tu configures
      motioneye
      pour déclencher ton script. Là aussi, passer le chemin absolu vers le script est sans doute une bonne idée...
    • quel utilisateur lance
      motioneye
      . En outre, est-ce que cet utilisateur a des droits suffisants pour exécuter le script et accéder au fichier mp3 ?


    Bonne chance
    0
  3. chtroomfboy Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
     
    Bonsoir,

    voici le script python que j'ai déjà testé sans succès.


    je l'ai déja passé en exécutable via la commande chmod. Lorsque je l’exécute en console le fichier tmp.txt est créé avec "test" écrit dedans et la fichier mp3 est joué sur l'enceinte branché en jack sur mon raspberry pi.
    Concernant motioneye je l’exécute avec sudo systemctl start motioneye.
    Pour lancer le script j'ai déja testé avec python /home/xx/lecture.py ou sudo python /home/xx/lecture.py ou directement /home/xx/lecture.py.
    0
  4. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 943
     
    Bonjour,

    Tu aurais pu copier coller le script python plutôt que faire une capture d'écran et utiliser les balises de codes (c'est plus lisible).

    Est-ce que le fichier temporaire est créé si l'appel est déclenché par
    motioneye
    ? Essaye le temps de tester de placer le mp3 et ton script dans /tmp en corrigeant les différents chemins en conséquences. Cela permettra de voir si c'est un problème de droit.

    Essaye d'exécuter le script avec la commande
    python3 /tmp/lecture.py
    . En particulier la ligne shebang est généralement la première ligne du fichier. C'est peut-être la cause de ton problème (le script est alors potentiellement vu comme un script shell et plante car il est écrit en python).

    Bonne chance
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. chtroomfboy Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
     
    Bonsoir
    Alors oui le fichier tmp est bien créé mais j'ai déjà essayé avec celui-ci aussi:
      #!/bin/sh
    mplayer /home/pi/son/0267.mp3


    ça fonctionne bien dans la console et dans le fichier /tmp/
    0
    1. chtroomfboy Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
       
      mais pas dans motioneye
      0
  7. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 943
     
    Ok essayons de voir si tu arrives déjà depuis motioneye a lancer une commande shell. Supposons qu'au lieu d'appeler ton script shell, tu lances :

    touch /tmp/toto


    Est-ce que le fichier toto est bien recrée quand un mouvement est détecté (compare la date avec la commande qui suit, ou supprime ce fichier entre chaque mouvement) ?

    ls -l /tmp/toto


    Bonne chance
    0
  8. Damdam
     
    Bonsoir,

    oui , le fichier toto est bien créé.
    0
    1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 943
       
      Ok et avec ce script est ce que toto et tata sont bien créés? Copie un fichier son (il doit y en avoir au besoin dans
      /usr/share/sounds
      ) dans
      /tmp
      . Un fichier wav minimisera les éventuels problèmes de greffons.

      cp /usr/share/sounds/alsa/Front_Center.wav /tmp


      Ensuite modifie ton script :

      #!/bin/sh
      touch /tmp/toto
      mplayer /home/damdam/Front_Center.wav
      touch /tmp/tata


      (en adaptant le chemin vers le son à jouer).

      Est-ce que les fichiers
      /tmp/toto
      et
      /tmp/tata
      sont bien (re)créés ? As-tu du son ?

      a+
      Marco
      0
  9. Damdam
     
    Salut,

    j'ai lancé d'abord dans la console la commande:
    bash /home/pi/son/son.sh

    Là !! Nickel les fichiers toto et tata son bien créés et le ficher .wav est bien joué.

    Dans motioneye les fichiers sont correctement créés mais je n'entend pas le fichier audio.
    0
  10. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    Salut,

    Je ne connais pas du tout
    motioneye
    (même si j'ai déjà utilisé
    motion
    par le passé) et à tout hasard regarde si un utilisateur du même nom a été créé, et si oui, s'il fait parti du groupe
    audio


    0
  11. chtroomfboy Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
     
    Bonjour zipe,

    Peut tu m'indiquer la marche a suivre pour vérifier tous celà stp.

    Merci et bonne journée.
    0
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Avec la commande
      cat /etc/group
      tu auras la liste de tous les groupes avec les identifiants en rapport…
      0
    2. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Et
      cat /etc/passwd
      pour les identifiants…
      0
    3. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 943
       
      En complément à ce que dit zipe31 : vérifie qui instancie le script shell (est-ce root, ton utilisateur, un utilisateur associé à motioneye).

      Tu peux corriger le script que je t'ai donné comme suit pour savoir :

      #!/bin/bash
      echo $(whoami) /tmp/toto
      mplayer /home/damdam/Front_Center.wav


      Regarde ensuite dans
      /tmp/toto
      le nom de l'utilisateur. Regarde s'il est dans le groupe audio avec la commande
      grep audio /etc/group
      .

      Exemple : Ici, les utilisateurs
      pulse
      et
      mando
      font partie du groupe
      audio
      . Note que les logins sont séparés d'une virgule.

      (mando@silk) (~) $ grep audio /etc/group
      audio:x:29:pulse,mando


      Dans ton cas, si le nom d'utilisateur qui apparaît dans
      /tmp/toto
      n'est pas dans le groupe
      audio
      , corrige ce fichier pour l'y ajouter.

      pkexec gedit /etc/group &


      Sauve quitte et redémarre pour être sûr que les changements soient bien pris en compte.

      Assure-toi aussi que quand tu invoques ton script (mettons
      /home/damdam/script.sh
      ), ses résultats sont redirigés dans un fichier dans lequel tu pourras retrouver les éventuelles erreurs :

      /home/damdam/script.sh 1>/tmp/script.log 2>/tmp/script.log


      ... puis reporte-nous le contenu de
      /tmp/script.log
      .

      Bonne chance
      0
  12. Damdam
     
    Bonsoir,

    L'utilisateur est "root".
    J'ai modifié le fichier groupe, sauvegardé puis fais un reboot du raspi .
    J'ai vérifié avec
    grep audio /etc/group
    audio:x:29:pi,pulse,root

    sans résultat.

    J'ai testé dans la console avec
    sudo bash

    pour exécuter mon script et j'ai obtenu le même contenu que dans le fichier .log ci-dessous.

    Voici le résultat du fichier .log.
    ==========================================================================
    Opening audio decoder: [pcm] Uncompressed PCM audio decoder
    AUDIO: 48000 Hz, 1 ch, s16le, 768.0 kbit/100.00% (ratio: 96000->96000)
    Selected audio codec: [pcm] afm: pcm (Uncompressed PCM)
    ==========================================================================
    AO: [pulse] Init failed: Connection refused
    Failed to initialize audio driver 'pulse'
    [AO_ALSA] alsa-lib: pcm_hw.c:1602:(snd_pcm_hw_open) open '/dev/snd/pcmC0D0p' failed (-2): No such file or directory
    [AO_ALSA] alsa-lib: pcm_dmix.c:1052:(snd_pcm_dmix_open) unable to open slave
    [AO_ALSA] Playback open error: No such file or directory
    Failed to initialize audio driver 'alsa'
    [AO SDL] Samplerate: 48000Hz Channels: Mono Format s16le
    [AO SDL] using aalib audio driver.
    [AO SDL] Unable to open audio: No available audio device
    Failed to initialize audio driver 'sdl:aalib'
    Could not open/initialize audio device -> no sound.
    Audio: no sound
    Video: no video

    Exiting... (End of file)
    0
    1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 943
       
      Bonjour,

      Je pense que la certains de tes problèmes sont liés au fait que tu travailles en root (mais pas uniquement).
      • D'une part, ça ne sert à rien d'ajouter root dans un groupe. Il a déjà tous les droits.
      • D'autre part, on évite autant que possible d'être root, pour rendre le système plus sûr. Ici on parle d'une application utilisateur qui n'a aucune raison d'être lancée en root.


      J'espère au passage que tu n'es pas identifié en tant que root lorsque tu lances ta session graphique, mais bien avec un vrai profil utilisateur.

      Le fait que pulse (qui s'occupe du son) plante à l'initialisation explique pourquoi tu n'as pas de son. Pas de connexion à pulse, pas de son. Comme le montre la commande
      ls -l /dev/snd
      , l'utilisateur qui joue du son (donc celui qui lance mplayer, donc celui qui lance ton script, donc celui qui a lancé motioneye, donc a priori ton profil utilisateur) doit appartenir au groupe
      audio
      . Il faut aussi que pulse soit "câblé" sur un device qui existe (or ce ne semble pas être le cas).

      Donc en résumé :
      • réinstalle
        pulseaudio
        et regarde si ton problème n'est pas lié à une mauvaise configuration en cherchant ton message d'erreur sur google (voir par exemple cette discussion)
      • lance
        motioneye
        avec ton profil utilisateur,
      • assure-toi qu'il est dans le groupe
        audio
        ,
      • puis reteste.


      Bonne chance
      0
  13. Damdam
     
    Bonsoir,

    J'ai fait une réinstallation de pulseaudio sans résultat.

    Je ne comprend justement pas pourquoi en utilisateur "pi" ça fonctionne bien et pas en superutilisateur "root".
    j'ai essayé de lancer motioneye en "pi" mais l'exécution du script se fait toujours en "root".

    On avance , en tout cas
    0
  14. Damdam
     
    Voilà le fichier .log quand le script est exécuté en "pi"

    MPlayer 1.3.0 (Debian), built with gcc-6.2.1 (C) 2000-2016 MPlayer Team
    mplayer: could not open config files /home/pi/.lircrc and /etc/lirc/lircrc
    mplayer: No such file or directory
    Failed to read LIRC config file ~/.lircrc.

    Playing /tmp/Front_Center.wav.
    libavformat version 57.56.101 (external)
    Mismatching header version 57.56.100
    Audio only file format detected.
    Load subtitles in /tmp/
    ==========================================================================
    Opening audio decoder: [pcm] Uncompressed PCM audio decoder
    AUDIO: 48000 Hz, 1 ch, s16le, 768.0 kbit/100.00% (ratio: 96000->96000)
    Selected audio codec: [pcm] afm: pcm (Uncompressed PCM)
    ==========================================================================
    AO: [pulse] 48000Hz 1ch s16le (2 bytes per sample)
    Video: no video
    Starting playback...
    A: 0.0 (unknown) of 1.0 (01.0) ??,?% ^[[J^MA: 0.1 (00.0) of 1.0 (01.0) ??,?$

    Exiting... (End of file)
    0
  15. Damdam
     
    Bonjour,

    lorsque j’exécute mon script en pi le son fonctionne. C'est pour ça que je ne comprend pas pourquoi en utilisateur "pi" ça fonctionne bien et pas en superutilisateur "root".
    0
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      On peut voir la sortie de
      ls -lh /chemin/ton_script
      ?
      0
  16. Damdam
     
    pi@raspberrypi:~ $ ls -lh /home/pi/son/son.sh
    -rwxr-xr-x 1 root root 147 nov. 26 22:59 /home/pi/son/son.sh
    0
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Pourquoi il appartient à "root" ton fichier ?
      Quand tu dis que tu le lances en tant qu'utilisateur "pi", tu dois utiliser
      sudo
      , non ?

      Change son utilisateur pour "pi" (
      sudo chown pi:pi /home/pi/son/son.sh
      )
      0
    2. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 943
       
      Bonjour

      @zipe31

      Vus les droits associés à son fichier, il peut appartenir à root tout en étant lancé par un utilisateur vu que celui-ci aura les droits en lecture et exécution. Pas besoin de
      sudo
      , et ici il n'y aucune bonne raison de l'utiliser.

      @DamDam

      Lorsque j’exécute mon script en pi le son fonctionne. C'est pour ça que je ne comprend pas pourquoi en utilisateur "pi" ça fonctionne bien et pas en superutilisateur "root".

      Il ne faut pas lancer ce script en root ni avec
      sudo
      . Et il faut que ta session graphique soit ouverte avec ton utilisateur
      pi
      . Il ne faut jamais lancer une session graphique en root. Si c'est ce que tu as fait, c'est ce qui peut expliquer ton problème de son.

      Bonne chance
      0
      1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501 > mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention  
         
        @zipe31
        Vus les droits associés à son fichier, il peut appartenir à root tout en étant lancé par un utilisateur vu que celui-ci aura les droits en lecture et exécution. Pas besoin de
        sudo
        , et ici il n'y aucune bonne raison de l'utiliser.
        Effectivement. Merci.

        Par contre mplayer est une application graphique et c'est sûrement cela qui fiche le bazar, non ?
        Il faudrait essayer avec une application "cli" comme
        aplay
        :
        aplay /home/pi/son/0267.mp3
        0
    3. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 943
       
      Hello zipe31, non non
      mplayer
      marche en mode texte. Mais il existe effectivement des interfaces graphiques (comme
      smplayer
      ).
      0
      1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501 > mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Salut,

        Arf, effectivement, je ne sais pas pourquoi j'étais persuadé que mplayer était le pendant linuxien de Windows Media Player ;-\

        Quelle triple buse fais-je ;-)
        0
  17. Damdam
     
    bonsoir,

    j'ai eu un souci avec ma webcam elle ne fonctionne plus du tout.je devrait bientôt recevoir la nouvelle.
    je ferais le test a son arrivée.

    merci encore pour votre aide.
    0
  18. Damdam
     
    Bonsoir

    J'ai bien reçu ma nouvelle webcam.
    Après une réinstallation de mon raspi le script avec aplayer fonctionne correctement lors de la détection de mouvement.
    Je ne sais pas trop d’où venait le bug sachant que je n'ai pas encore installé mplayer.

    merci pour votre soutien.
    Ce sujet peut être mis en résolu.
    0