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.