Argomenti MQTT di Device Shadow - 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à.

Argomenti MQTT di Device Shadow

Il servizio Device Shadow usa argomenti MQTT riservati per permettere alle applicazioni e ai dispositivi di ottenere, aggiornare o eliminare le informazioni sullo stato per un dispositivo (copia shadow).

Per la pubblicazione e la sottoscrizione negli argomenti delle copie shadow è richiesta l'autorizzazione basata su argomento. AWS IoT si riserva il diritto di aggiungere nuovi argomenti alla struttura di argomenti esistente. Per questo motivo, è consigliabile evitare le sottoscrizioni con caratteri jolly degli argomenti delle copie shadow. Ad esempio, evitate di abbonarvi ai filtri per argomenti, $aws/things/thingName/shadow/# perché il numero di argomenti che corrispondono a questo filtro potrebbe aumentare man mano AWS IoT che vengono introdotti nuovi argomenti shadow. Per esempi di messaggi pubblicati in questi argomenti, consulta Interazione con le copia shadow.

Le copie shadow possono essere con nome o senza nome (classiche). Gli argomenti utilizzati da ciascuno differiscono solo nel prefisso dell'argomento. Questa tabella mostra il prefisso dell'argomento utilizzato da ogni tipo di copia shadow.

ShadowTopicPrefix value Tipo di copia shadow
$aws/things/thingName/shadow Copia shadow senza nome (classica)
$aws/things/thingName/shadow/name/shadowName Copia shadow con nome

Per creare un argomento completo, selezionare ShadowTopicPrefix per il tipo di copia shadow a cui si desidera fare riferimento, sostituire thingName e shadowName se applicabile, con i relativi valori corrispondenti, quindi aggiungerlo con lo stub dell'argomento, come illustrato nelle sezioni seguenti.

Di seguito sono elencati gli argomenti MQTT usati per l'interazione con le copie shadow.

/get

Pubblica un messaggio vuoto in questo argomento per ottenere la copia shadow del dispositivo:

ShadowTopicPrefix/get

AWS IoT risponde pubblicando su uno o. /get/accepted /get/rejected

Policy di esempio

Di seguito è illustrato un esempio della policy necessaria:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:region:account:topic/$aws/things/thingName/shadow/get" ] } ] }

/get/accepted

AWS IoT pubblica un documento shadow di risposta a questo argomento quando restituisce l'ombra del dispositivo:

ShadowTopicPrefix/get/accepted

Per ulteriori informazioni, consulta Documenti sullo stato della risposta.

Policy di esempio

Di seguito è illustrato un esempio della policy necessaria:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:region:account:topicfilter/$aws/things/thingName/shadow/get/accepted" ] }, { "Effect": "Allow", "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:region:account:topic/$aws/things/thingName/shadow/get/accepted" ] } ] }

/get/rejected

AWS IoT pubblica un documento di risposta agli errori su questo argomento quando non può restituire l'ombra del dispositivo:

ShadowTopicPrefix/get/rejected

Per ulteriori informazioni, consulta Documenti sulla risposta di errore.

Policy di esempio

Di seguito è illustrato un esempio della policy necessaria:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:region:account:topicfilter/$aws/things/thingName/shadow/get/rejected" ] }, { "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:region:account:topic/$aws/things/thingName/shadow/get/rejected" ] } ] }

/update

Pubblica un documento sullo stato della richiesta in questo argomento per aggiornare la copia shadow del dispositivo:

ShadowTopicPrefix/update

Il corpo del messaggio contiene un documento di stato della richiesta parziale.

Un client che tenta di aggiornare lo stato di un dispositivo invierebbe un documento di stato della richiesta JSON con la proprietà desired come questa:

{ "state": { "desired": { "color": "red", "power": "on" } } }

Un dispositivo che aggiorna la sua copia shadow invierebbe un documento di stato della richiesta JSON con la proprietà reported, ad esempio:

{ "state": { "reported": { "color": "red", "power": "on" } } }

AWS IoT risponde pubblicando su o/update/accepted. /update/rejected

Policy di esempio

Di seguito è illustrato un esempio della policy necessaria:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:region:account:topic/$aws/things/thingName/shadow/update" ] } ] }

/update/delta

AWS IoT pubblica un documento sullo stato della risposta a questo argomento quando accetta una modifica per l'shadow del dispositivo e il documento sullo stato della richiesta contiene valori desired e reported stati diversi per:

