Polecenia z nicka

Wykonaj te instrukcje, aby wykonywać na swoim urządzeniu niestandardowy kod w odpowiedzi na polecenia Asystenta Google.

Uruchamianie przykładu

Po zdefiniowaniu cechy i zaktualizowaniu modelu sprawdź, czy Asystent Google wysyła z powrotem polecenie włączania/wyłączania w przypadku odpowiedniego zapytania.

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

Spróbuj użyć tego zapytania:

OK Google, włącz

W danych wyjściowych konsoli powinny być widoczne poniższe instrukcje. Jeśli go nie masz, przeczytaj instrukcje rozwiązywania problemów.

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}

Znajdziesz je w kodzie źródłowym.

Pobieranie kodu źródłowego

Możesz teraz rozpocząć własny projekt:

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

Znajdowanie modułu obsługi poleceń

Plik hotword.py w przykładowym kodzie używa pakietu SDK do wysyłania żądań i odbierania odpowiedzi od Asystenta Google.

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

Wyszukaj tę definicję modułu obsługi:

def process_event(event):

Obecnie ta funkcja wyświetla każdą nazwę zdarzenia w działaniu urządzenia i inne parametry, które mają następujący wiersz:

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

Ten kod obsługuje polecenie action.devices.commands.OnOff. To polecenie jest częścią schematu cechy OnOff. Obecnie ten kod tylko drukuje dane wyjściowe w konsoli. Kod możesz zmodyfikować, dodając do niego dowolną wartość. Dodaj ten blok w poleceniu print w tabeli 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.')

Uruchom zmodyfikowany kod źródłowy bezpośrednio, aby zobaczyć dane wyjściowe.

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

Użyj tego samego zapytania co wcześniej:

OK Google, włącz

Jeśli podłączono diodę LED do Raspberry Pi, czytaj dalej, aby dowiedzieć się, jak zapalić diodę w odpowiedzi na polecenie włączenia. Jeśli nie masz skonfigurowanej funkcji, pomiń następną sekcję, aby dowiedzieć się, jak dodać więcej cech i modułów obsługi.

Kolejne kroki – Raspberry Pi

Już wiesz, jak obsługiwać przychodzące polecenie, więc zmodyfikuj przykładowy kod, by zapalić diodę LED. Wymaga to dodatkowego sprzętu, jeśli używasz Raspberry Pi.

Zaimportuj pakiet GPIO

Aby uprościć programowy dostęp do złączy sygnału ogólnego przeznaczenia (GPIO) na urządzeniu Raspberry Pi, zainstaluj pakiet RPi.GPIO w środowisku wirtualnym.

pip install RPi.GPIO

Modyfikowanie przykładu

Otwórz plik hotword.py.

nano hotword.py

W pliku hotword.py zaimportuj moduł RPi.GPIO, aby sterować stykami GPIO na Pi. Umieść poniższe wyrażenie obok pozostałych instrukcji import:

import RPi.GPIO as GPIO

Zmodyfikuj kod, aby początkowo ustawić sygnał wyjściowy na niski poziom logiczny. Zrób to w funkcji main() przed przetworzeniem zdarzeń:

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)
        ...

Zmodyfikuj kod dodany w aplikacji process_event(). Po otrzymaniu polecenia on ustaw kod PIN na wysoki stan logiczny. Po otrzymaniu polecenia wyłączenia ustaw pinezkę na niski stan logiczny.

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)

Zapisz zmiany i zamknij plik.

Uruchamianie przykładu

Uruchom zmodyfikowany przykładowy kod.

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

Użyj tego samego zapytania co wcześniej. Dioda LED powinna się włączyć.

To dopiero początek. Dowiedz się, jak dodać więcej cech i modułów obsługi.