

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
<a name="using-laptop-as-device"></a>

Neste tutorial, você configurará um computador pessoal para uso com AWS IoT. Essas instruções são compatíveis com Windows, Linux PCs e Macs. 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](creating-a-virtual-thing.md) e instalar todos os softwares em uma máquina virtual.

**Topics**
+ [Configurar seu computador pessoal](#gs-pc-prereqs)
+ [Instale o Git, o Python e o Device SDK para Python AWS IoT](#gs-pc-sdk-node)
+ [Configurar a política e executar o aplicativo de exemplo](#gs-pc-python-app-run)
+ [Exibir mensagens do aplicativo de amostra no AWS IoT console](#gs-pc-view-msg)
+ [Execute o exemplo de assinatura compartilhada em Python](#gs-pc-shared-subscription-example)

## Configurar seu computador pessoal
<a name="gs-pc-prereqs"></a>

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
<a name="gs-pc-sdk-node"></a>

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
<a name="gs-pc-node-runtime"></a>

Este procedimento explica como instalar a versão mais recente do Git e do Python em seu computador pessoal.

**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](https://git-scm.com/download) e instale o Git em seu computador.

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

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

1. Abra [https://www.python.org/downloads/](https://www.python.org/downloads/) e baixe o instalador para o seu computador.

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

1. 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
<a name="gs-pc-python-intall-sdk"></a>

**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
   ```

1. 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 se refere ao diretório base dos arquivos como os quais você está instalando*home*.

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

------
#### [ Linux/macOS ]

   No macOS e no Linux, o *home* diretório é. `~`

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

------
#### [ Windows ]

   No Windows, você pode encontrar o caminho do *home* diretório executando esse comando na `cmd` janela.

   ```
   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 de**cmd.exe**, use o comando a seguir.  

   ```
   echo $home
   ```

Para obter mais informações, consulte o repositório [AWS IoT Device SDK for GitHub Python](https://github.com/aws/aws-iot-device-sdk-python-v2).

### Preparar-se para executar os aplicativos de exemplo
<a name="gs-pc-python-config-app"></a>

**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](create-iot-resources.md). 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**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/iot/latest/developerguide/using-laptop-as-device.html)

  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**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/iot/latest/developerguide/using-laptop-as-device.html)

  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
<a name="gs-pc-python-app-run"></a>

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 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/iot/latest/developerguide/using-laptop-as-device.html)  | 

O *your-iot-endpoint* valor 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](https://console.aws.amazon.com//iot/home#/thinghub), na lista **Objetos**, localize o recurso de objeto que representa o seu dispositivo.

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

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

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

1. 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:us-east-1:123456789012:topic/test/topic"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "iot:Subscribe"
               ],
               "Resource": [
               "arn:aws:iot:us-east-1:123456789012:topicfilter/test/topic"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "iot:Connect"
               ],
               "Resource": [
               "arn:aws:iot:us-east-1:123456789012: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
   ```

1. Na janela da linha de comando, substitua *your-iot-endpoint* conforme 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
   ```

1. Na janela da linha de comando, substitua *your-iot-endpoint* conforme 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.

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

1. Publica 10 mensagens no tópico **test/topic**.

1. 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 a aplicação de amostra](gs-device-troubleshoot.md).

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.

## Exibir mensagens do aplicativo de amostra no AWS IoT console
<a name="gs-pc-view-msg"></a>

É 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](view-mqtt-messages.md). 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.

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

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

1. 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](https://docs.aws.amazon.com//iot/latest/developerguide/mqtt.html).

## Execute o exemplo de assinatura compartilhada em Python
<a name="gs-pc-shared-subscription-example"></a>

AWS IoT Core suporta [assinaturas compartilhadas](mqtt.md#mqtt5-shared-subscription) 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](https://docs.aws.amazon.com//iot/latest/developerguide/topics.html#topicfilters) 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](https://github.com/aws/aws-iot-device-sdk-python-v2/blob/main/samples/mqtt5_shared_subscription.md#mqtt5-shared-subscription). 

1. 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
      ```

   1. Na janela da linha de comando, substitua *your-iot-endpoint* conforme 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
      ```

   1. Na janela da linha de comando, substitua *your-iot-endpoint* conforme 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.

1. 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!
   ```

1. 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](https://github.com/aws/aws-iot-device-sdk-python-v2/blob/main/samples/mqtt5_shared_subscription.md#mqtt5-shared-subscription) e [Assinaturas compartilhadas](mqtt.md#mqtt5-shared-subscription) 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.\]](http://docs.aws.amazon.com/pt_br/iot/latest/developerguide/images/shared-subscription-output.png)