As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
AWS IoT Serviço Device Shadow
O serviço AWS IoT Device Shadow adiciona sombras aos objetos AWS IoT físicos. As sombras podem disponibilizar o estado de um dispositivo para aplicativos e outros serviços, independentemente de o dispositivo estar conectado AWS IoT ou não. AWS IoT objetos físicos podem ter várias sombras nomeadas para que sua solução de IoT tenha mais opções para conectar seus dispositivos a outros aplicativos e serviços.
AWS IoT objetos de coisas não têm sombras até serem criados explicitamente. As sombras podem ser criadas, atualizadas e excluídas usando o AWS IoT console. Dispositivos, outros clientes web e serviços podem criar, atualizar e excluir sombras usando MQTT e os MQTTtópicos reservados, HTTP usando o Device Shadow REST API e o AWS CLI for AWS IoT
Usar shadows
As sombras fornecem um armazenamento de dados confiável para dispositivos, aplicativos e outros serviços na nuvem para compartilhamento de dados. Eles permitem que dispositivos, aplicativos e outros serviços na nuvem se conectem e desconectem sem perder o estado de um dispositivo.
Enquanto dispositivos, aplicativos e outros serviços em nuvem estão conectados AWS IoT, eles podem acessar e controlar o estado atual de um dispositivo por meio de suas sombras. Por exemplo, um aplicativo pode solicitar uma alteração no estado de um dispositivo atualizando uma sombra. AWS IoT publica uma mensagem que indica a alteração no dispositivo. O dispositivo recebe essa mensagem, atualiza seu estado de forma correspondente e publica uma mensagem com o estado atualizado. O serviço Sombra do Dispositivo reflete esse estado atualizado na sombra correspondente. O aplicativo pode se inscrever na atualização da sombra ou consultar a sombra para saber seu estado atual.
Quando um dispositivo fica off-line, um aplicativo ainda pode se comunicar com AWS IoT as sombras do dispositivo. Quando o dispositivo se reconecta, ele recebe o estado atual de suas sombras para que possa atualizar seu estado de forma correspondente a elas, e possa publicar uma mensagem com seu estado atualizado. Da mesma forma, quando o estado do dispositivo muda enquanto ele está offline, o dispositivo mantém a sombra atualizada para que o aplicativo possa consultar as sombras para saber o estado atual quando ele se reconectar.
Se seus dispositivos ficam offline com frequência e você deseja configurá-los para receber mensagens delta após se reconectarem, você pode usar o atributo de sessão persistente. Para obter mais informações sobre o período de expiração da sessão persistente, consulte Período de expiração da sessão persistente.
Optar por usar sombras nomeadas ou sem nome
O serviço Sombra do Dispositivo oferece suporte a sombras nomeadas e sem nome ou clássicas. Um objeto pode ter várias sombras nomeadas e não mais do que uma sombra sem nome. O objeto também pode ter uma sombra nomeada reservada, que opera de forma semelhante a uma sombra nomeada, exceto que você não pode atualizar seu nome. Para obter mais informações, consulte Sombra nomeada reservada.
Um objeto de coisa pode ter sombras nomeadas e não nomeadas ao mesmo tempo; no entanto, o API uso para acessar cada uma é um pouco diferente, então talvez seja mais eficiente decidir qual tipo de sombra funcionaria melhor para sua solução e usar somente esse tipo. Para obter mais informações sobre o acesso API às sombras, consulteTópicos de sombra.
Com sombras nomeadas, você pode criar diferentes visualizações do estado de um objeto. Por exemplo, é possível dividir um objeto com muitas propriedades em sombras com grupos lógicos de propriedades, cada um identificado por seu nome de sombra. Também é possível limitar o acesso às propriedades agrupando-as em diferentes sombras e usando políticas para controlar o acesso. Para obter mais informações sobre políticas a serem usadas com sombras do dispositivos, consulte Ações, recursos e chaves de condição AWS IoT e AWS IoT Core políticas.
As sombras clássicas e sem nome são mais simples, mas um pouco mais limitadas do que as sombras nomeadas. Cada AWS IoT objeto pode ter apenas uma sombra sem nome. Se você espera que sua solução de IoT tenha uma necessidade limitada de dados de sombra, talvez essa seja a maneira como você quer começar a usar sombras. No entanto, se você espera adicionar sombras adicionais no futuro, considere usar sombras nomeadas desde o início.
A indexação de frota oferece suporte a sombras sem nome e sombras com nomes diferentes. Para acessar mais informações, consulte Gerenciar a indexação de frotas.
Acessar sombras
Cada sombra tem um MQTTtópico reservado HTTPURLque apóia as delete
ações get
update
, e na sombra.
As sombras usam documentos de JSON sombra para armazenar e recuperar dados. Um documento de sombra contém uma propriedade de estado que descreve estes aspectos do estado do dispositivo:
-
desired
Os aplicativos especificam os estados desejados das propriedades do dispositivo atualizando o objeto
desired
. -
reported
Os dispositivos relatam seu estado atual no objeto
reported
. -
delta
AWS IoT relata diferenças entre o estado desejado e o estado relatado no
delta
objeto.
Os dados armazenados em uma sombra são determinados pela propriedade de estado do corpo da mensagem da ação de atualização. As ações de atualização subsequentes podem modificar os valores de um objeto de dados existente e também adicionar e excluir chaves e outros elementos no objeto de estado da sombra. Para obter mais informações sobre como acessar sombras, consulte Usar sombras em dispositivos e Usar sombras em aplicativos e serviços.
Importante
A permissão para fazer solicitações de atualização deve ser limitada a aplicativos e dispositivos confiáveis. Isso impede que a propriedade de estado da sombra seja alterada inesperadamente. Caso contrário, os dispositivos e aplicativos que usam a sombra devem ser projetados para esperar que as chaves na propriedade de estado sejam alteradas.
Usar sombras em dispositivos, aplicativos e outros serviços na nuvem
O uso de sombras em dispositivos, aplicativos e outros serviços na nuvem requer consistência e coordenação entre todos eles. O serviço AWS IoT Device Shadow armazena o estado de sombra, envia mensagens quando o estado de sombra muda e responde às mensagens que mudam de estado. Os dispositivos, aplicativos e outros serviços na nuvem em sua solução de IoT devem gerenciar seu estado e mantê-lo consistente com o estado da sombra do dispositivo.
Os dados de estado de sombra são dinâmicos e podem ser alterados pelos dispositivos, aplicativos e outros serviços na nuvem com permissão para acessar a sombra. Por esse motivo, é importante considerar como cada dispositivo, aplicativo e outro serviço de nuvem interagirão com a sombra. Por exemplo:
-
Os dispositivos devem gravar somente na propriedade
reported
do estado de sombra ao comunicar dados de estado à sombra. -
Os aplicativos e outros serviços na nuvem devem gravar somente na propriedade
desired
ao comunicar solicitações de alteração de estado ao dispositivo por meio da sombra.
Importante
Os dados contidos em um objeto de dados de sombra são independentes de outras sombras e de outras propriedades do objeto, como os atributos de uma coisa e o conteúdo das MQTT mensagens que o dispositivo de um objeto pode publicar. No entanto, um dispositivo pode relatar os mesmos dados em MQTT tópicos e sombras diferentes, se necessário.
Um dispositivo compatível com várias sombras deve manter a consistência dos dados que ele relata nas diferentes sombras.
Ordem das mensagens
Não há garantia de que as mensagens do AWS IoT serviço chegarão ao dispositivo em qualquer ordem específica. O cenário a seguir mostra o que acontece nesse caso.
Documento de estado inicial:
{ "state": { "reported": { "color": "blue" } }, "version": 9, "timestamp": 123456776 }
Atualização 1:
{ "state": { "desired": { "color": "RED" } }, "version": 10, "timestamp": 123456777 }
Atualização 2:
{ "state": { "desired": { "color": "GREEN" } }, "version": 11, "timestamp": 123456778 }
Documento de estado final:
{ "state": { "reported": { "color": "GREEN" } }, "version": 12, "timestamp": 123456779 }
Isso resulta em duas mensagens delta:
{ "state": { "color": "RED" }, "version": 11, "timestamp": 123456778 }
{ "state": { "color": "GREEN" }, "version": 12, "timestamp": 123456779 }
O dispositivo pode receber essas mensagens fora de ordem. Como o estado nessas mensagens é cumulativo, um dispositivo pode descartar com segurança as mensagens que contêm um número da versão anterior ao que ele está rastreando. Se o dispositivo receber o delta para a versão 12 antes da versão 11, pele poderá descartar a mensagem da versão 11 com segurança.
Reduzir mensagens de shadow
Para reduzir o tamanho das mensagens-sombra enviadas ao seu dispositivo, defina uma regra que selecione somente os campos de que seu dispositivo precisa e republique a mensagem em um MQTT tópico que seu dispositivo esteja ouvindo.
A regra está especificada em JSON e deve ter a seguinte aparência:
{ "sql": "SELECT state, version FROM '$aws/things/+/shadow/update/delta'", "ruleDisabled": false, "actions": [ { "republish": { "topic": "${topic(3)}/delta", "roleArn": "arn:aws:iam:123456789012:role/my-iot-role" } } ] }
A SELECT declaração determina quais campos da mensagem serão republicados no tópico especificado. Um caractere curinga "+" é usado para corresponder a todos os nomes de shadow. A regra especifica que todas as mensagens correspondentes devem ser publicadas novamente no tópico especificado. Nesse caso, a função "topic()"
é usada para especificar o tópico no qual a publicação deverá ser refeita. O topic(3)
avalia o nome do objeto no tópico original. Para obter mais informações sobre como criar regras, consulte Regras para AWS IoT.