Siga estas instruções para executar código personalizado em seu dispositivo em resposta a comandos do Google Assistente.
Executar a amostra
Agora que você definiu uma característica e atualizou o modelo, marque para garantir verifique se o Google Assistente está enviando um comando de ativação/desativação para o consulta.
googlesamples-assistant-hotword --device-model-id my-model
Execute esta consulta:
Ok Google, ativar.
Você verá as seguintes instruções 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ê descobrirá onde essas instruções são impressas no código-fonte.
Conseguir o código-fonte
Agora você já pode iniciar seu próprio projeto:
git clone https://github.com/googlesamples/assistant-sdk-python
Encontre o gerenciador de comando
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 do gerenciador:
def process_event(event):
No momento, essa função mostra todos os nomes de eventos de Ações no dispositivo e por esta linha:
print('Do command', command, 'with params', str(params))
Esse código processa o comando action.devices.commands.OnOff
. Isso
faz parte do pipeline OnOff
de características comuns. Atualmente, esse código apenas imprime a saída no console. Você pode
modifique esse código para fazer o que quiser no seu
projeto. Adicione o bloco a seguir 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 a o comando OnOff. Caso contrário, pule a próxima seção para saber como adicione 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 o Raspberry Pi.
Importar o pacote GPIO
Para simplificar o acesso de software aos pinos de Entrada/Saída de Uso Geral (GPIO, na sigla em inglês) em o Raspberry Pi, instale o arquivo 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 RPi.GPIO.
para controlar os pinos GPIO no Pi. Coloque a instrução a seguir perto do
outras instruções import
:
import RPi.GPIO as GPIO
Modifique o código para definir o pin de saída inicialmente como o estado de baixa lógica. Faça isto
Na função main()
, antes de processar 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 é recebido,
define o pin como o estado de lógica superior. Quando o comando "off" for recebido, defina a
ao estado de baixa lógica.
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 é só o começo. Saiba como adicionar mais características e gerenciadores.