Dikkat! Yeni Geliştirici Önizleme programları yakında kullanıma sunulacak. Buradan başvurun ve yeni araçları deneyip geri bildirim gönderen ilk kişilerden biri olun.

Matter sanal cihazı oluşturma

1. Giriş

Matter, akıllı cihazların geliştirilmesi için heyecan verici fırsatlar sunan bir bağlantı protokolüdür. Bu codelab'de, önceden yapılandırılmış bir Docker görüntüsünde sizin için sağlanan SDK'ları ve bağımlıları kullanarak ilk Matter cihazınızı derleyeceksiniz.

Matter hakkında bilgi edinmek için Google Home Geliştirici Merkezi'ni veya Connectivity Standards Alliance web sitesini ziyaret edin.

Neler öğreneceksiniz?

  • Matter derleme ortamı oluşturma
  • Bilgisayarınızda çalışan sanal Matter cihazı nasıl oluşturulur?
  • Sanal Matter cihazını Google Home ile çalıştırma ve kontrol etme

Gerekenler

  • Hub'ı destekleyen, Nest Hub (2. nesil) gibi herhangi bir Google Nest cihazı olan bir merkezdir. Google Store'dan veya tercih ettiğiniz perakendeciden merkez satın alabilirsiniz.
  • X11 pencere sistemini çalıştıran bir Linux makine.
  • Docker'a dokunun.
  • Linux ile ilgili temel bilgiler.

2. Ortamınızı ayarlayın

Bir Linux ana makinede önceden yapılandırılmış bir Docker container'ı kullanacağız. Bu kapsayıcı, Matter sanal cihazı oluşturmak ve çalıştırmak için gereken tüm bağımlıları içerir.

Donanımınızı kontrol edin

Windows ve MacOS bilgisayarlar şu anda bu Docker yüklemesi tarafından desteklenmiyor. MacOS'te veya Windows'da Matter'ı manuel olarak yükleyip oluşturabilirsiniz.

Ayrıca, bu talimatlarda Linux makinenizin X11 zamanlama sistemini çalıştırdığı varsayılır. Linux makineniz Wayland çalıştırıyorsa X.Org'un da yüklü olduğundan emin olun.

Docker'ı kurun

  1. Docker Engine'i yükleyin (Dock masaüstünü kullanmayın).
  2. Docker görüntüsünü Docker Hub'dan çekin. Bir terminal penceresinde şunu çalıştırın:
    user@host> docker pull us-docker.pkg.dev/nest-matter/docker-repo/virtual-device-image:latest
    
    Bu işlemin tamamlanması birkaç dakika sürebilir.
  3. Docker container'ını çalıştırmaya başlayın:
    user@host> xhost local:1000
    user@host> docker run -it --ipc=host --net=host -e DISPLAY --name matter-container us-docker.pkg.dev/nest-matter/docker-repo/virtual-device-image:latest
    

Kapsayıcıyı başlattıktan sonra bazı teşhis sonuçlarını ve kapsayıcı yapılandırmanızın doğru olduğunu belirten bir mesaj görürsünüz. Son olarak kapsayıcı kabuk istemi:

Environment looks good, you are ready to go!
$

Docker komutunu ve ona iletilen seçenekleri inceleyelim:

  • xhost local:1000, X Aralık Sistemi'nin 1000 numaralı bağlantı noktasında yerel ana makineden bağlantı almasına izin verir. Böylece, grafik kullanıcı arayüzü kullanılabilir.
  • docker run … image, sağlanan görüntüyü çalıştırır ve gerekirse Docker kayıt defterinden çeker.
  • --ipc=host, Docker'ın arayüzler arası iletişim ad alanını ana makinenizle paylaşmasına olanak tanır.
  • --net=host, Docker'ın ana makinenin ağ yığınını kapsayıcının içinde kullanmasına olanak tanır. Bu ağ, mDNS trafiğini ana makineden kapsayıcıya iletmek ve ana makine X11 ekranını paylaşmak için gereklidir.
  • -e DISPLAY, $DISPLAY dosyasını ana makineye aktarır. Böylece sistem grafik arayüzünüze erişim sağlanır. Bu işlem, Matter kümelerini düzenlerken ZAP aracını çalıştırmak için gereklidir.
  • -it, Docker'ı arka plan işlemi yerine etkileşimli bir terminal (tty) ile çalıştırır.

