Utilizzo delle copie shadow in app e servizi - AWS IoT Core

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Utilizzo delle copie shadow in app e servizi

Questa sezione descrive come un'app o un servizio interagisce con il servizio AWS IoT Device Shadow. Questo esempio presuppone che l'app o il servizio interagisca solo con la copia shadow e, attraverso la copia shadow, con il dispositivo. Questo esempio non include alcuna operazione di gestione, ad esempio la creazione o l'eliminazione di copie shadow.

Questo esempio utilizza il servizio AWS IoT Device Shadow REST API per interagire con le ombre. A differenza dell'esempio utilizzato inUtilizzo delle copie shadow nei dispositivi, che utilizza un modello di comunicazione di pubblicazione/sottoscrizione, questo esempio utilizza il modello di comunicazione richiesta/risposta di. REST API Ciò significa che l'app o il servizio deve effettuare una richiesta prima di poter ricevere una risposta da. AWS IoT Uno svantaggio di questo modello, tuttavia, è che non supporta le notifiche. Se l'app o il servizio richiedono notifiche tempestive sulle modifiche dello stato del dispositivo, prendi in considerazione i WSS protocolli MQTT o MQTT over, che supportano il modello di comunicazione pubblica/sottoscrizione, come descritto in. Utilizzo delle copie shadow nei dispositivi

Importante

Assicurati che l'uso delle copie shadow da parte dell'app o del servizio sia coerente e supportato dalle implementazioni corrispondenti nei tuoi dispositivi. Considera, ad esempio, come vengono create, aggiornate ed eliminate le copie shadow e come vengono gestiti gli aggiornamenti nel dispositivo e nelle app o nei servizi che accedono alla copia shadow. Il progetto deve specificare chiaramente come lo stato del dispositivo viene aggiornato e segnalato e come le app e i servizi interagiscono con il dispositivo e le relative copie shadow.

Il valore REST API di un'URLombra con nome è:

https://endpoint/things/thingName/shadow?name=shadowName

e per una copia shadow senza nome è:

https://endpoint/things/thingName/shadow

dove:

endpoint

L'endpoint restituito dal comando: CLI

aws iot describe-endpoint --endpoint-type IOT:Data-ATS
thingName

Il nome dell'oggetto a cui appartiene la copia shadow è:

shadowName

Il nome della copia shadow con nome. Questo parametro non viene utilizzato con copie shadow senza nome.

Inizializzazione dell'app o del servizio in connessione a AWS IoT

Quando l'app si connette per la prima volta AWS IoT, dovrebbe inviare una HTTP GET richiesta alle URLs ombre che utilizza per ottenere lo stato attuale delle ombre che sta utilizzando. Ciò consente di sincronizzare l'app o il servizio con la copia shadow.

Lo stato di elaborazione cambia mentre l'app o il servizio è connesso a AWS IoT

Mentre l'app o il servizio è connesso AWS IoT, può interrogare periodicamente lo stato corrente inviando una HTTP GET richiesta sulle URLs ombre che utilizza.

Quando un utente finale interagisce con l'app o il servizio per modificare lo stato del dispositivo, l'app o il servizio può inviare una HTTP POST richiesta alle URLs ombre che utilizza per aggiornare lo desired stato dell'ombra. Questa richiesta restituisce la modifica che è stata accettata, ma potrebbe essere necessario interrogare l'ombra effettuando HTTP GET richieste finché il dispositivo non avrà aggiornato l'ombra con il suo nuovo stato.

Rilevamento di un dispositivo connesso

Per determinare se un dispositivo è attualmente connesso, includete una connected proprietà nel documento shadow e utilizzate un messaggio MQTT Last Will and Testament (LWT) per impostare la connected proprietà false se un dispositivo viene disconnesso a causa di un errore.

Nota

MQTTLWTi messaggi inviati ad argomenti AWS IoT riservati (argomenti che iniziano con $) vengono ignorati dal servizio AWS IoT Device Shadow. Tuttavia, vengono elaborati dai client sottoscritti e dal motore delle AWS IoT regole, pertanto sarà necessario creare un LWT messaggio da inviare a un argomento non riservato e una regola che ripubblichi il MQTT LWT messaggio come messaggio di aggiornamento shadow nell'argomento di aggiornamento riservato dello shadow,. ShadowTopicPrefix/update

Per inviare un LWT messaggio al servizio Device Shadow
  1. Crea una regola che ripubblichi il MQTT LWT messaggio sull'argomento riservato. L'esempio seguente è una regola che ascolta i messaggi sull'argomento my/things/myLightBulb/update e li ripubblica su $aws/things/myLightBulb/shadow/update.

    { "rule": { "ruleDisabled": false, "sql": "SELECT * FROM 'my/things/myLightBulb/update'", "description": "Turn my/things/ into $aws/things/", "actions": [ { "republish": { "topic": "$$aws/things/myLightBulb/shadow/update", "roleArn": "arn:aws:iam:123456789012:role/aws_iot_republish" } } ] } }
  2. Quando il dispositivo si connette AWS IoT, registra un LWT messaggio su un argomento non riservato affinché la regola di ripubblicazione lo riconosca. In questo esempio, tale argomento è my/things/myLightBulb/update e imposta la proprietà connessa su false.

    { "state": { "reported": { "connected":"false" } } }
  3. Dopo la connessione, il dispositivo pubblica un messaggio sul relativo argomento di aggiornamento shadow, $aws/things/myLightBulb/shadow/update, per segnalare lo stato corrente, che include l'impostazione della proprietà connected su true.

    { "state": { "reported": { "connected":"true" } } }
  4. Prima della disconnessione, il dispositivo pubblica un messaggio sul relativo argomento di aggiornamento shadow, $aws/things/myLightBulb/shadow/update, per segnalare lo stato più recente, che include l'impostazione della proprietà connected su false.

    { "state": { "reported": { "connected":"false" } } }
  5. Se il dispositivo si disconnette a causa di un errore, il broker di messaggi pubblica il AWS IoT messaggio del dispositivo per conto del LWT dispositivo. La regola di ripubblicazione rileva questo messaggio e pubblica il messaggio di aggiornamento shadow per aggiornare la proprietà connected del Device Shadow.