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

Enter tuşuna basın ve aşağıdaki sorguyu deneyin:

Açın.

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

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.

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

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

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

onoff() içindeki kod action.devices.commands.OnOff komutunu işler. Bu komut, OnOff özellik şemasının bir parçasıdır.

onoff() tanımı, şu an için konsola çıkış sunmaktadır. JSON yanıtını ayrıştırmak ve kullanım kolaylığı için komut parametrelerini değişkenlerde depolamak için device_helpers.py içindeki yardımcı işlevleri kullanır. Bu kodu, projenizde istediğiniz işlemi yapacak şekilde değiştirebilirsiniz.

LED kitiniz varsa Açık Kapalı komutuna yanıt olarak LED'i nasıl yakacağınızı öğrenmek için okumaya devam edin. Aksi takdirde daha fazla özellik ve işleyici eklemeyi öğrenmek için sonraki bölüme geçin.

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

pushtotalk.py dosyasını açın.

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

Pi'deki GPIO pinlerini kontrol etmek için pushtotalk.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. On komutu alındığında PIN'i yüksek mantık durumuna ayarlayın. Kapalı komutu alındığında PIN'i düşük mantık durumuna ayarlayın.

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)

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

Örneği çalıştır

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

python pushtotalk.py

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

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