Yerel Ev SDK, akıllı ev intent'lerini yönlendirecek yerel bir intent karşılama yolu ekleyerek Google Asistan ile akıllı ev entegrasyonunuzu iyileştirir.
Yerel Ev SDK'sı iki özellik sunar: Yerel Yürütme ve Yerel Sorgu.
- Yerel yürütme, bulut API'si çağrısı yapmak yerine
EXEC
intent'leri yerel karşılama yolu üzerinden göndererek komutları karşılama olanağı sağlar. Örneğin, "Işığı aç" isteği LocalExecution tarafından işlenebilir. - Yerel Sorgu, yerel karşılama yolu üzerinden
QUERY
amaçlarını göndererek cihaz durumuyla ilgili sorguları işleme olanağı sağlar. Örneğin, Yerel Sorgu, "Işığım açık mı?" sorgusunu bulut API çağrısı yapmadan karşılar.
SDK, akıllı ev işletme mantığınızı içeren, TypeScript veya JavaScript kullanarak yerel karşılama uygulaması yazmanıza olanak tanır. Google Home veya Google Nest cihazları, uygulamanızı cihazda yükleyip çalıştırabilir. Uygulamanız, kullanıcı komutlarını yerine getirmek için mevcut protokoller üzerinden yerel alan ağındaki (LAN) kablosuz bağlantı aracılığıyla mevcut akıllı cihazlarınızla doğrudan iletişim kuruyor.
SDK'nın entegrasyonu, Cloud-to-cloud entegrasyonunuzda daha düşük gecikme süresi ve daha yüksek güvenilirlik gibi performans iyileştirmeleri sunar. Yerel karşılama, ikincil kullanıcı doğrulaması kullananlar hariç tüm cihaz türleri ve cihaz özellikleri için desteklenir.
Oluşturmaya başlama Örneği deneyin
İşleyiş şeklini anlama
Bulut karşılamanızdan SYNC
yanıtı aldıktan sonra Yerel Ev platformu, Asistan'a bağlı akıllı cihazları bulmak için kullanıcının yerel alan ağını mDNS, UDP yayını veya UPnP kullanarak tarar.
Platform, IDENTIFY
yanıtındaki cihaz kimliğini önceki SYNC
yanıtında döndürülenlerle karşılaştırarak cihazın yerel olarak kontrol edilebilir olup olmadığını belirlemek için bir IDENTIFY
intent'i gönderir. Algılanan cihaz bir hub veya köprü ise platform, REACHABLE_DEVICES
amaçlı bir işlem gönderir ve hub'ı yerel olarak iletişim kurmak için proxy cihaz olarak ele alır.
Platform, yerel bir cihazı onaylayan bir yanıt aldığında kullanıcının Google Home veya Google Nest cihazına yerel karşılama yolu oluşturur ve ardından yerel karşılama için kullanıcı komutlarını yönlendirir.
Bir kullanıcı, yerel bir intent karşılama yolu olan Cloud-to-cloud entegrasyonunu tetiklediğinde Asistan, bulut intent karşılama yerine EXECUTE
veya QUERY
intent'ini Google Home ya da Google Nest cihazına gönderir. Ardından cihaz, amacı işlemek için yerel karşılama uygulamasını çalıştırır.
Yerel Ev platformu, komutu tetikleyecek Google Home veya Google Nest cihazını seçerken belirleyici değildir. EXECUTE
ve QUERY
amaçları, hedef cihazla aynı Home Graph yapısında tanımlanan herhangi bir Google Home veya Google Nest cihazından gelebilir.
Yerel sipariş karşılama uygulaması
Yerel karşılama uygulaması, Yerel Ev platformu tarafından gönderilen intent'leri işlemek ve yerel alan ağı üzerinden akıllı cihazınıza erişmek için gereken işletme mantığını içerir. Yerel karşılama özelliğini entegre etmek için donanımınızda değişiklik yapmanız beklenmez. Uygulama, HTTP, TCP veya UDP gibi uygulama katmanı protokolleri aracılığıyla akıllı cihaza kontrol komutları göndererek Cloud-to-cloud entegrasyon isteklerini karşılar. Yerel karşılama yolu başarısız olursa yedek yürütme yolu olarak bulut karşılama kullanılır.
Yerel Ev SDK'sı, uygulamanın oluşturulmasını desteklemek için şu iki ana sınıfı sağlar:
DeviceManager
: TCP, UDP yuvaları veya HTTP isteklerini kullanarak akıllı cihazlarla iletişim kurma yöntemleri sağlar.App
: Google'ın yerel olarak kontrol edilebilir cihazları (IDENTIFY
,REACHABLE_DEVICES
) keşfettikten sonra gönderdiği amaçlar için işleyiciler ekleme yöntemleri sağlar. Bu sınıf, kullanıcı komutlarını (EXECUTE
) da yerine getirir ve kullanıcının mevcut cihaz durumuyla ilgili sorgularını (QUERY
) yanıtlar.
Geliştirme sırasında, uygulamayı kendi barındırma sunucunuza veya yerel geliştirme makinenize yükleyerek oluşturup test edebilirsiniz. Google, üretimde uygulamanızı kullanıcının Google Home veya Google Nest cihazında güvenli bir JavaScript sanal alan ortamında barındırır.
Report State API şu anda yerel karşılama için desteklenmemektedir. Google, bu istekleri işlemek için bulut üzerinden sipariş karşılama hizmetinize güvenir.
Uygulama yaşam döngüsü
Yerel karşılama uygulamanız, Yerel Ev platformu proje tarama yapılandırmasıyla eşleşen yeni yerel cihazlar keşfettiğinde veya daha önce tanımlanmış bir cihazla ilgili teslim edilecek bekleyen amaçlar olduğunda isteğe bağlı olarak yüklenir.
Google Home veya Google Nest cihazlarında bellek sınırlaması vardır ve sistemdeki bellek baskısı nedeniyle yerel karşılama uygulamanız herhangi bir zamanda sonlandırılabilir. Bu durum, uygulamanız çok fazla bellek tüketmeye başladığında veya sistemin başka bir uygulama için yer açması gerektiğinde ortaya çıkabilir. Yerel Ev platformu, uygulamanızı yalnızca iletilecek yeni amaçlar olduğunda ve uygulamanın çalışması için yeterli bellek kaynağı bulunduğunda yeniden başlatır.
Yerel Ev platformu, kullanıcı hesabının bağlantısını kaldırdığında veya kullanıcının agentUserId
ile ilişkili yerel karşılamayı destekleyen cihaz kalmadığında boşta kalma zaman aşımından sonra uygulamanızı kaldırır.
Desteklenen cihazlar
Yerel Ev platformu, yerel karşılama uygulamanızı desteklenen Google Home veya Google Nest cihazlarda çalıştırır. Aşağıdaki tabloda, desteklenen cihazlar ve her cihazda kullanılan çalışma zamanı açıklanmaktadır. Çalışma zamanı gereksinimleri hakkında daha fazla bilgi edinmek için Yürütme ortamı başlıklı makaleyi inceleyin.
Cihaz | Tür | Ortam |
---|---|---|
Google Home | Hoparlör | Chrome |
Google Home Mini | Hoparlör | Chrome |
Google Home Max | Hoparlör | Chrome |
Nest Mini | Hoparlör | Chrome |
Nest Hub | Görüntülü Reklam Ağı | Chrome |
Nest Hub Max | Görüntülü Reklam Ağı | Chrome |
Nest Wifi | Yönlendirici | Node.js |
Nokta | Chrome |
Yürütme ortamı
Yerel karşılama uygulamanızın yürütme ortamı cihazınıza bağlıdır. Yerel Ev platformu aşağıdaki çalışma zamanı ortamlarını destekler:
- Chrome: Yerel karşılama uygulamanız,
window
Chrome M80 veya sonraki sürümlerin çalıştığı bir Chrome tarayıcının bağlamında yürütülür. Bu sürümlerde ECMAScript sürümü ES2018 desteklenir. - Node.js: Yerel istek karşılama uygulamanız, Node v10.x LTS veya sonraki sürümlerin çalıştığı bir Node.js sürecinde ECMAScript sürümü ES2018 desteğiyle birlikte komut dosyası olarak yürütülür.
Kaynak kodu yapısı
Bağımlılıklarınızı Local Home SDK'nın sağladığı paketleyici yapılandırmalarını kullanarak tek bir JavaScript dosyasında paketlemenizi ve kaynak kodunuzu hemen çağrılan işlev ifadesi (IIFE) olarak paketlemenizi öneririz.
Uygulama yolu
Akıllı ev entegrasyonunuz için Yerel Ev SDK'sını kullanmak istiyorsanız aşağıdaki görevleri yerine getirmeniz gerekir:
1 | Tarama yapılandırmasını ayarlama | Asistan'ın yerel olarak kontrol edilebilen cihazları bulabilmesi için Google Home Developer Console öğesini gerekli parametrelerle yapılandırın. |
2 | Bulut karşılamanızdaki SYNC yanıtını güncelleme | Bulut üzerinden karşılamanızda, platformun yerel karşılama yolu oluşturmak için kullandığı
otherDeviceIds alanını destekleyecek şekilde SYNC istek işleyicisini değiştirin. Bu alanda, yerel olarak kontrol edilebilen cihazların kimliklerini belirtin.
|
3 | Yerel karşılama uygulamasını uygulama | IDENTIFY ,
EXECUTE ve
QUERY amaçlarını işlemek için JavaScript uygulaması oluşturmak üzere Local Home SDK'yı kullanın. Merkez veya köprü proxy cihazlar için REACHABLE_DEVICES amacını da işlemeniz gerekir.
|
4 | Uygulamanızı test etme ve hatalarını ayıklama | Google Home Test Paketi'ni kullanarak entegrasyonunuzu test edin (veya kendi kendinize sertifika verin). |
Başlamadan önce
- Cloud-to-cloud entegrasyonu oluşturma ile ilgili temel bilgileri öğrenin.
- Google Home Developer Console bölümünde, mevcut bir akıllı ev projenizin olduğundan ve hesap bağlamanın yapılandırıldığından emin olun.
- Test cihazınızda Developer Console ve Asistan'da aynı Google Hesabı ile giriş yaptığınızdan emin olun.
- Uygulamanızı yazmak için Node.js ortamına ihtiyacınız vardır. Node.js ve npm'yi yüklemek için Node Version Manager önerilir.
- Yerel Ev SDK'sının en yeni sürümüyle çalışmak için test cihazlarınızı Cast Önizleme Programı'na kaydetmeniz gerekir.