Komutları Yönet

Google Asistan'dan gelen komutlara yanıt olarak cihazınızda özel kod yürütmek için bu talimatları uygulayın.

Örneği çalıştır

Artık bir özellik tanımladığınıza ve modeli güncellediğinize göre, Google Asistan'ın uygun sorgu için bir Açık/Kapalı komutu gönderip göndermediğini kontrol edin.

googlesamples-assistant-hotword --device-model-id my-model

Aşağıdaki sorguyu deneyin:

Ok Google, aç.

Konsol çıkışında aşağıdaki ifadeleri görmeniz gerekir. Görmüyorsanız sorun giderme talimatlarına bakın.

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}

Bu ifadelerin nerede yazdırıldığını kaynak kodunda bulabilirsiniz.

Kaynak kodu alın

Artık kendi projenizi başlatmaya hazırsınız:

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

Komut işleyicisini bulma

Örnek koddaki hotword.py dosyası, Google Asistan'dan istek göndermek ve yanıt almak için SDK'yı kullanır.

cd assistant-sdk-python/google-assistant-sdk/googlesamples/assistant/library
nano hotword.py

Şu işleyici tanımını arayın:

def process_event(event):

Şu anda bu işlev, her Cihaz İşlemi etkinlik adını ve aşağıdaki satırı içeren tüm parametreleri yazdırmaktadır:

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

Bu kod action.devices.commands.OnOff komutunu işler. Bu komut, OnOff özellik şemasının bir parçasıdır. Şu anda bu kod yalnızca çıktıyı konsola yazdırmaktadır. Bu kodu, projenizde istediğiniz şekilde değiştirebilirsiniz. process_event() politikasındaki print komutunun altına aşağıdaki bloğu ekleyin.

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

Sonucu görmek için değiştirilen kaynak kodunuzu doğrudan çalıştırın.

python hotword.py --device-model-id my-model

Önceki sorguyu kullanın:

Ok Google, aç.

RASPberry Pi'ye bir LED bağladıysanız LED'in Açık Kapalı komutuna yanıt olarak nasıl yanacağını öğrenmek için okumaya devam edin. Eklemediyseniz daha fazla özellik ve işleyici eklemeyi öğrenmek için sonraki bölümü atlayın.

Sonraki adımlar - Rabsberry Pi

Gelen komutu nasıl işleyeceğinizi öğrendiğinize göre, örnek kodu LED ışığı yakacak şekilde değiştirebilirsiniz. Ahududu Pi'yi kullanıyorsanız bu işlem için ek donanım gerekir.

GPIO paketini içe aktarma

RAPberry Pi'deki Genel Amaçlı Giriş/Çıkış (GPIO) PIN'lerine yazılım erişimini basitleştirmek için RPi.GPIO paketini sanal ortama yükleyin.

pip install RPi.GPIO

Örneği değiştir

hotword.py dosyasını açın.

nano hotword.py

Pi'deki GPIO pinlerini kontrol etmek için hotword.py dosyasında RPi.GPIO modülünü içe aktarın. Aşağıdaki ifadeyi diğer import ifadelerinin yanına yerleştirin:

import RPi.GPIO as GPIO

Çıkış PIN'ini başlangıçta düşük mantık durumuna ayarlamak için kodu değiştirin. Bunu, etkinlikleri işlemeden önce main() işlevinde yapın:

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

process_event() ürününe eklediğiniz kodu değiştirin. On komutu alındığında PIN'i yüksek mantık durumuna ayarlayın. "Kapalı" komutu alındığında, PIN'i "düşük mantıksal" durumuna ayarlayın.

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)

Değişikliklerinizi kaydedin ve dosyayı kapatın.

Örneği çalıştır

Değiştirilen örnek kodu çalıştırın.

python hotword.py --device-model-id my-model

Önceki sorguyu kullanın. LED yanmalıdır.

Bu daha başlangıç. Daha fazla özellik ve işleyici eklemeyi öğrenin.