برای اجرای کد سفارشی در دستگاه خود در پاسخ به دستورات دستیار 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 باید روشن شود.
این تازه شروع است. بیاموزید که چگونه صفات و کنترل کننده های بیشتری را اضافه کنید.