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.
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
- Hub Matter (2. nesil) gibi, Matter'ı destekleyen tüm Google Nest cihazları olan bir merkez.
- X11 pencere sistemini çalıştıran bir Linux makinesi.
- Docker'ı tıklayın.
- Linux ile ilgili temel bilgiler.
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
- Docker Engine'i yükleyin (Docker masaüstü kullanmayın).
- 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:latestBu işlemin tamamlanması birkaç dakika sürebilir.
- 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 … imagebelirtilen 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,
$DISPLAYdosyası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:
- Projeleri yönetin sayfasında, Proje oluştur'u tıklayın.
- Başlayın sayfasında Proje oluştur'u tıklayın.
- Benzersiz bir proje adı girin ve ardından Yeni proje oluştur'u tıklayın.
- + 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.
- Devam etmeye hazır olduğunuzda Konu listesi sayfasını görüntüleyen Sonraki: Geliştir'i tıklayın.
- Sonraki: Kurulum'u tıklayın
- Kurulum sayfasında Ürün adınızı girin.
- Cihaz türünü seçin'i tıklayıp açılır menüden cihaz türünü seçin (bu örnekte
Light).
- 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.
- Artık Matter entegrasyonlarının altında bir Matter cihaz göreceksiniz.
- 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
Şef ikisi:
- Terminal arayüzü sağlayan örnek bir uygulama ve
examples/shelluygulaması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,
nrfconnectve
esp32. Kullanılabilir tüm komutları ve desteklenen hedef platformları görmek için
./chef.py -hkomutunu ç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:
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:
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
- Google Home uygulamasını açın.
- Sol üst köşedeki + simgesine dokunun.
- Cihazı kur'a dokunun.
- Yeni cihaz'a dokunun.
- Evinizi seçin ve Sonraki seçeneğine dokunun.
- 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.
- Kameranızı cihazınızın QR koduna veya web sitesi tarafından oluşturulan QR koduna doğru tutun.
- 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.
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
- Bilgisayarınızın güvenlik duvarının kapalı olduğunu ve sanal cihazı çalıştırdığınızı onaylayın.
- Bilgisayarınızın yalnızca kablosuz ağ kullandığından emin olmak için fiziksel ağ arayüzlerinin (Ethernet) bağlantısını kesin.
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: