Gérer les commandes

Suivez ces instructions pour exécuter du code personnalisé sur votre appareil 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 que l'Assistant Google renvoie une commande d'activation/de désactivation pour la requête appropriée.

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

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

Ok Google, allume.

Les instructions suivantes doivent s'afficher dans la sortie de la console. Si ce n'est pas le cas, consultez 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

Trouver 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 tous les noms d'événements des actions sur les appareils et tous les paramètres avec la ligne suivante:

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

Ce code gère la commande action.devices.commands.OnOff. Cette commande fait partie du schéma de caractéristique OnOff. Actuellement, ce code imprime simplement la sortie dans la console. Vous pouvez modifier ce code pour effectuer ce que vous souhaitez sur votre 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 votre code source modifié pour afficher le résultat.

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

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

Ok Google, allume.

Si vous avez connecté une LED au Raspberry Pi, poursuivez la lecture pour savoir comment l'allumer en réponse à la commande OnOff. Si ce n'est pas le cas, ignorez la section suivante pour apprendre à ajouter 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 une LED. Cela nécessitera du matériel supplémentaire si vous utilisez le Raspberry Pi.

Importer le package GPIO

Pour simplifier l'accès logiciel aux broches d'entrée/sortie à usage général (GPIO) du Raspberry Pi, installez le package 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 module RPi.GPIO pour contrôler les broches GPIO sur Pi. Placez l'instruction suivante à proximité des autres instructions import:

import RPi.GPIO as GPIO

Modifiez le code pour définir initialement la broche de sortie sur l'état logique faible. Faites-le dans la fonction main(), avant de traiter des é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(). À la réception de la commande "on", définissez le code sur l'état de logique élevée. À la réception de la commande "off", définissez le repère sur 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 LED devrait s'allumer.

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