İsterseniz ikinci bir terminal oturumu örneği çalıştırabilirsiniz:

user@host> docker exec -it matter-container /bin/bash
$

Matter Docker container'ını durdur ve başlat

Bir docker run komutunu çalıştırdığınızda, belirtilen görüntüyle yeni bir kapsayıcı oluşturursunuz. Bunu yaptığınızda, önceki kapsayıcı örneğine kaydedilen eski verileriniz kaybolur. Bazen bunu yapmak istersiniz, çünkü yeni bir yüklemeyle başlamanıza olanak sağlar. Bununla birlikte, oturumlar arasında iş ve ortam yapılandırmanızı kaydetmeyi tercih ettiğiniz zamanlar vardır.

Bu nedenle, çalışmanızı kaybetmemek için kapsayıcınızı oluşturduktan sonra durdurabilirsiniz.

user@host> docker stop matter-container

Tekrar çalıştırmaya hazır olduğunuzda kapsayıcıyı başlatın ve bir terminal penceresi açın:

user@host> docker start matter-container
user@host> docker exec -it matter-container /bin/bash

Aşağıdaki işlemleri yaparak kapsayıcınızda ek terminal oturumları açabilirsiniz:

user@host> docker exec -it matter-container /bin/bash

Dilerseniz aşağıdakileri kullanarak bir kök oturum da başlatabilirsiniz:

user@host> docker exec -u 0 -it matter-container /bin/bash

İlk Matter kurulumu

Terminaliniz açıldığında zaten ~/connectedhomeip alanındaki Matter klonlanmış depo alanında olacaktır. Konuyla ilgili ek kurulum adımlarına gerek yoktur.

Ana makine ile kapsayıcı arasında dosya paylaşma

Ana makinenizdeki dosyalara kapsayıcı içinden erişmek için bir bağlayıcı bağlantısı kullanabilirsiniz. Ekli dizine, ana makineden kolay erişim için kapsayıcının içinden dosya da yazabilirsiniz.

Mevcut çalışma dizininizi /workspace içindeki kapsayıcıya eklemek için kapsayıcınızı --mount source=$(pwd),target=/workspace,type=bind ek bağımsız değişkeniyle çalıştırın.

user@host> docker run -it --ipc=host --net=host -e DISPLAY --name matter-container --mount source=$(pwd),target=/workspace,type=bind us-docker.pkg.dev/nest-matter/docker-repo/virtual-device-image:latest

Kapsayıcı kullanıcının ekli dizindeki izinleri ana makinede yönetilmelidir.

Kapsayıcı içinden, kapsayıcı kullanıcısının grup kimliğini edinin.

$ id
uid=1000(matter) gid=1000(matter) groups=1000(matter)

Kapsayıcı ana makinesinde başka bir terminal oturumu açın ve çalışma dizinini kapsayıcı tarafından eklenen dizine ayarlayın.

Eklenen dizindeki dosyalar için grubu kapsayıcı kullanıcısının grubuna yinelenen şekilde ayarlayın.

user@host> sudo chgrp -R 1000 .

Dizinde istediğiniz izinleri gruba verin. Bu örnek, kapsayıcı kullanıcı grubuna eklenen dizindeki tüm dosyalar için okuma, yazma ve yürütme izinleri verir.

user@host> sudo chmod -R g+rwx .

Bu komutların, ana makine kullanıcısı tarafından oluşturulan yeni dosyaların iznini etkilemediğini unutmayın. Ana makinede oluşturulan yeni dosyaların izinlerini gerektiği şekilde güncellemeyi unutmayın.

Kapsayıcı kullanıcı tarafından oluşturulan dosyalardaki izinleri devralmak için ana makine kullanıcınızı kapsayıcı kullanıcının grubuna ekleyebilirsiniz.

user@host> currentuser=$(whoami)
user@host> sudo usermod -a -G 1000 $currentuser

3. Google Home Geliştirici Konsolu

Google Home Geliştirici Konsolu, Matter entegrasyonlarınızı Google Home ile yönettiğiniz web uygulamasıdır.

ÖAR Matter sertifikasını geçen tüm Matter cihazları, Google Home ekosisteminde çalışır. Geliştirilme aşamasında olan ve sertifikasız cihazlar belirli koşullar altında Google Home ekosisteminde kullanılabilir. Daha fazla bilgi için Eşleştirme kısıtlamaları bölümüne bakın.

Geliştirici projesi oluşturun

