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ünde sizin için sağlanan SDK'ları ve bağımlılıkları 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 bir Matter cihazı oluşturma
  • Google Home ile sanal Matter cihazını devreye alma ve kontrol etme

Gerekenler

2. Ortamınızı ayarlama

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

Donanımınızı kontrol edin

Windows ve macOS bilgisayarlar bu Docker kurulumu tarafından desteklenmiyor. macOS'te manuel olarak Matter'ı yükleyebilir ve oluşturabilirsiniz.

Ayrıca, bu talimatlarda Linux makinenizin X11 pencere sistemi çalıştırıldığı varsayılmıştır. Linux makineniz Wayland'i çalıştırıyorsa X.Org'un da yüklü olduğundan emin olun.

Docker'ı kur

  1. Docker Engine'i yükleyin (Docker Masaüstü'nü kullanmayın).
  2. Docker görüntüsünü Docker Hub'dan çekin. Bir terminal penceresinde şu komutu ç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. Çalışan Docker container'ını başlatı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 birkaç teşhis çıkışı, ardından kapsayıcı yapılandırmanızın doğru olduğunu onaylayan bir mesaj ve son olarak da kapsayıcı kabuğu istemi görürsünüz:

Environment looks good, you are ready to go!
$

docker komutunu ve ona ilettiğimiz seçenekleri anlayalım:

  • xhost local:1000, X Pencere Sistemi'nin 1000 numaralı bağlantı noktası üzerindeki yerel ana makineden bağlantı almasına, dolayısıyla da grafik kullanıcı arayüzünün kullanılmasına olanak tanır.
  • docker run … image, belirtilen görüntüyü çalıştırır ve gerekirse Docker kayıt defterinden alır.
  • --ipc=host, Docker'ın işlemler arası iletişim ad alanını ana makinenizle paylaşmasına izin verir.
  • --net=host, Docker'ın kapsayıcı içindeki ağ yığınını kullanmasına olanak tanır. Bu, mDNS trafiğini ana makineden container'a iletmek ve ana makine X11 ekranını paylaşmak için gereklidir.
  • -e DISPLAY, $DISPLAY dosyasını ana makineye aktararak sistem grafik arayüzünüze erişim sağlar. Bu, 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.

İsteğe bağlı olarak ikinci bir terminal oturumu örneği çalıştırabilirsiniz:

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

Matter Docker kapsayıcısını durdurma ve başlatma

docker run komutu çalıştırdığınızda, belirtilen görüntüyle yeni bir container oluşturursunuz. Bunu yaptığınızda, önceki bir container örneğine kaydedilen eski verileriniz kaybolur. Bazen, yeni bir yüklemeyle başlamanıza olanak tanıdığından bu olmasını istersiniz. Ancak oturumlar arasında iş ve ortam yapılandırmanızı kaydetmeyi tercih edeceğiniz zamanlar vardır.

Bu nedenle, kapsayıcınızı oluşturduktan sonra, çalışmanızın kaybedilmesini önlemek için kapsayıcıyı durdurabilirsiniz.

user@host> docker stop matter-container

Tekrar çalıştırmaya hazır olduğunuzda container'ı 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

Alternatif olarak, bir kök oturumu başlatmak için şunları kullanın:

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

İlk Matter kurulumu

Terminaliniz açıldığında, zaten ~/connectedhomeip adresindeki Matter klonlanan deposunda olur. Matter ile 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 bağlantı bağlantısı kullanabilirsiniz. Ana makineden kolay erişim için kapsayıcının içinden, eklenen dizine dosya da yazabilirsiniz.

Mevcut çalışma dizininizi /workspace adresindeki kapsayıcıya eklemek için ek bağımsız değişkenle (--mount source=$(pwd),target=/workspace,type=bind) kapsayıcınızı ç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ısının ekli dizindeki izinleri ana makinede yönetilmelidir.

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

$ 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 grup tekrarlı olarak kapsayıcı kullanıcı grubuna ayarlanır.

user@host> sudo chgrp -R 1000 .

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

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 gerekli şekilde güncellemeyi unutmayın.

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

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

