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ış Docker görüntüsündeki SDK'lardan ve bağımlılıklardan yararlanarak 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 bir Matter cihazı nasıl oluşturulur?
  • Google Matter ile sanal Matter cihazını çalıştırma ve kontrol etme

Gerekenler

2. Ortamınızı ayarlayın

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

Donanımınızı kontrol edin

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

Ayrıca, bu talimatlarda Linux makinenizin X11 pencere açma sistemini çalıştırdığı varsayılmaktadır. Linux makineniz Wayland'i çalıştırıyorsa X.Org'un da yüklendiğinden emin olun.

Docker'ı ayarlama

  1. Docker Engine'i yükleyin (Docker masaüstü kullanmayın).
  2. Docker görüntüsünü Docker Hub'dan alın. 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 çıktıları ve ardından kapsayıcı yapılandırmanızın doğru olduğunu belirten bir mesaj ve son olarak kapsayıcı kabuğu istemi görürsünüz:

Environment looks good, you are ready to go!
$

Docker komutunu ve ona aktardığımız seçenekleri inceleyelim:

  • xhost local:1000, X Pencere Sistemi'nin 1000 numaralı bağlantı noktasında yerel ana makineden bağlantı almasına izin verir. Böylece bir grafik kullanıcı arayüzünün kullanılmasına izin verilir.
  • docker run … image belirtilen görüntüyü çalıştırır ve gerekiyorsa Docker kayıt defterinden çeker.
  • --ipc=host, Docker'ın işlemler 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, ana makineden mDNS trafiğini container'a aktarmak ve ana makine X11 ekranını paylaşmak için gereklidir.
  • -e DISPLAY, $DISPLAY dosyasını ana makineye dışa aktararak sistem grafik arayüzünüze erişim sağlar. Bu işlem, Matter kümelerini düzenlerken ZAP aracını çalıştırmak için gereklidir.
  • -it, Docker'ı arka plan işlemi olarak değil, etkileşimli bir terminal (tty) ile çalıştırır.

Dilerseniz ikinci bir terminal oturum örneği çalıştırabilirsiniz:

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

Matter Docker container'ını durdurup başlatma

Bir docker run komutu çalıştırdığınızda, belirtilen görüntüyü içeren 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 kurulumla başlamanıza olanak verir. Ancak, bazı durumlarda çalışma ve ortam yapılandırmanızı oturumlar arasında kaydetmeyi tercih edebilirsiniz.

Bu nedenle, container'ınızı oluşturduktan sonra çalışmanızı kaybetmemek için kapsayıcıyı 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ğıdakileri kullanarak container'ınıza ek terminal oturumları açabilirsiniz:

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

İsterseniz aşağıdakileri kullanarak bir kök oturum başlatabilirsiniz:

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

İlk Matter kurulumu

Terminaliniz açıldığında ~/connectedhomeip adresindeki Matter klonlanmış depo alanında olacaktır. Başka Matter kurulum adımı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. Ayrıca, ana makineden kolay erişim için kapsayıcının içinden ekli dizine dizin yazabilirsiniz.

Mevcut çalışma dizininizi /workspace adresindeki kapsayıcıya eklemek için kapsayıcınızı --mount source=$(pwd),target=/workspace,type=bind 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.

Ekli dizindeki dosyalar için grubu kapsayıcı kullanıcısının grubuna tutarlı bir şekilde ayarlayın.

user@host> sudo chgrp -R 1000 .

Dizinde istediğiniz izinleri gruba verin. Bu örnek, kapsayıcı kullanıcısının 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 bilgisayar 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 dosyaların izinlerini 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.

Connectivity Standards Alliance (Alliance) Matter sertifikasını geçen tüm Matter cihazlar, Google Home ekosisteminde çalışır. Geliştirme aşamasındaki, sertifikalı olmayan cihazlar belirli koşullar altında Google Home ekosisteminde devre dışı bırakılabilir. Daha fazla bilgi için Eşleme kısıtlamaları sayfasını inceleyin.

Geliştirici projesi oluşturun

Google Home Geliştirici Konsolu'na 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ıklayın. Bu işlem, sizi Matter geliştirme belgelerini görüntüleyebileceğiniz ve bazı araçlar hakkında bilgi edinebileceğiniz "Önemli kaynaklar" ekranına yönlendirir.
  3. Devam etmeye hazır olduğunuzda Konu listesi sayfasını görüntüleyen 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)'de Test VID'si ve VID'yi test et açılır menüsünden 0xFFF1'i seçin. Ürün kimliği (PID) bölümünde 0x8000 değerini girip 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ın altında bir Matter cihaz göreceksiniz. Matter entegrasyonları
  9. En son Matter entegrasyon projesi yapılandırmasını aldığından emin olmak için hub'ınızı yeniden başlatın. VID veya PID'yi daha sonra değiştirmeniz gerekirse değişikliğin geçerli olması için projeyi kaydettikten sonra yeniden başlatmanız gerekir. Adım adım yeniden başlatma talimatları için Google Nest veya Google Wifi cihazlarını yeniden başlatma bölümüne bakın.

