Ingira dados de coisas AWS IoT - AWS IoT SiteWise

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á.

Ingira dados de coisas AWS IoT

Saiba como ingerir dados AWS IoT SiteWise de uma frota de AWS IoT coisas usando sombras de dispositivos neste tutorial. As sombras do dispositivo são JSON objetos que armazenam informações sobre o estado atual de um AWS IoT dispositivo. Para obter mais informações, consulte Device shadow service no AWS IoT Developer Guide

Depois de concluir este tutorial, você pode configurar uma operação AWS IoT SiteWise com base em AWS IoT coisas. Ao usar AWS IoT coisas, você pode integrar sua operação com outros recursos úteis do AWS IoT. Por exemplo, você pode configurar AWS IoT recursos para realizar as seguintes tarefas:

  • Configure regras adicionais para transmitir dados para o AWS IoT EventsAmazon DynamoDB e outros. Serviços da AWS Para ter mais informações, consulte Regras no Guia do desenvolvedor do AWS IoT .

  • Indexe, pesquise e agregue os dados do seu dispositivo com o serviço de indexação de AWS IoT frotas. Para obter mais informações, consulte Serviço de indexação de frota no AWS IoT Guia do desenvolvedor.

  • Audite e proteja seus dispositivos com AWS IoT Device Defender. Para obter mais informações, consulte AWS IoT Device Defender no Guia do desenvolvedor do AWS IoT .

Neste tutorial, você aprende como ingerir dados das sombras AWS IoT dos dispositivos das coisas até os ativos em. AWS IoT SiteWise Para fazer isso, você cria uma ou mais AWS IoT coisas e executa um script que atualiza a sombra do dispositivo de cada coisa com CPU os dados de uso da memória. Neste tutorial, você usa CPU dados de uso da memória para imitar dados realistas do sensor. Em seguida, você cria uma regra com uma AWS IoT SiteWise ação que envia esses dados para um ativo AWS IoT SiteWise sempre que a sombra do dispositivo de uma coisa é atualizada. Para obter mais informações, consulte Ingira dados usando regras AWS IoT Core.

Pré-requisitos

Para concluir este tutorial, você precisará do seguinte:

  • Um Conta da AWS. Se você não tiver uma, consulte Configurar um Conta da AWS.

  • Um computador de desenvolvimento executando WindowsmacOS,Linux,, ou Unix para acessar AWS Management Console o. Para obter mais informações, consulte Conceitos básicos sobre o AWS Management Console.

  • Um usuário AWS Identity and Access Management (IAM) com permissões de administrador.

  • Python3 instalado no seu computador de desenvolvimento ou instalado no dispositivo que você deseja registrar como uma AWS IoT coisa.

Etapa 1: criar uma AWS IoT política

Neste procedimento, crie uma AWS IoT política que permita que suas AWS IoT coisas acessem os recursos usados neste tutorial.

Para criar uma AWS IoT política
  1. Faça login no AWS Management Console.

  2. Analise as AWS regiões em AWS IoT SiteWise que há suporte. Mude para uma dessas regiões compatíveis, se necessário.

  3. Navegue até o console do AWS IoT. Se um botão Connect device for exibido, escolha-o.

  4. No painel de navegação à esquerda, selecione Proteção e em seguida escolha Políticas.

  5. Escolha Criar.

  6. Insira um nome para a AWS IoT política (por exemplo,SiteWiseTutorialDevicePolicy).

  7. Em Documento de política, escolha inserir JSONa seguinte política no JSON formulário. Substituir region e account-id com sua região e ID da conta, como us-east-1 123456789012 e.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iot:Connect", "Resource": "arn:aws:iot:region:account-id:client/SiteWiseTutorialDevice*" }, { "Effect": "Allow", "Action": "iot:Publish", "Resource": [ "arn:aws:iot:region:account-id:topic/$aws/things/${iot:Connection.Thing.ThingName}/shadow/update", "arn:aws:iot:region:account-id:topic/$aws/things/${iot:Connection.Thing.ThingName}/shadow/delete", "arn:aws:iot:region:account-id:topic/$aws/things/${iot:Connection.Thing.ThingName}/shadow/get" ] }, { "Effect": "Allow", "Action": "iot:Receive", "Resource": [ "arn:aws:iot:region:account-id:topic/$aws/things/${iot:Connection.Thing.ThingName}/shadow/update/accepted", "arn:aws:iot:region:account-id:topic/$aws/things/${iot:Connection.Thing.ThingName}/shadow/delete/accepted", "arn:aws:iot:region:account-id:topic/$aws/things/${iot:Connection.Thing.ThingName}/shadow/get/accepted", "arn:aws:iot:region:account-id:topic/$aws/things/${iot:Connection.Thing.ThingName}/shadow/update/rejected", "arn:aws:iot:region:account-id:topic/$aws/things/${iot:Connection.Thing.ThingName}/shadow/delete/rejected" ] }, { "Effect": "Allow", "Action": "iot:Subscribe", "Resource": [ "arn:aws:iot:region:account-id:topicfilter/$aws/things/${iot:Connection.Thing.ThingName}/shadow/update/accepted", "arn:aws:iot:region:account-id:topicfilter/$aws/things/${iot:Connection.Thing.ThingName}/shadow/delete/accepted", "arn:aws:iot:region:account-id:topicfilter/$aws/things/${iot:Connection.Thing.ThingName}/shadow/get/accepted", "arn:aws:iot:region:account-id:topicfilter/$aws/things/${iot:Connection.Thing.ThingName}/shadow/update/rejected", "arn:aws:iot:region:account-id:topicfilter/$aws/things/${iot:Connection.Thing.ThingName}/shadow/delete/rejected" ] }, { "Effect": "Allow", "Action": [ "iot:GetThingShadow", "iot:UpdateThingShadow", "iot:DeleteThingShadow" ], "Resource": "arn:aws:iot:region:account-id:thing/SiteWiseTutorialDevice*" } ] }

    Essa política permite que seus AWS IoT dispositivos estabeleçam conexões e se comuniquem com sombras de dispositivos usando MQTT mensagens. Para obter mais informações sobre MQTT mensagens, consulte O que éMQTT? . Para interagir com as sombras do dispositivo, suas AWS IoT coisas publicam e recebem MQTT mensagens sobre tópicos que começam com$aws/things/thing-name/shadow/. Essa política incorpora uma variável de política conhecida como${iot:Connection.Thing.ThingName}. Essa variável substitui o nome da coisa conectada em cada tópico. A iot:Connect declaração define limitações sobre quais dispositivos podem estabelecer conexões, garantindo que a variável de política thing só possa substituir nomes começando comSiteWiseTutorialDevice.

    Para obter mais informações, consulte Thing policy variables in the AWS IoT Developer Guide.

    nota

    Essa política se aplica a coisas cujos nomes começam com SiteWiseTutorialDevice. Para usar um nome diferente para as coisas, é necessário atualizar a política de acordo.

  8. Escolha Criar.

