

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Utilice su PC o Mac con Windows o Linux como dispositivo AWS IoT
<a name="using-laptop-as-device"></a>

En este tutorial, configurará un ordenador personal para usarlo con AWS IoT. Estas instrucciones son compatibles con Windows, Linux PCs y Mac. Para lograr esto, necesita instalar cierto software en el ordenador. Si no quiere instalar software en su ordenador, puede consultar la sección [Crear un dispositivo virtual con Amazon EC2](creating-a-virtual-thing.md) para saber cómo instalar todo el software en una máquina virtual.

**Topics**
+ [Configurar su ordenador personal](#gs-pc-prereqs)
+ [Instalar Git, Python y el SDK de AWS IoT dispositivos para Python](#gs-pc-sdk-node)
+ [Configurar la política y ejecutar la aplicación de ejemplo](#gs-pc-python-app-run)
+ [Ve los mensajes de la aplicación de ejemplo en la AWS IoT consola](#gs-pc-view-msg)
+ [Ejecutar el ejemplo de suscripción compartida en Python](#gs-pc-shared-subscription-example)

## Configurar su ordenador personal
<a name="gs-pc-prereqs"></a>

Para completar este tutorial, necesita un PC con Windows o Linux o un Mac con conexión a internet.

Antes de continuar con el siguiente paso, confirme que puede abrir una ventana de la línea de comandos en el ordenador. Utilice **cmd.exe** en un PC con Windows. En un PC con Linux o un Mac, utilice **Terminal**.

## Instalar Git, Python y el SDK de AWS IoT dispositivos para Python
<a name="gs-pc-sdk-node"></a>

En esta sección, instalará Python y el SDK de AWS IoT dispositivo para Python en su ordenador. 

### Instalar la versión más reciente de Git y Python
<a name="gs-pc-node-runtime"></a>

Este procedimiento explica cómo instalar la versión más reciente de Git y Python en su ordenador personal.

**Para descargar e instalar Git y Python en su ordenador**

1. Compruebe si tiene Git instalado en el equipo. Introduzca este comando en la línea de comandos.

   ```
   git --version
   ```

   Si el comando muestra la versión de Git, significa que Git está instalado y puede continuar con el paso siguiente.

   Si el comando muestra un error, abra [https://git-scm.com/download](https://git-scm.com/download) e instale Git en el ordenador.

1. Compruebe si Python ya está instalado. Introduzca el comando en la línea de comandos.

   ```
   python -V
   ```
**nota**  
Si este comando produce un error, `Python was not found`, puede deberse a que el sistema operativo llama al ejecutable de Python v3.x como `Python3`. En ese caso, sustituya todas las instancias de `python` por `python3` y continúe con el resto de este tutorial.

   Si el comando muestra la versión de Python, significa que Python ya está instalado. Este tutorial requiere Python v3.7 o versiones posteriores.

1. Si Python está instalado, puede omitir el resto de los pasos de esta sección. Si no es así, continúe.

1. Abre [https://www.python.org/downloads/](https://www.python.org/downloads/) y descarga el instalador para tu ordenador.

1. Si la descarga no se inició automáticamente, ejecute el programa descargado para instalar Python.

1. Compruebe la instalación de Python.

   ```
   python -V
   ```

   Confirme que el comando muestra la versión de Python. Si no se muestra la versión de Python, pruebe a descargar e instalar Python de nuevo.

### Instalar el SDK AWS IoT del dispositivo para Python
<a name="gs-pc-python-intall-sdk"></a>

**Para instalar el SDK de AWS IoT dispositivo para Python en su ordenador**

1. Instale la versión 2 del SDK de AWS IoT dispositivos para Python.

   ```
   python3 -m pip install awsiotsdk
   ```

1. Clona el repositorio AWS IoT Device SDK para Python en el directorio aws-iot-device-sdk -python-v2 de tu directorio principal. Este procedimiento hace referencia al directorio base de los archivos en los que estás instalando. *home*

   La ubicación real del *home* directorio depende del sistema operativo.

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

   En macOS y Linux, el *home* directorio es`~`.

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

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

   En Windows, puede encontrar la ruta del *home* directorio ejecutando este comando en la `cmd` ventana.

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

------
**nota**  
Si utilizas Windows PowerShell en lugar de hacerlo**cmd.exe**, utiliza el siguiente comando.  

   ```
   echo $home
   ```

Para obtener más información, consulte el [ GitHub repositorio AWS IoT Device SDK para Python](https://github.com/aws/aws-iot-device-sdk-python-v2).

### Preparación antes de ejecutar las aplicaciones de ejemplo
<a name="gs-pc-python-config-app"></a>

**Para prepararse antes de ejecutar las aplicaciones de ejemplo**
+ Cree el directorio `certs`. En el directorio `certs`, copie los archivos de clave privada, certificado de dispositivo y certificado de entidad de certificación raíz que guardó al crear y registrar el objeto en [Crea AWS IoT recursos](create-iot-resources.md). Los nombres de cada archivo del directorio de destino deben coincidir con los de la tabla.

   Los comandos de la siguiente sección suponen que los archivos de clave y certificado se almacenan en el dispositivo como se muestra en esta tabla.

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

  Ejecute este comando para crear el subdirectorio `certs` que utilizará al ejecutar las aplicaciones de ejemplo.

  ```
  mkdir ~/certs
  ```

  En el nuevo subdirectorio, copie los archivos a las rutas de archivo de destino que se muestran en la siguiente tabla.  
**Nombres de archivo de certificado**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/using-laptop-as-device.html)

  Ejecute este comando para enumerar los archivos del directorio `certs` y compararlos con los que aparecen en la tabla.

  ```
  ls -l ~/certs
  ```

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

  Ejecute este comando para crear el subdirectorio `certs` que utilizará al ejecutar las aplicaciones de ejemplo.

  ```
  mkdir %USERPROFILE%\certs
  ```

  En el nuevo subdirectorio, copie los archivos a las rutas de archivo de destino que se muestran en la siguiente tabla.  
**Nombres de archivo de certificado**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/using-laptop-as-device.html)

  Ejecute este comando para enumerar los archivos del directorio `certs` y compararlos con los que aparecen en la tabla.

  ```
  dir %USERPROFILE%\certs
  ```

------

## Configurar la política y ejecutar la aplicación de ejemplo
<a name="gs-pc-python-app-run"></a>

En esta sección, configurará su política y ejecutará el script de ejemplo de `pubsub.py` que se encuentra en el directorio `aws-iot-device-sdk-python-v2/samples` del AWS IoT Device SDK para Python. Este script muestra cómo su dispositivo utiliza la biblioteca de MQTT para publicar y suscribirse a mensajes MQTT.

La aplicación de `pubsub.py` de ejemplo se suscribe a un tema,`test/topic`, publica 10 mensajes sobre ese tema y muestra los mensajes tal como los recibe del agente de mensajes.

Para ejecutar el script de ejemplo de `pubsub.py`, necesita la siguiente información:


**Valores de los parámetros de la aplicación**  

|  Parámetro  |  Dónde encontrar el valor  | 
| --- | --- | 
| your-iot-endpoint |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/using-laptop-as-device.html)  | 

El *your-iot-endpoint* valor tiene el formato:`endpoint_id-ats.iot.region.amazonaws.com`, por ejemplo,`a3qj468EXAMPLE-ats.iot.us-west-2.amazonaws.com`.

Antes de ejecutar el script, asegúrese de que la política del objeto proporciona permisos para que el script de ejemplo pueda conectarse, suscribirse, publicar y recibir. 

**Para buscar y revisar el documento de política de un recurso de objeto**

1. En la [consola de AWS IoT](https://console.aws.amazon.com//iot/home#/thinghub), en la lista **Objetos**, busque el recurso de objeto que represente a su dispositivo.

1. Seleccione el enlace **Nombre** del recurso de objeto que representa a su dispositivo para abrir la página **Detalles del objeto**.

1. En la página **Detalles del objeto**, en la pestaña **Certificados**, elija el certificado asociado al recurso de objeto. Solo debe haber un certificado en la lista. Si hay más de uno, elija el certificado cuyos archivos estén instalados en el dispositivo y con el que se vaya a conectar a AWS IoT Core.

   En la página **Detalles del certificado**, en la pestaña **Políticas**, elija la política asociada al certificado. Solo debe haber una. Si hay más de una, repita el paso siguiente para cada una de ellas con el fin de garantizar que al menos una política conceda el acceso requerido.

1. En la página de descripción general de la **política**, busque el editor de JSON y seleccione **Editar el documento de política** para revisar y editar el documento de política según sea necesario.

1. El JSON de la política se muestra en el siguiente ejemplo. En el `"Resource"` elemento, `region:account` sustitúyalo por el suyo Región de AWS y Cuenta de AWS en cada uno de los `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 ejecutar el script de ejemplo en Linux/macOS**

1. En la ventana de la línea de comandos, navegue hasta el directorio `~/aws-iot-device-sdk-python-v2/samples/node/pub_sub` que el SDK creó con estos comandos.

   ```
   cd ~/aws-iot-device-sdk-python-v2/samples
   ```

1. En la ventana de la línea de comandos, reemplace *your-iot-endpoint* como se indica y ejecute este 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 ejecutar la aplicación de ejemplo en un PC con Windows**

1. En la ventana de la línea de comandos, navegue hasta el directorio `%USERPROFILE%\aws-iot-device-sdk-python-v2\samples` que el SDK creó e instale la aplicación de ejemplo con estos comandos.

   ```
   cd %USERPROFILE%\aws-iot-device-sdk-python-v2\samples
   ```

1. En la ventana de la línea de comandos, *your-iot-endpoint* sustituya como se indica y ejecute este 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
   ```

------

El script de ejemplo:

1. Se conecta a la AWS IoT Core de su cuenta.

1. Se suscribe al tema de mensaje, **test/topic**, y muestra los mensajes que recibe sobre ese tema.

1. Publica 10 mensajes sobre el tema **test/topic**.

1. Muestra una salida similar a la siguiente:

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

Si tiene problemas para ejecutar la aplicación de ejemplo, revise [Solución de problemas con la aplicación de ejemplo](gs-device-troubleshoot.md).

También puede agregar el parámetro `--verbosity Debug` a la línea de comandos para que la aplicación de ejemplo muestre mensajes detallados sobre lo que está haciendo. Esa información puede ayudarle a corregir el problema.

## Ve los mensajes de la aplicación de ejemplo en la AWS IoT consola
<a name="gs-pc-view-msg"></a>

Puede ver los mensajes de la aplicación de ejemplo a medida que pasan por el agente de mensajes mediante el **cliente de prueba de MQTT** de la **consola de AWS IoT **.

**Para ver los mensajes MQTT publicados por la aplicación de ejemplo**

1. Consulte [Vea los mensajes MQTT con el cliente AWS IoT MQTT](view-mqtt-messages.md). Esto le ayudará a aprender a utilizar el **cliente de prueba de MQTT** de la **consola de AWS IoT ** para ver los mensajes MQTT a medida que pasan por el agente de mensajes.

1. Abra la opción **Cliente de prueba de MQTT** en la **consola de AWS IoT **.

1. En **Suscribirse a un tema**, suscríbase al tema **test/topic**.

1. En su ventana de línea de comandos, ejecute de nuevo la aplicación de ejemplo y observe los mensajes del **cliente MQTT** en la **consola de 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 obtener más información sobre MQTT y cómo AWS IoT Core es compatible con el protocolo, consulte [MQTT](https://docs.aws.amazon.com//iot/latest/developerguide/mqtt.html).

## Ejecutar el ejemplo de suscripción compartida en Python
<a name="gs-pc-shared-subscription-example"></a>

AWS IoT Core admite [suscripciones compartidas](mqtt.md#mqtt5-shared-subscription) para MQTT 3 y MQTT 5. Las suscripciones compartidas permiten que varios clientes compartan una suscripción a un tema y solo un cliente recibirá los mensajes publicados sobre ese tema mediante una distribución aleatoria. Para usar las suscripciones compartidas, los clientes se suscriben al [filtro de temas](https://docs.aws.amazon.com//iot/latest/developerguide/topics.html#topicfilters) de una suscripción compartida: `$share/{ShareName}/{TopicFilter}`. 

**Para configurar la política y ejecutar el ejemplo de suscripción compartida**

1. Para ejecutar el ejemplo de suscripción compartida, debe configurar la política de su empresa tal y como se describe en la [Suscripción compartida de MQTT 5](https://github.com/aws/aws-iot-device-sdk-python-v2/blob/main/samples/mqtt5_shared_subscription.md#mqtt5-shared-subscription). 

1. Para ejecutar el ejemplo de suscripción compartida, ejecute los siguientes comandos.

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

**Para ejecutar el script de ejemplo en Linux/macOS**

   1. En la ventana de la línea de comandos, navegue hasta el directorio `~/aws-iot-device-sdk-python-v2/samples` que el SDK creó con estos comandos.

      ```
      cd ~/aws-iot-device-sdk-python-v2/samples
      ```

   1. En la ventana de la línea de comandos, *your-iot-endpoint* sustituya como se indica y ejecute este 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 ejecutar la aplicación de ejemplo en un PC con Windows**

   1. En la ventana de la línea de comandos, navegue hasta el directorio `%USERPROFILE%\aws-iot-device-sdk-python-v2\samples` que el SDK creó e instale la aplicación de ejemplo con estos comandos.

      ```
      cd %USERPROFILE%\aws-iot-device-sdk-python-v2\samples
      ```

   1. En la ventana de la línea de comandos, *your-iot-endpoint* sustituya como se indica y ejecute este 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**  
Si lo desea, puede especificar un identificador de grupo en función de sus necesidades al ejecutar la muestra (por ejemplo, `--group_identifier consumer`). Si no especifica uno, `python-sample` es el identificador de grupo predeterminado.

1. El resultado de la línea de comandos puede ser similar al siguiente:

   ```
   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 el **cliente de prueba de MQTT** en la **consola de AWS IoT **. En **Suscribirse a un tema**, suscríbase al tema de la suscripción compartida: `$share/consumer/test/topic`. Puede especificar un identificador de grupo en función de sus necesidades al ejecutar la muestra (por ejemplo, `--group_identifier consumer`). Si no especifica uno, el valor predeterminado es `python-sample`. Para obtener más información, consulte el [Ejemplo de Python de suscripción compartida de MQTT 5](https://github.com/aws/aws-iot-device-sdk-python-v2/blob/main/samples/mqtt5_shared_subscription.md#mqtt5-shared-subscription) y [Suscripciones compartidas](mqtt.md#mqtt5-shared-subscription) en la *Guía de AWS IoT Core para desarrolladores*.

   En la ventana de la línea de comandos, ejecute de nuevo la aplicación de ejemplo y observe la distribución de mensajes en el **cliente de prueba de MQTT** de la **consola de AWS IoT ** y de la línea de comandos.  
![\[Página de resultados de las suscripciones compartidas.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/shared-subscription-output.png)