4. Cihaz oluşturma

Matter'daki tüm örnekler Github deposundaki examples klasöründe bulunur. Mevcut birkaç örnek olsa da bu codelab'i Chef üzerinde yoğunlaştırdık.

Şef ikisi:

  • Terminal arayüzü sağlayan örnek bir uygulama ve examples/shell uygulamasında da bulunan sarmalama özellikleri.
  • Matter özellikli cihaz geliştirmek için gerekli olan bazı sık yapılan görevleri kapsayan komut dosyası aşırı 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çenek sunar. Şu anda kullandığımız seçenekler şunlardır:

  • -d: Kullanılacak cihaz türünü tanımlar. Bu örnekte, açma/kapatma ve seviye kontrol düğmelerine 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. Diğer bir deyişle, ZAP, aydınlatma seçiminize bağlı olarak, ışığı (Veri Modeli) ve diğer cihazlarla (Etkileşim Modeli) nasıl etkileşimde bulunduğunu tanımlayan yapıya dahil edilecek kodu otomatik olarak oluşturur.
  • -b: derlemeler.
  • -r: [isteğe bağlı] Sanal Matter cihazındaki UPB sunucusunu etkinleştirir. Böylece GUI gibi diğer bileşenler, veri modeli özelliklerini ayarlamak ve almak için cihazla iletişim kurabilir.
  • -t linux: hedef platform. Destek platformları: linux, nrfconnect ve esp32. Kullanılabilir tüm komutları ve desteklenen hedef platformları görmek için ./chef.py -h komutunu çalıştırabilirsiniz. linux, sanal Matter cihazları için kullanılır.

Cihazı çalıştırma

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

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

$ ./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, Google Home uygulamasına giderek cihazınızı Google Home'a aktaracağız.

Cihazı durdur

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

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

Deneme sürecini baştan başlatmak istiyorsanız aşağıdaki komutu çalıştırarak bu dosyaları silmeniz gerekir:

$ rm /tmp/chip*

5. Sanal Cihaz Denetleyici

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 RPC istemcisi kullanır.

Sanal Cihaz Denetleyici

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 Soluk Işıklı cihaz türünü desteklemektedir.

Sanal Cihaz Denetleyici'yi yükleyin

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

Sanal Cihaz Denetleyici'yi ç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ğ soketini 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 localhost bağlantı noktası 33000'i kullanan ağ soketi seçeneğine ayarlanır. Kumanda, sanal cihaza bağlanabildikten sonra cihazınızın durumunu gösteren bir ekran gösterir:

Sanal cihaz grafik kullanıcı arayüzü

Uygulama, Sanal Denetleyici uygulamasında değişiklik yaptıkça cihazın UPC sunucusuna istek gönderir ve durum bilgisini almak için Saniyede bir UPS sunucusunu yoklar.

Sanal Cihaz Denetleyicisi uygulaması, cihaz komisyonlama süreci kapsamında 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ı başlatın

Not: Bu adım yalnızca Google Home Console'da projenizi 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'i destekleyen Nest Hub (2. nesil) gibi bir Google Nest cihazıdır ve hem Thread özellikli cihazlar için Sınır Yönlendirici hem de Akıllı Ev intent'lerini yönlendirmenin yerel istek karşılama yolu olarak kullanılır.

Hangi merkezlerin Matter'ı desteklediğini görmek için bu listeye bakın.

Başlatma işlemine başlamadan ö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

Deneme süreci için QR kodu ile Matter ilk katılım bilgileri sağlanmalıdır. 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 Sonraki seçeneğine dokunun.
  6. Google Home uygulaması cihazınızı tarar. "Önemli Cihaz bulundu..." mesajı görüntülenirse "Evet"e dokunun. Aksi takdirde, Farklı bir cihaz kur'a dokunun ve cihaz listesinden Konuyla ilişkili cihaz'ı 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 belirtildiği gibi devam edin.

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

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 kombinasyonuna sahip bir proje oluşturduğunuzdan ve aynı VID/PID kombinasyonunu kullanan başka projeniz olmadığından emin olun.

"Cihazınız tarandıktan" sonra uzun süre yükleme işlemi başarısız oluyor

7. Cihazı kontrol etme

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

Telefonundaki veya merkezindeki Google Asistan'ı kullanarak sesli komutları açıp kapatabilirsin. Örneğin, "Ok Google, ışıklarımı aç" diyebilirsin.

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

Cihazın durumunu değiştirmek için Sanal Cihaz GUI'siyle etkileşimde bulunabilirsiniz. Sanal cihazı Sanal Cihaz Denetleyicisi, telefonunuzdaki Google Home uygulaması veya hub'ınızla kontrol ediyor olabilirsiniz. Tüm bu arayüzler 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ı öğreneceksiniz:

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

Matter hakkında daha fazla bilgi edinmek için şu referansları inceleyin: