Use seu PC Windows ou Linux ou Mac como um AWS IoT dispositivo - AWS IoT Core

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

Use seu PC Windows ou Linux ou Mac como um AWS IoT dispositivo

Neste tutorial, você configurará um computador pessoal para uso com AWS IoT. Estas instruções são compatíveis com Macs e PCs com Windows e Linux. Para concluir este tutorial, você precisará instalar alguns softwares no seu computador. Se não quiser instalar software no seu computador, você pode tentar Criar um dispositivo virtual com o Amazon EC2 e instalar todos os softwares em uma máquina virtual.

Configurar seu computador pessoal

Para concluir este tutorial, será preciso um PC com Windows ou Linux ou de um Mac com conexão à Internet.

Antes de avançar para a próxima etapa, verifique se você pode abrir uma janela de linha de comando no computador. Em um PC com Windows, use cmd.exe. Em um PC com Linux ou em um Mac, use Terminal.

Instale o Git, o Python e o Device SDK para Python AWS IoT

Nesta seção, você instalará o Python e o AWS IoT Device SDK for Python em seu computador.

Instalar a versão mais recente do Git e do Python

Para baixar e instalar o Git e o Python em seu computador
  1. Verifique se você possui o Git já instalado no computador. Insira este comando na linha de comando.

    git --version

    Se o comando exibir a versão do Git, o Git está instalado e você pode avançar para a próxima etapa.

    Caso o comando exiba um erro, abra https://git-scm.com/download e instale o Git em seu computador.

  2. Verifique se você já possui o Python instalado. Insira o seguinte comando na linha de comando.

    python -V
    nota

    Se esse comando exibir um erro: Python was not found, pode ser que seu sistema operacional chame o executável Python v3.x como Python3. Nesse caso, substitua todas as instâncias de python com python3 e siga com o resto deste tutorial.

    Se o comando exibir a versão do Python, então o Python já está instalado. Este tutorial requer o Python v3.7 ou uma versão posterior.

  3. Se o Python já estiver instalado, você pode ignorar o restante das etapas desta seção. Se não estiver, então continue.

  4. Abra https://www.python.org/downloads/ e baixe o instalador no seu computador.

  5. Se o download não começar a instalação automaticamente, execute o programa baixado para instalar o Python.

  6. Verifique a instalação do Python.

    python -V

    Confirme se o comando exibe a versão do Python. Se a versão do Python não for exibida, tente baixar e instalar novamente.

Instale o AWS IoT Device SDK para Python

Para instalar o AWS IoT Device SDK para Python em seu computador
  1. Instale a v2 do AWS IoT Device SDK para Python.

    python3 -m pip install awsiotsdk
  2. Clone o repositório AWS IoT Device SDK for Python no diretório aws-iot-device-sdk -python-v2 do seu diretório inicial. Esse procedimento diz respeito ao diretório base dos arquivos que você está instalando como home.

    A localização efetiva do diretório home depende do seu sistema operacional.

    Linux/macOS

    Em macOS e Linux, o diretório home é ~.

    cd ~ git clone https://github.com/aws/aws-iot-device-sdk-python-v2.git
    Windows

    Em Windows, é possível encontrar o caminho do diretório home executando o seguinte comando na janela de cmd.

    echo %USERPROFILE% cd %USERPROFILE% git clone https://github.com/aws/aws-iot-device-sdk-python-v2.git
    nota

    Se você estiver usando PowerShell o Windows em vez decmd.exe, use o comando a seguir.

    echo $home

Para obter mais informações, consulte o repositório AWS IoT Device SDK for GitHub Python.

Preparar-se para executar os aplicativos de exemplo

