אפשר להטמיע את סוג המכשיר הבסיסי של Chime באמצעות התכונה הרגילה שמבוססת על Mattercom.google.home.matter.standard.Chime או באמצעות הגרסה המותאמת אישית של התכונה של Google, com.google.home.google.Chime, שתומכת בצלצולים חיצוניים בנוסף ליכולות שמפורטות בתקן Matter.
יכול להיות שמכשיר מנגנון צלצול יטמיע גם את מאפיין Identify, שמאפשר לזהות את מכשיר מנגנון צלצול באמצעות ראייה או סאונד.
לפני שמשתמשים בתכונות או מנסים לעדכן מאפיינים, תמיד צריך לבדוק אם המכשיר תומך במאפיינים ובפקודות. מידע נוסף זמין במאמר שליטה במכשירים ב-Android.
| Home APIs Device Type | מאפיינים | אפליקציה לדוגמה ב-Kotlin | תרחיש לדוגמה |
|---|---|---|---|
|
צלצול פעמונים
מכשיר שיכול להשמיע מגוון צלילים שהותקנו מראש, ובדרך כלל משתמשים בו עם פעמון דלת, פעמון דלת קולי או פעמון עם וידאו. |
מאפיינים נדרשים matter Chime |
Doorbell |
קבלת מידע בסיסי על מכשיר
הטמעה באפליקציה לדוגמה ל-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 APIs ששולטות במנגנוני צלצול צריכות להיות מותאמות למכשירים עם מנגנוני צלצול מרובי חלקים. מידע נוסף זמין במאמר בנושא מכשירים מרובי חלקים.
כל מכשיר עם מנגנון צלצול מורכב צריך להיות מיוצג באפליקציה על ידי משבצת אחת. מכשיר Chime צריך להיות המכשיר הראשי, ומכשיר Speaker לילדים צריך להיות חלק ממכשיר Chime.
עוצמת הקול של הרמקול צריכה להופיע כהגדרה ראשית במכשיר Chime.
מיפוי OnOff
במקרה של צלצול עם סוגי המכשירים Chime ו-Speaker, כפתור OnOff באפליקציית בקרה צריך להיות ממופה למאפיין Enabled של הצלצול.
בהתאם למפרט של Matter Device Library, הגדרת המאפיין Enabled של התכונה Chime לערך False עשויה, בנוסף להשבתת הצלצול, לפעול כמו מתג השתקה גלובלי שמשתיק את כל האינדיקטורים הקוליים והוויזואליים.
תמיכה בפעולות אוטומטיות
כמו שצוין קודם, מכיוון של-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()) } } }
מידע נוסף על אוטומציות באמצעות מכשירים מרובי חלקים זמין במאמר אוטומציות של מכשירים מרובי חלקים.
בדיקת החיבור של מכשיר
הקישוריות של מכשיר נבדקת ברמת סוג המכשיר, כי חלק מהמכשירים תומכים בכמה סוגים של מכשירים. המצב שמוחזר הוא שילוב של מצבי הקישוריות של כל המאפיינים במכשיר.
הטמעה באפליקציה לדוגמה ל-Androidval 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()