คําสั่งสําหรับจัดการ

ทำตามวิธีการเหล่านี้เพื่อเรียกใช้โค้ดที่กำหนดเองในอุปกรณ์เพื่อตอบสนองต่อคำสั่งจาก Google Assistant

เรียกใช้ตัวอย่าง

เมื่อคุณกำหนดลักษณะและอัปเดตโมเดลแล้ว ให้ตรวจสอบว่า Google Assistant ส่งคำสั่งเปิด/ปิดกลับมาสำหรับการค้นหาที่เหมาะสม

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 Assistant

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() จะส่งออกไปยังคอนโซล โดยใช้ฟังก์ชัน Helper ใน device_helpers.py เพื่อแยกวิเคราะห์ JSON ของการตอบกลับและจัดเก็บพารามิเตอร์คําสั่งในตัวแปรเพื่อให้ใช้งานง่าย คุณสามารถแก้ไขโค้ดนี้ เพื่อทำทุกสิ่งที่ต้องการในโปรเจ็กต์

หากคุณมีชุดไฟ LED ให้อ่านต่อเพื่อดูวิธีเปิดไฟ LED ตามคำสั่ง OnOff หากยัง ให้ข้ามส่วนถัดไปเพื่อดูวิธีเพิ่มลักษณะและเครื่องจัดการ

ขั้นตอนถัดไป - Raspberry Pi

เมื่อคุณรู้วิธีจัดการคำสั่งขาเข้าแล้ว ให้แก้ไขโค้ดตัวอย่างเพื่อติดไฟ LED ซึ่งจะต้องมีฮาร์ดแวร์เพิ่มเติมหากคุณใช้ Raspberry Pi

นำเข้าแพ็กเกจ GPIO

เพื่อให้การเข้าถึงซอฟต์แวร์ PIN อินพุต/เอาต์พุตทั่วไป (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 เพื่อควบคุม PIN GPIO บน Pi วางคำสั่งต่อไปนี้ไว้ใกล้กับคำสั่ง import อื่นๆ

import RPi.GPIO as GPIO

แก้ไขโค้ดเพื่อตั้งค่า PIN เอาต์พุตเป็นค่าตรรกะต่ำในขั้นต้น เมื่อได้รับคำสั่ง on แล้ว ให้ตั้งค่า PIN เป็นสถานะตรรกะระดับสูง เมื่อได้รับคำสั่งปิดแล้ว ให้ตั้ง PIN เป็นสถานะตรรกะต่ำ

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 ควรติดสว่าง

นั่นเป็นแค่การเริ่มต้น ดูวิธีเพิ่มลักษณะและเครื่องจัดการ