<ph type="x-smartling-placeholder">
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-hotword --device-model-id my-model
Führen Sie beispielsweise die folgende Abfrage aus:
Ok Google, aktivieren
In der Konsolenausgabe sollten die folgenden Anweisungen angezeigt werden. Ist dies nicht der Fall, lesen Sie in der Anleitung zur Fehlerbehebung.
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}
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 hotword.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/library
nano hotword.py
Suchen Sie nach der folgenden Handler-Definition:
def process_event(event):
Derzeit gibt diese Funktion jeden Geräteaktions-Ereignisnamen und alle durch die folgende Zeile:
print('Do command', command, 'with params', str(params))
Mit diesem Code wird der Befehl action.devices.commands.OnOff
verarbeitet. Dieses
ist Teil des OnOff
Trait-Schema. Derzeit gibt dieser Code nur die Ausgabe an die Konsole aus. Sie können
können Sie auf Ihrem Computer das tun,
was Sie wollen,
Projekt arbeiten. Fügen Sie den folgenden Block unter dem Befehl print
in process_event()
hinzu.
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.')
Führen Sie den geänderten Quellcode direkt aus, um die Ausgabe zu sehen.
python hotword.py --device-model-id my-model
Verwenden Sie dieselbe Abfrage wie zuvor:
Ok Google, aktivieren
Wenn Sie eine LED angeschlossen haben zum Raspberry Pi, lesen Sie weiter, um zu erfahren, wie die LED den Befehl OnOff. Falls nicht, überspringen Sie den nächsten Abschnitt, um zu erfahren, 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 hotword.py
.
nano hotword.py
Importieren Sie die Datei RPi.GPIO in die Datei hotword.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. Vorgehensweise
in der Funktion main()
, bevor Ereignisse verarbeitet werden:
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) ...
Ändern Sie den Code, den Sie in process_event()
hinzugefügt haben. Wenn der Befehl „on“ eingeht,
Setzen Sie die Markierung auf den Status der High-Logik. Wenn der Befehl „off“ eingeht,
auf den niedrigen Logikstatus setzen.
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)
Speichern Sie die Änderungen und schließen Sie die Datei.
Beispiel ausführen
Führen Sie den geänderten Beispielcode aus.
python hotword.py --device-model-id my-model
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