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, Matter SDK'sındaki kaynakları kullanarak ilk Matter cihazınızı oluşturacaksınız.

Matter hakkında daha fazla 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

  • Nest Hub (2. nesil) gibi Matter'ı destekleyen herhangi bir Google Nest cihazı.
  • X11 pencereleme sistemini çalıştıran bir Linux makinesi.
  • Docker'ı seçin.
  • Git.
  • Temel Linux bilgisi.
    • Bu codelab'deki tüm komutlar için varsayılan kabuğun BASH olduğunu unutmayın.

2. Ortamınızı ayarlama

Donanımınızı kontrol edin

Bu Docker yüklemesi Windows ve macOS bilgisayarlar için desteklenmemektedir. macOS'te Matter'ı manuel olarak yükleyebilir ve derleyebilirsiniz.

Ayrıca, bu talimatlar Linux makinenizde X11 pencere sistemini çalıştırdığını varsaymaktadır. Linux makineniz Wayland'i çalıştırıyorsa X.Org'un da yüklü olduğundan emin olun.

Geliştirme ortamını ayarlama

  1. Docker Engine'i yükleyin (Docker Masaüstü'nü kullanmayın).
  2. Matter SDK'sını klonlayın. Aşağıda kullandığımız taahhüdü not edin.
    git clone https://github.com/project-chip/connectedhomeip.git
    cd connectedhomeip
    git show
    commit f2f3d0eb03ba5bea32b22f19982c402a8c1c9063
    
  3. SDK'nın herkese açık CI görüntülerini kullanarak bir derleme container'ı çalıştırın ve yeni derlenen sanal cihazı bu container'ın içinden yürütün. SDK sürümümüzle eşleşen aşağıdaki gibi kullanılacak görüntüyü bulun:
    buildimage=$(grep chip-build .github/workflows/chef.yaml | head -n 1 | awk '{print $2}')
    echo $buildimage
    
    Aynı kaydı kullanıyorsanız şu bilgileri görürsünüz: ghcr.io/project-chip/chip-build:66Önce, kullanıcı arayüzü uygulamalarını kullanabilmemiz için öncelikle xhost bağlantı noktalarını yönlendirin:
    xhost local:1000
    
    Ardından, ana makineden yönlendirilen uygun kaynaklarla (SDK ödeme, ağ iletişimi ve görüntüleme/iletişim kaynaklarımız) kapsayıcıyı başlatın.
    docker run -it --ipc=host --net=host -e DISPLAY --name matter-container --mount source=$(pwd),target=/workspace,type=bind   --workdir="/workspace" $buildimage /bin/bash
    

Docker komutunu ve bu komuta ilettiğimiz seçenekleri birlikte inceleyelim:

  • xhost local:1000, X Pencere Sistemi'nin 1000 numaralı bağlantı noktası üzerindeki yerel ana makineden bağlantı almasına izin verir ve böylece grafik kullanıcı arayüzünün kullanılmasına izin verir.
  • docker run … image belirtilen görüntüyü çalıştırır ve gerekirse Docker kayıt defterinden çeker.
  • --ipc=host, Docker'ın işlemler arası iletişim ad alanını ana makinenizle paylaşmasına izin verir.
  • --net=host, Docker'ın ana makinenin ağ yığınını container içinde kullanmasına olanak tanır. Bu, mDNS trafiğini ana makineden container'a aktarmak ve ana makine X11 görüntüsünü paylaşmak için gereklidir.
  • -e DISPLAY, $DISPLAY öğesini ana makineye aktararak sisteminizin grafik arayüzüne erişim sağlar. Bu, Matter kümeleri düzenlenirken 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.
  • --mount, daha önce kontrol ettiğimiz SDK'yı kapsayıcıya ekler.
  • --workdir, başlangıçta çalışma dizinini eklenen SDK dizinimize ayarlar.

İ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ı durdurun ve başlatın

