دستورات را کنترل کنید

برای اجرای کد سفارشی در دستگاه خود در پاسخ به دستورات دستیار Google، این دستورالعمل ها را دنبال کنید.

نمونه را اجرا کنید

اکنون که یک ویژگی را تعریف کرده‌اید و مدل را به‌روزرسانی کرده‌اید، مطمئن شوید که دستیار Google در حال ارسال یک فرمان On/Off برای جستجوی مناسب است.

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 را برای کنترل پین های GPIO روی Pi وارد کنید. عبارت زیر را در نزدیکی سایر عبارات import قرار دهید:

import RPi.GPIO as GPIO

کد را تغییر دهید تا پین خروجی ابتدا روی حالت منطقی پایین قرار گیرد. وقتی دستور on دریافت شد، پین را روی حالت منطقی بالا قرار دهید. هنگامی که فرمان خاموش دریافت شد، پین را روی حالت منطقی پایین قرار دهید.

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 باید روشن شود.

این تازه شروع است. بیاموزید که چگونه صفات و کنترل کننده های بیشتری را اضافه کنید.