Android-এর জন্য Chime ডিভাইস গাইড

মৌলিক Chime ডিভাইসের ধরন স্ট্যান্ডার্ড Matter-ভিত্তিক ট্রেট com.google.home.matter.standard.Chime অথবা Google-এর নিজস্ব কাস্টম ভার্সন অফ দ্য ট্রেট, com.google.home.google.Chime ব্যবহার করে প্রয়োগ করা যেতে পারে, যা Matter স্ট্যান্ডার্ডে উল্লেখ করা ক্ষমতা ছাড়াও এক্সটার্নাল চিমকে সাপোর্ট করে। এছাড়াও, চিম ডিভাইস Identify ট্রেট প্রয়োগ করতে পারে, যা চিম ডিভাইসকে দেখে বা শুনে শনাক্ত করার একটি উপায় প্রদান করে।

কোনও ফিচার ব্যবহার করার আগে বা অ্যাট্রিবিউট আপডেট করার চেষ্টা করার আগে সবসময় ডিভাইসের জন্য অ্যাট্রিবিউট ও কমান্ড কাজ করে কিনা তা চেক করে নিন। আরও তথ্যের জন্য Android-এ ডিভাইস কন্ট্রোল করুন লিঙ্ক দেখুন।

Home API ডিভাইসের ধরন বৈশিষ্ট্য Kotlin Sample App ব্যবহারের ক্ষেত্র

চাইম

ChimeDevice

home.matter.0000.types.0146

এমন একটি ডিভাইস যা আগে থেকে ইনস্টল করা বিভিন্ন ধরনের সাউন্ড চালাতে পারে এবং সাধারণত কলিং বেল, অডিও কলিং বেল বা ভিডিও কলিং বেলের সাথে ব্যবহার করা হয়।

প্রয়োজনীয় বৈশিষ্ট্য
     বিষয় Chime

ঐচ্ছিক বৈশিষ্ট্য
     matter শনাক্ত করুন
ডোরবেল

ডিভাইস সম্পর্কে প্রাথমিক তথ্য পাওয়া

   Android-এর জন্য Sample App-এ প্রয়োগ করা হয়েছে   

BasicInformation ট্রেটে ভেন্ডরের নাম, ভেন্ডর আইডি, প্রোডাক্ট আইডি, প্রোডাক্টের নাম (মডেল সংক্রান্ত তথ্য সহ) এবং ডিভাইসের সফ্টওয়্যার ভার্সনের মতো তথ্য থাকে:

// Get device basic information. All general information traits are on the RootNodeDevice type.
    device.type(RootNodeDevice).first().standardTraits.basicInformation?.let { basicInformation ->
        println("vendorName ${basicInformation.vendorName}")
        println("vendorId ${basicInformation.vendorId}")
        println("productId ${basicInformation.productId}")
        println("productName ${basicInformation.productName}")
        println("softwareVersion ${basicInformation.softwareVersion}")
    }

মাল্টিপার্ট সহায়তা

চIME-এ একাধিক ধরনের ডিভাইস থাকতে পারে, যার মধ্যে একটি Chime ও ঐচ্ছিকভাবে একটি স্পিকার অন্তর্ভুক্ত। এছাড়াও, কিছু চিম Thread Border Router (TBR) অন্তর্ভুক্ত করে। সবচেয়ে বেশি ডিভাইসে কাজ করে তা নিশ্চিত করতে, Home API অ্যাপে চিম কন্ট্রোল করার সুবিধা থাকতে হবে এবং মাল্টিপার্ট চিম ডিভাইস যাতে কাজ করে সেইভাবে কোড লিখতে হবে। আরও তথ্যের জন্য মাল্টিপার্ট ডিভাইস দেখুন।

প্রতিটি মাল্টিপার্ট চিম ডিভাইসকে অ্যাপে একটি করে টাইলের মাধ্যমে দেখাতে হবে। Chime ডিভাইসটি প্রাথমিক ডিভাইস হতে হবে এবং Chime-এর অধীনে চাইল্ড স্পিকারকে একটি অংশ হতে হবে।

Chime ডিভাইসের প্রাথমিক সেটিং হিসেবে স্পিকারের ভলিউম দেখা যাবে।

OnOff ম্যাপিং

Chime ও স্পিকার, এই দুটি ডিভাইস টাইপ সহ কোনও চিমের ক্ষেত্রে, কন্ট্রোলিং অ্যাপে OnOff বোতামটি Chime-এর Enabled অ্যাট্রিবিউটের সাথে ম্যাপ করা উচিত।

Matter ডিভাইস লাইব্রেরি স্পেসিফিকেশন অনুযায়ী, Chime ট্রেটের Enabled অ্যাট্রিবিউটকে False হিসেবে সেট করলে, তা Chime বন্ধ করার পাশাপাশি, গ্লোবাল মিউট সুইচের মতো কাজ করতে পারে যা সব শ্রুতিগোচর ও দৃশ্যমান ইন্ডিকেটরকে দমন করে।

