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.