Aşağıdaki talimatlarda, M5Stack ESP32 geliştirme kartıyla birlikte Matter SDK'sındaki lighting app örneği kullanılmıştır.
Derleme ortamı kurulumu
Öncelikle Matter SDK'sını klonlayın.
Bu örnekte, Google Home'un Matter 5. sürümü için desteklenen minimum commit'i kontrol ediyoruz:
mkdir otaprep
cd otaprep
git clone https://github.com/project-chip/connectedhomeip.git
cd connectedhomeip
git fetch origin v1.0-branch
git checkout FETCH_HEAD
git submodule update --init --recursive
source ./scripts/activate.sh
Ardından, derlememize en uygun Docker görüntüsünü belirlemek için ESP32 GitHub iş akışında kullanılan sürümü kontrol ederiz:
cat .github/workflows/examples-esp32.yaml | grep chip-build | head -n 1
image: connectedhomeip/chip-build-esp32:0.5.99
Docker görüntüsünden bir container çalıştırırız. Bu sırada, container'a Matter SDK'sını bağlamak ve ESP32 cihazına erişim sağlamak için işaretler iletiriz.
docker run --name container_name -it --user $(id -u):$(id -g)--mount source=$(pwd),target=/workspace,type=bind --device=/dev/ttyUSB0 connectedhomeip/chip-build-esp32:0.5.99 /bin/bash
Matter Docker kapsayıcısını durdurma ve başlatma
docker run
komutunu her çalıştırdığınızda, belirtilen görüntüyle yeni bir kapsayıcı oluşturursunuz. Bu işlemi yaptığınızda, önceki kapsayıcı örneğine kaydedilen eski verileriniz kaybolur. Bazen bu durum, yeni bir yüklemeyle başlamanıza olanak tanıdığı için tercih edilebilir. Ancak bu örnekte, oturumlar arasında çalışmanızı ve ortam yapılandırmanızı kaydetmek isteyebilirsiniz.
user@host> docker stop container_name
Tekrar çalıştırmaya hazır olduğunuzda kapsayıcıyı başlatın ve bir terminal penceresi açın:
user@host> docker start container_name
user@host> docker exec -it container_name /bin/bash
Aşağıdaki komutla kapsayıcınızda ek terminal oturumları açabilirsiniz:
user@host> docker exec -it container_name /bin/bash
Dilerseniz aşağıdaki yöntemleri kullanarak bir kök oturum başlatabilirsiniz:
user@host> docker exec -u 0 -it container_name /bin/bash
SDK'yı başlatma
Kapsayıcıda Matter SDK'sını ve ESP IDF'yi başlatıyoruz:
cd /workspace
git submodule update --init --recursive
source ./scripts/activate.sh
source /opt/espressif/esp-idf/export.sh
Derleme ve yükleme
Bir sonraki görev, Matter OTA donanım yazılımı güncellemesini almak için görüntüyü oluşturmak ve geliştirme kitini flash'lemektir.
Bunun için bir resim oluşturmanız gerekir.
Öncelikle ESP IDF'deki menuconfig
yardımcı programını kullanarak derlemeyi yapılandırın.
cd examples/lighting-app/esp32
idf.py menuconfig
Etkileşimli menüde aşağıdaki ayarları yapılandırın:
Component config --->
CHIP Device Layer --->
Device Identification Options --->
Vendor ID
değerini Connectivity Standards Alliance (Alliance) tarafından atanan VID'niz olarak ayarlayın.Product ID
değerini, Google Home Developer Console içindeki Matter entegrasyonunda ayarladığınız PID olarak ayarlayın.
OTA İstek Sahibi işaretini etkinleştirin:
Component config -->
CHIP Core -->
System options --->
OTA İstek Sahibi işaretini etkinleştirin
[*] Enable OTA Requestor
Üst düzey menüye dönmek için ESC tuşuna iki kez basın.
Matter OTA Image creation flag'i etkinleştirin:
Component config -->
CHIP Device Layer --->
Matter OTA Image --->
[*] Generate OTA IMAGE
Sürüm numarasını ayarlayın:
Application manager --->
[*] Get the project version from Kconfig
öğesini seçProject version (NEW)
öğesini1.0
olarak ayarlayınYapılandırmayı kaydetmek için s tuşuna, iki kez Enter tuşuna ve ardından
menuconfig
'den çıkmak için q tuşuna basın.
Test sertifikaları oluşturma
CD, DAC ve PAI sertifikaları oluşturmak için Matter cihazı test sertifikaları oluşturma başlıklı makaledeki adımları uygulayın.
Cihazınızı oluşturma
Şimdi derlemeyi çalıştırın ve cihazı flash edin:
idf.py build
idf.py -p /dev/ttyUSB0 erase_flash
idf.py -p /dev/ttyUSB0 flash
OTA görüntüsünü oluşturma ve yükleme
Şimdi OTA görüntüsü oluşturmak için derleme ayarlarını tekrar değiştirin. Aynı resmi, ancak sürüm numarası artırılmış şekilde kullanın.
Koşu menuconfig
.
idf.py menuconfig
Etkileşimli menüde aşağıdakileri güncelleyin:
Application manager --->
[*] Get the project version from Kconfig
öğesini seçProject version (NEW)
öğesini2.0
olarak ayarlayın- Yapılandırmayı kaydetmek için s tuşuna basın, Enter tuşuna iki kez basın, ardından
menuconfig
'dan çıkmak için q tuşuna basın.
Resmi oluşturun ve alın. Örnekte hem OTA için resmin konumu hem de ota_image_tool.py
ile ayrıştırıldığında elde edilen çıkış gösterilmektedir.
cd build && /workspace/src/app/ota_image_tool.py show ./chip-lighting-app-ota.bin
Çıkış şu şekildedir:
Magic: 1beef11e
Total Size: 1243360
Header Size: 64
Header TLV:
[0] Vendor Id: XXXXX (0x000)
[1] Product Id: XXXXX (0x000)
[2] Version: 2 (0x2)
[3] Version String: v2.0
[4] Payload Size: 1243280 (0x12f890)
[8] Digest Type: 1 (0x1)
[9] Digest: e367f4d71e2ccd554b9a399c864abbf2c039382ef1def1b986fb2f59a99923a8
Matter SDK'sı container ana makinenizden monte edildiğinden OTA görüntüsü container ana makinenizde kullanılabilir.
OTA yükleme talimatlarını uygulayarak OTA görüntüsünü Developer Console yükleyin.
Google Home'a komut verin ve OTA'yı gözlemleyin.
Cihazınızın USB ile ana makine Linux bilgisayarına bağlı olduğundan emin olun. Aşağıdaki örnekte, cihaz günlüklerini okumak için GNU screen
kullanımına ilişkin bir örnek verilmiştir:
screen -L /dev/ttyUSB0 115200
Bu komut, cihazdan gelen çıkışı terminalinizde gösterir ve aynı çıkışı screenlog.0
adlı varsayılan ekran günlüğü dosyasına yazar.
screenlog.0
dosyasını başka bir metin düzenleyicide açabilir veya cat
, tail
, more
ya da grep
ile başka bir kabukta görüntüleyebilirsiniz.
Önyükleme günlüklerini görmek için cihazın yan tarafındaki kırmızı sıfırlama düğmesine basın.
Cihaz çıkışında, daha önce ayarladığınız VID ve PID'nin yanı sıra cihazı devreye almak için kullanacağınız QR kodu resminin URL'sini görmeniz gerekir.
[0;32mI (2388) chip[DIS]: Advertise commission parameter vendorID=XXXXX productID=XXXX discriminator=3840/15 cm=1[0m
[0;32mI (1928) chip[SVR]: SetupQRCode: [MT:E59-000000000000000][0m
https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3AE59-000000000000000
Hub'ınızın evinizde internete bağlı olduğundan emin olun.
Günlük dosyasında görünen bağlantıdaki QR kodunu kullanarak Google Home app (GHA) ile cihazı devreye alın.
Cihazın devreye alma işleminden sonra birkaç dakika boyunca kesintisiz çalışmasına izin verin.
OTA Requestor, OTA image download ve OTAImageProcessor
ile ilgili günlük çıkışını gözlemlemeniz gerekir.
Görüntü yüklendikten sonra, görüntünün derleme süresinin konsola yüklenen görüntünün derleme süresiyle eşleştiğini ve ilk önyüklemede bildirilen derleme süresinden daha uzun olduğunu gözlemleyin. grep
ifadesinin screenlog.0
üzerinde normal ifade modunda aşağıdaki kalıpla yürütülmesi, OTA sürecini açıklayabilir:
grep -E "(Compile time|OTA)" screenlog.0
Çıkış şu şekildedir:
I (76) boot: 1 otadata OTA data 01 00 0000f000 00002000
I (91) boot: 3 ota_0 OTA app 00 10 00020000 00177000
I (99) boot: 4 ota_1 OTA app 00 11 001a0000 00177000
I (645) cpu_start: Compile time: Oct 15 2022 06:21:59
I (135558) chip[SWU]: OTA Requestor received AnnounceOTAProvider
I (540658) chip[SWU]: OTA image downloaded to offset 0x1a0000
I (541348) OTAImageProcessor: Applying, Boot partition set offset:0x1a0000
I (76) boot: 1 otadata OTA data 01 00 0000f000 00002000
I (91) boot: 3 ota_0 OTA app 00 10 00020000 00177000
I (99) boot: 4 ota_1 OTA app 00 11 001a0000 00177000
I (645) cpu_start: Compile time: Oct 15 2022 07:35:31
I (76) boot: 1 otadata OTA data 01 00 0000f000 00002000
I (91) boot: 3 ota_0 OTA app 00 10 00020000 00177000
I (99) boot: 4 ota_1 OTA app 00 11 001a0000 00177000
I (645) cpu_start: Compile time: Oct 15 2022 07:35:31
İlk çalıştırmadan sonra, yeni bir resim yüklemeden OTA görüntüsü oluşturma ve yükleme bölümündeki adımları tekrarlayabilirsiniz.
Bu kez sürümleri 1
olarak ayarlayın.
menuconfig
komutunu çalıştırın ve etkileşimli menü seçeneklerinde:
Component config -->
CHIP Device Layer --->
Device Identification Options
Version String
değeriniv1.0
olarak ayarlayın.Device Software Version Number
değerini1
olarak ayarlayın.Yapılandırmayı kaydetmek için s'ye,
menuconfig
'den çıkmak için q'ya basın.
Cihazı GHA bölümünde evinizden kaldırın.
Henüz oluşturulmamışsa görüntüyü oluşturun:
idf.py build
Flaşla gösterin:
idf.py -p /dev/ttyUSB0 erase_flash
idf.py -p /dev/ttyUSB0 flash
Gerekirse Google Home'a hazırlama ve OTA'yı gözlemleme bölümündeki adımları tekrarlayın.
OTA yazılım güncellemesini doğrulama
Cihaz yazılımı sürümü, Google Home uygulaması (GHA) kullanılarak kontrol edilebilir. Bir cihaz devreye alındıktan sonra aşağıdaki prosedürleri uygulayın:
- GHA ana ekranında cihaz karosuna uzun basın.
- Sağ üstteki simgesine dokunun.
- Teknik bilgiler'e dokunun.
- Yazılım sürümü alanını kontrol edin.