Her docker run komutu çalıştırdığınızda, belirtilen görüntüyle yeni bir kapsayıcı oluşturursunuz. Bu işlem gerçekleştirildiğinde önceki container örneğinde kayıtlı olan eski verileriniz kaybolur. Bazen bunu yapmak istersiniz çünkü bu, yeni bir yüklemeyle başlamanıza olanak tanır. Ancak, oturumlar arasında iş ve ortam yapılandırmanızı kaydetmeyi tercih edeceğiniz zamanlar olacaktır.

Bu nedenle, kapsayıcı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ızda ek terminal oturumları açabilirsiniz:

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

Şunu kullanarak bir root oturumu da başlatabilirsiniz:

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

İlk Matter kurulumu

SDK'yı başlatma

Matter SDK'sını başlatın. Bu işlemin tamamlanması birkaç dakika sürer.

source scripts/bootstrap.sh
python3 scripts/checkout_submodules.py --shallow --platform linux

Matter SDK'nız artık başlatıldı. Gelecekte ortamı hızlı bir şekilde yeniden başlatmak için şu komutu çalıştırın:

sudo docker exec -it  matter-container /bin/bash
source ./scripts/activate.sh

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

Daha önce bir bağlama bağlantısı kullanarak ana makinenizdeki dosyalara kapsayıcının içinden eriştik. Ayrıca, ana makineden erişmek için kapsayıcının içinden eklenen dizine dosya yazabilirsiniz.

Genel olarak, geçerli çalışma dizininizi /workspace adresindeki container'a eklemek için container'ınızı --mount source=$(pwd),target=/workspace,type=bind ek bağımsız değişkeniyle çalıştırarak bağlama bağlamalarını kullanı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 eklenen dizindeki izinleri ana makinede yönetilmelidir.

Kapsayıcı kullanıcısının grup kimliğini kapsayıcı 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.

Eklenmiş dizindeki dosyalar için grubu, kapsayıcı kullanıcının grubuna yinelemeli olarak ayarlayın.

user@host> sudo chgrp -R 1000 .

Dizinde istediğiniz izinleri gruba verin. Bu örnek, kapsayıcı kullanıcının grubuna eklenen dizindeki tüm dosyalarda 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 gereken ş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, Google Home ile Matter entegrasyonlarınızı yönettiğiniz web uygulamasıdır.

Connectivity Standards Alliance (Alliance) Matter sertifikasından geçmiş tüm Matter cihazları, Google Home ekosisteminde çalışır. Geliştirilme aşamasında olan ve onaylanmamış cihazlar, Google Home ekosisteminde belirli koşullar altında devreye alınabilir. Daha fazla bilgi için Eşleme kısıtlamaları başlıklı makaleyi inceleyin.

Geliştirici projesi oluşturma

