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-pushtotalk

Naciśnij Enter i użyj tego zapytania:

Włącz.

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

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.

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 pushtotalk.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/grpc
nano pushtotalk.py

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

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

Kod w interfejsie onoff() obsługuje polecenie action.devices.commands.OnOff. To polecenie jest częścią schematu cechy OnOff.

Obecnie logi definicji onoff() są wyświetlane w konsoli. Wykorzystuje funkcje pomocnicze w funkcji device_helpers.py do analizowania odpowiedzi w formacie JSON i przechowywania parametrów poleceń w zmiennych, co ułatwia korzystanie z nich. Możesz zmodyfikować ten kod, dopasowując go do swoich potrzeb.

Jeśli masz zestaw LED, czytaj dalej, aby dowiedzieć się, jak zapalić diodę w odpowiedzi na polecenie włączenia. Jeśli nie, przejdź do następnej sekcji, 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 pushtotalk.py.

cd assistant-sdk-python/google-assistant-sdk/googlesamples/assistant/grpc
nano pushtotalk.py

W pliku pushtotalk.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. Po otrzymaniu polecenia on ustaw kod PIN na wysoki stan logiczny. Po otrzymaniu polecenia wyłączenia ustaw kod PIN na niski poziom logiczny.

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)

Zapisz zmiany i zamknij plik.

Uruchamianie przykładu

Uruchom zmodyfikowany przykładowy kod.

python pushtotalk.py

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.