คู่มืออุปกรณ์ Chime สำหรับ Android

ประเภทอุปกรณ์กริ่งพื้นฐานอาจใช้ลักษณะMatterที่อิงตามมาตรฐาน com.google.home.matter.standard.Chime หรือลักษณะเวอร์ชันที่กำหนดเองของ Google เอง com.google.home.google.Chime ซึ่งนอกเหนือจากความสามารถที่ระบุไว้ในมาตรฐานMatterแล้ว ยังรองรับกริ่งภายนอกด้วย อุปกรณ์กริ่งประตูอาจใช้ลักษณะ Identify ด้วย ซึ่งเป็นวิธีระบุอุปกรณ์กริ่งประตูด้วยภาพหรือเสียง

โปรดตรวจสอบการรองรับแอตทริบิวต์และคำสั่งสำหรับอุปกรณ์ก่อนที่จะใช้ฟีเจอร์หรือพยายามอัปเดตแอตทริบิวต์ ดูข้อมูลเพิ่มเติมได้ที่ควบคุมอุปกรณ์ใน Android

ประเภทอุปกรณ์ API สำหรับ Home ลักษณะ แอปตัวอย่าง Kotlin กรณีการใช้งาน

กริ่ง

ChimeDevice

home.matter.0000.types.0146

อุปกรณ์ที่เล่นเสียงได้จากเสียงที่ติดตั้งไว้ล่วงหน้าหลากหลายเสียง และมักใช้กับกริ่งประตู กริ่งประตูเสียง หรือกริ่งประตูแบบบันทึกวิดีโอได้

ลักษณะที่ต้องระบุ
     matter Chime

ลักษณะที่ไม่บังคับ
     Matter ระบุ
กริ่งประตู

ดูข้อมูลพื้นฐานเกี่ยวกับอุปกรณ์

   ติดตั้งใช้งานในแอปตัวอย่างสำหรับ Android   

ลักษณะ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}")
    }

การรองรับหลายพาร์ท

กริ่งอาจประกอบด้วยอุปกรณ์หลายประเภท รวมถึง Chime และลำโพง (ไม่บังคับ) นอกจากนี้ กริ่งบางรุ่นยังมี Thread Border Router (TBR) หากต้องการให้การรองรับครอบคลุมมากที่สุด แอปที่ใช้ Home API ซึ่ง ควบคุมกริ่งควรเขียนให้รองรับอุปกรณ์กริ่งแบบหลายส่วน ดูข้อมูลเพิ่มเติมได้ที่ อุปกรณ์แบบหลายพาร์ท

อุปกรณ์กริ่งประตูแบบหลายส่วนแต่ละเครื่องควรแสดงในแอปด้วยไทล์เดียว อุปกรณ์ Chime ควรเป็นอุปกรณ์หลัก และลำโพงย่อยควรเป็นส่วนหนึ่งของ Chime

ระดับเสียงของลำโพงควรปรากฏเป็นการตั้งค่าหลักของอุปกรณ์ Chime

การแมปเปิด/ปิด

สำหรับกริ่งที่มีทั้งประเภทอุปกรณ์กริ่งและลำโพง ควรแมปปุ่มเปิด/ปิดในแอปควบคุมกับแอตทริบิวต์ Enabled ของกริ่ง

ตามMatterข้อกำหนดของคลังอุปกรณ์ การตั้งค่าแอตทริบิวต์ Enabled ของลักษณะ False อาจทำหน้าที่เป็นสวิตช์ปิดเสียงส่วนกลางที่ระงับตัวบ่งชี้ที่มองเห็นได้และได้ยินทั้งหมด นอกเหนือจากการปิดใช้False

การสนับสนุนการทำงานอัตโนมัติ

ดังที่กล่าวไว้ก่อนหน้านี้ เนื่องจาก ChimeDevice อาจมีหลายส่วน เราจึงขอแนะนำให้นักพัฒนาแอปถือว่ากริ่งทั้งหมดเป็นอุปกรณ์แบบหลายส่วน และข้อแนะนำนี้ ยังคงใช้ได้ในกรณีของการทำงานอัตโนมัติที่ใช้กริ่ง

คุณใช้กริ่งในเงื่อนไขเริ่มต้นและการดำเนินการของการทำงานอัตโนมัติได้

อุปกรณ์ที่เป็นส่วนประกอบใดๆ ภายใต้อุปกรณ์ Chime หลักที่ใช้ในการ ระบบอัตโนมัติจะต้องอ้างอิงโดยใช้ AutomationPartPath

การทำงานอัตโนมัติต่อไปนี้แสดงวิธีสร้างการทำงานอัตโนมัติด้วย เสียงกริ่งหลายส่วนที่ใช้ลักษณะ Chime รวมถึงลำโพง ระบบจะทริกเกอร์การทำงานอัตโนมัติเมื่อเปิดประตูหน้า

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   
val lightConnectivity = dimmableLightDevice.metadata.sourceConnectivity.connectivityState

สถานะ PARTIALLY_ONLINE อาจสังเกตได้ในกรณี ของอุปกรณ์ประเภทผสมเมื่อไม่มีการเชื่อมต่ออินเทอร์เน็ต Matter ลักษณะมาตรฐานอาจยังคงออนไลน์อยู่เนื่องจากการกำหนดเส้นทางในพื้นที่ แต่ลักษณะที่อิงตามระบบคลาวด์จะออฟไลน์

รับที่อยู่ IP ของอุปกรณ์

หากต้องการค้นหาที่อยู่ IP ของอุปกรณ์ ให้ใช้แอตทริบิวต์ networkInterfaces ของลักษณะ GeneralDiagnostics ระบบจะแสดงที่อยู่เป็นอาร์เรย์ไบต์ ซึ่งคุณจัดรูปแบบเป็น สตริง 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()