Comandi dell'handle

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-pushtotalk

Premi il tasto Invio e prova a eseguire la query seguente:

Attiva.

Nell'output della console dovresti vedere le seguenti istruzioni. In caso contrario, consulta le istruzioni per la risoluzione dei problemi.

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.

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 pushtotalk.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/grpc
nano pushtotalk.py

Cerca la seguente definizione di gestore:

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

Il codice in onoff() gestisce il comando action.devices.commands.OnOff. Questo comando fa parte dello schema del tratto OnOff.

Attualmente, l'output dei log di definizione onoff() nella console. Utilizza funzioni helper in device_helpers.py per analizzare il codice JSON della risposta e archiviare i parametri del comando in variabili per facilità d'uso. Puoi modificare questo codice per fare quello che vuoi nel tuo progetto.

Se disponi di un kit LED, continua a leggere per scoprire come accendere il LED in risposta al comando OnOff. In caso contrario, salta la prossima sezione per scoprire come aggiungere altri trait 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 pushtotalk.py.

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

Nel file pushtotalk.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. Quando viene ricevuto il comando on, imposta il pin sullo stato logico alto. Quando viene ricevuto il comando off, imposta il pin sullo stato logico basso.

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)

Salva le modifiche e chiudi il file.

Esegui l'esempio

Esegui il codice campione modificato.

python pushtotalk.py

Utilizza la stessa query di prima. Il LED dovrebbe accendersi.

Questo è solo l'inizio. Scopri come aggiungere altri tratti e gestori.