Etapa 2: criar e configurar qualquer AWS IoT coisa

Neste procedimento, você cria e configura qualquer AWS IoT coisa. Você pode designar seu computador de desenvolvimento como uma AWS IoT coisa. À medida que você progride, lembre-se de que os princípios que você está aprendendo aqui podem ser aplicados a projetos reais. Você tem a flexibilidade de criar e configurar AWS IoT coisas em qualquer dispositivo capaz de executar um AWS IoT SDK, inclusive AWS IoT Greengrass gratuitoRTOS. Para obter mais informações, consulte AWS IoT SDKso Guia do AWS IoT desenvolvedor.

Para criar e configurar qualquer AWS IoT coisa
  1. Abra uma linha de comando e execute o comando a seguir a fim de criar um diretório para este tutorial.

    mkdir iot-sitewise-rule-tutorial cd iot-sitewise-rule-tutorial
  2. Execute o comando a seguir a fim de criar um diretório para os certificados da coisa.

    mkdir device1

    Se você estiver criando coisas adicionais, incremente o número no nome do diretório de acordo para manter o controle de quais certificados pertencem a qual coisa.

  3. Navegue até o console do AWS IoT.

  4. No painel de navegação esquerdo, escolha Todos os dispositivos na seção Gerenciar. Então, selecione Things (Coisas).

  5. Se uma caixa de diálogo You don’t have any things yet (Você ainda não tem coisas), selecione Create a thing (Criar uma coisa). De outro modo, selecione Criar coisas.

  6. Na página Criar coisas, escolha Criar uma única coisa e em seguida escolha Próximo.

  7. Na página Especificar propriedades do item, insira um nome para o item AWS IoT (por exemplo,SiteWiseTutorialDevice1) e escolha Avançar. Se você estiver criando coisas adicionais, incremente o número no nome da coisa de acordo.

    Importante

    O nome da coisa deve corresponder ao nome usado na política que você criou na Etapa 1: Criação de uma AWS IoT política. Caso contrário, seu dispositivo não conseguirá se conectar AWS IoT a.

  8. Na página Configurar certificado do dispositivo - opcional, selecione Gerar automaticamente um novo certificado (recomendado) e escolha Avançar. Os certificados AWS IoT permitem identificar seus dispositivos com segurança.

  9. Na página Anexar políticas ao certificado - opcional, selecione a política que você criou na Etapa 1: Criando uma AWS IoT política e escolha Criar coisa.

  10. Na caixa de diálogo Baixar certificados e chaves, faça o seguinte:

    1. Selecione os links de Download (Fazer download) para fazer download do certificado, da chave pública de da chave privada da coisa. Salve todos os três arquivos no diretório criado para os certificados da coisa (por exemplo, iot-sitewise-rule-tutorial/device1).

      Importante

      Essa é a única vez que você pode fazer download do certificado e das chaves da coisa. Eles são necessário para que o dispositivo possa se conectar ao AWS IoT.

    2. Escolha o link de Download para baixar um certificado CA raiz. Salve o certificado CA em iot-sitewise-rule-tutorial. Recomendamos fazer download do Amazon Root CA 1.

  11. Selecione Done (Concluído).

Agora você registrou AWS IoT alguma coisa no seu computador. Execute uma das próximas etapas a seguir:

  • Continue com a Etapa 3: Criar um modelo de ativo de dispositivo sem criar AWS IoT coisas adicionais. É possível concluir este tutorial com somente uma coisa.

  • Reputa as etapas nesta seção em outro computador ou dispositivo para criar mais coisas do AWS IoT . Para este tutorial, recomendamos que você siga essa opção para poder ingerir dados exclusivos CPU e de uso de memória de vários dispositivos.

  • Reputa as etapas desta seção no mesmo dispositivo (o computador) para criar mais coisas do AWS IoT . Cada AWS IoT coisa recebe dados semelhantes CPU e de uso de memória do seu computador, então use essa abordagem para demonstrar a ingestão de dados não exclusivos de vários dispositivos.

Etapa 3: criar um modelo de ativo de dispositivo

Neste procedimento, você cria um modelo de ativo AWS IoT SiteWise para representar seus dispositivos que transmitem CPU e usam dados de uso de memória. Para processar dados em ativos que representam grupos de dispositivos, os modelos de ativos impõem informações consistentes em vários ativos do mesmo tipo. Para obter mais informações, consulte Modelar ativos industriais.

Como criar um modelo de ativo que representa um dispositivo
  1. Navegue até o console do AWS IoT SiteWise.

  2. No painel de navegação à esquerda, selecione Modelos.

  3. Escolha Criar modelo.

  4. Em Detalhes do modelo, insira um nome para seu modelo. Por exemplo, SiteWise Tutorial Device Model.

  5. Em Measurement definitions (Definições de medição), faça o seguinte:

    1. Em Nome, insira CPU Usage.

    2. Em Unidade, insira %.

    3. Deixe o Data type (Tipo de dados) como Double (Duplo).

    As propriedades de medição representam os fluxos de dados brutos de um dispositivo. Para obter mais informações, consulte Defina fluxos de dados do equipamento (medições).

  6. Selecione Adicionar medição para adicionar uma segunda propriedade de medição.

  7. Na segunda linha, em Measurement definitions (Definições da medição), faça o seguinte:

    1. Em Nome, insira Memory Usage.

    2. Em Unidade, insira %.

    3. Deixe o Data type (Tipo de dados) como Double (Duplo).

  8. Em Metric definitions (Definições de métrica), faça o seguinte:

    1. Em Nome, insira Average CPU Usage.

    2. Em Formula (Fórmula), insira avg(CPU Usage). Selecione CPU Usage na lista de preenchimento automático quando ela for exibida.

    3. Em Time interval (Intervalo de tempo), insira 5 minutes.

    As propriedades da métrica definem cálculos de agregação que processam todos os pontos de dados de entrada em um intervalo e produzem um único ponto de dados por intervalo. Essa propriedade métrica calcula o CPU uso médio de cada dispositivo a cada 5 minutos. Para obter mais informações, consulte Dados agregados de propriedades e outros ativos (métricas).

  9. Selecione Adicionar métrica para adicionar uma segunda propriedade de métrica.

  10. Na segunda linha, em Metric definitions (Definições de métrica), faça o seguinte:

    1. Em Nome, insira Average Memory Usage.

    2. Em Formula (Fórmula), insira avg(Memory Usage). Selecione Memory Usage na lista de preenchimento automático quando ela for exibida.

    3. Em Time interval (Intervalo de tempo), insira 5 minutes.

    Esta propriedade da métrica calcula o uso médio da memória de cada dispositivo a cada cinco minutos.

  11. (Opcional) Adicione outras métricas que você esteja interessado em calcular de acordo com o dispositivo. Algumas funções interessantes incluem min e max. Para obter mais informações, consulte Use expressões de fórmula. Na In Etapa 4:, Criando um modelo de ativo de frota de dispositivo, você pode criar um ativo pai que pode calcular métricas usando dados de toda a sua frota de dispositivos.

  12. Escolha Criar modelo.

Etapa 4: criar um modelo de ativos de frota de dispositivos

Neste procedimento, você cria um modelo de ativo AWS IoT SiteWise para simbolizar sua coleção de dispositivos. Nesse modelo de ativos, você estabelece uma estrutura que permite vincular vários ativos de dispositivos a um ativo abrangente da frota. Depois disso, você descreve as métricas no modelo de ativos da frota para consolidar os dados de todos os ativos de dispositivos conectados. Essa abordagem fornece informações abrangentes sobre o desempenho coletivo de toda a sua frota.

