নিচে দেওয়া নির্দেশাবলীতে M5Stack ESP32 ডেভেলপমেন্ট বোর্ডের সাথে Matter SDK থেকে নেওয়া লাইটিং অ্যাপ উদাহরণ ব্যবহার করা হয়েছে।
বিল্ড এনভায়রনমেন্ট সেট-আপ
প্রথমে, Matter SDK ক্লোন করুন।
এই উদাহরণে, আমরা Google Home-এর Matter রিলিজ ৫-এর জন্য ন্যূনতম কাজ করে এমন কমিট চেক করে দেখি:
mkdir otaprepcd otaprepgit 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
এরপরে, ESP32 GitHub ওয়ার্কফ্লোতে ব্যবহৃত ভার্সন চেক করে আমরা নির্ধারণ করি যে কোন Docker ইমেজ আমাদের বিল্ডের জন্য সবচেয়ে উপযুক্ত:
cat .github/workflows/examples-esp32.yaml | grep chip-build | head -n 1image: connectedhomeip/chip-build-esp32:0.5.99আমরা Docker ইমেজ থেকে একটি কন্টেনার রান করি, কন্টেনারে Matter SDK মাউন্ট করতে এবং ESP32 ডিভাইসে অ্যাক্সেস দিতে ফ্ল্যাগ পাস করি।
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/bashMatter Docker কন্টেনার বন্ধ ও চালু করা
আপনি যখনই কোনও docker run কমান্ড রান করাবেন, তখন নির্দিষ্ট করা ছবি সহ
একটি নতুন কন্টেনার তৈরি করবেন। আপনি এটি করলে, আপনার পুরনো ডেটা, যা
আগের কন্টেনার ইনস্ট্যান্সে সেভ করা হয়েছিল, তা আর পাওয়া যায় না। কখনও কখনও আপনি এটিই চান, কারণ এটি আপনাকে নতুন ইনস্টলেশন দিয়ে শুরু করতে দেয়। কিন্তু এই
উদাহরণে, আপনি সম্ভবত সেশনগুলির মধ্যে আপনার কাজ ও এনভায়রনমেন্ট কনফিগারেশন
সেভ করতে চান।
user@host> docker stop container_name
আপনি আবার রান করার জন্য প্রস্তুত হলে, কন্টেনার চালু করুন এবং একটি টার্মিনাল উইন্ডো খুলুন:
user@host> docker start container_name
user@host> docker exec -it container_name /bin/bash
আপনি এগুলি ব্যবহার করে কন্টেনারে অতিরিক্ত টার্মিনাল সেশন খুলতে পারেন:
user@host> docker exec -it container_name /bin/bash
অথবা এগুলি ব্যবহার করে একটি রুট সেশন শুরু করুন:
user@host> docker exec -u 0 -it container_name /bin/bash
SDK ইনিশিয়ালাইজ করা
কন্টেনারে, আমরা Matter SDK ও ESP IDF শুরু করি:
cd /workspacegit submodule update --init --recursivesource ./scripts/activate.shsource /opt/espressif/esp-idf/export.shবিল্ড ও ফ্ল্যাশ করা
পরবর্তী টাস্ক হল, Matter OTA ফার্মওয়্যার আপডেট পেতে ডেভেলপমেন্ট কিট ফ্ল্যাশ করা ও ছবি তৈরি করা।
এটি করতে, আপনাকে অবশ্যই একটি ছবি তৈরি করতে হবে।
প্রথমে ESP IDF থেকে menuconfig ইউটিলিটি ব্যবহার করে বিল্ড কনফিগার করুন।
cd examples/lighting-app/esp32
idf.py menuconfigইন্টারেক্টিভ মেনুতে, নিম্নলিখিত সেটিংস কনফিগার করুন:
Component config --->CHIP Device Layer --->Device Identification Options --->আপনার Connectivity Standards Alliance (Alliance)-এর জন্য অ্যাসাইন করা VID-তে
Vendor IDসেট করুন।Google Home Developer Console-এ Matter ইন্টিগ্রেশনে সেট করা PID-তে
Product IDসেট করুন।
OTA অনুরোধকারী ফ্ল্যাগ চালু করুন:
Component config -->CHIP Core -->System options --->OTA Requestor ফ্ল্যাগ চালু করুন
[*] Enable OTA Requestorটপ লেভেল মেনুতে ফিরে যেতে ESC বোতামটি দু'বার প্রেস করুন।
Matter OTA ইমেজ তৈরি করার ফ্ল্যাগ চালু করুন:
Component config -->CHIP Device Layer --->Matter OTA Image --->[*] Generate OTA IMAGE
ভার্সন নম্বর সেট করুন:
Application manager --->[*] Get the project version from Kconfigবেছে নিনProject version (NEW)-কে1.0হিসেবে সেট করুনকনফিগারেশন সেভ করতে s প্রেস করুন, দুবার Enter প্রেস করুন, তারপরে q প্রেস করে বেরিয়ে আসুন
menuconfig।
টেস্ট সার্টিফিকেট সেট-আপ করা
CD, DAC ও PAI সার্টিফিকেট তৈরি করতে, Matter ডিভাইস টেস্ট সার্টিফিকেট তৈরি করুন লিঙ্কে দেওয়া ধাপগুলি অনুসরণ করুন।
আপনার ডিভাইস তৈরি করা
এখন বিল্ড রান করান এবং ডিভাইসে ফ্ল্যাশ করুন:
idf.py build
idf.py -p /dev/ttyUSB0 erase_flash
idf.py -p /dev/ttyUSB0 flashOTA ইমেজ তৈরি ও আপলোড করা
এখন OTA ইমেজ তৈরি করতে আবার বিল্ড সেটিংস পরিবর্তন করুন। একই ছবি ব্যবহার করুন, তবে ভার্সন নম্বর এক করে বাড়িয়ে দিন।
রান menuconfig
idf.py menuconfigইন্টার্যাক্টিভ মেনুতে, নিম্নলিখিত বিষয়গুলি আপডেট করুন:
Application manager --->[*] Get the project version from Kconfigবেছে নিনProject version (NEW)-কে2.0হিসেবে সেট করুন- কনফিগারেশন সেভ করতে s টিপুন, দু'বার Enter টিপুন, তারপর
menuconfigথেকে বেরিয়ে আসতে q টিপুন।
ছবি তৈরি ও ফিরিয়ে আনা। এই উদাহরণে OTA-এর জন্য ছবির লোকেশন
এবং ota_image_tool.py-এর মাধ্যমে পার্স করার সময় আউটপুট, দুটিই দেখানো হয়েছে।
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 আপনার কন্টেনার হোস্ট থেকে মাউন্ট করা হয়, OTA ইমেজ আপনার কন্টেনার হোস্টে উপলভ্য।
Developer Console-এ OTA ইমেজ আপলোড করতে OTA আপলোড সংক্রান্ত নির্দেশাবলী অনুসরণ করুন।
Google Home-এ কমিশন করা এবং OTA পর্যবেক্ষণ করা
USB-এর মাধ্যমে আপনার ডিভাইস হোস্ট Linux মেশিনের সাথে কানেক্ট করা আছে কিনা তা নিশ্চিত করুন। ডিভাইস লগ পড়ার জন্য GNU screen-এর ব্যবহার
নিচের উদাহরণে দেখানো হয়েছে:
screen -L /dev/ttyUSB0 115200এটি ডিভাইস থেকে আপনার টার্মিনালে আউটপুট দেখায় এবং screenlog.0 নামের ডিফল্ট স্ক্রিন লগ ফাইলে
একই আউটপুট লেখে।
আপনি অন্য টেক্সট এডিটরে screenlog.0 ফাইল খুলতে পারেন অথবা cat, tail, more বা grep ব্যবহার করে
অন্য শেল-এ এটি দেখাতে পারেন।
বুট থেকে লগ দেখতে ডিভাইসের পাশে লাল রিসেট বোতামটি প্রেস করুন।
ডিভাইস আউটপুটে, আপনি আগে সেট করা VID এবং PID দেখতে পাবেন, সেইসাথে ডিভাইস কমিশন করার জন্য ব্যবহার করা QR কোড ইমেজের URL-ও দেখতে পাবেন।
[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 অনলাইন আছে কিনা তা নিশ্চিত করুন।
লগ ফাইলে দেখানো লিঙ্কে থাকা QR কোড ব্যবহার করে Google Home app (GHA) দিয়ে ডিভাইসটি কমিশন করুন।
চালু করার পরে ডিভাইসটিকে বেশ কয়েক মিনিট ধরে একটানা চলতে দিন।
আপনাকে OTA রিকোয়েস্টর, OTA ইমেজ ডাউনলোড এবং OTAImageProcessor সম্পর্কিত লগ আউটপুট দেখতে হবে।
ইমেজ ইনস্টল করার পরে, লক্ষ্য করুন যে ইমেজের কম্পাইল টাইম
কনসোলে আপলোড করা ইমেজের কম্পাইল টাইমের সাথে মিলছে এবং এটি প্রথম বুটের সময় রিপোর্ট করা
কম্পাইল টাইমের থেকে বেশি। screenlog.0-এ রেগুলার এক্সপ্রেশন মোডে নিম্নলিখিত প্যাটার্ন সহ grep এক্সিকিউট করলে OTA প্রসেস
বোঝা যায়:
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
প্রাথমিক এক্সিকিউশনের পরে, আপনি নতুন ছবি আপলোড না করেই,
OTA ছবি তৈরি ও আপলোড করুন বিভাগে উল্লিখিত ধাপগুলি আবার করতে পারেন।
এইবার, ভার্সন 1 হিসেবে সেট করুন।
menuconfig রান করান এবং ইন্ট্যার্যাক্টিভ মেনু বিকল্পে:
Component config -->CHIP Device Layer --->Device Identification OptionsVersion String-কেv1.0হিসেবে সেট করুন।Device Software Version Number-কে1হিসেবে সেট করুন।কনফিগারেশন সেভ করতে s টিপুন, তারপর
menuconfigথেকে বেরিয়ে আসতে q টিপুন।
GHA-এ আপনার হোম থেকে ডিভাইসটি সরিয়ে দিন।
ছবিটি আগে থেকে তৈরি করা না থাকলে, সেটি তৈরি করুন:
idf.py buildফ্ল্যাশ করুন:
idf.py -p /dev/ttyUSB0 erase_flashidf.py -p /dev/ttyUSB0 flashপ্রয়োজন অনুযায়ী Google Home-এ কমিশন এবং OTA পর্যবেক্ষণ করা লিঙ্কে উল্লেখ করা ধাপগুলি আবার অনুসরণ করুন।
OTA সফ্টওয়্যার আপডেট যাচাই করা
Google Home অ্যাপ (GHA) ব্যবহার করে ডিভাইসের সফ্টওয়্যার ভার্সন চেক করা যেতে পারে। কোনও ডিভাইস চালু করা হয়ে গেলে, এইসব পদ্ধতি অনুসরণ করুন:
- GHA মূল স্ক্রিনে ডিভাইসের টাইল বেশিক্ষণ প্রেস করে রাখুন
- উপরে ডানদিকে আইকনে ট্যাপ করুন
- টেকনিক্যাল তথ্য বিকল্পে ট্যাপ করুন
- সফ্টওয়্যার ভার্সন ফিল্ড চেক করুন