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

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

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

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

googlesamples-assistant-hotword --device-model-id my-model

پرس و جو زیر را امتحان کنید:

Ok Google، روشن کنید.

باید عبارات زیر را در خروجی کنسول ببینید. اگر این کار را نمی‌کنید، دستورالعمل‌های عیب‌یابی را ببینید.

ON_RECOGNIZING_SPEECH_FINISHED:
  {'text': 'turn on'}
ON_DEVICE_ACTION:
  {'inputs': [{'payload': {'commands': [{'execution': [{'command': 'action.devices.commands.OnOff',
  'params': {'on': True}}], 'devices': [{'id': 'E56D39D894C2704108758EA748C71255'}]}]},
  'intent': 'action.devices.EXECUTE'}], 'requestId': '4785538375947649081'}
Do command action.devices.commands.OnOff with params {'on': True}

محل چاپ این عبارات را در کد منبع پیدا خواهید کرد.

کد منبع را دریافت کنید

اکنون برای شروع پروژه خود آماده هستید:

git clone https://github.com/googlesamples/assistant-sdk-python

کنترل کننده فرمان را پیدا کنید

فایل hotword.py در کد نمونه از SDK برای ارسال درخواست‌ها و دریافت پاسخ‌ها از دستیار Google استفاده می‌کند.

cd assistant-sdk-python/google-assistant-sdk/googlesamples/assistant/library
nano hotword.py

تعریف کنترل کننده زیر را جستجو کنید:

def process_event(event):

در حال حاضر، این تابع نام رویداد Device Action و هر پارامتری را با خط زیر چاپ می کند:

print('Do command', command, 'with params', str(params))

این کد دستور action.devices.commands.OnOff را کنترل می کند. این دستور بخشی از طرح صفت OnOff است. در حال حاضر، این کد فقط خروجی را در کنسول چاپ می کند. شما می توانید این کد را تغییر دهید تا هر کاری که می خواهید در پروژه خود انجام دهید. بلوک زیر را تحت فرمان print در process_event() اضافه کنید.

print('Do command', command, 'with params', str(params)) # Add the following:
if command == "action.devices.commands.OnOff":
    if params['on']:
        print('Turning the LED on.')
    else:
        print('Turning the LED off.')

کد منبع اصلاح شده خود را مستقیماً اجرا کنید تا خروجی را ببینید.

python hotword.py --device-model-id my-model

از همان درخواست قبلی استفاده کنید:

Ok Google، روشن کنید.

اگر یک LED به Raspberry Pi متصل کرده اید، به خواندن ادامه دهید تا یاد بگیرید چگونه LED را در پاسخ به دستور OnOff روشن کنید. اگر این کار را نکردید، بخش بعدی را رد کنید تا نحوه افزودن ویژگی‌ها و کنترل‌کننده‌های بیشتر را بیاموزید.

مراحل بعدی - Raspberry Pi

اکنون که می دانید چگونه فرمان ورودی را مدیریت کنید، کد نمونه را تغییر دهید تا یک LED روشن شود. اگر از Raspberry Pi استفاده می کنید، این به سخت افزار اضافی نیاز دارد.

بسته GPIO را وارد کنید

برای ساده کردن دسترسی نرم افزار به پین ​​های ورودی/خروجی عمومی (GPIO) در Raspberry Pi، بسته RPi.GPIO را در محیط مجازی نصب کنید.

pip install RPi.GPIO

نمونه را اصلاح کنید

فایل hotword.py را باز کنید.

nano hotword.py

در فایل hotword.py ، ماژول RPi.GPIO را برای کنترل پین های GPIO روی Pi وارد کنید. عبارت زیر را در نزدیکی سایر عبارات import قرار دهید:

import RPi.GPIO as GPIO

کد را تغییر دهید تا پین خروجی ابتدا روی حالت منطقی پایین قرار گیرد. این کار را در تابع main() قبل از پردازش رویدادها انجام دهید:

with Assistant(credentials, device_model_id) as assistant:
    events = assistant.start()

    device_id = assistant.device_id
    print('device_model_id:', device_model_id)
    print('device_id:', device_id + '\n')
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(25, GPIO.OUT, initial=GPIO.LOW)
        ...

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

if command == "action.devices.commands.OnOff":
    if params['on']:
        print('Turning the LED on.')
        GPIO.output(25, 1)
    else:
        print('Turning the LED off.')
        GPIO.output(25, 0)

تغییرات خود را ذخیره کنید و فایل را ببندید.

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

کد نمونه اصلاح شده را اجرا کنید.

python hotword.py --device-model-id my-model

از همان پرس و جوی قبلی استفاده کنید. LED باید روشن شود.

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