Dikkat! Yeni Geliştirici Önizleme programları yakında kullanıma sunulacak. Buradan başvurun ve yeni araçları deneyip geri bildirim gönderen ilk kişilerden biri olun.

OTA'yı ESPpressif'te test edin ESP32

Aşağıdaki talimatlarda, Matter SDK'sından alınan lighting uygulaması örneğinin yanı sıra bir M5Stack ESP32 geliştirme kartı kullanılmıştır.

Derleme ortamı kurulumu

Önce Matter SDK'yı klonlayın.

Bu örnekte, Google Home'un Matter 5. Sürümü için desteklenen minimum taahhüdü ele alıyoruz:

$ 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, ESP32 GitHub İş Akışı'nda kullanılan sürümü kontrol ederek derlememize en uygun Docker görüntüsünü belirleyin:

$ 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, Matter SDK'sını container'a eklemek ve ESP32 cihazına erişim sağlamak için işaretleri geçiririz.

$ 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 container'ını durdurup başlatma

Bir docker run komutu çalıştırdığınızda, belirtilen görüntüyle yeni bir kapsayıcı oluşturursunuz. Bunu yaptığınızda, önceki bir container örneğine kaydedilen eski verileriniz kaybolur. Bazen bu işlem yapmak istersiniz, çünkü yeni bir kurulumla başlamanıza olanak verir. Ancak bu örnekte, oturumlar arasında iş 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ğıdakileri kullanarak container'ınıza ek terminal oturumları açabilirsiniz:

user@host> docker exec -it container_name /bin/bash

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

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

SDK'yı ilk kullanıma hazırlayın

Kapsayıcıda Matter SDK'sını ve ESP IDF'yi başlatırız:

cd /workspace
git submodule update --init --recursive
source ./scripts/activate.sh
source /opt/espressif/esp-idf/export.sh

Oluşturun ve yanıp sönün

Bir sonraki görev, Matter OTA donanım yazılımı güncellemesini almak için görüntüyü derlemek ve geliştirme kitini çalıştırmaktır.

Bunu yapmak için bir resim oluşturmanız gerekir.

İlk olarak 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:

  1. Component config --->

  2. CHIP Device Layer --->

  3. Device Identification Options --->

  4. Vendor ID değerini ÖAR Atanmış VID'niz olarak ayarlayın.

  5. Product ID öğesini Google Home Developer Console politikasındaki Matter entegrasyonunda ayarladığınız PID'ye ayarlayın.

OTA İsteği sahibi işaretini etkinleştirin:

  1. Component config -->

  2. CHIP Core -->

  3. System options --->

  4. OTA İsteği sahibi işaretini [*] Enable OTA Requestor etkinleştir

  5. Üst düzey menüye dönmek için ESC tuşuna iki kez basın.

Matter OTA Resim oluşturma işaretini etkinleştirin:

  1. Component config -->

  2. CHIP Device Layer --->

  3. Matter OTA Image --->

  4. [*] Generate OTA IMAGE

Sürüm numarasını ayarlayın:

  1. Application manager --->

  2. [*] Get the project version from Kconfig boyutunu seçin

  3. Project version (NEW) değerini 1.0 olarak ayarla

  4. Yapılandırmayı kaydetmek için s tuşuna basın, iki kez Enter tuşuna basın, ardından menuconfig dışına çıkmak için q tuşuna basın.

Test sertifikalarını ayarlama

CD, DAC ve PAI sertifikaları oluşturmak için Matter cihaz test sertifikaları oluşturma bölümündeki adımları uygulayın.

Cihazınızı oluşturun

Şimdi derlemeyi çalıştırın ve cihazı flaşa geçirin:

idf.py build
idf.py -p /dev/ttyUSB0 erase_flash
idf.py -p /dev/ttyUSB0 flash

OTA resmini oluşturma ve yükleme

Şimdi bir OTA görüntüsü oluşturmak için derleme ayarlarını tekrar değiştirin. Aynı resmi, yükseltilmiş sürüm numarasıyla kullanın.

menuconfig dosyasını çalıştırın.

idf.py menuconfig

