Last active
May 19, 2024 10:41
-
-
Save michaelfdeberry/d3e7c9b4c4e1305be863d81a7e09f3de to your computer and use it in GitHub Desktop.
Python 3 relay toggle for Moode Audio
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Change the relay pin to the GPIO pin for your relay. | |
Save the contents of relaytoggle.py script to /home/pi/relaytoggle.py | |
Save the contents of relaytoggle.service script to /lib/systemd/system/relaytoggle.service | |
Run the following commands | |
sudo systemctl enable relaytoggle | |
sudo service relaytoggle start |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python3 | |
import RPi.GPIO as GPIO | |
import os | |
import time | |
defaultDelay = 5 #seconds | |
relayPin = 2 # GPIO pin in BCM | |
currentState = False # the current state | |
GPIO.setwarnings(False) | |
GPIO.setmode(GPIO.BCM) | |
GPIO.setup(relayPin, GPIO.OUT) | |
def isRunning(): | |
return "RUNNING" in os.popen('cat /proc/asound/card*/pcm*/sub*/status | grep RUNNING').read().split() | |
while True: | |
if isRunning() and not currentState: | |
GPIO.output(relayPin, 1) | |
currentState = True | |
print("Relay Activated") | |
time.sleep(defaultDelay) | |
elif not isRunning() and currentState: | |
# delay again on playback stops to account for track changes | |
time.sleep(defaultDelay) | |
if isRunning(): | |
# if it's running don't deactivate the realay | |
print("Playback resumed, cancelling deactivation") | |
continue | |
else: | |
# deactivate the relay | |
GPIO.output(relayPin, 0) | |
currentState = False | |
print("Relay Deactivated") | |
time.sleep(defaultDelay) | |
else: | |
print("No State Change...") | |
time.sleep(defaultDelay) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[Unit] | |
Description=MoOde Relay Toggle Daemon | |
[Service] | |
Restart=on-failure | |
WorkingDirectory=/home/pi | |
ExecStart=python relaytoggle.py | |
ExecReload=/bin/kill -HUP $MAINPID | |
KillSignal=SIGINT | |
[Install] | |
WantedBy=multi-user.target |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hi. Thank you so much. Everything worked out. The problem is in the formatting of the document. See the screenshot.