מאפיינים של צירוף מצלמות לאחר ההפעלה

אלה התכונות שאפשר להשתמש בהן אחרי הפעלת המכשיר:

OtaSoftwareUpdateRequestorTrait

המאפיין הזה מספק ממשק למעקב אחרי עדכון תוכנה OTA במצלמה. אחרי ההפעלה, המצלמה מתחילה את העדכון ומדווחת על המצב שלה לאפליקציה. כשהאפליקציה מקבלת את הסטטוס שהעדכון הסתיים, המצלמה יכולה להתחיל בשידור חי.

בדוגמת הקוד הבאה ובתיאור שלה אפשר לראות איך להשתמש בתכונה.

device.types.subscribe(OtaRequestorDeviceType.self)
  .receive(on: DispatchQueue.main)
  .compactMap { $0.traits[Matter.OtaSoftwareUpdateRequestorTrait.self] }
  .removeDuplicates()
  .timeout(.seconds(30), scheduler: DispatchQueue.main)
  .sink { [weak self] completion in
    guard let self else { return }
    Logger.debug("OTA trait subscription completed unexpectedly: \(completion).")
    if case .otaDownload = self.step {
      Logger.debug("Advancing to settings step due to OTA trait subscription completion")
      self.step = .settings
    }
  } receiveValue: { [weak self] otaTrait in
    Logger.debug(
      "OTA update is in progress, state: \(otaTrait.attributes.updateState), progress: \(otaTrait.attributes.updateStateProgress ?? 0)"
    )

    self.step = .otaDownload(
      state: otaTrait.attributes.updateState ?? .querying,
      progress: Double(otaTrait.attributes.updateStateProgress ?? 0) / 100.0)
    }
  }
  .store(in: &cancellables)
  • הרשמה למאפייני המכשיר: המודול נרשם למאפייני המכשיר, ובאופן ספציפי מחפש את OtaSoftwareUpdateRequestorTrait כדי להאזין למידע על עדכונים דרך האוויר (OTA).

  • הגדרת פסק זמן: הגדרת פסק זמן של 30 שניות. אם לא יתקבל עדכון מהמאפיין בפרק הזמן הזה, המינוי יסתיים.

  • טיפול בעדכוני סטטוס של OTA (receiveValue): כש-OtaSoftwareUpdateRequestorTrait מספק סטטוס חדש, הבלוק הזה מופעל. הוא מתעד את המצב הנוכחי ואת ההתקדמות של עדכון ה-OTA. לאחר מכן, המערכת מעדכנת את המצב הפנימי של האפליקציה (step) כדי לשקף את המידע החדש.

  • טיפול בסיום (sink): הבלוק הזה מופעל כשהמינוי מסתיים, ומתעד את הסיום. אם התהליך היה במצב הורדה, מצב האפליקציה עובר לשלב הבא (.settings).

  • ניהול מחזור החיים של המינוי: השורה .store(in: &cancellables) מוודאת שהמינוי מנוהל ומבוטל בצורה תקינה כשהאובייקט שבבעלותו מבוטל.

מידע נוסף זמין במאמר בנושא OtaSoftwareUpdateRequestorTrait.

ConfigurationDoneTrait

התכונה הזו לא נדרשת להפעלת המצלמה, אבל היא מאפשרת לאפליקציה לעקוב אחרי השלמת ההגדרה של המכשיר והפיכתו לשימושי, על ידי הגדרת מאפיין AppConfigurationComplete לערך true. המאפיין הזה צריך להיות אחרי OtaSoftwareUpdateRequestorTrait.

let configDoneTrait = try await device.types.get(OtaRequestorDeviceType.self)?.traits[Google.ConfigurationDoneTrait.self]
_ = try await configDoneTrait?.update {
  $0.setAppConfigurationComplete(true)
}