Como criar um modelo de ativo que representa uma frota de dispositivos
  1. Navegue até o console do AWS IoT SiteWise.

  2. No painel de navegação à esquerda, selecione Modelos.

  3. Escolha Criar modelo.

  4. Em Detalhes do modelo, insira um nome para seu modelo. Por exemplo, SiteWise Tutorial Device Fleet Model.

  5. Em Hierarchy definitions (Definições de hierarquia), faça o seguinte:

    1. Em Hierarchy name (Nome da hierarquia), insira Device.

    2. Em Hierarchy model (Modelo da hierarquia), escolha o modelo de ativo do dispositivo (SiteWise Tutorial Device Model).

    Uma hierarquia define uma relação entre um modelo de ativo pai (frota) e um modelo de ativo filho (dispositivo). Os ativos pai podem acessar os dados de propriedade dos ativos filhos. Ao criar ativos posteriormente, é necessário associar ativos filhos a ativos pai de acordo com uma definição de hierarquia no modelo de ativo pai. Para obter mais informações, consulte Definir hierarquias de modelos de ativos.

  6. Em Metric definitions (Definições de métrica), faça o seguinte:

    1. Em Nome, insira Average CPU Usage.

    2. Em Formula (Fórmula), insira avg(Device | Average CPU Usage). Quando a lista de preenchimento automático for exibida, selecione Device para escolher uma hierarquia e selecione Average CPU Usage para escolher a métrica do ativo do dispositivo criado anteriormente.

    3. Em Time interval (Intervalo de tempo), insira 5 minutes.

    Essa propriedade métrica calcula o CPU uso médio de todos os ativos do dispositivo associados a um ativo da frota por meio da Device hierarquia.

  7. Selecione Adicionar métrica para adicionar uma segunda propriedade de métrica.

  8. Na segunda linha, em Metric definitions (Definições de métrica), faça o seguinte:

    1. Em Nome, insira Average Memory Usage.

    2. Em Formula (Fórmula), insira avg(Device | Average Memory Usage). Quando a lista de preenchimento automático for exibida, selecione Device para escolher uma hierarquia e selecione Average Memory Usage para escolher a métrica do ativo do dispositivo criado anteriormente.

    3. Em Time interval (Intervalo de tempo), insira 5 minutes.

    Essa propriedade da métrica calcula o uso médio da memória de todos os ativos de dispositivo associados a um ativo de frota por meio da hierarquia Device.

  9. (Opcional) Adicione outras métricas que você esteja interessado em calcular em toda a frota de dispositivos.

  10. Escolha Criar modelo.

Etapa 5: criar e configurar um ativo de dispositivo

Neste procedimento, você gera um ativo de dispositivo baseado em seu modelo de ativo de dispositivo. Depois, defina aliases de propriedade para cada propriedade de medição. Um alias de propriedade é uma string exclusiva que identifica uma propriedade do ativo. Posteriormente, você pode identificar uma propriedade para upload de dados usando os aliases em vez do ID do ativo e do ID da propriedade. Para obter mais informações, consulte Mapeie fluxos de dados industriais para propriedades de ativos.

Como criar um ativo de dispositivo e definir aliases de propriedade
  1. Navegue até o console do AWS IoT SiteWise.

  2. No painel de navegação à esquerda, escolha Ativos.

  3. Escolha Criar ativo.

  4. Em Informações do modelo, escolha o modelo de ativo do seu dispositivo, SiteWise Tutorial Device Model.

  5. Em Informações do ativo, insira um nome para seu ativo. Por exemplo, SiteWise Tutorial Device 1.

  6. Escolha Criar ativo.

  7. No novo ativo de dispositivo, selecione Editar.

  8. Em CPU Usage, insira /tutorial/device/SiteWiseTutorialDevice1/cpu como o alias da propriedade. Você inclui o nome da AWS IoT coisa no alias da propriedade para poder ingerir dados de todos os seus dispositivos usando uma única AWS IoT regra.

  9. Em Memory Usage, insira /tutorial/device/SiteWiseTutorialDevice1/memory como o alias da propriedade.

  10. Escolha Salvar.

Se você criou várias AWS IoT coisas anteriormente, repita as etapas de 3 a 10 para cada dispositivo e incremente o número no nome do ativo e nos aliases da propriedade de acordo. Por exemplo, o nome de ativo do segundo dispositivo deve ser SiteWise Tutorial Device 2 e os aliases de suas propriedades devem ser /tutorial/device/SiteWiseTutorialDevice2/cpu e /tutorial/device/SiteWiseTutorialDevice2/memory.

Etapa 6: criar e configurar um ativo de frota de dispositivos

Neste procedimento, você forma um ativo de frota de dispositivos derivado do seu modelo de ativos de frota de dispositivos. Em seguida, você vincula seus ativos individuais do dispositivo ao ativo da frota. Essa associação permite que as propriedades métricas do ativo da frota compilem e analisem dados de vários dispositivos. Esses dados fornecem uma visão consolidada do desempenho coletivo de toda a frota.

