Attribute nach der Inbetriebnahme für das Onboarding von Kameras

Folgende Traits können verwendet werden, nachdem das Gerät in Betrieb genommen wurde:

Trait „OtaSoftwareUpdateRequestor“

Dieses Trait bietet eine Schnittstelle zum Überwachen eines OTA- Softwareupdates auf dem Kameragerät. Nach der Inbetriebnahme initiiert die Kamera das Update und meldet ihren Status an die App. Sobald die App den Status erhält, dass das Softwareupdate abgeschlossen ist, kann die Kamera mit dem Livestreaming beginnen.

Der folgende Beispielcode und die Erläuterung zeigen, wie das Trait verwendet werden kann.

withTimeout(OTA_TIMEOUT_MS) {
  device.type(OtaRequestorDevice)
    .mapNotNull { it?.trait(OtaSoftwareUpdateRequestor) }
    .distinctUntilChanged()
    .transformWhile { trait ->
      emit(trait)
      !isTerminalState(trait.updateState)
    }
    .collect { trait ->
      updateState = trait.updateState
      updateStateProgress = trait.updateStateProgress
    }
}
  • Zeitlimit: withTimeout erzwingt eine maximale Dauer (OTA_TIMEOUT_MS) für den Überwachungsprozess. Wenn das Update nicht innerhalb dieser Zeit abgeschlossen wird, tritt ein Zeitlimitfehler auf.

  • Trait-Änderungen beobachten: Der Operator .distinctUntilChanged() sorgt dafür, dass der nachfolgende Code in der Kette nur reagiert, wenn sich der Status des Traits tatsächlich ändert. Das ist effizienter als das ständige Abrufen.

  • Verarbeitung bis zum Abschluss: Der Operator .transformWhile verarbeitet Updates so lange, bis der updateState des OTA keinen Endstatus mehr hat (z. B. „Erfolg“ oder „Fehler“).

  • Status erfassen: Bei jeder Statusänderung wird der .collect Block ausgeführt um die updateState und updateStateProgress Variablen mit den neuesten Werten aus dem Trait zu aktualisieren.

Weitere Informationen finden Sie in der OtaSoftwareUpdateRequestor Referenz zum Trait.

Trait „ConfigurationDone“

Dieses Trait ist für die Kameraaktivierung nicht erforderlich, ermöglicht der App aber, zu verfolgen, wann das Gerät vollständig eingerichtet und einsatzbereit ist. Dazu wird das Attribut AppConfigurationComplete auf true gesetzt. Dieses Trait sollte nach dem Trait OtaSoftwareUpdateRequestor verwendet werden.

device.trait(ConfigurationDone).first().update { setAppConfigurationComplete(true) }