İlk olarak Google Home Geliştirici Konsolu'na gidin:

  1. Create project (Proje oluştur) seçeneğini tıklayın.
  2. Benzersiz bir proje adı girin ve Create a project'i (Proje oluştur) tıklayın. Yeni proje oluşturma iletişim kutusu
  3. + Entegrasyon ekle'yi tıklayın. Bu işlemle, Matter geliştirme belgelerini görüntüleyebileceğiniz ve bazı araçlar hakkında bilgi edinebileceğiniz Konu kaynakları ekranına yönlendirilirsiniz.
  4. Devam etmeye hazır olduğunuzda Sonraki: Geliştirme'yi tıklayın. Bu sekmede Konu kontrol listesi sayfası görüntülenir.
  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 ardından Test VID (VID'yi Test Et) açılır menüsünden 0xFFF1'i seçin. Ürün Kimliği'ne (PID) 0x8000 girin ve Kaydet ve devam et'i tıklayın, ardından bir sonraki sayfada Kaydet'i tıklayın. Tam olarak bu VID/PID değerlerini kullanın. Daha sonraki codelab adımlarında bu değerler dikkate alınacaktır.
    Proje oluşturma
  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 hub'ınızı yeniden başlatın. Daha sonra VID veya PID'yi değiştirmeniz gerekirse değişikliğin geçerli olması için projeyi kaydettikten sonra da 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ştur

Matter'da yer alan tüm örnekler GitHub deposundaki examples klasöründe yer alıyor. Kullanıma sunulan birkaç örnek olsa da bu codelab'de Şef'e odaklanacağız.

Şef:

  • Terminal arayüzü sağlayan ve sarmalama özelliklerini içeren örnek bir uygulamaya examples/shell uygulamasında da rastlandı.
  • Matter özellikli cihaz geliştirmek için gerekli olan yaygın görevlerden birkaçını kapsayan, "gelenek fazla 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

Chef, chef.py -h çalıştırarak görüntülenebilecek birkaç seçenek sunar. Burada kullandığımız seçenekler şunlardır:

  • -d: Kullanılacak cihaz türünü tanımlar. Bu örnekte, açma/kapatma ve seviye kontrollerinin bulunduğu 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, aydınlatma seçiminize bağlı olarak ZAP, ışığı (Veri Modeli) ve diğer cihazlarla nasıl etkileşime girdiğini (Etkileşim Modeli) tanımlayan yapıya dahil edilecek kodu otomatik olarak oluşturur.
  • -b: derlemeler.
  • -r: [isteğe bağlı] Diğer bileşenlerin (GUI gibi) Veri Modeli Özelliklerini ayarlamak ve almak üzere 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 çalıştırabilirsiniz. linux, sanal Matter cihazları için kullanılır.

Cihazı çalıştırma

Matter, 5540 numaralı TCP/UDP bağlantı noktasını kullanır. Dolayısıyla, bilgisayarınızda çalışan bir güvenlik duvarı varsa cihazı 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'a yaptırabilmemiz için Google Home uygulamasına göz atalım.

Cihazı durdurma

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

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

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

$ rm /tmp/chip*

5. Cihazı devreye sokma

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

Nest Hub

Cihazınızı Matter yapısında yaptırmak için bir merkez gerekir. Bu, Nest Hub (2. nesil) gibi bir Google Nest cihazıdır. Matter'ı destekleyen ve Thread özellikli cihazlar için Sınır Yönlendirici olarak ve Akıllı Ev amaçlarının yönlendirilmesi için yerel bir sipariş karşılama yolu olarak işlev görecektir.

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

Devreye alma işlemine başlamadan önce şunlardan emin olun:

  • Hub'ınız, Google Home Console'da oturum açmak için kullandığınız Google Hesabı ile eşlenmiş.
  • Hub'ınız, Virtual 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 kullanılı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 bilgilerinin sağlanması gerekir. Matter uygulamasının konsol çıkışını inceleyin. Bu çıkışta, devreye almayla ilgili QR kodunun bağlantısı yer alır.

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'ye dokunun.
  6. Google Home uygulaması, cihazınızı tarar. "Konu cihazı bulundu..." mesajıyla istenirse "Evet"e dokunun. Aksi halde, 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 belirtildiği şekilde devam edin.

Bu adımları tamamladıktan sonra Matter sanal cihazı başarıyla kullanıma sunulur ve Google Home uygulamanızda yeni bir simge olarak görünür.

Google Home uygulamasında eşlenmiş ampul

Sorun giderme

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

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

"Cihazınız taranıyor" mesajından sonra devreye alma işlemi başarısız oluyor uzun süre boyunca

6. 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üğünde cihazın kontrolünü farklı yöntemlerle test edebilirsiniz:

  • Google Asistan kullanılıyor.
  • Google Home uygulamasını kullanarak.

Google Asistan

"Ok Google, ışıklarımı aç" 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.

7. Tebrikler!

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

Bu codelab'de şunları öğrendiniz:

  • Matter geliştirme ortamı yükleyin.
  • Matter sanal cihazı derleyip çalıştırın.
  • Sanal cihazınızı Google Home'dan devreye alın ve kontrol edin.

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