Como criar um ativo de frota de dispositivos e associar ativos de dispositivo
  1. Navegue até o console do AWS IoT SiteWise.

  2. No painel de navegação à esquerda, escolha Ativos.

  3. Escolha Criar ativo.

  4. Em Modelo de informação, escolha o modelo de ativo da frota do dispositivo, SiteWise Tutorial Device Fleet Model.

  5. Em Informações do ativo, insira um nome para seu ativo. Por exemplo, SiteWise Tutorial Device Fleet 1.

  6. Escolha Criar ativo.

  7. No novo ativo de frota de dispositivos, selecione Editar.

  8. Em Ativos associados a esse ativo, escolha Adicionar ativo associado e faça o seguinte:

    1. Em Hierarchy (Hierarquia), selecione Device. Essa hierarquia identifica a relação hierárquica entre o dispositivo e os ativos da frota de dispositivos. Você definiu essa hierarquia no modelo de ativo de frota de dispositivos anteriormente neste tutorial.

    2. Em Asset (Ativo), selecione o ativo do dispositivo, SiteWise Tutorial Device 1.

  9. (Opcional) Se você criou vários ativos de dispositivo anteriormente, repita as etapas de 8 a 10 para cada ativo de dispositivo criado.

  10. Escolha Salvar.

    Agora você deve ver os ativos do dispositivo organizados como uma hierarquia.

Etapa 7: criar uma regra no AWS IoT Core para enviar dados aos ativos do dispositivo

Neste procedimento, você estabelece uma regra em AWS IoT Core. A regra foi criada para interpretar as mensagens de notificação das sombras do dispositivo e transmitir os dados para os ativos do seu dispositivo em AWS IoT SiteWise.Cada vez que a sombra do seu dispositivo é atualizada, AWS IoT envia uma MQTT mensagem. Você pode criar uma regra que age quando as sombras do dispositivo mudam com base na MQTT mensagem. Nesse caso, o objetivo é lidar com a mensagem de atualização, extrair os valores da propriedade e transmiti-los aos ativos do seu dispositivo em AWS IoT SiteWise.

Para criar uma regra com uma AWS IoT SiteWise ação
  1. Navegue até o console do AWS IoT.

  2. No painel de navegação à esquerda, escolha Roteamento de mensagens e Regras.

  3. Escolha Criar Regra.

  4. Insira um nome e uma descrição para a sua regra e selecione Avançar.

  5. Insira a seguinte SQL declaração e escolha Avançar.

    SELECT * FROM '$aws/things/+/shadow/update/accepted' WHERE startsWith(topic(3), "SiteWiseTutorialDevice")

    Essa instrução de consulta de regra funciona, pois o serviço de sombra do dispositivo publica atualizações de sombra em $aws/things/thingName/shadow/update/accepted. Para obter mais informações sobre sombras de dispositivos, consulte Device shadow service no AWS IoT Developer Guide.

    Na cláusula WHERE, essa instrução de consulta de regra usa a função topic(3) para obter o nome da coisa do terceiro segmento do tópico. Depois, a instrução exclui os dispositivos com nomes que não correspondem aos dos dispositivos do tutorial. Para obter mais informações sobre AWS IoT SQL, consulte a AWS IoT SQLreferência no Guia do AWS IoT desenvolvedor.

  6. Em Ações de regra, escolha Enviar dados de mensagem para propriedades do ativo em AWS IoT SiteWise e faça o seguinte:

    1. Selecione By property alias (Por alias da propriedade).

    2. Em Property alias (Alias da propriedade), insira /tutorial/device/${topic(3)}/cpu.

      A ${...} sintaxe é um modelo de substituição. AWS IoT avalia o conteúdo dentro das chaves. Esse modelo de substituição extrai o nome da coisa do tópico para criar um alias exclusivo para cada coisa. Para obter mais informações, consulte Modelos de substituição no Guia do desenvolvedor do AWS IoT .

      nota

      Como uma expressão em um modelo de substituição é avaliado separadamente da instrução SELECT, não é possível usar um modelo de substituição para fazer referência a um alias criado usando uma cláusula AS. Você pode fazer referência somente às informações presentes na carga original, além das funções e dos operadores compatíveis.

    3. Em ID de entrada - opcional, insira ${concat(topic(3), "-cpu-", floor(state.reported.timestamp))}.

      A entrada identifica de IDs forma exclusiva cada tentativa de entrada de valor. Se uma entrada retornar um erro, será possível encontrar o ID da entrada na saída do erro a fim de solucionar o problema. O modelo de substituição nesse ID de entrada combina o nome da coisa e o time stamp informado do dispositivo. Por exemplo, o ID da entrada resultante poderia ser SiteWiseTutorialDevice1-cpu-1579808494.

    4. Em Time in seconds (Tempo em segundos), insira ${floor(state.reported.timestamp)}.

      Esse modelo de substituição calcula o tempo em segundos do time stamp informado do dispositivo. Neste tutorial, os dispositivos informam o time stamp em segundos em horário Unix epoch como um número de ponto flutuante.

    5. Em Offset in nanos - opcional, insira ${floor((state.reported.timestamp % 1) * 1E9)}.

      Esse modelo de substituição calcula o deslocamento em nanossegundos do tempo em segundos convertendo a parte decimal do time stamp informado do dispositivo.

      nota

      AWS IoT SiteWise requer que seus dados tenham um carimbo de data/hora atual na época do Unix. Se os dispositivos não informarem a hora com precisão, você poderá obter a hora atual no mecanismo de regras do AWS IoT com time stamp(). Essa função informa o tempo em milissegundos, portanto, é necessário atualizar os parâmetros de tempo da ação de regra para os seguintes valores:

      • Em Time in seconds (Tempo em segundos), insira ${floor(timestamp() / 1E3)}.

      • Em Offset in nanos (Deslocamento em nanossegundos), insira ${(timestamp() % 1E3) * 1E6}.

    6. Em Data type (Tipo de dados), selecione Double (Duplo).

      Esse tipo de dados deve corresponder ao tipo de dados da propriedade de ativo definida no modelo de ativo.

    7. Em Valor, informe ${state.reported.cpu}. Nos modelos de substituição, você usa o . operador para recuperar um valor de dentro de uma JSON estrutura.

    8. Selecione Add entry (Adicionar entrada) para adicionar uma nova entrada à propriedade de uso de memória e conclua as seguintes etapas novamente para essa propriedade:

      1. Selecione By property alias (Por alias da propriedade).

      2. Em Property alias (Alias da propriedade), insira /tutorial/device/${topic(3)}/memory.

      3. Em ID de entrada - opcional, insira ${concat(topic(3), "-memory-", floor(state.reported.timestamp))}.

      4. Em Time in seconds (Tempo em segundos), insira ${floor(state.reported.timestamp)}.

      5. Em Offset in nanos - opcional, insira ${floor((state.reported.timestamp % 1) * 1E9)}.

      6. Em Data type (Tipo de dados), selecione Double (Duplo).

      7. Em Valor, informe ${state.reported.memory}.

    9. Em IAMFunção, escolha Criar nova função para criar uma IAM função para essa ação de regra. Essa função permite enviar dados AWS IoT para propriedades em seu ativo de frota de dispositivos e sua hierarquia de ativos.

    10. Forneça um nome de função e escolha Create role.

  7. (Opcional) Configure uma ação de erro que pode ser usada para solucionar problemas da regra. Para obter mais informações, consulte Solucionar problemas de uma regra ()AWS IoT SiteWise.

  8. Escolha Próximo.

  9. Revise as configurações do grupo de regras e selecione Criar para criar a regra.

