1. Pengantar
Matter adalah standar baru dalam Connectivity Standards Alliance (sebelumnya Zigbee Alliance). Standar penyatu industri ini merupakan janji untuk memastikan konektivitas yang andal dan aman—sebuah persetujuan bahwa perangkat akan bekerja bersama-sama dengan lancar, hari ini dan esok
Tujuan standar ini adalah untuk menyederhanakan pengembangan bagi produsen dan meningkatkan kompatibilitas bagi konsumen. Perangkat ini aktif dikembangkan di GitHub, di project Connected Home over IP, yang dibuat berdasarkan keyakinan bersama bahwa perangkat smart home harus aman, andal, dan lancar untuk digunakan. Dengan mengembangkan berdasarkan Internet Protocol (IP), project ini bertujuan untuk memungkinkan komunikasi di seluruh perangkat smart home, aplikasi seluler, dan layanan cloud, serta menentukan sekumpulan teknologi jaringan berbasis IP tertentu untuk sertifikasi perangkat.
Kecuali dinyatakan lain, konten Codelab ini dilisensikan berdasarkan
Apache 2.0 License. Lihat lisensi open source Project CHIP untuk info lebih lanjut.
Codelab ini akan memandu Anda menyiapkan perangkat Wi-Fi menggunakan board pengembangan ESP32, menambahkan fungsi aktif/nonaktif ke perangkat tersebut, dan mengontrolnya dengan antarmuka command line.
Yang akan Anda pelajari
- Cara menghubungkan dan mengontrol perangkat yang mengaktifkan CHIP.
- Cara menambahkan lebih banyak fungsi ke aplikasi perangkat contoh.
Yang dibutuhkan
- Pengetahuan dasar tentang Linux
- Board pengembangan ESP32
- Mesin Linux yang sudah menginstal "git"
2. Memulai
Terminal port serial
Anda seharusnya telah memahami cara menghubungkan ke port serial melalui terminal. Codelab ini menggunakan screen
dan menyediakan ringkasan penggunaan, tetapi software terminal lainnya dapat digunakan.
Mesin Linux
Codelab ini dirancang untuk menggunakan mesin Linux 64-bit berbasis x86 untuk menjalankan alat chip, dan untuk mem-flash semua board pengembangan. Semua langkah telah diuji di Ubuntu 20.04.2.0 LTS.
Board pengembangan ESP32
Codelab ini menggunakan salah satu board pengembangan ESP32 berikut:
- ESP32-DevkitC
- ESP32-WROVER-KIT V4.1
- Kit Pengembangan IoT Inti Dasar Seri M5Stack ESP32
Anda harus menghubungkan kit pengembangan ke mesin Linux menggunakan kabel USB untuk mem-flash firmware dan mengakses log perangkat.
3. Melakukan cloning repositori
Untuk memeriksa versi kode sumber yang kompatibel dengan dokumen ini, gunakan langkah-langkah berikut untuk meng-clone repositori:
$ git clone git@github.com:project-chip/connectedhomeip.git $ cd connectedhomeip $ git checkout 1de2b73bb4123af5f184eac54d1b1d76985b4f62 $ git submodule update --init
Kemudian, ikuti langkah-langkah di bagian "Prasyarat" dan "Persiapan Build" di Dokumentasi Build di GitHub untuk platform Anda. Setelah selesai, lanjutkan membaca di sini.
Menerapkan patch untuk Codelab
Dengan patch ini, kita akan menghapus callback untuk menangani perintah aktif/nonaktif dari CHIP. Nanti kita akan membahasnya dan menambahkannya kembali di setiap langkah.
$ git fetch origin ce1e0ab44c367bc9d5907115e09a4c45fc6d8c96 $ git cherry-pick ce1e0ab44c367bc9d5907115e09a4c45fc6d8c96
4. Membuat Contoh Klien CHIP
Untuk berbicara dengan perangkat CHIP dari mesin host, Anda harus membuat chip-tool
untuk host.
Ikuti petunjuk di GitHub untuk mem-build chip-tool
.
Jika Anda memiliki chip-tool
, Anda akan menggunakannya untuk melakukan beragam operasi seperti mengaktifkan dan menonaktifkan endpoint perangkat.
Baca dokumentasi chip-tool
dan kode sumber di GitHub untuk informasi selengkapnya tentang berbagai operasi chip-tool
.
5. Membuat Contoh All Clusters
Setelah menyiapkan host dan membuat chip-tool
, Anda dapat membuat dan menjalankan Contoh All Clusters untuk ESP32.
Pertama-tama, ubah ke direktori Contoh All Clusters.
$ cd examples/all-clusters-app/esp32
Kemudian, ikuti petunjuk di GitHub sampai Anda diperintahkan untuk menjalankan perintah ini:
$ idf make menuconfig
Saat menjalankan perintah ini, Anda akan melihat editor konfigurasi untuk contohnya.
Mengonfigurasi Tipe Board
Buka Demo → Device Type dan pilih board yang akan Anda buat.
Menonaktifkan Mode Rendezvous
Menonaktifkan Mode Rendezvous memungkinkan perangkat berkomunikasi dengan chip-tool
melalui saluran yang tidak aman. Di menu konfigurasi, buka Demo → Mode Rendezvous, lalu setel mode ke Bypass:
Mengonfigurasi SSID dan Sandi Wi-Fi
Di menu konfigurasi, buka Component config → CHIP Device Layer → WiFi Station Options, lalu setel kedua opsi ini untuk jaringan Wi-Fi Anda:
- SSID Wi-Fi Default
- Sandi Wi-Fi Default
Melakukan Build dan Flashing
Dengan setelan konfigurasi ini, buat dan flash aplikasi contoh.
Ganti "USB0
" di bawah dengan tty yang terpasang pada board pengembangan Anda. Jika Anda memiliki lebih dari satu kabel serial yang dicolokkan ke mesin host, kabel tersebut mungkin memiliki tty yang berbeda (misalnya /dev/ttyUSB1
atau /dev/ttyUSB2
). Teruskan penggantian ini di mana pun Anda melihat USB0
di dokumen ini.
$ idf make $ idf make erase_flash ESPPORT=/dev/ttyUSB0 $ idf make flash ESPPORT=/dev/ttyUSB0
Langkah-langkah di atas juga tersedia di README Contoh All Clusters CHIP.
6. Mengaktifkan perintah OnOff
Buka DeviceCallbacks.cpp
yang berada di examples/all-clusters-app/esp32/main
di editor mana pun. Setelah terbuka di editor, buka fungsi "DeviceCallbacks::PostAttributeChangeCallback()
".
Saat mengirim perintah aktif-nonaktif dari chip-tool
, perangkat seharusnya menerima peristiwa ZCL_ON_OFF_CLUSTER_ID. Untuk menangani peristiwa ini, kita menambahkannya ke callback peristiwa yang menangani clusterID
yang berbeda.
void DeviceCallbacks::PostAttributeChangeCallback(...) { ... switch (clusterId) { case ZCL_ON_OFF_CLUSTER_ID: break; default: ESP_LOGI(TAG, "Unhandled cluster ID: %d", clusterId); break; } ... }
Setiap cluster mendukung banyak atribut. Kita ingin mendukung fungsi aktif dan nonaktif yang sederhana. Jadi, periksa attributeId
dari ZCL_ON_OFF_ATTRIBUTE_ID pada kode. Seharusnya kode tersebut kosong.
void DeviceCallbacks::PostAttributeChangeCallback(...) { ... switch (clusterId) { case ZCL_ON_OFF_CLUSTER_ID: if (attributeId == ZCL_ON_OFF_ATTRIBUTE_ID) { } else { ESP_LOGI(TAG, "Unhandled attribute ID: %d", attributeId); } break; default: ESP_LOGI(TAG, "Unhandled cluster ID: %d", clusterId); break; } ... }
Tambahkan panggilan fungsi untuk mengontrol status LED pada kit pengembangan jika clusterId
dan attributeId
sudah benar.
void DeviceCallbacks::PostAttributeChangeCallback(...) { ... switch (clusterId) { case ZCL_ON_OFF_CLUSTER_ID: if (attributeId == ZCL_ON_OFF_ATTRIBUTE_ID) { statusLED1.Set(*value); } else { ESP_LOGI(TAG, "Unhandled attribute ID: %d", attributeId); } break; default: ESP_LOGI(TAG, "Unhandled cluster ID: %d", clusterId); break; } ... }
Simpan file, lalu buat aplikasi dan flash kit pengembangan lagi, menggunakan proses yang sama seperti di Melakukan Build dan Flashing di langkah sebelumnya:
$ idf make $ idf make erase_flash ESPPORT=/dev/ttyUSB0 $ idf make flash ESPPORT=/dev/ttyUSB0
7. Menjalankan Aplikasi Contoh
Hubungkan kabel USB dari board ESP32 ke mesin host Anda, lalu picu terminal serial. Salah satu program yang baik untuk digunakan adalah screen
, dan Anda dapat melihat output serial dari ESP32 dengan menjalankan perintah ini:
$ screen /dev/ttyUSB0 115200
Setelah melakukan booting dan terhubung ke Wi-Fi, perangkat akan menampilkan alamat IP-nya di konsol serial. Anda akan memerlukan ini untuk berinteraksi dengan perangkat menggunakan chip-tool
.
Dalam kasus di atas, alamat IP adalah 192.168.117.134, dan perangkat mendengarkan di port 11097.
Dengan menggunakan port dan alamat IP ini, buat koneksi ke perangkat, dan lewati langkah penyambungan:
$ cd examples/chip-tool $ ./out/debug/chip-tool pairing bypass 192.168.117.134 11097
Sekarang Anda dapat mengaktifkan/menonaktifkan endpoint 1 dengan perintah berikut:
$ ./out/debug/chip-tool onoff toggle 1
Di ESP32 DevKitC, ini akan mengaktifkan sinyal di GPIO2:
Pada gambar di atas, LED merah 1,8V/20mA disambungkan ke GPIO2, dengan Resistor 75 Ohm dalam serial.
Di ESP32-WROVER-KIT, perintah di atas akan mengaktifkan/menonaktifkan LED hijau virtual di kiri atas layar:
Di board M5Stack, perintah di atas akan mengaktifkan/menonaktifkan LED hijau virtual di kiri atas layar:
8 Selamat
Anda telah berhasil mengontrol kit pengembangan menggunakan CHIP. Keren!
Dalam codelab ini, Anda telah mempelajari cara:
- Mengaktifkan fungsi OnOff di kit pengembangan.
- Mengontrol kit pengembangan dengan alat pengontrol CHIP.
Selengkapnya
Berikut adalah beberapa ide yang dapat Anda lakukan untuk penerapan lebih dalam:
- Edit file ZAP untuk memperluas kemampuan fungsi.
- Tambahkan fungsi ZCL_IDENTIFY_GROUPS_ID ke file
DeviceCallbacks.cpp
- Spesifikasi tersebut menentukan Library Cluster ZigBee.
- Lihat GitHub untuk info terbaru tentang Project CHIP dan buildwithmatter.com untuk info terbaru tentang Matter.