Para preparar seu sistema para executar o aplicativo de exemplo
  • Crie o diretório certs. No diretório certs, copie a chave privada, o certificado do dispositivo e os arquivos do certificado CA raiz salvos ao criar e registrar o objeto em Crie AWS IoT recursos. Os nomes de cada arquivo no diretório de destino devem corresponder àqueles na tabela.

    Os comandos na próxima seção pressupõem que seus arquivos de chave e certificado estão armazenados em seu dispositivo, conforme mostrado nesta tabela.

    Linux/macOS

    Execute o seguinte comando para criar o subdiretório certs que você usará ao executar os aplicativos de exemplo.

    mkdir ~/certs

    No novo subdiretório, copie os arquivos para os caminhos de arquivo de destino exibidos na seguinte tabela.

    Nomes de arquivos de certificado

    Arquivo

    Caminho do arquivo

    Chave privada

    ~/certs/private.pem.key

    Certificado de dispositivo

    ~/certs/device.pem.crt

    Certificado CA raiz

    ~/certs/Amazon-root-CA-1.pem

    Execute o seguinte comando para listar os arquivos no diretório certs e compare-os com aqueles listados na tabela.

    ls -l ~/certs
    Windows

    Execute o seguinte comando para criar o subdiretório certs que você usará ao executar os aplicativos de exemplo.

    mkdir %USERPROFILE%\certs

    No novo subdiretório, copie os arquivos para os caminhos de arquivo de destino exibidos na seguinte tabela.

    Nomes de arquivos de certificado

    Arquivo

    Caminho do arquivo

    Chave privada

    %USERPROFILE%\certs\private.pem.key

    Certificado de dispositivo

    %USERPROFILE%\certs\device.pem.crt

    Certificado CA raiz

    %USERPROFILE%\certs\Amazon-root-CA-1.pem

    Execute o seguinte comando para listar os arquivos no diretório certs e compare-os com aqueles listados na tabela.

    dir %USERPROFILE%\certs

Configurar a política e executar o aplicativo de exemplo

Nesta seção, você configurará sua política e executará o script de exemplo pubsub.py encontrado no diretório aws-iot-device-sdk-python-v2/samples do AWS IoT Device SDK for Python. Este script mostra a maneira como seu dispositivo usa a biblioteca MQTT para publicar e assinar mensagens MQTT.

O aplicativo de exemplo pubsub.py assina um tópico, test/topic, publica 10 mensagens no tópico e exibe as mensagens à medida que elas são recebidas do agente de mensagens.

Para executar o script de exemplo pubsub.py, você precisa das seguintes informações:

Valores de parâmetros de aplicação

Parâmetro

Onde encontrar o valor

your-iot-endpoint
  1. No console do AWS IoT, no menu esquerdo, selecione Configurações.

  2. Na página Configurações, seu endpoint estará exibido na seção Endpoint de dados do dispositivo.

O your-iot-endpointvalor tem um formato de:endpoint_id-ats.iot.region.amazonaws.com, por exemplo,a3qj468EXAMPLE-ats.iot.us-west-2.amazonaws.com.

Antes de executar o script, certifique-se de que a política da suo objeto forneça permissões para o script de exemplo se conectar, assinar, publicar e receber.