Google Home Developer Console'a giderek başlayın:

  1. Projeleri yönetin sayfasında, Proje oluştur'u tıklayın.
    Google Home Geliştirici Merkezi
  2. Başlayın sayfasında Proje oluştur'u tıklayın.

  1. Benzersiz bir proje adı girin ve ardından Yeni proje oluştur'u tıklayın. Yeni proje oluştur iletişim kutusu
  2. + Entegrasyon ekle'yi tıklayarak Matter geliştirme belgelerini görebileceğiniz ve bazı araçlar hakkında bilgi edinebileceğiniz "Önemli kaynaklar" ekranına gidin.
  3. Devam etmeye hazır olduğunuzda Konu kontrol listesi sayfasının gösterildiği Sonraki: Geliştir'i tıklayın.
  4. Sonraki: Kurulum'u tıklayın.
  5. Kurulum sayfasında Ürün adınızı girin.
  6. Cihaz türünü seçin'i tıklayıp açılır menüden cihaz türünü seçin (bu örnekte Light).
  7. Tedarikçi firma kimliği (VID) içinde Test kimliği'ni ve VID'yi test et açılır menüsünden 0xFFF1'i seçin. Ürün Kimliği'nde (PID), 0x8000 değerini girin ve Kaydet ve devam et'i tıkladıktan sonra sonraki sayfada Kaydet'i tıklayın.
    Proje oluşturma
  8. Artık Matter entegrasyonlarını altında Matter cihazı göreceksiniz. Matter entegrasyonları
  9. Hub'ı, Matter entegrasyon projesinin en yeni yapılandırmasını aldığından emin olmak için yeniden başlatın. VID veya PID'yi daha sonra değiştirmeniz gerekirse değişikliğin geçerlilik kazanması için projeyi kaydettikten sonra yeniden başlatmanız gerekir.

4. Cihaz oluştur

Matter'daki tüm örnekler GitHub deposundaki examples klasöründe bulunur. Mevcut birkaç örnek olsa da bu codelab'eŞef odaklanılmıştır.

Şef her ikisi de:

  • Terminal arayüzü sağlayan örnek bir uygulama ve sarmalama özellikleri examples/shell uygulamasında da bulunur.
  • Matter özellikli bir cihaz geliştirmek için gereken yaygın görevlerin birkaçını kapsüllemek için yapılandırma üzerine yapılandırma ilkesini benimseyen bir komut dosyası.

Chef örnek klasörüne gidin ve ilk Matter derlemenizi oluşturun:

$ cd examples/chef
$ ./chef.py -zbr -d rootnode_dimmablelight_bCwGYSDpoe -t linux

Şef, chef.py -h çalıştırılarak görüntülenebilecek birkaç seçeneğe sahip. Burada kullandığımız seçenekler şunlardır:

  • -d: Kullanılacak cihaz türünü tanımlar. Bu örnekte, açma/kapatma ve seviye kontrollerine sahip bir ışıklandırma uygulaması oluşturuyoruz.
  • -z: Cihaz türünü uygulayan kaynak dosyaları oluşturmak için ZAP aracını çağırır. Yani ZAP, aydınlatma seçiminize bağlı olarak, ışığı (Veri Modeli) ve diğer cihazlarla (Etkileşim Modeli) nasıl etkileşime geçtiğini tanımlayan derlemeye otomatik olarak dahil edilecek bir kod oluşturur.
  • -b: Binalar.
  • -r: [İsteğe bağlı] Sanal Matter cihazındaki UPC sunucusunu etkinleştirir. Böylece GUI gibi diğer bileşenler, Veri Modeli Özellikleri'ni ayarlamak ve almak için cihazla iletişim kurabilir.
  • -t linux: hedef platform. Destek platformları linux, nrfconnect ve esp32'dir. Mevcut tüm komutları ve desteklenen hedef platformları görmek için ./chef.py -h çalıştırabilirsiniz. linux, sanal Matter cihazları için kullanılır.

Cihazı çalıştır

Matter, 5540 numaralı TCP/UDP bağlantı noktasını kullanır. Bilgisayarınızda çalışan bir güvenlik duvarı varsa bunu kapatın veya 5540 numaralı bağlantı noktasında gelen TCP/UDP bağlantılarına izin verin.

Sanal cihazı container'da şunlarla çalıştırın:

$ ./linux/out/rootnode_dimmablelight_bCwGYSDpoe
   [1648589956496] [14264:16538181] CHIP: [DL] _Init]