Etapa 8: Executar o script do cliente do dispositivo

Neste tutorial, você não está usando um dispositivo real para relatar dados. Em vez disso, você executa um script para atualizar AWS IoT a sombra do dispositivo CPU e o uso da memória para imitar dados reais do sensor. Para executar o script, você deve primeiro instalar Python os pacotes necessários. Neste procedimento, você instala os Python pacotes necessários e, em seguida, executa o script do cliente do dispositivo.

Como configurar e executar o script do cliente do dispositivo
  1. Navegue até o console do AWS IoT.

  2. Na parte inferior do painel de navegação à esquerda, selecione Settings (Configurações).

  3. Salve o endpoint personalizado para uso com o script do cliente do dispositivo. Use esse endpoint para interagir com as sombras da coisa. Esse endpoint é exclusivo da conta na região atual.

    O endpoint personalizado deve ser semelhante ao exemplo a seguir.

    identifier.iot.region.amazonaws.com
  4. Abra uma linha de comando e execute o comando a seguir para navegar até o diretório do tutorial criado anteriormente.

    cd iot-sitewise-rule-tutorial
  5. Execute o comando a seguir para instalar o AWS IoT Device SDK for Python.

    pip3 install AWSIoTPythonSDK

    Para obter mais informações, consulte AWS IoT Device SDK for Python no Guia do desenvolvedor do AWS IoT .

  6. Execute o comando a seguir para instalar o psutil, um processo entre plataformas e uma biblioteca de utilitários do sistema.

    pip3 install psutil

    Para obter mais informações, consulte psutil no Python Package Index.

  7. Crie um arquivo chamado thing_performance.py no iot-sitewise-rule-tutorial diretório e copie o código Python a seguir no arquivo.

    import AWSIoTPythonSDK.MQTTLib as AWSIoTPyMQTT import json import psutil import argparse import logging import time # Configures the argument parser for this program. def configureParser(): parser = argparse.ArgumentParser() parser.add_argument( "-e", "--endpoint", action="store", required=True, dest="host", help="Your AWS IoT custom endpoint", ) parser.add_argument( "-r", "--rootCA", action="store", required=True, dest="rootCAPath", help="Root CA file path", ) parser.add_argument( "-c", "--cert", action="store", required=True, dest="certificatePath", help="Certificate file path", ) parser.add_argument( "-k", "--key", action="store", required=True, dest="privateKeyPath", help="Private key file path", ) parser.add_argument( "-p", "--port", action="store", dest="port", type=int, default=8883, help="Port number override", ) parser.add_argument( "-n", "--thingName", action="store", required=True, dest="thingName", help="Targeted thing name", ) parser.add_argument( "-d", "--requestDelay", action="store", dest="requestDelay", type=float, default=1, help="Time between requests (in seconds)", ) parser.add_argument( "-v", "--enableLogging", action="store_true", dest="enableLogging", help="Enable logging for the AWS IoT Device SDK for Python", ) return parser # An MQTT shadow client that uploads device performance data to AWS IoT at a regular interval. class PerformanceShadowClient: def __init__( self, thingName, host, port, rootCAPath, privateKeyPath, certificatePath, requestDelay, ): self.thingName = thingName self.host = host self.port = port self.rootCAPath = rootCAPath self.privateKeyPath = privateKeyPath self.certificatePath = certificatePath self.requestDelay = requestDelay # Updates this thing's shadow with system performance data at a regular interval. def run(self): print("Connecting MQTT client for {}...".format(self.thingName)) mqttClient = self.configureMQTTClient() mqttClient.connect() print("MQTT client for {} connected".format(self.thingName)) deviceShadowHandler = mqttClient.createShadowHandlerWithName( self.thingName, True ) print("Running performance shadow client for {}...\n".format(self.thingName)) while True: performance = self.readPerformance() print("[{}]".format(self.thingName)) print("CPU:\t{}%".format(performance["cpu"])) print("Memory:\t{}%\n".format(performance["memory"])) payload = {"state": {"reported": performance}} deviceShadowHandler.shadowUpdate( json.dumps(payload), self.shadowUpdateCallback, 5 ) time.sleep(args.requestDelay) # Configures the MQTT shadow client for this thing. def configureMQTTClient(self): mqttClient = AWSIoTPyMQTT.AWSIoTMQTTShadowClient(self.thingName) mqttClient.configureEndpoint(self.host, self.port) mqttClient.configureCredentials( self.rootCAPath, self.privateKeyPath, self.certificatePath ) mqttClient.configureAutoReconnectBackoffTime(1, 32, 20) mqttClient.configureConnectDisconnectTimeout(10) mqttClient.configureMQTTOperationTimeout(5) return mqttClient # Returns the local device's CPU usage, memory usage, and timestamp. def readPerformance(self): cpu = psutil.cpu_percent() memory = psutil.virtual_memory().percent timestamp = time.time() return {"cpu": cpu, "memory": memory, "timestamp": timestamp} # Prints the result of a shadow update call. def shadowUpdateCallback(self, payload, responseStatus, token): print("[{}]".format(self.thingName)) print("Update request {} {}\n".format(token, responseStatus)) # Configures debug logging for the AWS IoT Device SDK for Python. def configureLogging(): logger = logging.getLogger("AWSIoTPythonSDK.core") logger.setLevel(logging.DEBUG) streamHandler = logging.StreamHandler() formatter = logging.Formatter( "%(asctime)s - %(name)s - %(levelname)s - %(message)s" ) streamHandler.setFormatter(formatter) logger.addHandler(streamHandler) # Runs the performance shadow client with user arguments. if __name__ == "__main__": parser = configureParser() args = parser.parse_args() if args.enableLogging: configureLogging() thingClient = PerformanceShadowClient( args.thingName, args.host, args.port, args.rootCAPath, args.privateKeyPath, args.certificatePath, args.requestDelay, ) thingClient.run()
  8. Execute thing_performance.py na linha de comando com os seguintes parâmetros:

    • -n, --thingName – o nome da coisa, como SiteWiseTutorialDevice1.

    • -e, --endpoint — Seu AWS IoT endpoint personalizado que você salvou anteriormente neste procedimento.

    • -r, --rootCA — O caminho para seu certificado CA AWS IoT raiz.

    • -c, --cert — O caminho para seu AWS IoT certificado.

    • -k, --key — O caminho para sua AWS IoT chave privada de certificado.

    • -d, --requestDelay – (opcional) o tempo, em segundos, para esperar entre cada atualização de sombra do dispositivo. O padrão é de 1 segundo.

    • -v, --enableLogging – (opcional) se esse parâmetro estiver presente, o script imprimirá mensagens de depuração do AWS IoT Device SDK for Python.

    O comando deve ser semelhante ao exemplo a seguir.

    python3 thing_performance.py \ --thingName SiteWiseTutorialDevice1 \ --endpoint identifier.iot.region.amazonaws.com \ --rootCA AmazonRootCA1.pem \ --cert device1/thing-id-certificate.pem.crt \ --key device1/thing-id-private.pem.key

    Se você estiver executando o script para outras AWS IoT coisas, atualize o nome do item e o diretório do certificado adequadamente.

  9. Tente abrir e fechar programas em seu dispositivo para ver como o uso CPU e a memória mudam. O script imprime cada leitura CPU e o uso da memória. Se o script fizer upload de dados para o serviço de sombra do dispositivo com êxito, a saída do script deverá ser semelhante ao exemplo a seguir.

    [SiteWiseTutorialDevice1] CPU: 24.6% Memory: 85.2% [SiteWiseTutorialDevice1] Update request e6686e44-fca0-44db-aa48-3ca81726f3e3 accepted
  10. Siga estas etapas para verificar se o script está atualizando a sombra do dispositivo:

    1. Navegue até o console do AWS IoT.

    2. No painel de navegação à esquerda, selecione Todos os dispositivos e Coisas.

    3. Escolha sua coisa, SiteWiseTutorialDevice.

    4. Escolha a guia Sombras do dispositivo, escolha Sombra clássica e verifique se o estado da sombra se parece com o exemplo a seguir.

      { "reported": { "cpu": 24.6, "memory": 85.2, "timestamp": 1579567542.2835066 } }

      Se o estado de sombra da sua coisa estiver vazio ou não se parecer com o exemplo anterior, verifique se o script está sendo executado e conectado com êxito AWS IoT. Se o tempo limite do script persistir ao se conectar AWS IoT, verifique se sua política de coisas está configurada de acordo com este tutorial.

  11. Siga estas etapas para verificar se a ação da regra está enviando dados para o AWS IoT SiteWise:

    1. Navegue até o console do AWS IoT SiteWise.

    2. No painel de navegação à esquerda, escolha Ativos.

    3. Selecione a seta ao lado do ativo de frota de dispositivos (SiteWise Tutorial Device Fleet 1 1) para expandir sua hierarquia de ativos e selecione o ativo de dispositivo (SiteWise Tutorial Device 1).

    4. Selecione Measurements (Medidas).

    5. Verifique se as células de Latest value (Valor mais recente) têm valores para as propriedades CPU Usage e Memory Usage.

      Captura de tela com “Medidas” destacado.
    6. Se as propriedades CPU Usage e Memory Usage não tiverem os valores mais recentes, atualize a página. Se os valores não forem exibidos em alguns minutos, consulte Solucionar problemas de uma regra ()AWS IoT SiteWise.