Para encontrar e examinar o documento de política de um recurso de objeto
  1. No console do AWS IoT, na lista Objetos, localize o recurso de objeto que representa o seu dispositivo.

  2. Escolha o link Nome do recurso de objeto que representa o seu dispositivo para abrir a página de Detalhes do objeto.

  3. Na página Detalhes do objeto, na guia Certificados, selecione o certificado anexado ao recurso de objeto. Deve haver apenas um certificado na lista. Se houver mais de um, selecione o certificado cujos arquivos estão instalados no seu dispositivo e que serão usados para se conectar ao AWS IoT Core.

    Na página de detalhes do Certificado, na guia Políticas, selecione a política anexada ao certificado. Deve haver apenas uma. Caso haja mais de uma, repita a próxima etapa para cada uma delas para garantir que ao menos uma política conceda o acesso necessário.

  4. Na página de visão geral da Política, localize o editor JSON e selecione Editar documento de política para revisar e editar o documento de política conforme necessário.

  5. O JSON da política é exibido no exemplo a seguir. No "Resource" elemento, region:account substitua por seu Região da AWS e Conta da AWS em cada um dos Resource valores.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Publish", "iot:Receive" ], "Resource": [ "arn:aws:iot:region:account:topic/test/topic" ] }, { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:region:account:topicfilter/test/topic" ] }, { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": [ "arn:aws:iot:region:account:client/test-*" ] } ] }
Linux/macOS
Para executar o script de exemplo no Linux/macOS
  1. Na janela de linha de comando, navegue até o diretório ~/aws-iot-device-sdk-python-v2/samples/node/pub_sub criado pelo SDK usando os seguintes comandos.

    cd ~/aws-iot-device-sdk-python-v2/samples
  2. Na janela da linha de comando, substitua your-iot-endpointconforme indicado e execute esse comando.

    python3 pubsub.py --endpoint your-iot-endpoint --ca_file ~/certs/Amazon-root-CA-1.pem --cert ~/certs/device.pem.crt --key ~/certs/private.pem.key
Windows
Para executar o aplicativo de exemplo em um PC com Windows
  1. Na janela de linha de comando, navegue até o diretório %USERPROFILE%\aws-iot-device-sdk-python-v2\samples criado pelo SDK e instale o aplicativo de exemplo usando os seguintes comandos.

    cd %USERPROFILE%\aws-iot-device-sdk-python-v2\samples
  2. Na janela da linha de comando, substitua your-iot-endpointconforme indicado e execute esse comando.

    python3 pubsub.py --endpoint your-iot-endpoint --ca_file %USERPROFILE%\certs\Amazon-root-CA-1.pem --cert %USERPROFILE%\certs\device.pem.crt --key %USERPROFILE%\certs\private.pem.key

O script de exemplo:

  1. Conecta-se ao AWS IoT Core para sua conta.

  2. Assina o tópico de mensagens test/topic e exibe as mensagens recebidas sobre esse tópico.

  3. Publica 10 mensagens no tópico test/topic.

  4. Exibe uma saída semelhante à seguinte:

Connected! Subscribing to topic 'test/topic'... Subscribed with QoS.AT_LEAST_ONCE Sending 10 message(s) Publishing message to topic 'test/topic': Hello World! [1] Received message from topic 'test/topic': b'"Hello World! [1]"' Publishing message to topic 'test/topic': Hello World! [2] Received message from topic 'test/topic': b'"Hello World! [2]"' Publishing message to topic 'test/topic': Hello World! [3] Received message from topic 'test/topic': b'"Hello World! [3]"' Publishing message to topic 'test/topic': Hello World! [4] Received message from topic 'test/topic': b'"Hello World! [4]"' Publishing message to topic 'test/topic': Hello World! [5] Received message from topic 'test/topic': b'"Hello World! [5]"' Publishing message to topic 'test/topic': Hello World! [6] Received message from topic 'test/topic': b'"Hello World! [6]"' Publishing message to topic 'test/topic': Hello World! [7] Received message from topic 'test/topic': b'"Hello World! [7]"' Publishing message to topic 'test/topic': Hello World! [8] Received message from topic 'test/topic': b'"Hello World! [8]"' Publishing message to topic 'test/topic': Hello World! [9] Received message from topic 'test/topic': b'"Hello World! [9]"' Publishing message to topic 'test/topic': Hello World! [10] Received message from topic 'test/topic': b'"Hello World! [10]"' 10 message(s) received. Disconnecting... Disconnected!

Se você estiver com problemas para executar a aplicação de exemplo, examine Solucionar problemas com o aplicativo de exemplo.

Também é possível adicionar o parâmetro --verbosity Debug à linha de comando para que o aplicativo de exemplo exiba mensagens detalhadas sobre sua operação. Essas informações podem ajudar você a corrigir o problema.

Visualizar mensagens do aplicativo de exemplo no console do AWS IoT

É possível ver as mensagens do aplicativo de exemplo à medida que elas passam pelo agente de mensagens usando o cliente de teste MQTT no console do AWS IoT .

Para visualizar as mensagens MQTT publicadas pelo aplicativo de exemplo
  1. Consulte Exibir mensagens MQTT com o cliente AWS IoT MQTT. Isso ajudará você a aprender a usar o cliente de teste MQTT no console do AWS IoT para visualizar as mensagens MQTT à medida que elas passam pelo agente de mensagens.

  2. Abra o cliente de teste MQTT no console do AWS IoT .

  3. Em Assinar um tópico, assine o tópico test/topic.

  4. Na janela de linha de comando, execute o aplicativo de exemplo novamente e observe as mensagens no cliente MQTT no console do AWS IoT .

    Linux/macOS
    cd ~/aws-iot-device-sdk-python-v2/samples python3 pubsub.py --topic test/topic --ca_file ~/certs/Amazon-root-CA-1.pem --cert ~/certs/device.pem.crt --key ~/certs/private.pem.key --endpoint your-iot-endpoint
    Windows
    cd %USERPROFILE%\aws-iot-device-sdk-python-v2\samples python3 pubsub.py --topic test/topic --ca_file %USERPROFILE%\certs\Amazon-root-CA-1.pem --cert %USERPROFILE%\certs\device.pem.crt --key %USERPROFILE%\certs\private.pem.key --endpoint your-iot-endpoint

Para obter mais informações sobre o MQTT e como é AWS IoT Core compatível com o protocolo, consulte MQTT.

Execute o exemplo de assinatura compartilhada em Python

AWS IoT Core suporta assinaturas compartilhadas para MQTT 3 e MQTT 5. As assinaturas compartilhadas permitem que vários clientes compartilhem uma assinatura de um tópico e somente um cliente receberá mensagens publicadas nesse tópico usando uma distribuição randomizada. Para usar assinaturas compartilhadas, os clientes assinam o filtro de tópicos de uma assinatura compartilhada: $share/{ShareName}/{TopicFilter}.

Para configurar a política e executar o exemplo de assinatura compartilhada
  1. Para executar o exemplo de assinatura compartilhada, é preciso configurar a política da suo objeto conforme documentado em Assinatura compartilhada do MQTT 5.

  2. Para executar o exemplo de assinatura compartilhada, execute os comandos a seguir.

    Linux/macOS
    Para executar o script de exemplo no Linux/macOS
    1. Na janela de linha de comando, navegue até o diretório ~/aws-iot-device-sdk-python-v2/samples criado pelo SDK usando os seguintes comandos.

      cd ~/aws-iot-device-sdk-python-v2/samples
    2. Na janela da linha de comando, substitua your-iot-endpointconforme indicado e execute esse comando.

      python3 mqtt5_shared_subscription.py --endpoint your-iot-endpoint --ca_file ~/certs/Amazon-root-CA-1.pem --cert ~/certs/device.pem.crt --key ~/certs/private.pem.key --group_identifier consumer
    Windows
    Para executar o aplicativo de exemplo em um PC com Windows
    1. Na janela de linha de comando, navegue até o diretório %USERPROFILE%\aws-iot-device-sdk-python-v2\samples criado pelo SDK e instale o aplicativo de exemplo usando os seguintes comandos.

      cd %USERPROFILE%\aws-iot-device-sdk-python-v2\samples
    2. Na janela da linha de comando, substitua your-iot-endpointconforme indicado e execute esse comando.

      python3 mqtt5_shared_subscription.py --endpoint your-iot-endpoint --ca_file %USERPROFILE%\certs\Amazon-root-CA-1.pem --cert %USERPROFILE%\certs\device.pem.crt --key %USERPROFILE%\certs\private.pem.key --group_identifier consumer
    nota

    Você pode, opcionalmente, especificar um identificador de grupo com base nas suas necessidades ao executar o exemplo (por exemplo, --group_identifier consumer). python-sample será o identificador de grupo padrão se você não especificar nenhum.

  3. A saída na linha de comando pode se assemelhar ao seguinte:

    Publisher]: Lifecycle Connection Success [Publisher]: Connected Subscriber One]: Lifecycle Connection Success [Subscriber One]: Connected Subscriber Two]: Lifecycle Connection Success [Subscriber Two]: Connected [Subscriber One]: Subscribed to topic 'test/topic' in shared subscription group 'consumer'. [Subscriber One]: Full subscribed topic is: '$share/consumer/test/topic' with SubAck code: [<SubackReasonCode.GRANTED_QOS_1: 1>] [Subscriber Two]: Subscribed to topic 'test/topic' in shared subscription group 'consumer'. [Subscriber Two]: Full subscribed topic is: '$share/consumer/test/topic' with SubAck code: [<SubackReasonCode.GRANTED_QOS_1: 1>] [Publisher]: Sent publish and got PubAck code: <PubackReasonCode.SUCCESS: 0> [Subscriber Two] Received a publish Publish received message on topic: test/topic Message: b'"Hello World! [1]"' [Publisher]: Sent publish and got PubAck code: <PubackReasonCode.SUCCESS: 0> [Subscriber One] Received a publish Publish received message on topic: test/topic Message: b'"Hello World! [2]"' [Publisher]: Sent publish and got PubAck code: <PubackReasonCode.SUCCESS: 0> [Subscriber Two] Received a publish Publish received message on topic: test/topic Message: b'"Hello World! [3]"' [Publisher]: Sent publish and got PubAck code: <PubackReasonCode.SUCCESS: 0> [Subscriber One] Received a publish Publish received message on topic: test/topic Message: b'"Hello World! [4]"' [Publisher]: Sent publish and got PubAck code: <PubackReasonCode.SUCCESS: 0> [Subscriber Two] Received a publish Publish received message on topic: test/topic Message: b'"Hello World! [5]"' [Publisher]: Sent publish and got PubAck code: <PubackReasonCode.SUCCESS: 0> [Subscriber One] Received a publish Publish received message on topic: test/topic Message: b'"Hello World! [6]"' [Publisher]: Sent publish and got PubAck code: <PubackReasonCode.SUCCESS: 0> [Subscriber Two] Received a publish Publish received message on topic: test/topic Message: b'"Hello World! [7]"' [Publisher]: Sent publish and got PubAck code: <PubackReasonCode.SUCCESS: 0> [Subscriber One] Received a publish Publish received message on topic: test/topic Message: b'"Hello World! [8]"' [Publisher]: Sent publish and got PubAck code: <PubackReasonCode.SUCCESS: 0> [Subscriber Two] Received a publish Publish received message on topic: test/topic Message: b'"Hello World! [9]"' [Publisher]: Sent publish and got PubAck code: <PubackReasonCode.SUCCESS: 0> [Subscriber One] Received a publish Publish received message on topic: test/topic Message: b'"Hello World! [10]"' [Subscriber One]: Unsubscribed to topic 'test/topic' in shared subscription group 'consumer'. [Subscriber One]: Full unsubscribed topic is: '$share/consumer/test/topic' with UnsubAck code: [<UnsubackReasonCode.SUCCESS: 0>] [Subscriber Two]: Unsubscribed to topic 'test/topic' in shared subscription group 'consumer'. [Subscriber Two]: Full unsubscribed topic is: '$share/consumer/test/topic' with UnsubAck code [<UnsubackReasonCode.SUCCESS: 0>] Publisher]: Lifecycle Disconnected [Publisher]: Lifecycle Stopped [Publisher]: Fully stopped Subscriber One]: Lifecycle Disconnected [Subscriber One]: Lifecycle Stopped [Subscriber One]: Fully stopped Subscriber Two]: Lifecycle Disconnected [Subscriber Two]: Lifecycle Stopped [Subscriber Two]: Fully stopped Complete!
  4. Abra o cliente de teste MQTT no console do AWS IoT . Em Assinar um tópico, assine o tópico da assinatura compartilhada, como: $share/consumer/test/topic. Você pode especificar um identificador de grupo com base nas suas necessidades ao executar o exemplo (por exemplo, --group_identifier consumer). Se você não especificar um identificador de grupo, o valor padrão será python-sample. Para obter mais informações, consulte o exemplo em Assinatura compartilhada do MQTT 5 em Python e Assinaturas compartilhadas do Guia do desenvolvedor do AWS IoT Core .

    Na janela de linha de comando, execute o aplicativo de exemplo novamente e observe a distribuição de mensagens no cliente de teste MQTT do console do AWS IoT e na linha de comando.

    A página de saída de assinaturas compartilhadas.