Bonsoir!
Je réitère, le code de Churchill est fonctionnel, et du coup c'est juste génial!
Reste à découvrir comment lancer un thread en python pour effectivement
éteindre l'ampli au bout de X secondes, et ce sera fini de ce coté là!
Juste quelques précisions pour ce faire:
- Faut installer les librairies GPIO:
sudo apt-get install python-rpi.gpio
C'est sensé suffire! J'avais personnellement téléchargé sur python.org la librairie,
mais il fallait aussi installer python-dev... enfin petite galère avec ma méthode...
- Coté MPD, idem faut aller chercher les libs sur python.org:
wget
http://pypi.python.org/packages/source/ ... 4597d65635
Y a pas mal de clients python MPD, mais celui fonctionne
Ensuite (comme d'hab):
tar -zxf python-mpd-0.3.0.tar.gz
cd python-mpd-0.3.0/
sudo python setup.py install
Pour finir, le script de churchill est quasi parfait, sauf au niveau de l'identification
qui, chez moi, posait problème en localhost, le
#client.password(PASSWORD)
est bien à commenter, car j'ai toujours eu des refus de connexion sans, alors que je
suis absolument sûr de mon PASSWORD. En tout cas, sans aucun PASSWORD
ca passe donc pourquoi se priver
Mon GestionAmpli.py (très similaire à celui de Churchill):
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=17
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')
PASSWORD = 'pass'
#client.password(PASSWORD)
status=client.status()
if status['state']=='play' and RELAIS_ACTIF is False:
relai(True)
print "QuelqueChoseEstJoué"
elif status['state']=='stop' or status['state']=='pause':
relai(False)
print "YaPlusSon"
client.disconnect()
except:
print 'Erreur connection'
raise
time.sleep(1) # On fait dodo pendant une seconde, et on recommence !
if __name__ == "__main__":
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
print "Lancement de EteindAmpliQuandTuJouesPas"
GPIO.setup(PIN_RELAIS, GPIO.OUT) # paramétrage du pin en sortie
relai(False)
main()
J'ai juste modifié dans l'init le
GPIO.setmode(GPIO.BCM)
pour que la pin à "allumer"... s'allume... (j'ai un raspberry V2 mais ca ne change rien)
Allez on continue
