ניהול פקודות

כדי להריץ קוד מותאם אישית במכשיר, צריך לפעול לפי ההוראות הבאות: לענות לפקודות מ-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.