기기에서 맞춤 코드를 실행하려면 다음 안내를 따르세요. Google 어시스턴트의 명령에 응답합니다.
샘플 실행
이제 트레잇을 정의하고 모델을 업데이트했으므로 Google 어시스턴트가 적절한 알림의 사용/사용 중지 명령어를 쿼리합니다.
googlesamples-assistant-pushtotalk
Enter 키를 누르고 다음 쿼리를 실행해 봅니다.
사용 설정합니다.
콘솔 출력에 다음 문이 표시됩니다. 그렇지 않은 경우 문제 해결 안내를 참조하세요.
INFO:root:Recording audio request.
INFO:root:End of audio request detected
INFO:root:Transcript of user request: "turn on".
INFO:root:Playing assistant response.
INFO:root:Turning device on
INFO:root:Waiting for device executions to complete.
INFO:root:Finished playing assistant response.
이러한 문이 소스 코드에서 출력되는 위치를 찾을 수 있습니다.
소스 코드 가져오기
이제 자체 프로젝트를 시작할 준비가 되었습니다.
git clone https://github.com/googlesamples/assistant-sdk-python
명령어 핸들러 찾기
샘플 코드의 pushtotalk.py
파일은 SDK를 사용하여 요청을 전송하고
Google 어시스턴트로부터 응답을 받을 수 있습니다.
cd assistant-sdk-python/google-assistant-sdk/googlesamples/assistant/grpc
nano pushtotalk.py
다음 핸들러 정의를 검색합니다.
device_handler = device_helpers.DeviceRequestHandler(device_id)
@device_handler.command('action.devices.commands.OnOff')
def onoff(on):
if on:
logging.info('Turning device on')
else:
logging.info('Turning device off')
onoff()
의 코드는 action.devices.commands.OnOff
명령어를 처리합니다. 이
명령어는 OnOff의 일부입니다.
트레잇 스키마
현재 onoff()
정의는 콘솔에 출력을 로깅합니다. 도우미를 사용하여
device_helpers.py
의 함수를 사용하여 응답 JSON을 파싱하고 명령어를 저장합니다.
쉽게 사용할 수 있도록 변수에 여러 매개변수를 포함할 수 있습니다. 이 코드를 수정하여
지정할 수 있습니다
LED 키트가 있는 경우 계속해서 아래 내용을 읽고 이에 대응하여 LED를 켜는 방법을 알아보세요. OnOff 명령으로 전달됩니다. 그렇지 않은 경우 다음 섹션을 건너뛰어 트레잇과 핸들러를 더 추가합니다.
다음 단계 - Raspberry Pi
수신되는 명령어를 처리하는 방법을 알게 되었으므로 이제 샘플 코드를 수정합니다. LED를 켜세요 이 기능을 사용하려면 일부 추가 하드웨어가 Raspberry Pi입니다.
GPIO 패키지 가져오기
GPIO (범용 입력/출력) 핀에 대한 소프트웨어 액세스를 간소화하기 위해 Raspberry Pi를 설치하려면 RPi.GPIO를 설치합니다. 가상 환경에서 실행되어야 합니다
pip install RPi.GPIO
샘플 수정
pushtotalk.py
파일을 엽니다.
cd assistant-sdk-python/google-assistant-sdk/googlesamples/assistant/grpc
nano pushtotalk.py
pushtotalk.py
파일에서 RPi.GPIO를 가져옵니다.
모듈을 사용하여 Pi의 GPIO 핀을 제어합니다. 다음 문장을
기타 import
문:
import RPi.GPIO as GPIO
처음에 출력 핀을 낮은 로직 상태로 설정하도록 코드를 수정합니다. 이 명령이 수신되면 핀을 높은 논리 상태로 설정합니다. 이 명령어가 수신되면 핀을 낮은 논리 상태로 설정합니다.
device_handler = device_helpers.DeviceRequestHandler(device_id)
GPIO.setmode(GPIO.BCM)
GPIO.setup(25, GPIO.OUT, initial=GPIO.LOW)
@device_handler.command('action.devices.commands.OnOff')
def onoff(on):
if on:
logging.info('Turning device on')
GPIO.output(25, 1)
else:
logging.info('Turning device off')
GPIO.output(25, 0)
변경사항을 저장하고 파일을 닫습니다.
샘플 실행
수정된 샘플 코드를 실행합니다.
python pushtotalk.py
이전과 동일한 쿼리를 사용합니다. LED가 켜집니다.
이는 시작에 불과합니다. 더 많은 트레잇 및 핸들러를 추가하는 방법을 알아봅니다.