Gérer les commandes

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-pushtotalk

Appuyez sur la touche Entrée et essayez la requête suivante:

Activer.

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.

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.

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 pushtotalk.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/grpc
nano pushtotalk.py

Recherchez la définition de gestionnaire suivante:

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

Le code dans onoff() gère la commande action.devices.commands.OnOff. Ce fait partie de la commande OnOff du schéma de caractéristique.

Actuellement, la définition onoff() enregistre la sortie dans la console. Il utilise l'outil d'aide fonctions dans device_helpers.py pour analyser la réponse JSON et stocker la commande des paramètres dans les variables pour faciliter leur utilisation. Vous pouvez modifier ce code pour faire ce que que vous voulez pour votre projet.

Si vous avez un kit LED, 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 pushtotalk.py.

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

Dans le fichier pushtotalk.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. Lorsque lors de la réception d'une commande, définissez la broche sur l'état logique élevé. Lorsque commande off est reçue, définissez la broche sur l’état logique faible.

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)

Enregistrez les modifications et fermez le fichier.

Exécuter l'exemple

Exécutez l'exemple de code modifié.

python pushtotalk.py

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.