3. Google Home Geliştirici Konsolu

Google Home Developer Console, Google Home ile Matter entegrasyonlarınızı 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ştirilme aşamasında olan, ancak sertifikası olmayan cihazlar Google Home ekosisteminde belirli koşullar altında hizmete sunulabilir. Daha fazla bilgi için Eşleme kısıtlamaları bölümüne bakın.

Geliştirici projesi oluşturma

Google Home Geliştirici Konsolu'na giderek başlayın:

  1. Create project (Proje oluştur) seçeneğini tıklayın.
  2. Benzersiz bir proje adı girin ve ardından Create project'i (Proje oluştur) tıklayın. Yeni proje oluştur iletişim kutusu
  3. + Entegrasyon ekle'yi tıklayın. Bu işlem sizi, Matter geliştirme dokümanlarını görüntüleyebileceğiniz ve bazı araçlar hakkında bilgi edinebileceğiniz Konu kaynakları ekranına götürür.
  4. Devam etmeye hazır olduğunuzda Konu kontrol listesi sayfasını görüntüleyen İleri: Geliştirme'yi tıklayın.
  5. Sonraki: Kurulum'u tıklayın.
  6. Kurulum sayfasında Ürün adınızı girin.
  7. Cihaz türünü seç'i tıklayın ve açılır menüden cihaz türünü seçin (bu örnekte, Light).
  8. Tedarikçi firma kimliği (VID) bölümünde Test VID'yi (VID'yi test et) ve test VID'si açılır menüsünden 0xFFF1'i seçin. Ürün Kimliği'ne (PID) 0x8000 değerini girip Kaydet ve devam et'i tıklayın. Ardından bir sonraki sayfada Kaydet'i tıklayın. Bu VID/PID değerlerini tam olarak kullanabilirsiniz. Daha sonraki codelab adımlarında bu değerler geçerli olacaktır.
    Proje hazırlama
  9. Artık entegrasyonunuzu Konu entegrasyonları altında görebilirsiniz.
  10. En son Matter entegrasyon projesi yapılandırmasını aldığından emin olmak için merkezinizi 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 da gerekir. Adım adım yeniden başlatma talimatları için Google Nest veya Google Wifi cihazlarını yeniden başlatma makalesine göz atın.

4. Cihaz oluştur

Matter'daki tüm örnekler, GitHub veri havuzundaki examples klasöründe bulunur. Birkaç örnek mevcut olsa da bu codelab'de Şef'e odaklanacağız.

Şef:

  • examples/shell uygulamasında da bulunan sarmalama özellikleri olan bir terminal arayüzü sunan örnek uygulama.
  • Matter özellikli cihaz geliştirmek için gereken bazı yaygın görevleri içeren geleneksel 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

Şefin chef.py -h öğesini çalıştırarak görüntüleyebileceği birkaç seçenek var. Bu konuda 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, ışıklandırma seçiminize bağlı olarak ışığı (Veri Modeli) ve diğer cihazlarla nasıl etkileşime girdiğini (Etkileşim Modeli) tanımlayan yapıya eklenecek kodu otomatik olarak oluşturur.
  • -b: derlemeler.
  • -r: [isteğe bağlı], diğer bileşenlerin (GUI gibi) Veri Modeli Özelliklerini ayarlamak ve almak için cihazla iletişim kurabilmesi için sanal Matter cihazında RPC sunucusunu etkinleştirir.
  • -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 komutunu çalıştırabilirsiniz. linux, sanal Matter cihazları için kullanılır.

Cihazı çalıştırın

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

Container'daki sanal cihazı şununla ç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'da görevlendirebilmek için dikkatimizi Google Home uygulamasına yönlendireceğiz.

Cihazı durdur

Cihazı durdurmanız gerekirse CTRL+C ile programdan çıkabilirsiniz. Uygulamadan çıkılmazsa CTRL+\ tuşlarına da basmanız gerekebilir.

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

Devreye alma işlemini baştan tekrarlamak istiyorsanız aşağıdaki komutu çalıştırarak bu dosyaları silmeniz gerekir:

$ rm /tmp/chip*