...
[1648562026.946882][433632:433632] CHIP:SVR: SetupQRCode: [MT:Y3.13Y2N00KA0648G00]
[1648562026.946893][433632:433632] CHIP:SVR: Copy/paste the below URL in a browser to see the QR Code:
[1648562026.946901][433632:433632] CHIP:SVR: https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3AY3.13Y2N00KA0648G00
[1648562026.946915][433632:433632] CHIP:SVR: Manual pairing code: [34970112332]

Cihazınızı çalışır durumda bırakın. Şimdi cihazınızı Google Home'a yönlendirebilmek için Google Home uygulamasına odaklanacağız.

Cihazı durdur

CTRL+C ile programdan çıkabilirsiniz. Uygulama çıkmazsa CTRL+\ tuşlarını da kullanmanız gerekebilir.

Sanal cihazınızın kimlik bilgileri /tmp/ dizininde, chip önekiyle başlayan dosyalarda depolanır.

Tüm komisyon sürecini baştan başlatmak isterseniz aşağıdaki komutu çalıştırarak bu dosyaları silmeniz gerekir:

$ rm /tmp/chip*

5. Sanal Cihaz Kumandası

Sanal Cihaz Denetleyici, sanal Matter cihazlarınızın durumunu kontrol etmek ve görüntülemek için grafik kullanıcı arayüzü sağlayan bağımsız bir uygulamadır. Geliştirme ortamınıza bağlı Matter cihazlarıyla iletişim kurmak için bir UPÇ istemci kullanır.

Sanal Cihaz Kumandası

Sanal Cihaz Denetleyici, sanal cihazınızın görsel temsilini sağlar.

Sanal Cihaz Denetleyici grafik kullanıcı arayüzü (GUI) aracılığıyla sanal cihazla etkileşimde bulunabilirsiniz. GUI'deki değişiklikleriniz temel veri modelini etkiler. Sanal Cihaz Denetleyicisi şu anda karartılabilir ışık cihazı türünü desteklemektedir.

Sanal Cihaz Kumandası'nı yükleme

Sanal Cihaz Denetleyicisi, Ubuntu LTS 20.04 Docker kapsayıcısında önceden yüklenmiş olarak gelir.

Sanal Cihaz Kumandasını çalıştırın

İkinci terminal oturumu örneğini oluşturun:

user@host> docker exec -it matter-container /bin/bash
$

Sanal cihazla iletişim kurmak için kullanılacak ağ fişini sağlayarak Sanal Cihaz Denetleyici'yi başlatın:

  $ cd ~/matter-virtual-device-gui/
  $ electron main.js --s=localhost:33000 --no-sandbox

Denetleyiciyi herhangi bir bağımsız değişken sağlamadan başlatırsanız varsayılan olarak yerel ana makine bağlantı noktası 33000'i kullanarak ağ yuvası seçeneğini belirler. Kumanda sanal cihaza bağlandıktan sonra cihaz durumunuzu gösteren bir ekran görüntülenir:

Sanal cihaz grafik kullanıcı arayüzü

Sanal Denetleyici uygulamasında değişiklik yaptığınız sırada uygulama, cihazın UPB sunucusuna istek gönderir ve durum bilgisi almak için UPB sunucusuna saniye başına anket yapar.

Sanal Cihaz Denetleyicisi uygulaması, cihaz komisyonlama akışınızın bir parçası olarak QR kodunu almak için de kullanılabilir. Bu cihazın QR kodunu görüntülemek için cihaz resminin yanındaki QR kodu simgesini tıklayın:

QR Kodu

Cihazınızı çalıştırmak için bu QR kodunu kullanabilirsiniz.

6. Cihazı çalıştırın

Not: Bu adım yalnızca projenizi Google Home Developer Console'da oluşturduysanız başarılı olur.

Nest Hub

Cihazınızı Matter kumaşına yaptırmak için bir merkez kullanmanız gerekir. Bu, Matter'ı destekleyen ve hem Thread özellikli cihazlar için Sınır Yönlendirici hem de Akıllı Ev niyetlerini yönlendirmek için yerel sipariş karşılama yolu görevi görecek olan Nest Hub (2. nesil) gibi bir Google Nest cihazıdır.

Matter'ı destekleyen merkezleri görmek için bu listeye bakın.

