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-hotword --device-model-id my-model

Execute esta consulta:

Ok Google, 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.

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}

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 hotword.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/library
nano hotword.py

Pesquise a seguinte definição de gerenciador:

def process_event(event):

Atualmente, essa função imprime todos os nomes de eventos de ações no dispositivo e todos os parâmetros com a seguinte linha:

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

Esse código processa o comando action.devices.commands.OnOff. Esse comando faz parte do esquema de característica OnOff. Atualmente, esse código imprime apenas a saída no console. Você pode modificar esse código para fazer o que quiser no seu projeto. Adicione o seguinte bloco no comando print em 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.')

Execute o código-fonte modificado diretamente para conferir a saída.

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

Use a mesma consulta de antes:

Ok Google, ativar.

Se você conectou um LED ao Raspberry Pi, continue lendo para saber como acender o LED em resposta ao comando OnOff. Caso contrário, pule a próxima seção para saber como 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 hotword.py.

nano hotword.py

No arquivo hotword.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. Faça isso na função main() antes de processar os eventos:

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

Modifique o código adicionado em process_event(). Quando o comando on for recebido, defina o pin para o estado de lógica alta. Quando o comando "off" for recebido, defina o pin como no estado de lógica baixa.

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)

Salve as alterações e feche o arquivo.

Executar a amostra

Execute o exemplo de código modificado.

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

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

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