Attribute nach der Inbetriebnahme für das Onboarding von Kameras

Folgende Traits können nach der Inbetriebnahme des Geräts verwendet werden:

OtaSoftwareUpdateRequestor-Trait

Dieser Trait bietet eine Schnittstelle zum Überwachen eines OTA-Softwareupdates auf dem Kameragerät. Nach der Inbetriebnahme startet 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 Attribut 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
    }
}
  • Zeitüberschreitung: withTimeout erzwingt eine maximale Dauer (OTA_TIMEOUT_MS) für den Monitoringprozess. Wenn das Update nicht innerhalb dieses Zeitraums abgeschlossen wird, tritt ein Zeitüberschreitungsfehler auf.

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

  • Verarbeitung bis zum Abschluss: Der Operator .transformWhile verarbeitet Updates so lange, bis der OTA-Vorgang updateState einen Endstatus erreicht (z. B. „Erfolg“ oder „Fehler“).

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

Weitere Informationen findest du in der Referenz zum OtaSoftwareUpdateRequestor-Trait.

ConfigurationDone-Trait

Dieses Merkmal ist für die Kameraaktivierung nicht erforderlich, ermöglicht es der App jedoch, nachzuverfolgen, wann das Gerät vollständig eingerichtet und nutzbar ist, indem das Attribut AppConfigurationComplete auf true gesetzt wird. Dieses Merkmal sollte nach dem Merkmal OtaSoftwareUpdateRequestor verwendet werden.

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