Etkileşimli menüde aşağıdakileri güncelleyin:

  1. Application manager --->
  2. [*] Get the project version from Kconfig boyutunu seçin
  3. Project version (NEW) değerini 2.0 olarak ayarla
  4. Yapılandırmayı kaydetmek için s tuşuna basın, iki kez Enter tuşuna basın, ardından menuconfig'dan çıkmak için q tuşuna basın.

Görüntüyü oluşturun ve alın. Aşağıdaki örnek, hem OTA için resmin konumunu hem de ota_image_tool.py ile ayrıştırılırken çıktıyı gösterir.

cd build
/workspace/src/app/ota_image_tool.py show ./chip-lighting-app-ota.bin
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ı, kapsayıcı ana makinenizden eklendiğinden OTA görüntüsü container ana makinenizde mevcuttur.

OTA yükleme talimatlarını uygulayarak OTA resmini Developer Console cihazına yükleyin.

Google Home'a bağlanarak OTA'yı gözlemleyin

Cihazınızın, ana makinenin USB makinesine USB ile bağlandığından emin olun. Aşağıdaki örnekte, cihaz günlüklerini okumak için GNU screen kullanımı gösterilmektedir:

screen -L /dev/ttyUSB0 115200

Bu seçenek, cihazdan çıkışı terminalinize görüntüler 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.

Başlatma sırasındaki günlükleri görmek için cihazın yan tarafındaki kırmızı sıfırlama düğmesine basın.

Cihaz çıktısında, daha önce ayarladığınız VID ve PID'nin yanı sıra cihazı çalıştırmak için kullanacağınız QR kodu resminin URL'sini görürsünüz.

[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 online olduğundan emin olun.

Günlük dosyasında görünen bağlantının QR kodunu kullanarak cihazı Google Home app (GHA) ile başlatın.

Başlatma işleminden sonra cihazın birkaç dakika boyunca kesintisiz çalışmasını sağlayın. OTA İsteği, OTA resim indirme ve OTAImageProcessor ile ilgili günlük çıktılarını dikkate almanız gerekir.

Görüntü yüklendikten sonra resmin derlenme süresinin konsola yüklenenle örtüştüğüne ve ilk başlatmada bildirilen derlenme zamanından daha sonra olduğuna dikkat edin. screenlog.0 üzerinde normal ifade modunda aşağıdaki kalıpla grep yürütülmesi OTA işlemini gösterebilir:

$ grep -E "(Compile time|OTA)" screenlog.0
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 yürütmeden sonra, yeni bir resim yüklemeden OTA görüntüsü oluşturma ve yükleme bölümündeki adımları tekrarlayabilirsiniz. Bu sefer sürümleri tekrar 1 değerine ayarlayın.

menuconfig öğesini çalıştırın ve etkileşimli menü seçeneklerinde:

  1. Component config -->

  2. CHIP Device Layer --->

  3. Device Identification Options

  4. Version String değerini v1.0 olarak ayarlayın.

  5. Device Software Version Number değerini 1 olarak ayarlayın.

  6. Yapılandırmayı kaydetmek için s tuşuna ve ardından menuconfig modundan çıkmak için q tuşuna basın.

GHA cihazında cihazı evinizden kaldırın.

Önceden derlenmemişse resmi oluşturun:

idf.py build

Flash çekin:

idf.py -p /dev/ttyUSB0 erase_flash
idf.py -p /dev/ttyUSB0 flash

Google Home'a Komisyon teklif verme bölümündeki adımları tekrarlayın ve gerektiği şekilde gözlemleyin.

OTA Yazılım Güncellemesini Doğrulama

Cihazın yazılım sürümü, Google Home uygulaması (GHA) kullanılarak kontrol edilebilir. Cihaz başlatıldıktan sonra aşağıdaki prosedürleri uygulayın:

  1. GHA ana ekranında cihaz kartına uzun basın
  2. Sağ üstteki simgesine dokunun
  3. Teknik bilgiler'e dokunun
  4. Yazılım sürümü alanını kontrol edin

Yazılım sürümü alanını gösteren Google Home uygulama ekranı