Handle-Befehle

Befolgen Sie diese Anweisungen, um benutzerdefinierten Code auf Ihrem Gerät auszuführen in auf Sprachbefehle von Google Assistant reagieren.

Beispiel ausführen

Nachdem Sie nun ein Merkmal definiert und das Modell aktualisiert haben, dass Google Assistant einen Ein/Aus-Befehl für den entsprechenden Abfrage.

googlesamples-assistant-pushtotalk

Drücken Sie die Eingabetaste und geben Sie die folgende Abfrage ein:

Aktivieren

In der Konsolenausgabe sollten die folgenden Anweisungen angezeigt werden. Ist dies nicht der Fall, lesen Sie in der Anleitung zur Fehlerbehebung.

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.

Sie sehen, wo diese Anweisungen im Quellcode gedruckt werden.

Quellcode abrufen

Jetzt können Sie Ihr eigenes Projekt starten:

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

Befehls-Handler suchen

In der Datei pushtotalk.py im Beispielcode wird das SDK zum Senden von Anfragen und Antworten von Google Assistant erhalten.

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

Suchen Sie nach der folgenden Handler-Definition:

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

Der Code in onoff() verarbeitet den Befehl action.devices.commands.OnOff. Dieses ist Teil des OnOff Trait-Schema.

Derzeit wird die Ausgabe der onoff()-Definitionslogs an die Console gesendet. Es verwendet Hilfsprogramm Funktionen in device_helpers.py, um die JSON-Antwort zu parsen und den Befehl zu speichern Parameter in Variablen einfügen. Sie können diesen Code so ändern, die Sie für Ihr Projekt benötigen.

Wenn Sie ein LED-Kit haben, lesen Sie weiter, um zu erfahren, wie Sie die LED entsprechend beleuchten. zum OnOff-Befehl. Ist dies nicht der Fall, überspringen Sie den nächsten Abschnitt, Weitere Traits und Handler hinzufügen.

Nächste Schritte – Raspberry Pi

Da Sie nun wissen, wie Sie den eingehenden Befehl verwenden, können Sie den Beispielcode um eine LED anzuleuchten. Hierfür ist zusätzliche Hardware erforderlich, wenn Sie den Himbeer-Pi

GPIO-Paket importieren

Vereinfachen Sie den Softwarezugriff auf die GPIO-Pins (General purpose Input/Output) auf den Raspberry Pi, installieren Sie das Paket RPi.GPIO. Paket in der virtuellen Umgebung.

pip install RPi.GPIO

Beispiel ändern

Öffnen Sie die Datei pushtotalk.py.

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

Importieren Sie die Datei RPi.GPIO in die Datei pushtotalk.py. um die GPIO-Pins auf dem Pi zu steuern. Platzieren Sie die folgende Anweisung in der Nähe des Andere import-Anweisungen:

import RPi.GPIO as GPIO

Ändern Sie den Code so, dass die Ausgabe-Pin anfangs auf den niedrigen Logikstatus gesetzt wird. Wenn der Parameter wenn der Befehl empfangen wird, setzen Sie den Pin auf den High-Logik-Zustand. Wenn der Parameter aus.

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)

Speichern Sie die Änderungen und schließen Sie die Datei.

Beispiel ausführen

Führen Sie den geänderten Beispielcode aus.

python pushtotalk.py

Verwenden Sie dieselbe Abfrage wie zuvor. Die LED sollte aufleuchten.

Aber das ist erst der Anfang. Weitere Informationen zum Hinzufügen weiterer Traits und Handler