Hardware momentary switches can be used to control the play, pause, next, previous functions of moode. They can also be used to power off and to launch a playlist.
On the hardware side, you set your hardware button to connect the ground pin of your RPi with a GPIO pin of your choice. Have a look here to see how to select the gpio pins.
Then you have to open a ssh session.
Create a new directory called "hwbuttons"
Go to the new directory
Open nano text editor
Paste the following python script. This python script include the following buttons:
Toggle play pause: GPIO 12
Previous: GPIO 10
Next: GPIO 11
Volume up: GPIO 20
Volume down: GPIO 26
Power off: GPIO 9
Launch playlist "JAZZ_STREAM": GPIO 16
Launch playlist "MUSIC_STREAM": GPIO 13
It works for radio stations and music files. Make sure no spaces on playlists names.
If you are not interested in a particular button, mark it with # everywhere it appears.
ctrl-x and save the file as "buttons.py"
To set the script to run every time you launch moode
Add the line below just before the exit 0
It works on my moode streamer. I did put this together from information I found on the volumio forum and from help I received from Kent (aka theoldpresbyope). It is possible that some of the lines in the script are not needed.
Remy
On the hardware side, you set your hardware button to connect the ground pin of your RPi with a GPIO pin of your choice. Have a look here to see how to select the gpio pins.
Then you have to open a ssh session.
Create a new directory called "hwbuttons"
Code:
mkdir hwbuttons
Go to the new directory
Code:
cd hwbuttons
Open nano text editor
Code:
nano
Paste the following python script. This python script include the following buttons:
Toggle play pause: GPIO 12
Previous: GPIO 10
Next: GPIO 11
Volume up: GPIO 20
Volume down: GPIO 26
Power off: GPIO 9
Launch playlist "JAZZ_STREAM": GPIO 16
Launch playlist "MUSIC_STREAM": GPIO 13
It works for radio stations and music files. Make sure no spaces on playlists names.
If you are not interested in a particular button, mark it with # everywhere it appears.
Code:
#!/usr/bin/python
#script for moode audio GPIO buttons
#not sure this is needed:
#sudo apt-get update
#sudo apt-get install python-dev
#sudo apt-get install python-rpi.gpio
#on playlist names no spaces
#import
import RPi.GPIO as GPIO
import sys
import time
import os
import subprocess
#set GPIO mode
GPIO.setmode(GPIO.BCM)
#Define your GPIO pins
SW_PREV = 10
SW_NEXT = 11
SW_PLAY = 12
SW_VOLUP = 20
SW_VOLDOWN = 26
SW_POWEROFF = 9
SW_PL1 = 16
SW_PL2 = 13
#code to manage BUTTONS
GPIO.setup(SW_PREV,GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(SW_NEXT,GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(SW_PLAY,GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(SW_VOLUP,GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(SW_VOLDOWN,GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(SW_POWEROFF,GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(SW_PL1,GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(SW_PL2,GPIO.IN, pull_up_down=GPIO.PUD_UP)
while True:
try:
prev_switch = GPIO.input(SW_PREV)
next_switch = GPIO.input(SW_NEXT)
play_switch = GPIO.input(SW_PLAY)
volup_switch = GPIO.input(SW_VOLUP)
voldown_switch = GPIO.input(SW_VOLDOWN)
poweroff_switch = GPIO.input(SW_POWEROFF)
pl1_switch = GPIO.input(SW_PL1)
pl2_switch = GPIO.input(SW_PL2)
if prev_switch == False:
subprocess.call(['mpc', 'prev' ])
print "previous"
elif next_switch == False:
subprocess.call(['mpc', 'next' ])
print "next"
elif poweroff_switch == False:
subprocess.call(['mpc', 'stop' ])
subprocess.call(['sudo', 'poweroff' ])
print "shutting down"
elif volup_switch == False:
subprocess.call(['/var/www/vol.sh','up','2' ])
print "volumeup"
elif voldown_switch == False:
subprocess.call(['/var/www/vol.sh','dn','2' ])
print "volumedown"
elif pl1_switch == False:
subprocess.call(['mpc','clear' ])
subprocess.call(['mpc','load','JAZZ_STREAM' ])
subprocess.call(['mpc','play' ])
elif pl2_switch == False:
subprocess.call(['mpc','clear' ])
subprocess.call(['mpc','load','MUSIC_STREAM' ])
subprocess.call(['mpc','play' ])
elif play_switch == False:
subprocess.call(['mpc', 'toggle' ])
print "play"
time.sleep(0.5)
except KeyboardInterrupt:
print "\nExit"
GPIO.setwarnings(False)
GPIO.cleanup()
sys.exit(0)
#End of program
ctrl-x and save the file as "buttons.py"
To set the script to run every time you launch moode
Code:
sudo nano /etc/rc.local
Add the line below just before the exit 0
Code:
sudo python /home/pi/hwbuttons/buttons.py &
It works on my moode streamer. I did put this together from information I found on the volumio forum and from help I received from Kent (aka theoldpresbyope). It is possible that some of the lines in the script are not needed.
Remy