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

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

Activer

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.

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

Trouver 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. Cette commande fait partie du schéma de caractéristique OnOff.

Actuellement, les journaux de la définition onoff() sont générés dans la console. Elle utilise des fonctions d'assistance dans device_helpers.py pour analyser la réponse JSON et stocker les paramètres de commande dans des variables pour en faciliter l'utilisation. Vous pouvez modifier ce code pour faire ce que vous voulez sur votre projet.

Si vous disposez d'un kit LED, poursuivez la lecture pour savoir comment allumer la LED en réponse à la commande d'activation. Si ce n'est pas le cas, ignorez la section suivante pour savoir comment 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 pushtotalk.py.

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

Dans le fichier pushtotalk.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. À 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 code 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 LED devrait s'allumer.

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