ShadowTopicPrefix/update/delta

Il buffer dei messaggi contiene un /delta response state document.

Dettagli corpo del messaggio

  • Un messaggio pubblicato in update/delta include solo gli attributi desiderati diversi tra le sezioni desired e reported. Contiene tutti questi attributi, indipendentemente dal fatto che siano inclusi nel messaggio di aggiornamento corrente o siano già archiviati in AWS IoT. Gli attributi che non presentano differenze tra le sezioni desired e reported non sono inclusi.

  • Se un attributo è nella sezione reported, ma non ha un equivalente nella sezione desired, non viene incluso.

  • Se un attributo è nella sezione desired, ma non ha un equivalente nella sezione reported, viene incluso.

  • Se un attributo viene eliminato dalla sezione reported, ma è ancora presente nella sezione desired, viene incluso.

Policy di esempio

Di seguito è illustrato un esempio della policy necessaria:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:region:account:topicfilter/$aws/things/thingName/shadow/update/delta" ] }, { "Effect": "Allow", "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:region:account:topic/$aws/things/thingName/shadow/update/delta" ] } ] }

/update/accepted

AWS IoT pubblica un documento sullo stato della risposta a questo argomento quando accetta una modifica per l'shadow del dispositivo:

ShadowTopicPrefix/update/accepted

Il buffer dei messaggi contiene un /accepted response state document.

Policy di esempio

Di seguito è illustrato un esempio della policy necessaria:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:region:account:topicfilter/$aws/things/thingName/shadow/update/accepted" ] }, { "Effect": "Allow", "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:region:account:topic/$aws/things/thingName/shadow/update/accepted" ] } ] }

/update/documents

AWS IoT pubblica un documento di stato su questo argomento ogni volta che un aggiornamento dell'ombra viene eseguito correttamente:

ShadowTopicPrefix/update/documents

Il corpo del messaggio contiene un /documents response state document.

Policy di esempio

Di seguito è illustrato un esempio della policy necessaria:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:region:account:topicfilter/$aws/things/thingName/shadow/update/documents" ] }, { "Effect": "Allow", "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:region:account:topic/$aws/things/thingName/shadow/update/documents" ] } ] }

/update/rejected

AWS IoT pubblica un documento di risposta agli errori su questo argomento quando rifiuta una modifica all'ombra del dispositivo:

ShadowTopicPrefix/update/rejected

Il corpo del messaggio contiene un Documenti sulla risposta di errore.

Policy di esempio

Di seguito è illustrato un esempio della policy necessaria:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:region:account:topicfilter/$aws/things/thingName/shadow/update/rejected" ] }, { "Effect": "Allow", "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:region:account:topic/$aws/things/thingName/shadow/update/rejected" ] } ] }

/delete

Per eliminare una copia shadow di un dispositivo, pubblica un messaggio vuoto nell'argomento delete:

ShadowTopicPrefix/delete

Il contenuto del messaggio viene ignorato.

Si noti che l'eliminazione di una copia shadow non reimposta il suo numero di versione su 0.

AWS IoT risponde pubblicando su o. /delete/accepted /delete/rejected

Policy di esempio

Di seguito è illustrato un esempio della policy necessaria:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:region:account:topic/$aws/things/thingName/shadow/delete" ] } ] }

/delete/accepted

AWS IoT pubblica un messaggio su questo argomento quando viene eliminata l'ombra di un dispositivo:

ShadowTopicPrefix/delete/accepted

Policy di esempio

Di seguito è illustrato un esempio della policy necessaria:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:region:account:topicfilter/$aws/things/thingName/shadow/delete/accepted" ] }, { "Effect": "Allow", "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:region:account:topic/$aws/things/thingName/shadow/delete/accepted" ] } ] }

/delete/rejected

AWS IoT pubblica un documento di risposta agli errori su questo argomento quando non può eliminare l'ombra del dispositivo:

ShadowTopicPrefix/delete/rejected

Il corpo del messaggio contiene un Documenti sulla risposta di errore.

Policy di esempio

Di seguito è illustrato un esempio della policy necessaria:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:region:account:topicfilter/$aws/things/thingName/shadow/delete/rejected" ] }, { "Effect": "Allow", "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:region:account:topic/$aws/things/thingName/shadow/delete/rejected" ] } ] }