i have the respeaker 2 mic pi hat on a pi 3 b+. i would like to use the button on the hat to perform a wake up. that is to say press and release the button and rhasspy wakes up and wait for a command
This is doable easily with HermesLedControl (I use it to turn wake detection on/off with snips).
But for that, we need rhasspy publishing and listening every same snips topics on mqtt hermes. HermesLedControlis ready for rhasspy, just have to be patient on rhasspy side
I saved this as button.py and run it and it does what you’re asking:
import RPi.GPIO as GPIO import time import requests BUTTON = 17 def button_callback(channel): url = 'http://YOUR_RHASSPY_IP_HERE:12101/api/listen-for-command' requests.post(url) GPIO.setmode(GPIO.BCM) GPIO.setup(BUTTON, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) # Set pin to be an input pin and set initial value to be pulled low (off) GPIO.add_event_detect(BUTTON,GPIO.RISING,callback=button_callback) # Setup event on pin rising edge message = input("Press enter to quit\n\n") # Run until someone presses enter GPIO.cleanup() # Clean up
I based it on tutorials I found here:
Hope this helps!
PS - The only indents are these lines and I can’t figure out how to make them show up as indented here:
url = ‘http://192.168.1.36:12101/api/listen-for-command’
You have “blockquoted” the code, which is meant for natural language, not for a programming language. If you remove the blockquote characters (>), select all the code and then click on the icon for “Preformatted text” (or press Ctrl+Shift+C), the code shows with the right indents.
yours is probably the “proper” method but i found a simpler one for me
follow the instruction to set up a custom external program to listen for a wake word
create a file
gpio -g wfi 17 falling
echo ‘okay rhasspy’
make it executable and add it to your profile as the external program to call
works great for me
I get error below
Traceback (most recent call last): File "./button.py", line 19, in <module> GPIO.add_event_detect(BUTTON,GPIO.RISING,callback=button_callback) RuntimeError: Failed to add edge detection