অটোমেশন সহায়তা

আগে বলা হয়েছে যে, ChimeDevice একাধিক পার্ট থাকতে পারে, তাই ডেভেলপারদের সব চিমকে মাল্টিপার্ট ডিভাইস হিসেবে বিবেচনা করতে উৎসাহিত করা হয় এবং চিম ব্যবহার করে এমন অটোমেশনের ক্ষেত্রেও এটি সত্যি।

অটোমেশন স্টার্টার ও অ্যাকশনে চিম ব্যবহার করা যেতে পারে।

অটোমেশনে ব্যবহৃত প্যারেন্ট Chime ডিভাইসের অধীনে থাকা যেকোনও কম্পোনেন্ট পার্ট ডিভাইসকে AutomationPartPath ব্যবহার করে রেফারেন্স করতে হবে।

নিম্নলিখিত অটোমেশন থেকে কীভাবে মাল্টিপার্ট চিমের মাধ্যমে অটোমেশন তৈরি করা যায় তা জানতে পারবেন। এই চিম স্পিকারের পাশাপাশি চিম ট্রেটও প্রয়োগ করে। সামনের দরজা খোলা হলে অটোমেশন ট্রিগার হয়:

import com.google.home.automation.automation
import com.google.home.automation.greaterThan
import com.google.home.google.GoogleDoorDevice
import com.google.home.google.OpenClose
import com.google.home.matter.standard.ChimeDevice
import com.google.home.matter.standard.Chime
// ...

// Fetch devices
val devices = homeManager.devices()

// Fetch devices using the multipart device model.
val multipartDevices = homeManager.devices(enableMultipartDevices = true)

val doorDevice = devices.first() {
  it.has(GoogleDoorDevice) &&
  it.has(OpenClose)
}

// Obtain a reference to the chime device.
val chime = multipartDevices.first() {
  it.has(ChimeDevice) &&
  it.has(Chime)
}

// Extract the AutomationPartPath for the specific Chime part
val chimePartPath = chime.automationPart(chime.part(ChimeDevice).first())!!

// Build the automation
val chimeAutomation = automation {
  sequential {
    val doorOpenClose = stateReader<_>(doorDevice, GoogleDoorDevice, OpenClose)
    // Starter: When the door state changes
    val starterNode = starter<_>(doorDevice, GoogleDoorDevice, OpenClose)
    condition {
     expression = doorOpenClose.openPercent greaterThan(0)
    }
    // Action: Play a chime sound
    action(chimePartPath) {
      command(Chime.playChimeSound())
    }
  }
}

মাল্টিপার্ট ডিভাইস ব্যবহার করে অটোমেশন সম্পর্কে অতিরিক্ত তথ্য পেতে মাল্টিপার্ট ডিভাইস অটোমেশন দেখুন।

কোনও ডিভাইসের কানেক্টিভিটি চেক করা

ডিভাইসের কানেক্টিভিটি আসলে ডিভাইসের ধরন লেভেলে চেক করা হয় কারণ কিছু ডিভাইস একাধিক ধরনের ডিভাইসে কাজ করে। রিটার্ন করা স্টেট হল সেই ডিভাইসের সব ট্রেটের কানেক্টিভিটি স্টেটের একটি কম্বিনেশন।

   Android-এর জন্য Sample App-এ প্রয়োগ করা হয়েছে   
val lightConnectivity = dimmableLightDevice.metadata.sourceConnectivity.connectivityState

ইন্টারনেট কানেক্টিভিটি না থাকলে, বিভিন্ন ধরনের ডিভাইস ব্যবহার করার ক্ষেত্রে PARTIALLY_ONLINE অবস্থা দেখা যেতে পারে। Matter স্ট্যান্ডার্ড ট্রেড এখনও অনলাইন থাকতে পারে কারণ লোকাল রাউটিং, কিন্তু ক্লাউড-ভিত্তিক ট্রেড অফলাইন হয়ে যাবে।

ডিভাইসের IP অ্যাড্রেস পাওয়া

ডিভাইসের IP অ্যাড্রেস খুঁজে পেতে, GeneralDiagnostics ট্রেটের networkInterfaces অ্যাট্রিবিউট ব্যবহার করুন। অ্যাড্রেসগুলি বাইট অ্যারে হিসেবে রিটার্ন করা হয়, যেগুলিকে আপনি স্ট্যান্ডার্ড IPv4 বা IPv6 স্ট্রিং হিসেবে ফর্ম্যাট করতে পারেন:

val ipAddresses =
  trait.networkInterfaces?.flatMap { networkInterface ->
    (networkInterface.ipv4Addresses + networkInterface.ipv6Addresses).mapNotNull { bytes ->
      try {
        java.net.InetAddress.getByAddress(bytes).hostAddress
      } catch (e: java.net.UnknownHostException) {
        null
      }
    }
  } ?: emptyList()