Gérer les commandes

<ph type="x-smartling-placeholder">

Suivez ces instructions pour exécuter du code personnalisé sur votre appareil dans en réponse aux commandes de l'Assistant Google.

Exécuter l'exemple

Maintenant que vous avez défini une caractéristique et mis à jour le modèle, vérifiez assurez-vous que l'Assistant Google renvoie une commande d'activation/de désactivation pour la requête.

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

Essayez d'exécuter la requête suivante :

Ok Google, active.

Vous devriez voir les instructions suivantes dans le résultat de la console. Si ce n'est pas le cas, consultez dans les instructions de dépannage.

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}

Vous trouverez l'emplacement de ces instructions dans le code source.

Obtenir le code source

Vous êtes maintenant prêt à démarrer votre propre projet:

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

Rechercher le gestionnaire de commandes

Le fichier hotword.py de l'exemple de code utilise le SDK pour envoyer des requêtes et recevoir des réponses de l'Assistant Google.

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

Recherchez la définition de gestionnaire suivante:

def process_event(event):

Actuellement, cette fonction affiche le nom de chaque événement d'action sur l'appareil et les par la ligne suivante:

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

Ce code gère la commande action.devices.commands.OnOff. Ce fait partie de la commande OnOff du schéma de caractéristique. Actuellement, ce code imprime simplement la sortie dans la console. Vous pouvez modifiez ce code pour faire ce que vous voulez projet. Ajoutez le bloc suivant sous la commande print dans 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.')

Exécutez directement le code source modifié pour voir le résultat.

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

Utilisez la même requête que précédemment:

Ok Google, active.

Si vous avez connecté une LED au Raspberry Pi, lisez la suite pour savoir comment allumer la LED en réponse à la commande OnOff. Si ce n'est pas le cas, passez la section suivante pour savoir comment Ajoutez d'autres caractéristiques et gestionnaires.

Étapes suivantes : Raspberry Pi

Maintenant que vous savez comment gérer la commande entrante, modifiez l'exemple de code pour allumer un voyant LED. Cela nécessitera du matériel supplémentaire si vous utilisez Raspberry Pi.

Importer le package GPIO

Pour simplifier l'accès logiciel aux broches GPIO (General Usage Input/Output) Raspberry Pi, installez le fichier RPi.GPIO dans l'environnement virtuel.

pip install RPi.GPIO

Modifier l'exemple

Ouvrez le fichier hotword.py.

nano hotword.py

Dans le fichier hotword.py, importez le fichier RPi.GPIO. pour contrôler les broches GPIO sur le Pi. Placez l'instruction suivante à proximité du Autres instructions import:

import RPi.GPIO as GPIO

Modifiez le code pour définir initialement la broche de sortie sur l'état logique faible. À faire dans la fonction main(), avant de traiter les événements:

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

Modifiez le code que vous avez ajouté dans process_event(). Lorsque la commande « on » est reçue, définissez la broche sur l'état logique élevé. Lorsque la commande "off" est reçue, définissez à l'état logique faible.

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)

Enregistrez les modifications et fermez le fichier.

Exécuter l'exemple

Exécutez l'exemple de code modifié.

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

Utilisez la même requête que précédemment. Le voyant doit s'allumer.

Et ce n'est que le début. Découvrez comment ajouter d'autres caractéristiques et gestionnaires.