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 un tratto e aggiornato il modello, seleziona assicurati che l'Assistente Google restituisca un comando On/Off per il query.

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, vedi 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 vengono stampate queste istruzioni nel codice sorgente.

Recupera il codice sorgente

Ora è tutto pronto per iniziare il tuo progetto:

git clone https://github.com/googlesamples/assistant-sdk-python

Trovare il gestore di 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 con la seguente riga:

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

Questo codice gestisce il comando action.devices.commands.OnOff. Questo fa parte del comando OnOff trait. Al momento, questo codice restituisce solo l'output alla console. Puoi modificare questo codice in modo da fare ciò che vuoi sul tuo 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 al Raspberry Pi, continua a leggere per scoprire come accendere il LED in risposta al il comando OnOff. In caso contrario, salta la sezione successiva per scoprire come e 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. Sarà necessario hardware aggiuntivo se utilizzi Raspberry Pi.

Importa il pacchetto GPIO

Per semplificare l'accesso del software ai pin di ingresso/uscita per uso generico (GPIO) su Raspberry Pi, installa l'app 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 file RPi.GPIO per controllare i pin GPIO su Pi. Inserisci la seguente affermazione vicino a altre istruzioni import:

import RPi.GPIO as GPIO

Modifica il codice per impostare inizialmente il pin di output sullo stato logica bassa. Esegui questa azione 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 viene ricevuto il comando on, imposta il pin sullo stato logica alta. Quando viene ricevuto il comando off, sullo stato della logica bassa.

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.

E questo è solo l'inizio. Scopri come aggiungere altri trait e gestori.