Komisyon sürecini başlatmadan önce aşağıdakilerden emin olun:

  • Hub'ınız, Google Home Console'da oturum açmak için kullandığınız Google Hesabı ile eşlenir.
  • Hub'ınız, Sanal Matter Cihazınızı çalıştırmak için kullandığınız bilgisayarla aynı kablosuz ağdadır.
  • Hub'ınız, Google Home uygulamanızda kullandığınız yapıda bulunur. (Google Home Grafiği'ndeki "ev", yapınızı temsil eder).

QR kodu alın

Komisyon sürecinde, QR kodu aracılığıyla Matter ilk katılım bilgilerinin sağlanması gerekir. Sanal cihazınızın QR kodunu Sanal Cihaz Denetleyicisi'nden alabilirsiniz.

Komisyon işlemini gerçekleştirme

  1. Google Home uygulamasını açın.
  2. Sol üst köşedeki + simgesine dokunun.
  3. Cihazı kur'a dokunun.
  4. Yeni cihaz'a dokunun.
  5. Evinizi seçin ve İleri'ye dokunun.
  6. Google Home uygulaması cihazınızı tarar. "Konu Cihaz bulundu..." mesajı görüntülenirse "Evet"e dokunun. Aksi takdirde, Farklı bir cihaz kur'a dokunun, ardından cihaz listesinden Matter cihazı'nı seçin.
  7. Kameranızı cihazınızın QR koduna veya web sitesi tarafından oluşturulan QR koduna doğru tutun.
  8. Eşleme işlemine Google Home uygulama akışında belirtilen şekilde devam edin.

Bu adımları tamamlamanızın ardından Matter sanal cihazı başarıyla kullanıma alınmış olmalı ve Google Home uygulamanızda yeni bir simge olarak görünmelidir.

Google Home uygulamasında eşlenen ampul

Sorun giderme

"Bağlantı sorunu" veya "Google ile iletişim kurulamadı" hata mesajlarıyla komisyon alma işlemi başarısız oluyor

  • Google Home Console'da doğru VID/PID kombinasyonunu kullanarak bir proje oluşturduğunuzdan ve aynı VID/PID kombinasyonunu kullanan başka projeniz olmadığından emin olun.

"Cihazınızı tarama" uzun bir süreden sonra komisyon alınır

7. Cihazı kontrol edin

Matter özellikli cihazınız başarıyla çalıştırıldıktan ve Google Home uygulamasında ampul olarak göründükten sonra cihazın kontrolünü farklı yöntemlerle test edebilirsiniz:

  • Google Asistan'ı kullanarak.
  • Google Home uygulamasını kullanarak.
  • Sanal cihaz kullanıcı arayüzünü kullanma.

Google Asistan

"Ok Google, ışıklarımı aç" gibi sesli komutlardan cihaz durumunu değiştirmek için telefonunuzda veya merkezde Google Asistan'ı kullanın.

Komutlarla ilgili daha fazla örnek için Google Home uygulamasına eklenen akıllı ev cihazlarını kontrol etme başlıklı makalenin Akıllı ev cihazlarını sesli komutlarla kontrol etme bölümüne bakın.

Google Home uygulaması

Google Home uygulamasında gösterilen ampul simgesinin yanındaki Açık ve Kapalı etiketlerine dokunabilirsiniz.

Daha fazla bilgi için Google Home uygulamasına eklenen akıllı ev cihazlarını kontrol etme başlıklı makalenin Cihazları Google Home uygulamasıyla kontrol etme bölümüne bakın.

Sanal Cihaz GUI'sı

Cihazın durumunu değiştirmek için Sanal Cihaz GUI'si ile etkileşim kurabilirsiniz. Sanal cihazı ister Sanal Cihaz Kumandası, ister telefonunuzda Google Home Uygulaması ile ister merkezinizle kontrol edin, bu arayüzlerin tümü sanal cihazın mevcut durumunu yansıtır.

8. Tebrikler!

İlk Matter cihazınızı başarıyla oluşturdunuz. Mükemmel!

Bu codelab'de şunları nasıl yapacağınızı öğrendiniz:

  • Önceden paketlenmiş bir Docker görüntüsü kullanarak Matter geliştirme ortamını yükleyin.
  • Matter sanal cihazı oluşturup çalıştırın.
  • Sanal cihazınızı Google Home'dan başlatıp kontrol edin.

Matter hakkında daha fazla bilgi edinmek için şu referanslara göz atın: