請按照下列操作說明,在裝置上執行自訂程式碼: 回覆 Google 助理的指令。
執行範例
您已定義特徵並更新模型,接著請檢查 確認 Google 助理會視情境傳回「開啟/關閉」指令 。
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):
目前,這個函式會輸出每個「裝置動作」事件名稱和 ,
print('Do command', command, 'with params', str(params))
這個程式碼會處理 action.devices.commands.OnOff
指令。這個
指令屬於 OnOff
特徵重要性目前,這個程式碼只會輸出輸出內容至控制台。你可以
您可以修改這個程式碼
專案。在 process_event()
的 print
指令下方新增下列區塊。
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 燈 請繼續閱讀,瞭解 LED 燈亮度是為了因應 OnOff 指令若您尚未更新,請跳至下一節瞭解如何 新增更多特徵和處理常式。
後續步驟 - Raspberry Pi
現在您已瞭解如何處理傳入的指令,請修改程式碼範例 啟動 LED 燈。如果您使用 覆盆子 Pi。
匯入 GPIO 套件
簡化軟體存取方式,以便使用一般用途輸入/輸出 (GPIO) 接腳 安裝 Raspberry Pi,安裝 RPi.GPIO 安裝於虛擬環境中
pip install RPi.GPIO
修改範例
開啟 hotword.py
檔案。
nano hotword.py
在 hotword.py
檔案中,匯入 RPi.GPIO
模組,控制 Pi 上的 GPIO 接腳。請將以下聲明放在
其他 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 燈應該會開啟。
不過,真正的重頭戲還在後面。瞭解如何新增更多特徵和處理常式。