Segui queste istruzioni per eseguire codice personalizzato sul tuo dispositivo in risposta ai comandi dell'Assistente Google.
Esegui l'esempio
Ora che hai definito una caratteristica e aggiornato il modello, controlla che l'Assistente Google invii un comando On/Off per la query appropriata.
googlesamples-assistant-hotword --device-model-id my-model
Prova la seguente query:
Hey Google, attiva.
Nell'output della console dovresti vedere le seguenti istruzioni. In caso contrario, consulta le istruzioni per la risoluzione dei problemi.
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}
Troverai dove sono stampate queste istruzioni nel codice sorgente.
Recupera il codice sorgente
Ora puoi iniziare il tuo progetto:
git clone https://github.com/googlesamples/assistant-sdk-python
Trovare il gestore dei comandi
Il file hotword.py
nel codice campione utilizza l'SDK per inviare richieste e
ricevere risposte dall'Assistente Google.
cd assistant-sdk-python/google-assistant-sdk/googlesamples/assistant/library
nano hotword.py
Cerca la seguente definizione di gestore:
def process_event(event):
Attualmente, questa funzione stampa ogni nome di evento Azione dispositivo ed eventuali parametri con la seguente riga:
print('Do command', command, 'with params', str(params))
Questo codice gestisce il comando action.devices.commands.OnOff
. Questo comando fa parte dello schema del tratto OnOff. Attualmente, questo codice stampa solo l'output nella console. Puoi
modificare questo codice per fare ciò che vuoi per il
progetto. Aggiungi il seguente blocco sotto il comando print
in 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.')
Esegui direttamente il codice sorgente modificato per visualizzare l'output.
python hotword.py --device-model-id my-model
Utilizza la stessa query di prima:
Hey Google, attiva.
Se hai collegato un LED a Raspberry Pi, continua a leggere per scoprire come accendere il LED in risposta al comando OnOff. In caso contrario, salta la sezione successiva per scoprire come aggiungere altri tratti e gestori.
Passaggi successivi: Raspberry Pi
Ora che sai come gestire il comando in entrata, modifica il codice campione per accendere un LED. Ciò richiede hardware aggiuntivo se utilizzi Raspberry Pi.
Importa il pacchetto GPIO
Per semplificare l'accesso software ai pin GPIO (General Purpose Input/Output) su Raspberry Pi, installa il pacchetto RPi.GPIO nell'ambiente virtuale.
pip install RPi.GPIO
Modifica l'esempio
Apri il file hotword.py
.
nano hotword.py
Nel file hotword.py
, importa il modulo RPi.GPIO per controllare i pin GPIO sul Pi. Inserisci la seguente dichiarazione accanto alle
altre istruzioni import
:
import RPi.GPIO as GPIO
Modifica il codice per impostare inizialmente il pin di uscita sullo stato logico basso. Esegui questa operazione nella funzione main()
prima di elaborare gli eventi:
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) ...
Modifica il codice che hai aggiunto in process_event()
. Quando ricevi il comando on,
imposta il pin sullo stato logico alto. Quando ricevi il comando off, imposta
il PIN sullo stato logico basso.
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)
Salva le modifiche e chiudi il file.
Esegui l'esempio
Esegui il codice campione modificato.
python hotword.py --device-model-id my-model
Utilizza la stessa query di prima. Il LED dovrebbe accendersi.
Questo è solo l'inizio. Scopri come aggiungere altri tratti e gestori.