Handle-Befehle

Folgen Sie dieser Anleitung, um auf Ihrem Gerät benutzerdefinierten Code als Reaktion auf Befehle von Google Assistant auszuführen.

Beispiel ausführen

Nachdem Sie eine Eigenschaft definiert und das Modell aktualisiert haben, prüfen Sie, ob Google Assistant einen Ein/Aus-Befehl für die entsprechende Abfrage zurückgibt.

googlesamples-assistant-pushtotalk

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

Aktivieren.

In der Konsolenausgabe sollten Sie die folgenden Anweisungen sehen. Ist dies nicht der Fall, lesen Sie die 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.

Die Anweisungen finden Sie im Quellcode.

Quellcode abrufen

Sie können jetzt Ihr eigenes Projekt starten:

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

Befehls-Handler suchen

Die Datei pushtotalk.py im Beispielcode verwendet das SDK, um Anfragen zu senden und Antworten von Google Assistant zu 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. Dieser Befehl ist Teil des Trait-Schemas OnOff.

Derzeit protokolliert die Definition onoff() die Ausgabe in der Konsole. Sie verwendet Hilfsfunktionen in device_helpers.py, um die JSON-Antwort zu parsen und die Befehlsparameter zur Vereinfachung in Variablen zu speichern. Sie können diesen Code nach Belieben in Ihrem Projekt ändern.

Wenn Sie ein LED-Kit haben, lesen Sie weiter, um zu erfahren, wie Sie die LED als Reaktion auf den Befehl "OnOff" aufleuchten. Ist dies nicht der Fall, überspringen Sie den nächsten Abschnitt, um zu erfahren, wie Sie weitere Traits und Handler hinzufügen können.

Nächste Schritte – Raspberry Pi

Sie wissen nun, wie der eingehende Befehl verarbeitet wird. Ändern Sie den Beispielcode so, dass eine LED aufleuchtet. Dies erfordert zusätzliche Hardware, wenn Sie Raspberry Pi verwenden.

GPIO-Paket importieren

Installieren Sie das Paket RPi.GPIO in der virtuellen Umgebung, um den Softwarezugriff auf die GPIO-Pins (General zweck Input/Output) auf dem Raspberry Pi zu vereinfachen.

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 in die Datei pushtotalk.py das Modul RPi.GPIO, um die GPIO-Pins auf dem Pi zu steuern. Platzieren Sie die folgende Anweisung in der Nähe der anderen import-Anweisungen:

import RPi.GPIO as GPIO

Ändern Sie den Code so, dass der Ausgabe-PIN zuerst auf den Low-Logikstatus gesetzt wird. Wenn der Befehl „on“ empfangen wird, setzen Sie die Pin auf den High-Logic-Zustand. Wenn der Befehl „off“ empfangen wird, setzen Sie das Pin auf den niedrigen Logikstatus.

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 die gleiche Abfrage wie zuvor. Die LED sollte aufleuchten.

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