5. Sanal Cihaz Denetleyicisi

Sanal Cihaz Denetleyicisi, sanal Matter cihazlarınızın durumlarını 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 Denetleyicisi

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

Sanal Cihaz Denetleyicisi grafik kullanıcı arayüzü (GUI) aracılığıyla sanal cihazla etkileşimde bulunabilirsiniz. GUI'daki değişiklikleriniz temel veri modelini etkiler. Desteklenen Matter Sanal Cihaz türlerinin tam listesi için Desteklenen Cihazlar bölümüne bakın.

Sanal Cihaz Denetleyicisi'ni yükleyin

Sanal Cihaz Denetleyicisi, Ubuntu LTS 20.04 Docker container'ında önceden yüklenmiş olarak gelir.

Sanal Cihaz Denetleyicisi'ni çalıştırma

İ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ğ yuvasını sağlayarak Sanal Cihaz Denetleyicisi'ni başlatın:

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

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

Sanal Cihaz grafiği kullanıcı arayüzü

Siz Virtual Controller uygulamasında değişiklik yaparken uygulama, cihazın RPC sunucusuna istekler gönderir ve durum bilgisi almak için RPC sunucusunu saniyede bir kez sorgular.

Sanal Cihaz Denetleyicisi uygulaması, cihazınızı devreye alma sürecinin 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. Cihazınızı devreye almak için bu QR kodunu kullanın.

6. Cihazı devreye sokun

Not: Bu adım yalnızca Google Home Geliştirici Konsolu'nda projenizi zaten oluşturduysanız başarılı olur.

Nest Hub

Cihazınızı Matter yapısında çalıştırmak için bir merkez gereklidir. Bu, Nest Hub (2. nesil) gibi Matter'ı destekleyen ve Thread özellikli cihazlar için hem Sınır Yönlendirici hem de Akıllı Ev amaçlarını yönlendirmek için yerel istek karşılama yolu olarak hizmet verecek bir Google Nest cihazıdır.

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

Devreye alma sürecine başlamadan önce şunlardan emin olun:

  • Merkeziniz, Google Home Console'da oturum açmak için kullandığınız Google Hesabı ile eşlendi.
  • Hub'ınız, Virtual Matter cihazınızı çalıştırmak için kullandığınız bilgisayarla aynı kablosuz ağa bağlı.
  • Merkeziniz, Google Home uygulamanızda kullandığınız yapıda yer alır. (Google Home Graph'teki "ev", yapınızı temsil eder).

QR kodu al

Devreye alma sürecinde QR kodu üzerinden Matter ilk katılım bilgileri sağlanmalıdır. Sanal cihazınızın QR kodunu Sanal Cihaz Denetleyicisi'nden edinebilirsiniz.

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çip Sonraki seçeneğine dokunun.
  6. Google Home uygulaması cihazınızı tarar. "Konu cihazı bulundu..." mesajı görüntülenirse "Evet"e dokunun. Aksi halde, Farklı bir cihaz kur'a dokunun, ardından cihaz listesinden Konu 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 belirtildiği gibi devam edin.

Bu adımları tamamladığınızda Matter sanal cihazı başarıyla devreye alınmış olur ve Google Home uygulamanızda yeni bir simge olarak görünür.

Google Home uygulamasında eşlenen ampul

Sorun giderme

Devreye alma, "Bağlantı sorunu" veya "Google ile iletişime geçilemedi" hata mesajlarıyla başarısız oluyor

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

"Cihazınızı taranıyor" mesajının üzerinden uzun bir süre geçtikten sonra devreye alma 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 GUI'sini kullanma.

Google Asistan

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

Daha fazla komut örneği 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 Google Home uygulamasıyla cihazları kontrol etme bölümüne bakın.

Sanal Cihaz GUI

Cihazın durumunu değiştirmek için Sanal Cihaz GUI ile etkileşimde bulunabilirsiniz. Sanal cihazı ister Sanal Cihaz Denetleyicisi, ister telefonunuzdaki Google Home uygulaması ile ister hub'ınızla 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ı öğrendiniz:

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

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