espaceVirtuel
Posts: 4
Joined: Mon Apr 01, 2013 4:09 pm

détection sortie audio

Mon Apr 01, 2013 4:24 pm

Bonjour,

J'utilise notre joujou adoré en tant que serveur de musique avec SqueezePlug et son player. Ça fonctionne super.
J'aimerai pouvoir piloter l'allumage et l'extinction de l'ampli audio que j'ai branché sur la sortie audio.
En gros, s'il y a un signal sur la sortie analogique, l'ampli est mis sous tension et si, après une tempo (à définir) il n'y a pas de son, l'ampli s'éteint.
La commande pourrait se faire via gpio mais je coince sur la détection.
Sur un serveur, j'avais écrit un script qui éteignait l'ordi s'il n'y a avait pas de trafic réseau pendant une durée donnée, je voudrais faire la faire la même chose avec la carte son.
Des idée ?
Merci

TheD6Bel
Posts: 67
Joined: Tue Sep 11, 2012 11:18 am

Re: détection sortie audio

Tue Apr 02, 2013 9:19 am

Hello,

je suis dans le même cas que toi. Il est possible avec un script de faire ce que nous cherchons mais comme je suis une bille en programmation/script je ne sais pas aller plus loin.

regarde le dernier post

http://www.raspberrypi.org/phpBB3/viewt ... 8&start=25

faut installer pylms avant et surtout écrire ce fichus script

espaceVirtuel
Posts: 4
Joined: Mon Apr 01, 2013 4:09 pm

Re: détection sortie audio

Wed Apr 03, 2013 6:46 pm

J'ai avancé un peu, j'ai trouvé une piste ici :http://www.mail-archive.com/alsa-user@l ... 28416.html
et j'ai écrit un petit script pour valider le concept
Voilà ce que retourne la cde cat ....status

Code: Select all

cat /proc/asound/card0/pcm0p/sub0/status
state: RUNNING
owner_pid   : 2230
trigger_time: 5325.470485470
tstamp      : 5333.097479576
delay       : 1880
avail       : 168
avail_max   : 168
-----
hw_ptr      : 336040
appl_ptr    : 337920
D'après ce que j'ai constaté le paramètre delay = 0 lorsqu'il n'y a pas de musique
Pour l'instant je n'ai pas trop cherché la signification de ces paramètres (à creuser)
voilà le script de test

Code: Select all

#!/bin/bash
detect=$(cat /proc/asound/card0/pcm0p/sub0/status | grep "delay" |cut -f2 -d ":")

if [ $detect = "0" ] 
then
        echo "Silence"
else
        echo "Musique"
fi

et le résultat sans et avec musique diffusée

root@squeezeplug:~# bash detectAudio.sh
Silence
root@squeezeplug:~# bash detectAudio.sh
Musique
Voilà à approfondir, notamment avec l'utilisation d'airplay puis la commande d'une sortie gpio
A suivre

TheD6Bel
Posts: 67
Joined: Tue Sep 11, 2012 11:18 am

Re: détection sortie audio

Thu Apr 04, 2013 8:09 am

C'est bon sa :D

il devrait être possible de fusionner ton script a celui de mon post pour en plus controler l'ampli avec les GPIO :D

Code: Select all

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from mpd import MPDClient
import RPi.GPIO as GPIO
import time

RELAIS_ACTIF=False
PIN_RELAIS=12

def relai(etat):
    GPIO.output(PIN_RELAIS, etat)    # Bascule le pin du relai à l'état voulu
    RELAIS_ACTIF=etat

def main():
    # Test de lecture audio
    client = MPDClient()
    while(1):
        try:
            # Connection au client mpd et lecture du status
            client.connect(host='localhost', port='6600')
            client.password('password')
            status=client.status()
 
            if status['state']=='play' and RELAIS_ACTIF is False:
                relai(True)
            elif status['state']=='stop' or status['state']=='pause':
                relai(False)
            client.disconnect()
        except:
            print 'Erreur connection'
            raise
        time.sleep(1) # On fait dodo pendant une seconde, et on recommence !

if __name__ == "__main__":
    GPIO.setup(PIN_RELAIS, GPIO.OUT)      # paramétrage du pin en sortie
    relai(False)
    main()

TheD6Bel
Posts: 67
Joined: Tue Sep 11, 2012 11:18 am

Re: détection sortie audio

Tue Apr 30, 2013 10:57 am

Hello,

sur le forum slimdevices je suivais aussi un poste qui parlait de sa et un utilisateur à créé un script python qui fonctionne

http://forums.slimdevices.com/showthrea ... post746477

Je télécharge la dernière version de squeezeplug et la tape sur la sd et je test cette après midi :D

EDIT: je suis dégouté :evil: j'ai donner mon rpi à de la famille et je me suis commander un nouveau, mais le nouveau à une mémoire Hynix et donc ne boot pas avec squeezeplug :evil: je doit allé faire un échange vite fait entre les deux pour finir mes tests

TheD6Bel
Posts: 67
Joined: Tue Sep 11, 2012 11:18 am

Re: détection sortie audio

Wed May 01, 2013 2:53 pm

Re,

le script ne fonctionne pas :cry: j'ai une erreur

Code: Select all

Traceback (most recent call last):
  File "./gpio.sh", line 52, in <module>
    responce = json.loads(data)
  File "/usr/lib/python2.7/json/__init__.py", line 326, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python2.7/json/decoder.py", line 365, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib/python2.7/json/decoder.py", line 383, in raw_decode
    raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded
dommage

TheD6Bel
Posts: 67
Joined: Tue Sep 11, 2012 11:18 am

Re: détection sortie audio

Thu May 02, 2013 6:51 pm

j'ai résolu ma 1er erreur mais j'en mange une autre direct derrière :evil:

Code: Select all

root@squeezeplug:/home# ./gpio.sh
  File "./gpio.sh", line 82
    playerdetected = playerId
                            ^
TabError: inconsistent use of tabs and spaces in indentation
falais juste remplacer

Code: Select all

#!/usr/bin/env python
par

Code: Select all

#!/usr/bin/env python3
bon sa devrait le faire :)

TheD6Bel
Posts: 67
Joined: Tue Sep 11, 2012 11:18 am

Re: détection sortie audio

Fri May 03, 2013 7:18 pm

C'est bon le script fonctionne à merveille! :D

Il ne me reste plus qu'a le lancer au boot et le tour est joué :lol:

Return to “Français”