Cómo controlar comandos

Sigue estas instrucciones para ejecutar un código personalizado en tu dispositivo en respuesta a comandos de Asistente de Google.

Ejecutar la muestra

Ahora que definiste una característica y actualizaste el modelo, asegúrate de que Asistente de Google esté enviando un comando de activación/desactivación para la consulta adecuada.

googlesamples-assistant-pushtotalk

Presiona la tecla Intro y prueba la siguiente consulta:

Activar.

Deberías ver las siguientes instrucciones en los resultados de la consola. Si no es así, consulta las instrucciones para solucionar problemas.

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.

Encontrarás esta información en el código fuente.

Obtén el código fuente

Ahora estás listo para comenzar tu propio proyecto:

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

Busca el controlador de comandos

El archivo pushtotalk.py del código de muestra usa el SDK para enviar solicitudes y recibir respuestas de Asistente de Google.

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

Busca la siguiente definición de controlador:

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

El código de onoff() controla el comando action.devices.commands.OnOff. Este comando forma parte del esquema de la característica OnOff.

Actualmente, la definición de onoff() registra el resultado en la consola. Usa funciones auxiliares en device_helpers.py a fin de analizar la respuesta JSON y almacenar los parámetros del comando en variables para facilitar su uso. Puedes modificar este código para hacer lo que quieras en tu proyecto.

Si tienes un kit de LED, sigue leyendo para aprender a iluminar la luz LED en respuesta al comando OnOff. De lo contrario, omite la siguiente sección para aprender a agregar más características y controladores.

Próximos pasos: Raspberry Pi

Ahora que sabes cómo controlar el comando entrante, modifica el código de muestra para iluminar un LED. Si usas Raspberry Pi, necesitarás hardware adicional.

Importa el paquete GPIO

Para simplificar el acceso al software a las clavijas de entrada y salida de uso general (GPIO) en Raspberry Pi, instala el paquete RPi.GPIO en el entorno virtual.

pip install RPi.GPIO

Modifica la muestra

Abre el archivo pushtotalk.py.

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

En el archivo pushtotalk.py, importa el módulo RPi.GPIO para controlar las clavijas GPIO en Pi. Coloca la siguiente instrucción cerca de las otras declaraciones import:

import RPi.GPIO as GPIO

Modifica el código para establecer inicialmente el pin de salida en el estado lógico bajo. Cuando se reciba el comando on, establece el marcador en el estado de lógica alta. Cuando se reciba el comando off, establece el marcador en el estado lógico bajo.

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)

Guarda los cambios y cierra el archivo.

Ejecutar la muestra

Ejecuta el código de muestra modificado.

python pushtotalk.py

Usa la misma consulta de antes. Se debería encender la luz LED.

Ese es solo el comienzo. Obtén más información para agregar más traits y controladores.