Caratteristiche post-commissioning per l'onboarding della videocamera

I tratti che possono essere utilizzati dopo il commissioning del dispositivo sono:

Tratto OtaSoftwareUpdateRequestor

Questo tratto fornisce un'interfaccia per monitorare un aggiornamento software OTA sul dispositivo della videocamera. Una volta eseguito il commissioning, la videocamera avvia l'aggiornamento e segnala il suo stato all'app. Una volta che l'app riceve lo stato di completamento dell'aggiornamento software, la videocamera può iniziare lo streaming live.

Il seguente codice campione e la spiegazione mostrano come utilizzare il tratto.

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
    }
}
  • Timeout: withTimeout impone una durata massima (OTA_TIMEOUT_MS) per il processo di monitoraggio. Se l'aggiornamento non viene completato entro questo periodo di tempo, si verifica un timeout.

  • Osservazione delle modifiche dei tratti: l'operatore .distinctUntilChanged() garantisce che il codice successivo nella catena reagisca solo quando lo stato del tratto cambia effettivamente, il che lo rende più efficiente del polling costante.

  • Elaborazione fino al completamento: l'operatore .transformWhile continua a elaborare gli aggiornamenti finché l'OTA updateState non è uno stato terminale (ad esempio successo o errore).

  • Raccolta dello stato: per ogni modifica dello stato, viene eseguito il blocco .collect per aggiornare le variabili updateState e updateStateProgress con gli ultimi valori del tratto.

Per ulteriori informazioni, consulta il OtaSoftwareUpdateRequestor riferimento del tratto.

Tratto ConfigurationDone

Questo tratto non è obbligatorio per l'attivazione della videocamera, ma consente all'app di monitorare quando il dispositivo è completamente configurato e utilizzabile impostando l'attributo AppConfigurationComplete su true. Questo tratto deve essere utilizzato dopo il tratto OtaSoftwareUpdateRequestor.

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