כדי להריץ קוד מותאם אישית במכשיר, צריך לפעול לפי ההוראות הבאות: לענות לפקודות מ-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
איתור ה-handler של הפקודה
הקובץ pushtotalk.py
בקוד לדוגמה משתמש ב-SDK כדי לשלוח בקשות
לקבל תשובות מ-Google Assistant.
cd assistant-sdk-python/google-assistant-sdk/googlesamples/assistant/grpc
nano pushtotalk.py
מחפשים את הגדרת ה-handler הבאה:
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
של trait.
בשלב הזה, הפלט של ההגדרה onoff()
מתעד במסוף. הוא משתמש ב-Helper
הפונקציות ב-device_helpers.py
כדי לנתח את התגובה בקובץ ה-JSON ולאחסן את הפקודה
פרמטרים במשתנים כדי להקל על השימוש. תוכלו לשנות את הקוד הזה כדי לעשות כל מה שתרצו
שבהן רוצים להפעיל את הפרויקט.
אם יש לך ערכת LED, עליך להמשיך לקרוא כדי להבין איך להדליק את נורית ה-LED בתגובה לפקודה OnOff. אם לא, דלגו על הקטע הבא כדי ללמוד איך להוסיף עוד תכונות ומטפלים.
השלבים הבאים – פאי פטל
עכשיו, אחרי שהבנת איך לטפל בפקודה הנכנסת, כדאי לשנות את הקוד לדוגמה כדי להדליק נורית LED. לשם כך נדרשת חומרה נוספת אם משתמשים פאי פטל.
ייבוא חבילת ה-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
משנים את הקוד כדי להגדיר בהתחלה את סיכת הפלט למצב הלוגי הנמוך. כאשר כאשר מתקבלת פקודה, מגדירים את הסיכה למצב הלוגיקה הגבוהה. כאשר התקבל פקודת 'כיבוי', הגדרת הסיכה למצב הלוגיקה הנמוכה.
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 אמורה לפעול.
זו רק ההתחלה. כאן מוסבר איך להוסיף עוד תכונות ורכיבי handler.