স্যাম্পেল অ্যাপ
Home API ব্যবহার করার সময় কোনও সমস্যা হলে, আরও ডিবাগিংয়ের জন্য আপনি লগ সংগ্রহ করতে
পারেন। মোবাইল ডিভাইস থেকে লগ সংগ্রহ করতে Android
Debug Bridge (adb) প্রয়োজন। Google-এর থেকে সহায়তা প্রয়োজন হলে, Android ডিভাইস এবং হাব
উভয় থেকেই লগ সংগ্রহ করুন এবং প্রাসঙ্গিক তথ্য ও এর সাথে যুক্ত লগ সহ ইস্যু ট্র্যাকারে
একটি টিকিট খুলুন।
Android লগ সংগ্রহ করুন
adb-এর সাথে সম্পর্কিত সব ধাপের জন্য আপনার মোবাইল ডিভাইসকে অবশ্যই লোকাল মেশিনের সাথে
কানেক্ট করতে হবে।
adb ইনস্টল করুন
আপনি আগে থেকে করে না থাকলে, আপনার লোকাল মেশিনে Android ডিবাগ ব্রিজ সেট-আপ করুন:
- আপনার কম্পিউটারে "adb" ইনস্টল করুন।
- আপনার Android ফোনে ডেভেলপার বিকল্প ও USB ডিবাগিং চালু করুন।
মোবাইল ডিভাইসের আইডি পান
- আপনার মোবাইল ডিভাইসের আইডি পান:
adb devicesList of devices attached device-id device
phoneidনামের ভেরিয়েবেলে এই মান স্টোর করো:phoneid=device-id
ভার্সন সংক্রান্ত তথ্য
আপনি যখনই লগ সংগ্রহ করার সিদ্ধান্ত নেবেন, তখনই আপনার সেট-আপ সম্পর্কিত সমস্ত ভার্সনের তথ্য সংগ্রহ করার জন্য আমরা সাজেস্ট করি। Google-এর সাথে সমস্যা শেয়ার করতে হলে এটি প্রয়োজন।
- বিভিন্ন ডিভাইসের তথ্য ভেরিয়েবলে সেভ করুন:
containerinfo=$(adb -s $phoneid shell dumpsys package com.google.android.gms | grep -m 1 "versionName" || true); ghainfo=$(adb -s $phoneid shell dumpsys package com.google.android.apps.chromecast.app | grep -m 1 "versionName" || true); androidversion=$(adb -s $phoneid shell getprop ro.build.version.release || true); androidapiversion=$(adb -s $phoneid shell getprop ro.build.version.sdk || true); chimeradump=$(adb -s $phoneid shell dumpsys activity provider com.google.android.gms.chimera.container.GmsModuleProvider || true); homemoduleinfo=$(echo "$chimeradump" | grep -w "com.google.android.gms.home" || true); optionalhomemoduleinfo=$(echo "$chimeradump" | grep -w "com.google.android.gms.optional_home" || true); threadinfo=$(echo "$chimeradump" | grep -w "com.google.android.gms.threadnetwork" || true); enabledfeatures=$(echo "$chimeradump" | grep "Enabled features" | grep -i "home" | sort -u || true) _versions.txtনামের ফাইলে সব ভেরিয়েবল সেভ করুন:কোনও ফাইলে ভেরিয়েবল সেভ করার জন্য কমান্ড দেখতে বড় করুন
পুরো ব্লকটি একবারে কপি করে টার্মিনালে পেস্ট করা যাবে।
versionfile="_versions.txt" echo "Saving version info to $versionfile" echo "Container version: $containerinfo" > $versionfile echo "Home Module version: $homemoduleinfo" >> $versionfile echo "Optional Home Module version: $optionalhomemoduleinfo" >> $versionfile echo "Thread Module version: $threadinfo" >> $versionfile echo "GHA version: $ghainfo" >> $versionfile echo "Android version: $androidversion" >> $versionfile echo "Android API version: $androidapiversion" >> $versionfile echo "Found enabled features: $enabledfeatures" >> $versionfile
_versions.txt-এর কন্টেন্ট যাচাই করুন:cat _versions.txtসমস্যার সমাধান করার জন্য প্রয়োজন হলে এই ফাইলটি এখন Google-কে দেওয়া যেতে পারে।স্যাম্পেল ফাইলের আউটপুট দেখতে বড় করুন
Container version: versionName=26.26.34 (190400-945364269) Home Module version: com.google.android.gms.home [v262634001] Optional Home Module version: com.google.android.gms.optional_home [262634025] ... Thread Module version: com.google.android.gms.threadnetwork [v262634001] GHA version: versionName=4.22.28.0 Android version: 14 Android API version: 34 Found enabled features: Enabled features: appsearch_impl, brella_dynamite, dck_management...
ভার্বোস ডিবাগিং ফ্ল্যাগ চালু করুন
Android ডিভাইস লগ সংগ্রহ করার বা ত্রুটির রিপোর্ট চালানোর আগে, লগার বাফার সাইজ কনফিগার করুন এবং Google Home ও GMS কম্পোনেন্টের জন্য ভার্বোস ডিবাগিং ট্যাগ চালু করুন:
# Clear existing device logs and expand logger buffer size
adb -s $phoneid logcat -b all -c
adb -s $phoneid logcat -G 8M
# Enable displaying seconds on the screen
adb -s $phoneid shell settings put secure clock_seconds 1
# Enable GMS Service ID verbose flags
adb -s $phoneid shell setprop log.tag.gms_svc_id:168 VERBOSE
adb -s $phoneid shell setprop log.tag.gms_svc_id:304 VERBOSE
adb -s $phoneid shell setprop log.tag.gms_svc_id:305 VERBOSE
adb -s $phoneid shell setprop log.tag.gms_svc_id:319 VERBOSE
adb -s $phoneid shell setprop log.tag.gms_svc_id:336 VERBOSE
adb -s $phoneid shell setprop log.tag.gms_svc_id:360 VERBOSE
# Enable GHP and Matter log tags
adb -s $phoneid shell setprop log.tag.CameraCommissioningPlugin VERBOSE
adb -s $phoneid shell setprop log.tag.HomeSdk VERBOSE
adb -s $phoneid shell setprop log.tag.HomeClient VERBOSE
adb -s $phoneid shell setprop log.tag.InteractionApiChimeraService VERBOSE
adb -s $phoneid shell setprop log.tag.MatterCommissioner VERBOSE
adb -s $phoneid shell setprop log.tag.SampleApp VERBOSEস্ক্রিপ্টের মাধ্যমে Android লগ সংগ্রহ করা
ডিবাগিং সেশন চলাকালীন লাইভ Android ডিভাইস লগ ক্যাপচার করতে:
- আগে থেকে থাকা লগ মুছে ফেলতে, বাফার সাইজ বাড়াতে এবং ভার্বোস লগিং ট্যাগ সেট করতে ভার্বোস ডিবাগিং ফ্ল্যাগ চালু করুন বিকল্পে দেওয়া নির্দেশাবলী অনুসরণ করুন।
- মোবাইল ডিভাইসে চলা সব অ্যাপ্লিকেশন বন্ধ করুন।
- আপনার টেস্ট শুরু করার আগে আগে থেকে থাকা লগ বাফার নয়েজ মুছে দিন:
adb -s $phoneid logcat -c - টার্মিনাল উইন্ডোতে লগ সংগ্রহ করার প্রসেস শুরু করুন:
এই টার্মিনাল উইন্ডো খোলা রাখুন। প্রসেসটি যতক্ষণ চলবে ততক্ষণ এটি আপনার ডিভাইস থেকে লগ ক্যাপচার করবে।adb -s $phoneid logcat | tee android-logs_$(date +%Y%m%d%H%M%S).txt - আপনার অ্যাপ চালান এবং সমস্যাটি আবার তৈরি করার জন্য প্রয়োজনীয় সব ইউজার ইন্টারফেস অ্যাকশন পারফর্ম করুন।
- হয়ে গেলে, টার্মিনালে Ctrl+C (বা Mac-এ Cmd+C) প্রেস করে
logcatপ্রসেস বন্ধ করুন। - এই সেশনের লগ
android-logs_YYYYMMDDmmss.txt-এ সেভ করা হয়েছে। যেকোনও বাগ রিপোর্টেandroid-logs_YYYYMMDDmmss.txtএবং_versions.txtদুটিই অ্যাটাচ করুন।
adb bugreport-এর মাধ্যমে Android লগ সংগ্রহ করুন
সিস্টেম-লেভেল সমস্যা, ক্র্যাশ ডাম্প বা লো-লেভেল নেটওয়ার্ক ও ব্লুটুথ ডিবাগিং কভার করে এমন বিস্তারিত ডায়াগনস্টিক তথ্য শেয়ার করার প্রয়োজন হলে, সম্পূর্ণ Android ত্রুটির প্রতিবেদন ক্যাপচার করুন:
- Matter BLE কমিশন করা: BLE সংক্রান্ত Matter কমিশন করার সমস্যা সম্পর্কে অভিযোগ জানানোর সময়, সমস্যাটি আবার তৈরি করার আগে, ডেভেলপার বিকল্পে (সেটিংস > ডেভেলপার বিকল্প > ব্লুটুথ HCI স্নুপ লগ চালু করুন) ব্লুটুথ HCI স্নুপ লগ চালু করুন।
- প্রি-টেস্ট সেট-আপ: আপনার টেস্ট চালানোর আগে, আপনার ডিভাইসে ভার্বোস ডিবাগিং প্রপার্টি চালু করতে ভার্বোস ডিবাগিং ফ্ল্যাগ চালু করুন বিকল্পে দেওয়া ধাপগুলি অনুসরণ করুন।
- ত্রুটির রিপোর্ট ক্যাপচার করা: আপনার টেস্ট রান করার পরে এবং সমস্যাটি আবার তৈরি করার পরে, একটি সম্পূর্ণ ত্রুটির রিপোর্ট আর্কাইভ তৈরি করতে নিম্নলিখিত কমান্ডটি রান করুন:
adb -s $phoneid bugreport ./android-bugreport_$(date +%Y%m%d%H%M%S).zip - উন্নত ডিবাগিং তথ্য: তৈরি করা
android-bugreport_YYYYMMDDmmss.zipফাইলে সিস্টেম-লেভেল ডায়াগনস্টিক ডেটা থাকে—যার মধ্যে সম্পূর্ণ সিস্টেম ডাম্প, মেমরি পরিসংখ্যান, ব্যাটারি ডায়াগনস্টিক এবং লো-লেভেল সাবসিস্টেম ট্রেস অন্তর্ভুক্ত থাকে—যা ডিবাগিংয়ের জন্য আরও উন্নত তথ্য প্রদান করে।
Cast হাব ডিভাইস লগ
এই পদ্ধতি ব্যবহার করে আপনি Google Nest Hub-এর ডিভাইস লগ দেখতে পারবেন, যা নিম্নলিখিত মডেলের জন্য কাজ করে:
- Google Home
- Google Nest Audio
- Google Nest Hub
- Google Nest Mini
স্থানীয় লগ ফিরিয়ে আনার জন্য Cast হাব চালু করতে:
- Android ডিবাগ ব্রিজ সেট-আপ করুন।
আপনার হাবের IP অ্যাড্রেস পান:
- হাব থেকে, যদি এতে স্ক্রিন থাকে:
- স্ক্রিনের উপর থেকে নিচের দিকে সোয়াইপ করুন
- সেটিংস আইকনে ট্যাপ করুন
- ডিভাইসের IP অ্যাড্রেস খুঁজুন: Nest Hub (2nd gen)-এ, ডিভাইসের তথ্য > টেকনিক্যাল তথ্য > IP অ্যাড্রেস বিকল্পে যান
- আপনার ফোনে GHA থেকে:
- ডিভাইসের বিবরণ পৃষ্ঠা দেখতে ডিভাইসে ট্যাপ করুন
- সেটিংস পৃষ্ঠা দেখতে সেটিংস আইকনে ট্যাপ করুন
- ডিভাইসের IP অ্যাড্রেস খুঁজুন: ডিভাইসের তথ্য > প্রযুক্তিগত তথ্য > IP অ্যাড্রেস বিকল্পে যান
- হাব থেকে, যদি এতে স্ক্রিন থাকে:
ডিভাইসের মতো একই ওয়াই-ফাই নেটওয়ার্কে থাকা কম্পিউটারে:
adb connect ip-addressadb logcatকাউকে লগ প্রদান করতে, যে অপারেশনটি কাজ করছে না সেটি পারফর্ম করুন এবং আউটপুটটি একটি টেক্সট ফাইলে পাইপ করুন:
adb logcat -d > platform-logs.txt
অটোমেশন
এজ ডিটেকশন
Google Home ইকোসিস্টেমের অটোমেশনে এজ ডিটেকশন ফিচার আছে, যা হল এমন একটি লজিক যা যাচাই করে যে ডিভাইসের আগের স্ট্যাটাস শুধু রিপিট করে এমন স্ট্যাটাস আপডেটের পরিবর্তে প্রকৃত স্ট্যাটাস পরিবর্তন হলেই স্টার্টার অ্যাক্টিভেট হয়।
যেমন, আলো জ্বালানো যদি স্টার্টার হয়, তাহলে এজ ডিটেকশন যাচাই করে যে স্টার্টার তখনই অ্যাক্টিভেট হয় যখন সেই লাইট ডিভাইস বন্ধ থেকে চালু হয়, চালু থেকে চালু (কোনও পরিবর্তন নেই) হওয়ার ক্ষেত্রে নয়।
অটোমেশন প্রত্যাশা মতো কাজ করে না
এজ শনাক্তকরণ বিবেচনা করার পরে, কোনও অটোমেশন প্রত্যাশা অনুযায়ী কাজ না করলে:
আপনার অটোমেশন থেকে স্বাধীনভাবে প্রতিটি ডিভাইস সঠিকভাবে কাজ করছে কিনা তা নিশ্চিত করতে প্রতিটি ডিভাইস চেক করুন।
আপনার অটোমেশনের জন্য অটোমেশন গ্রাফ দেখুন, আপনার অটোমেশন DSL-এর সাথে এটি তুলনা করুন, যাতে আপনার পক্ষ থেকে কোনও সম্ভাব্য ভুল অনুমান প্রকাশ করা যায়।
আপনার অটোমেশন এক্সিকিউট করার সময় Google Home অ্যাপে ডিভাইসের স্ট্যাটাস লক্ষ্য করুন।
অটোমেশনের মাধ্যমে রেফারেন্স করা সব ডিভাইস আপনার প্রত্যাশিত স্ট্রাকচারে উপস্থিত আছে কিনা তা চেক করে দেখুন। অটোমেশন নির্ভর করে এমন কোনও ডিভাইস মুছে দিলে অপ্রত্যাশিত ফলাফল হতে পারে। অটোমেশনের উপর ডিভাইস মুছে ফেলার প্রভাব দেখুন।
অটোমেশন রান করার কথা না থাকলেও রান করে
আপনার অটোমেশন যদি এমন সময় চলে যখন চলা উচিত নয়, তাহলে স্টার্টার মাপকাঠি পরীক্ষা করুন। স্ট্যাটাসে পরিবর্তন যাতে একবারই ক্যাপচার করা হয় এবং অটোমেশন একবারই ট্রিগার হয় তা নিশ্চিত করতে অতিরিক্ত লজিক যোগ করার প্রয়োজন হতে পারে।
অটোমেশন কম্পাইল করে না
আপনার অ্যাপে যেন সব প্রয়োজনীয় ইম্পোর্ট থাকে তা নিশ্চিত করুন, এর মধ্যে বিভিন্ন নোড টাইপের সাথে সম্পর্কিত প্রতিটি ক্লাস এবং আপনি যে বৈশিষ্ট্যগুলি উল্লেখ করছেন সেগুলিও অন্তর্ভুক্ত।
অটোমেশন ক্রিয়েশন যাচাই করা যায়নি
অটোমেশন তৈরি করার সময় যাচাইকরণে পাস না করলে, সমস্যা সম্পর্কে তথ্য প্রদান করার জন্য
একটি সতর্কতা বা ত্রুটি মেসেজ দেখানো হয়। আরও তথ্যের জন্য, ValidationIssueType রেফারেন্স দেখুন।
তালিকা ফাংশন ব্যতিক্রম দেখায়
Automation API List ফাংশন কল করার সময়, API ফিচার না থাকার কারণে রিড হ্যান্ডলার ব্যতিক্রম দেখাতে পারে। এই সমস্যা সমাধান করতে, প্রভাবিত অটোমেশন মুছে দিন।
এটি করতে:
adbইনস্টল করা আছে কিনা তা নিশ্চিত করতে চেক করুন। adb ইনস্টল করুন দেখুন।এটি কল করে Android লগ থেকে অটোমেশনের আইডি ফিরিয়ে আনুন:
adb logcat -s GhpNativeলগের উদাহরণ:
adb logcat -s GhpNative level:debug | grep -A 10 -B 10 AutomationManagerTrait\.ListResponse INTERACTION RESPONSE -> SendCommandsResponse: 1 { 1: "automation@global" 3 { 1: "home.internal.traits.automation.AutomationManagerTrait.ListResponse" 2: 5 { 1: "type.googleapis.com/home.internal.traits.automation.AutomationManagerTrait.ListResponse" 1 { 1: "1111-2222-3333-44444-55555" // Automation ID to delete 2: "structure@2222-3333-4444-5555-6666" ...একাধিক অটোমেশন আইডি মুছে ফেলতে হলে, আউটপুট কন্ট্রোল করতে আপনি টার্মিনাল পেজার ব্যবহার করতে পারেন:
adb logcat -s GhpNative level:debug | lessঅটোমেশনের আইডি ব্যবহার করে অটোমেশন মুছুন:
structure.deleteAutomation(new object : HasId(id = "1111-2222-3333-44444-55555"))
কোনও ট্রেইট আনরেজিস্টার করা হলে, Discovery API একটি সতর্কতা লগ করে
Discovery API যদি Trait not found-এর জন্য কোনও সতর্কতার লগ তৈরি করে, তাহলে এর অর্থ হল
API, Discovery ক্যান্ডিডেটের জন্য ট্রেইট ব্যবহার করার চেষ্টা করছে, কিন্তু এটি সফল হবে না
কারণ ইনিশিয়ালাইজেশনের সময় ট্রেইট রেজিস্টার করা হয়নি। যেমন:
09-03 17:45:20.578 10646 10646 W AutomationSdk: trait_id: "home.matter.6006.clusters.fc43" and Exception occurred com.google.home.HomeException: 18: Trait not found: home.matter.6006.clusters.fc43
09-03 17:45:20.578 10646 10646 W AutomationSdk: While converting candidate: # com.google.home.platform.traits.AutomationCandidateNode@76f0b582
বৈশিষ্ট্য শনাক্তকারী হল home.matter.6006.clusters.fc43, যা RelativeHumidityControl-এর
সাথে সম্পর্কিত। কোনও আইডি থেকে বৈশিষ্ট্যের নাম নির্ধারণ করতে, বৈশিষ্ট্যের ইন্ডেক্স দেখুন।
এই উদাহরণ থেকে, অ্যাপ শুরু করার সময় RelativeHumidityControl রেজিস্টার করতে হবে। রেজিস্ট্রিতে আপনার ট্রেট যোগ করতে ট্রেট রেজিস্টার করা দেখুন।
OAuth
আপনার কাছে আগে থেকে OAuth ক্লায়েন্ট থাকলে
প্রকাশিত অ্যাপের জন্য আপনার আগে থেকেই যাচাই করা OAuth ক্লায়েন্ট থাকলে, Home API পরীক্ষা করার জন্য আপনি আগে থেকে থাকা OAuth ক্লায়েন্ট ব্যবহার করতে পারবেন।
Home API পরীক্ষা ও ব্যবহার করার জন্য Google Home Developer Console রেজিস্ট্রেশন করার প্রয়োজন নেই। তবে, আপনার অ্যাপ প্রকাশ করার জন্য এখনও একটি অনুমোদিত Developer Console রেজিস্ট্রেশন প্রয়োজন হবে, এমনকি আপনার কাছে অন্য ইন্টিগ্রেশন থেকে যাচাই করা OAuth ক্লায়েন্ট থাকলেও।
নিম্নলিখিত বিষয়গুলি প্রযোজ্য:
আগে থেকে থাকা OAuth ক্লায়েন্ট ব্যবহার করার সময় ১০০ জন ব্যবহারকারীর সীমা আছে। টেস্ট ব্যবহারকারী যোগ করার ব্যাপারে আরও জানতে,OAuth-এর সম্মতি সংক্রান্ত স্ক্রিন সেট-আপ করুন। OAuth যাচাইকরণ ছাড়াও, Home API-এর মাধ্যমে আরোপিত ১০০ জন ব্যবহারকারীর সীমা আছে যারা আপনার অ্যাপ্লিকেশনকে অনুমতি দিতে পারেন। Developer Console রেজিস্ট্রেশন সম্পূর্ণ হলে এই সীমাবদ্ধতা তুলে নেওয়া হয়।
Developer Console রেজিস্ট্রেশন অনুমোদনের জন্য পাঠাতে হবে যখন আপনি Home API-এর মাধ্যমে আপনার অ্যাপ আপডেট করার প্রস্তুতিতে OAuth-এর মাধ্যমে ডিভাইস-টাইপ গ্রান্ট সীমাবদ্ধ করার জন্য প্রস্তুত হবেন।
Google Cloudটি অ্যাপের জন্য এখনও OAuth যাচাইকরণ বাকি আছে, যাচাইকরণ সম্পূর্ণ না হওয়া পর্যন্ত ব্যবহারকারীরা OAuth ফ্লো সম্পূর্ণ করতে পারবেন না। অনুমতি দেওয়ার চেষ্টা ব্যর্থ হবে এবং নিম্নলিখিত সমস্যা দেখা যাবে:
Access blocked: <Project Name> has not completed the Google verification process.