Você concluiu este tutorial. Se quiser explorar visualizações dos dados em tempo real, você poderá configurar um portal no AWS IoT SiteWise Monitor. Para obter mais informações, consulte Monitore dados com AWS IoT SiteWise Monitor. Caso contrário, você pode pressionar CTRL+C no prompt de comando para interromper o script do cliente do dispositivo. É improvável que o programa Python envie mensagens suficientes para gerar cobranças, mas é uma melhor prática interromper o programa ao concluir.

Etapa 9: limpar os recursos após o tutorial

Depois de concluir o tutorial sobre a ingestão de dados de AWS IoT coisas, limpe seus recursos para evitar cobranças adicionais.

Para excluir ativos hierárquicos no AWS IoT SiteWise
  1. Navegue até o console do AWS IoT SiteWise.

  2. No painel de navegação à esquerda, escolha Ativos.

  3. Ao excluir ativos em AWS IoT SiteWise, você deve primeiro desassociá-los.

    Conclua as seguintes etapas para desassociar os ativos do dispositivo do ativo da frota de dispositivos:

    1. Escolha o seu ativo de frota de dispositivos ( SiteWise Tutorial Device Fleet 1).

    2. Selecione a opção Editar.

    3. Em Assets associated to this asset (Ativos associados a este ativo), selecione Disassociate (Desassociar) para cada ativo de dispositivo associado a esse ativo da frota de dispositivos.

    4. Escolha Salvar.

      Agora os ativos do dispositivo não estarão mais organizados como uma hierarquia.

  4. Escolha o ativo do dispositivo (SiteWise Tutorial Device 1).

  5. Escolha Excluir.

  6. Na caixa de diálogo de confirmação, insira Delete e selecione Delete (Excluir).

  7. Repita as etapas de 4 a 6 para cada ativo de dispositivo e para o ativo da frota de dispositivos (SiteWise Tutorial Device Fleet 1).

Para excluir modelos hierárquicos de ativos no AWS IoT SiteWise
  1. Navegue até o console do AWS IoT SiteWise.

  2. Caso ainda não tenha feito isso, exclua o dispositivo e os ativos da frota de dispositivos. Para obter mais informações, consulte o procedimento anterior. Não é possível excluir um modelo se você tem ativos que foram criados usando esse modelo.

  3. No painel de navegação à esquerda, selecione Modelos.

  4. Escolha o seu modelo de ativos da frota de dispositivos (SiteWise Tutorial Device Fleet Model).

    Ao excluir modelos de ativos hierárquicos, comece excluindo primeiro o modelo de ativo principal.

  5. Escolha Excluir.

  6. Na caixa de diálogo de confirmação, insira Delete e selecione Delete (Excluir).

  7. Repita as etapas de 4 a 6 para o modelo de ativo do dispositivo (SiteWise Tutorial Device Model).

Para desativar ou excluir uma regra no AWS IoT Core
  1. Navegue até o console do AWS IoT.

  2. No painel de navegação à esquerda, escolha Roteamento de mensagens e Regras.

  3. Selecione sua regra e escolha Excluir.

  4. Na caixa de diálogo de confirmação, insira o nome da regra e selecione Delete.