Gerenciar comandos

Siga estas instruções para executar um código personalizado no dispositivo em resposta a comandos do Google Assistente.

Executar a amostra

Agora que você definiu uma característica e atualizou o modelo, confira se o Google Assistente está enviando um comando de ativação/desativação para a consulta adequada.

googlesamples-assistant-pushtotalk

Pressione a tecla Enter e tente a seguinte consulta:

Ativar.

Você verá as instruções a seguir na saída do console. Caso contrário, consulte as instruções de solução de 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.

Você vai encontrar onde essas instruções são mostradas no código-fonte.

Conseguir o código-fonte

Agora você está pronto para iniciar seu próprio projeto:

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

Encontre o gerenciador de comandos

O arquivo pushtotalk.py no exemplo de código usa o SDK para enviar solicitações e receber respostas do Google Assistente.

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

Pesquise a seguinte definição de gerenciador:

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

O código em onoff() processa o comando action.devices.commands.OnOff. Esse comando faz parte do esquema de característica OnOff.

Atualmente, a definição onoff() registra a saída para o console. Ele usa funções auxiliares em device_helpers.py para analisar o JSON de resposta e armazenar os parâmetros de comando em variáveis para facilitar o uso. Você pode modificar esse código para fazer o que quiser no seu projeto.

Se você tiver um kit de LED, continue lendo para saber como acender o LED em resposta ao comando OnOff. Caso contrário, pule a próxima seção para aprender a adicionar mais características e gerenciadores.

Próximas etapas - Raspberry Pi

Agora que você sabe como processar o comando recebido, modifique o exemplo de código para acender um LED. Isso exigirá algum hardware adicional se você estiver usando o Raspberry Pi.

Importar o pacote GPIO

Para simplificar o acesso de software aos pinos GPIO do Rspberry Pi, instale o pacote RPi.GPIO no ambiente virtual.

pip install RPi.GPIO

Modificar o exemplo

Abra o arquivo pushtotalk.py.

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

No arquivo pushtotalk.py, importe o módulo RPi.GPIO para controlar os pinos GPIO no Pi. Coloque a seguinte instrução perto das outras instruções import:

import RPi.GPIO as GPIO

Modifique o código para definir o pino de saída inicialmente para o estado de baixa lógica. Quando o comando on for recebido, defina o pin como o estado de lógica alta. Quando o comando desativado for recebido, defina o pin como no estado de baixa lógica.

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)

Salve as alterações e feche o arquivo.

Executar a amostra

Execute o exemplo de código modificado.

python pushtotalk.py

Use a mesma consulta de antes. O LED vai acender.

Isso é apenas o começo. Saiba como adicionar mais características e gerenciadores.