

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.

# Aloje automáticamente una puerta de enlace AWS IoT SiteWise Edge con AWS IoT Greengrass V2
<a name="gw-self-host-gg2"></a>

Configure AWS IoT SiteWise Edge para recopilar, procesar y visualizar los datos de los equipos industriales a nivel local antes de enviarlos a la nube. Autohospedaje mediante AWS IoT Greengrass Version 2.

Una puerta de enlace AWS IoT SiteWise Edge actúa como intermediaria entre su equipo industrial y. AWS IoT SiteWise Si se ejecuta AWS IoT Greengrass Version 2, la puerta de enlace SiteWise Edge permite la recopilación y el procesamiento de datos in situ.

Hay dos tipos de puertas de enlace autohospedadas:

**Puerta de enlace V3 habilitada para MQTT**  
La arquitectura de puerta de enlace V3 habilitada para MQTT proporciona capacidades mejoradas de ingesta de datos. Utiliza el protocolo MQTT para una comunicación de datos eficiente y ofrece destinos de datos configurables. Estas incluyen opciones para la ingesta de datos en búfer mediante Amazon S3, así como la ingesta de datos en tiempo real. Puede implementar filtros de ruta para suscribirse a temas específicos de MQTT, lo que permite una recopilación de datos específica. Tenga en cuenta que la puerta de enlace V3 habilitada para MQTT no admite la función de paquete de procesamiento de datos. Para obtener más información, consulte [Puertas de enlace V3 habilitadas para MQTT para Edge AWS IoT SiteWise](mqtt-enabled-v3-gateway.md).

**Puerta de enlace V2 de transmisiones clásicas**  
La puerta de enlace Classic Streams, V2, representa la arquitectura de puerta de enlace Edge tradicional AWS IoT SiteWise . Es ideal para las implementaciones de SiteWise Edge existentes y para los usuarios acostumbrados al flujo de trabajo establecido. Si bien la puerta de enlace Classic Streams V2 admite el paquete de procesamiento de datos, tenga en cuenta que los datos generados por el paquete de procesamiento de datos no se pueden ingerir a través de Amazon S3. Utilice la puerta de enlace Classic Streams V2 si necesita mantener la compatibilidad con las implementaciones existentes o si necesita la funcionalidad del paquete de procesamiento de datos. Para obtener más información, consulte [Transmisiones clásicas, pasarelas V2 para Edge AWS IoT SiteWise](classic-streams-v2-gateway.md).

**Topics**
+ [AWS IoT SiteWise Requisitos de la puerta de enlace autohospedada de Edge](configure-gateway-ggv2.md)
+ [Cree una puerta de enlace SiteWise Edge autohospedada](create-gateway-ggv2.md)
+ [Instale el software AWS IoT SiteWise Edge Gateway en su dispositivo local](install-gateway-software-on-local-device.md)
+ [Puertas de enlace V3 habilitadas para MQTT para Edge AWS IoT SiteWise](mqtt-enabled-v3-gateway.md)
+ [Transmisiones clásicas, pasarelas V2 para Edge AWS IoT SiteWise](classic-streams-v2-gateway.md)
+ [Agregue fuentes de datos a su puerta de enlace AWS IoT SiteWise Edge](add-data-sources.md)
+ [AWS IoT Greengrass componentes para AWS IoT SiteWise Edge](sw-edge-components.md)
+ [Filtre los activos en una puerta de enlace SiteWise Edge](filter-assets-ggv2.md)
+ [Configura el soporte de proxy y administra los almacenes de confianza para AWS IoT SiteWise Edge](edge-apis-manage-trust-stores-proxy.md)
+ [AWS IoT SiteWise APIs Úselo en el borde](edge-apis.md)

# AWS IoT SiteWise Requisitos de la puerta de enlace autohospedada de Edge
<a name="configure-gateway-ggv2"></a>

AWS IoT SiteWise Las puertas de enlace Edge se ejecutan AWS IoT Greengrass V2 como un conjunto de AWS IoT Greengrass componentes que permiten la recopilación, el procesamiento y la publicación de datos in situ. Para configurar una puerta de enlace SiteWise Edge que se ejecute AWS IoT Greengrass V2, cree una puerta de enlace en Nube de AWS y ejecute el software de puerta de enlace SiteWise Edge para configurar su dispositivo local. Cuando se utiliza Consola de administración de AWS para crear la puerta de enlace SiteWise Edge, se proporciona un script de instalación. Ejecute este script en el dispositivo de puerta de enlace de destino para configurar el software y las dependencias necesarios.

## Requisitos del dispositivo local
<a name="gateway-requirements-local-device"></a>

Los dispositivos locales deben cumplir los siguientes requisitos para instalar y ejecutar el software SiteWise Edge Gateway.
+ Es compatible con la versión [2.3.0](https://docs.aws.amazon.com/greengrass/v2/developerguide/greengrass-release-2021-06-29.html) o posterior del software AWS IoT Greengrass V2 Core. Para obtener más información, consulte [Requisitos](https://docs.aws.amazon.com/greengrass/v2/developerguide/setting-up.html#greengrass-v2-requirements) en la *Guía para desarrolladores de AWS IoT Greengrass Version 2 *.
+ Una de las siguientes plataformas admitidas:
  + OS: Ubuntu 20.04 o posterior

    Arquitectura: x86\$164 () o (Aarch64) AMD64 ARMv8 
  + OS: Red Hat Enterprise Linux (RHEL) 8

    Arquitectura: x86\$164 () o (Aarch64) AMD64 ARMv8 
  + OS: Amazon Linux 2

    Arquitectura: x86\$164 () o (Aarch64) AMD64 ARMv8 
  + OS: Debian 11

    Arquitectura: x86\$164 () o (Aarch64) AMD64 ARMv8 
  + OS: Windows Server 2019 o posterior

    Arquitectura: x86\$164 () AMD64
**nota**  
Las plataformas ARM solo admiten puertas de enlace SiteWise Edge con el paquete de recopilación de datos. El paquete de procesamiento de datos no es compatible.
+ Mínimo de 4 GB de RAM.
+ Dispone de un mínimo de 10 GB de espacio en disco para el software SiteWise Edge Gateway.
+ Configure su dispositivo local para asegurarse de que se pueda acceder a los puertos adecuados. Para obtener una lista completa de los puntos finales de servicio salientes necesarios, consulte Puntos de enlace de [servicio necesarios para AWS IoT SiteWise las puertas de enlace Edge](https://docs.aws.amazon.com/prescriptive-guidance/latest/endpoints-for-iot-sitewise-edge-gateways/required-endpoints.html).
+ Entorno de ejecución de Java (JRE) versión 11 o superior. Java debe estar disponible en la variable de entorno `PATH` en el dispositivo. Para utilizar Java para desarrollar componentes personalizados, debe instalar un kit de desarrollo de Java (JDK). Le recomendamos que utilice [Amazon Corretto](https://docs.aws.amazon.com/corretto/) u [OpenJDK](https://openjdk.org/projects/jdk/).

### Lista de buckets de Amazon S3 para dispositivos locales
<a name="w2aac17c19c13b5b7"></a>

Configure su dispositivo local para proporcionar acceso al firewall al siguiente bucket de Amazon S3. Configure el acceso de sus dispositivos en función de las regiones respectivas. 


| Region | Punto de conexión | 
| --- | --- | 
|  Asia-Pacífico (Tokio)  |  https://iot-sitewise-gateway-ap-northeast-1-785558802005.s3.ap-northeast-1.amazonaws.com  | 
|  Asia-Pacífico (Seúl)  |  https://iot-sitewise-gateway-ap-northeast-2-310055672453.s3.ap-northeast-2.amazonaws.com  | 
|  Asia-Pacífico (Mumbai)  |  https://iot-sitewise-gateway-ap-south-1-677656657204.s3.ap-south-1.amazonaws.com  | 
|  Asia-Pacífico (Singapur)  |  https://iot-sitewise-gateway-ap-southeast-1-475191558554.s3.ap-southeast-1.amazonaws.com  | 
|  Asia-Pacífico (Sídney)  |  https://iot-sitewise-gateway-ap-southeast-2-396319432685.s3.ap-southeast-2.amazonaws.com  | 
|  Canadá (centro)  |  https://iot-sitewise-gateway-ca-central-1-842060018567.s3.ca-central-1.amazonaws.com  | 
|  China (Pekín)  |  https://iot-sitewise-gateway-cn-north-1-237124890262---s3---cn-north-1.amazonaws.com.rproxy.govskope.us.cn  | 
|  Europa (Fráncfort)  |  https://iot-sitewise-gateway-eu-central-1-748875242063.s3.eu-central-1.amazonaws.com  | 
|  Europa (Irlanda)  |  https://iot-sitewise-gateway-eu-west-1-383414315062.s3.eu-west-1.amazonaws.com  | 
|  Este de EE. UU. (Norte de Virginia)  |  https://iot-sitewise-gateway-us-east-1-223558168232---s3---us-east-1.amazonaws.com.rproxy.govskope.usy/ https://iot-sitewise-gateway-us-east-1-223558168232.s3.amazonaws.com  | 
|  Este de EE. UU. (Ohio)  |  https://iot-sitewise-gateway-us-east-2-005072661813.s3.us-east-2.amazonaws.com  | 
|  AWS GovCloud (EE. UU.-Oeste)  |  https://iot-sitewise-gateway-us-gov-west-1-599984565679.s3.us-gov-west-1.amazonaws.com/  | 
|  Oeste de EE. UU. (Oregón)  |  https://iot-sitewise-gateway-us-west-2-502577205460.s3.us-west-2.amazonaws.com  | 

## Requisitos del paquete de procesamiento de datos
<a name="w2aac17c19c13b7"></a>

**nota**  
La característica de paquete de procesamiento de datos (DPP) ya no está disponible para los nuevos clientes. Los clientes existentes pueden seguir utilizando el servicio con normalidad. Para obtener más información, consulte [Cambio en la disponibilidad del paquete de procesamiento de datos](https://docs.aws.amazon.com/iot-sitewise/latest/appguide/iotsitewise-dpp-availability-change.html).
+ Si planea utilizar el paquete de procesamiento de datos de forma perimetral AWS IoT SiteWise, su dispositivo local también debe cumplir los siguientes requisitos:
  + Tener un procesador x86 de 64 bits y cuatro núcleos.
  + Tener al menos 16 GB de RAM.
  + Tiene al menos 32 GB de RAM si lo usaMicrosoft Windows.
  + Tener al menos 256 GB de espacio libre en disco.
  + El dispositivo local debe permitir tráfico de red entrante en el puerto 443.
  + Los siguientes puertos están reservados para su uso por AWS IoT SiteWise: 80, 443, 3001, 4569, 4572, 8000, 8081, 8082, 8084, 8085, 8445, 8086, 9000, 9500, 11080 y 50010. El uso de un puerto reservado para el tráfico puede causar la terminación de la conexión.
**nota**  
 AWS IoT Greengrass V2 El componente Stream Manager tiene sus propios requisitos. Para obtener más información, consulte [Configuración](https://docs.aws.amazon.com/greengrass/v2/developerguide/stream-manager-component.html#stream-manager-component-configuration) en la *Guía para desarrolladores de AWS IoT Greengrass Version 2 *.
+ Los requisitos mínimos de espacio en disco y capacidad de procesamiento dependen de una variedad de factores que son exclusivos de su implementación y caso de uso.
  + El espacio en disco necesario para almacenar en caché los datos para una conectividad a Internet intermitente depende de los siguientes factores:
    + Número de flujos de datos cargados
    + Puntos de datos por flujo de datos por segundo
    + Tamaño de cada punto de datos
    + Velocidades de comunicación
    + Tiempo de inactividad de red esperado
  + La capacidad de cómputo necesaria para sondear y cargar los datos depende de los siguientes factores:
    + Número de flujos de datos cargados
    + Puntos de datos por flujo de datos por segundo

## Configure los permisos para usar las puertas de enlace SiteWise Edge
<a name="gateway-iam-permisions"></a>

Debe tener los siguientes permisos para usar las puertas de enlace SiteWise Edge:

**nota**  
Si usa la AWS IoT SiteWise consola para crear su puerta de enlace SiteWise Edge, estos permisos se añaden automáticamente.
+ La función de IAM de su puerta de enlace SiteWise Edge debe permitirle utilizar una puerta de enlace SiteWise Edge en un AWS IoT Greengrass V2 dispositivo para procesar los datos del modelo de activos y los datos de los activos.

  El rol permite que el siguiente servicio asuma el rol: `credentials.iot.amazonaws.com`.

  **Detalles de los permisos**

  El rol debe tener los siguientes permisos:
  + `iotsitewise`: permite a las entidades principales recuperar datos de modelos de activos y datos de activos en la periferia.
  + `iot`— Permite que sus AWS IoT Greengrass V2 dispositivos interactúen con AWS IoT.
  + `logs`— Permite que tus AWS IoT Greengrass V2 dispositivos envíen registros a Amazon CloudWatch Logs.
  + `s3`— Permite que sus AWS IoT Greengrass V2 dispositivos descarguen artefactos de componentes personalizados de Amazon S3.

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "iotsitewise:BatchPutAssetPropertyValue",
                  "iotsitewise:List*",
                  "iotsitewise:Describe*",
                  "iotsitewise:Get*"
              ],
              "Resource": "*"
          },
          {
              "Effect": "Allow",
              "Action": [
                  "iot:DescribeCertificate",
                  "logs:CreateLogGroup",
                  "logs:CreateLogStream",
                  "logs:PutLogEvents",
                  "logs:DescribeLogStreams",
                  "s3:GetBucketLocation",
                  "s3:GetObject",
                  "iot:Connect",
                  "iot:Publish",
                  "iot:Subscribe",
                  "iot:Receive",
                  "iot:DescribeEndpoint"
              ],
              "Resource": "*"
          }
      ]
  }
  ```

------

# Cree una puerta de enlace SiteWise Edge autohospedada
<a name="create-gateway-ggv2"></a>

Use la AWS IoT SiteWise consola o AWS CLI cree una puerta de enlace SiteWise Edge autohospedada. Este procedimiento detalla cómo crear una puerta de enlace SiteWise Edge autohospedada que instalará en su propio hardware. Para obtener información sobre cómo crear una puerta de enlace SiteWise Edge que se ejecute en Siemens Industrial Edge, consulte[Aloje una puerta de enlace SiteWise Edge en Siemens Industrial Edge](sitewise-edge-on-siemens.md).

## Cree una puerta de enlace SiteWise Edge
<a name="configure-gateway-console"></a>

------
#### [ Console ]

1. <a name="sitewise-open-console"></a>Vaya a la [consola de AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. En el panel de navegación, seleccione **Puertas de enlace Edge**.

1. Seleccione **Crear puerta de enlace**.

1. En **Elegir destino de implementación**, elija una **puerta de enlace autohospedada**.

1. Seleccione una puerta de enlace **V3 habilitada para MQTT o una puerta de enlace V2** **Classic Streams**. Para obtener más información sobre cada opción, consulte. [Aloje automáticamente una puerta de enlace AWS IoT SiteWise Edge con AWS IoT Greengrass V2](gw-self-host-gg2.md) Se recomienda la puerta de enlace V3 habilitada para MQTT por sus funciones preparadas para el futuro.

1. En la sección de **configuración de la puerta de enlace**, introduzca un nombre para la puerta de enlace SiteWise Edge o utilice el nombre generado por. AWS IoT SiteWise

1. En el sistema **operativo del dispositivo Greengrass**, selecciona el sistema operativo del dispositivo en el que instalarás esta puerta de enlace SiteWise Edge.
**nota**  
El paquete de procesamiento de datos solo está disponible en plataformas x86. Solo está disponible en la puerta de enlace Classic Streams V2

1. (Opcional) Para procesar y organizar los datos en la periferia, en **Capacidades de periferia**, seleccione **Paquete de procesamiento de datos**.
**nota**  
Para conceder a los grupos de usuarios de su directorio corporativo acceso a esta puerta de enlace SiteWise Edge, consulte [Configure la capacidad SiteWise perimetral en Edge](edge-data-collection-and-processing.md#using-sitewise-edge) 

1. (Opcional) En **Configuración avanzada**, haga lo siguiente:

   1. En **Dispositivo central de Greengrass**, elija una de las siguientes opciones:
     + **Configuración predeterminada**: utiliza AWS automáticamente la configuración predeterminada para crear un dispositivo principal de Greengrass. AWS IoT Greengrass V2

       1. Introduzca un nombre para el dispositivo principal de Greengrass o utilice el nombre generado por. AWS IoT SiteWise
     + **Configuración avanzada**: elija esta opción si desea utilizar un dispositivo de núcleo de Greengrass existente o crear uno manualmente.

       1. Elija un dispositivo principal de Greengrass o elija Crear dispositivo principal de **Greengrass** para crear uno en la consola. AWS IoT Greengrass V2 Para obtener más información, consulte [Configuración de dispositivos centrales de AWS IoT Greengrass V2](https://docs.aws.amazon.com/greengrass/v2/developerguide/setting-up.html) en la *Guía para desarrolladores de AWS IoT Greengrass Version 2 *.

1. Seleccione **Crear puerta de enlace**.

1. En el cuadro de diálogo del **instalador de la puerta de enlace Generate SiteWise Edge**, seleccione **Generar y descargar**. AWS IoT SiteWise genera automáticamente un instalador que puede usar para configurar su dispositivo local.
**importante**  
No puede volver a generar este archivo. Asegúrese de guardar el archivo del instalador en una ubicación segura porque lo utilizará más adelante.

------
#### [ AWS CLI ]

Para crear una puerta de enlace autohospedada mediante AWS CLI, proporcione un nombre para la puerta de enlace, especifique la plataforma y la versión de la puerta de enlace. Hay muchas otras opciones que puede especificar al crear una puerta de enlace. Para obtener más información, consulte [create-gateway](https://docs.aws.amazon.com/cli/latest/reference/iotsitewise/create-gateway.html) en la Referencia de *AWS CLI comandos* de AWS IoT SiteWise

Para utilizar este ejemplo, reemplace los marcadores de posición de entrada del usuario con su propia información.

```
aws iotsitewise create-gateway \
    --gateway-name your-gateway-name \
    --gateway-platform greengrassV2={coreDeviceThingName=your-core-device-thing-name, coreDeviceOperatingSystem=LINUX_AMD64} \                        
    --gateway-version 3 \
    [--cli-input-json your-configuration]
```
+ `gateway-name`— Un nombre único para la puerta de enlace.
+ `gateway-platform`— Especifica la configuración de la plataforma de la puerta de enlace. Para las puertas de enlace autohospedadas, introduzca. `greengrassV2` *Para obtener más información, consulte [las opciones](https://docs.aws.amazon.com/cli/latest/reference/iotsitewise/create-gateway.html#options) en la sección create-gateway de la Referencia de AWS CLI comandos para.* AWS IoT SiteWise
  + `coreDeviceThingName`— El nombre del AWS IoT para tu dispositivo AWS IoT Greengrass V2 principal.
  + `coreDeviceOperatingSystem`— El sistema operativo del dispositivo principal en AWS IoT Greengrass V2. Especificar el sistema operativo es obligatorio `gateway-version 3` y no aplicable para`gateway-version 2`. Las opciones incluyen: `LINUX_AARCH64``LINUX_AMD64`, y `WINDOWS_AMD64`
+ `gateway-version`— La versión de la puerta de enlace.
  + Para crear una puerta de enlace V3 compatible con MQTT, utilícela `3` para la versión de puerta de enlace.
  + Para crear una puerta de enlace Classic Streams, V2, utilícela `2` para la versión de puerta de enlace.
+ `cli-input-json`— Un archivo JSON que contiene los parámetros de la solicitud.

------

Ahora que ha creado la puerta de enlace SiteWise Edge,[Instale el software AWS IoT SiteWise Edge Gateway en su dispositivo local](install-gateway-software-on-local-device.md).

# Instale el software AWS IoT SiteWise Edge Gateway en su dispositivo local
<a name="install-gateway-software-on-local-device"></a>

Después de crear una puerta de enlace AWS IoT SiteWise Edge, instale el software de puerta de enlace SiteWise Edge en su dispositivo local. SiteWise El software de puerta de enlace Edge se puede instalar en dispositivos locales que tengan instalados sistemas operativos Linux o de Microsoft Windows servidor.

**importante**  
Asegúrese de que su dispositivo local se conecte a Internet.

------
#### [ Linux ]

El siguiente procedimiento utiliza SSH para conectarse a su dispositivo local. También puede utilizar una memoria flash USB u otra herramienta para transferir el archivo del instalador a su dispositivo local. Si no quieres usar SSH, ve al **paso 2: instala el software de puerta de enlace SiteWise Edge que** se muestra a continuación.

**Requisitos previos de SSH**

Antes de conectarse a su dispositivo mediante SSH debe cumplir los siguientes requisitos previos.
+ Linux y macOS: descargue e instale OpenSSH. Para obtener más información, consulte [https://www.openssh.com](https://www.openssh.com/).

**Paso 1: Copie el instalador en su dispositivo de puerta de enlace SiteWise Edge**

En las siguientes instrucciones se explica cómo conectarse al dispositivo local mediante un cliente SSH.

1. Para conectarse a su dispositivo, ejecute el siguiente comando en una ventana de terminal de su ordenador *username* y sustituya y por un nombre de usuario y una dirección IP *IP* con privilegios elevados.

   ```
   ssh username@IP
   ```

1. Para transferir el archivo de instalación que AWS IoT SiteWise se generó a su dispositivo de puerta de enlace SiteWise Edge, ejecute el siguiente comando.
**nota**  
*path-to-saved-installer*Reemplácelo por la ruta de su computadora que utilizó para guardar el archivo de instalación y el nombre del archivo de instalación.
*IP-address*Sustitúyala por la dirección IP de tu dispositivo local.
*directory-to-receive-installer*Sustitúyala por la ruta del dispositivo local que utilizaste para recibir el archivo de instalación.

   ```
   scp path-to-saved-installer.sh user-name@IP-address:directory-to-receive-installer
   ```

**Paso 2: Instale el software SiteWise Edge Gateway**

En los siguientes procedimientos, ejecute los comandos en una ventana de terminal de su dispositivo de puerta de enlace SiteWise Edge.

1. Otorgue al archivo instalador el permiso de ejecución.

   ```
   chmod +x path-to-installer.sh
   ```

1. Ejecute el instalador.

   ```
   sudo ./path-to-installer.sh
   ```

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

**Requisitos previos**

Debe cumplir los siguientes requisitos previos para instalar el software de puerta de enlace SiteWise Edge:
+ Microsoft WindowsServidor 2019 o posterior instalado
+ Privilegios de administrador
+ PowerShell instalada la versión 5.1 o posterior
+ SiteWise El instalador de Edge Gateway se descargó en el servidor Windows donde se aprovisionará

**Paso 1: Ejecute PowerShell como administrador**

1. En el servidor Windows en el que desee instalar SiteWise Edge Gateway, inicie sesión como administrador.

1. Ingresa **PowerShell**en la barra de búsqueda de Windows.

1. En los resultados de la búsqueda, abre el menú contextual (con el botón derecho) de la PowerShell aplicación de Windows. Seleccione **Ejecutar como administrador**.

**Paso 2: Instale el software SiteWise Edge Gateway**

Ejecute los siguientes comandos en una ventana de terminal de su dispositivo SiteWise Edge Gateway.

1. Desbloquee el instalador de SiteWise Edge Gateway.

   ```
   unblock-file path-to-installer.ps1
   ```

1. Ejecute el instalador.

   ```
   ./path-to-installer.ps1
   ```
**nota**  
Si la ejecución del script está deshabilitada en el sistema, cambie la política de ejecución del script a `RemoteSigned`.  

   ```
   Set-ExecutionPolicy RemoteSigned
   ```

------

El siguiente paso depende del *tipo* de puerta de enlace autohospedada que necesite. Continúe hasta [Puertas de enlace V3 habilitadas para MQTT para Edge AWS IoT SiteWise](mqtt-enabled-v3-gateway.md) o. [Transmisiones clásicas, pasarelas V2 para Edge AWS IoT SiteWise](classic-streams-v2-gateway.md)

# Puertas de enlace V3 habilitadas para MQTT para Edge AWS IoT SiteWise
<a name="mqtt-enabled-v3-gateway"></a>

AWS IoT SiteWise puede utilizar puertas de enlace V3 habilitadas para MQTT, lo que representa un avance significativo en la arquitectura de puerta de enlace Edge. SiteWise Este tipo de puerta de enlace aprovecha el protocolo MQTT (Message Queuing Telemetry Transport) para la comunicación de datos, lo que proporciona una mayor flexibilidad y eficiencia en las implementaciones de IoT industrial.

La puerta de enlace V3, compatible con MQTT, utiliza MQTT para la transferencia de datos, lo que permite un protocolo de red ligero de publicación y suscripción que transporta los mensajes de manera eficiente entre los dispositivos y la nube. Puede configurar varios destinos de datos, incluida la ingesta de datos en tiempo real directamente AWS IoT SiteWise y la ingesta de datos en búfer mediante Amazon S3. Para permitir una recopilación de datos precisa, puede implementar filtros de ruta para suscribirse a temas específicos de MQTT.

Las pasarelas V3, habilitadas para MQTT, vienen con un destino en tiempo real preconfigurado con filtros configurados en «\$1» (todos los temas), que puede personalizar o eliminar según sea necesario. Para agilizar la administración de datos, solo puede existir un destino en tiempo real en cada puerta de enlace.

La arquitectura compatible con MQTT difiere considerablemente de la pasarela Classic Streams, V2. Mientras que la V2 utiliza un enfoque basado en flujos, la V3 emplea MQTT, que ofrece destinos de datos y opciones de filtrado más configurables. Sin embargo, tenga en cuenta que la V3 no es compatible con el paquete de procesamiento de datos, que está disponible en la V2.

La puerta de enlace V3 habilitada para MQTT ofrece varias ventajas: 
+ Escalabilidad mejorada, debido a la naturaleza liviana del MQTT, que permite un mejor manejo de numerosos dispositivos y una transmisión de datos de alta frecuencia.
+ Control de datos mejorado mediante filtros de ruta, lo que permite una gestión pormenorizada de la recopilación de datos y reduce la transferencia y el procesamiento innecesarios de datos.
+ Gestión flexible de los datos, que permite configurar entre el procesamiento en tiempo real y el almacenamiento en búfer en función de las necesidades específicas.
+ Alineación con los estándares modernos de comunicación de IoT, preparando el terreno para futuras mejoras e integraciones.

Considere la posibilidad de adoptar la puerta de enlace V3 compatible con MQTT para las nuevas implementaciones, especialmente cuando necesite opciones flexibles de ingesta de datos y un control preciso de la recopilación de datos.

**nota**  
Para las implementaciones o escenarios existentes que requieren el paquete de procesamiento de datos, la pasarela Classic Streams y V2 sigue siendo una opción viable.

Al ofrecer ambos tipos de puertas de enlace, AWS IoT SiteWise garantiza que pueda elegir la solución que mejor se adapte a sus necesidades específicas de IoT industrial, ya sea que priorice las capacidades avanzadas de MQTT o la compatibilidad con los sistemas existentes.

## Filtros de destinos y rutas
<a name="create-destination-summary"></a>

Consulte los siguientes temas para obtener más información sobre los filtros de destinos y rutas en las pasarelas habilitadas para MQTT:
+ [Comprenda los destinos de AWS IoT SiteWise Edge](gw-destinations.md#source-destination)
+ [Agregue un destino de AWS IoT SiteWise Edge en tiempo real](destinations-real-time.md)
+ [Añadir un destino almacenado en AWS IoT SiteWise búfer mediante Amazon S3](destinations-buffered.md)
+ [Conozca los filtros de ruta para los destinos de AWS IoT SiteWise EdgeEntendimiento de filtros de ruta](gw-destinations.md#destinations-path-filters)
+ [Agregue filtros de ruta a los destinos de AWS IoT SiteWise Edge](destinations-add-path-filters.md)
+ [Administre los destinos de AWS IoT SiteWise Edge](destinations-manage.md)

# Connect aplicaciones externas al broker EMQX
<a name="connect-external-applications-emqx"></a>

Esta guía explica cómo conectar aplicaciones externas a su puerta de enlace AWS IoT SiteWise Edge a través de un intermediario EMQX en su puerta de enlace V3 implementada y habilitada para MQTT. Las aplicaciones externas pueden incluir herramientas de monitoreo personalizadas, software de visualización de terceros o sistemas heredados que necesitan interactuar con sus datos industriales en la periferia.

Abordaremos los pasos de configuración tanto para Linux como para Microsoft Windows entornos, incluida la configuración de implementación de EMQX, la configuración de TLS para conexiones seguras y las reglas de autorización para controlar el acceso a temas específicos.

**nota**  
EMQX no es un vendedor ni proveedor de Edge. AWS IoT SiteWise 

**importante**  
Para proteger las conexiones a su puerta de enlace, le recomendamos encarecidamente que utilice la autenticación basada en certificados a través de la función de autenticación del dispositivo AWS IoT Greengrass cliente. Este método proporciona una seguridad sólida mediante la autenticación TLS mutua (mTLS). Para obtener más información, consulte [Conectar dispositivos cliente a dispositivos principales](https://docs.aws.amazon.com/greengrass/v2/developerguide/connect-client-devices.html) en la *Guía para AWS IoT Greengrass Version 2 desarrolladores*.

Si no puede utilizar la autenticación basada en certificados, siga esta guía para configurar la autenticación mediante nombres de usuario y contraseñas.

## Requisitos previos
<a name="emqx-broker-prerequisites"></a>
+ Una puerta de enlace V3 habilitada para SiteWise Edge MQTT que se ha implementado y está en línea
+ Acceso al host de la puerta de enlace
+ Acceso a las AWS IoT Greengrass consolas AWS IoT SiteWise y

**Topics**
+ [Requisitos previos](#emqx-broker-prerequisites)
+ [Formato de carga útil de mensajes para el broker EMQX en Edge AWS IoT SiteWise](connect-broker-payload-format.md)
+ [Configure el bróker EMQX](configure-emqx-broker.md)
+ [Conecte una aplicación al bróker EMQX en Edge AWS IoT SiteWise](connect-app-to-broker.md)
+ [Configure las reglas de autorización para AWS IoT SiteWise Edge en EMQX](authorization-rules-emqx-broker.md)

# Formato de carga útil de mensajes para el broker EMQX en Edge AWS IoT SiteWise
<a name="connect-broker-payload-format"></a>

Para que el componente de SiteWise editor de IoT consuma datos de su aplicación externa y los publique AWS IoT SiteWise en la nube, la carga útil enviada al intermediario debe cumplir requisitos específicos.

Comprender el formato de la carga útil es clave para una comunicación exitosa de MQTT con Edge. AWS IoT SiteWise Si bien el proceso de configuración de la conexión se explica en secciones posteriores, primero presentamos los requisitos de carga útil para ayudarlo a planificar su implementación.

## Requisitos del tema MQTT
<a name="connect-broker-mqtt-requirements"></a>

No hay restricciones en la estructura de los temas de MQTT, incluida la cantidad de niveles o caracteres utilizados. Sin embargo, recomendamos que el tema coincida con el `propertyAlias` campo de la carga útil.

**Example Ejemplo de alias de propiedad**  
Si el tema de MQTT es`site1/line1/compressor1/temperature`, asegúrese de que `propertyAlias` coincidan.  

```
{
  "assetId": "compressor_asset_01",
  "propertyAlias": "site1/line1/compressor1/temperature",
  "propertyId": "temperature_sensor_01",
  "propertyValues": [
    {
      "quality": "GOOD",
      "timestamp": {
        "offsetInNanos": 0,
        "timeInSeconds": 1683000000
      },
      "value": {
        "doubleValue": 23.5
      }
    }
  ]
}
```

## Estructura de carga útil de JSON
<a name="connect-broker-json-payload"></a>

[La carga útil de los mensajes MQTT está escrita en JSON y sigue el formato de `PutAssetPropertyValueEntry` mensaje definido en la referencia de la AWS IoT SiteWise API.](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_PutAssetPropertyValueEntry.html)

```
{
   "assetId": "string",
   "propertyAlias": "string",
   "propertyId": "string",
   "propertyValues": [
      {
         "quality": "string",
         "timestamp": {
            "offsetInNanos": number,
            "timeInSeconds": number
         },
         "value": {
            "booleanValue": boolean,
            "doubleValue": number,
            "integerValue": number,
            "stringValue": "string"
         }
      }
   ]
}
```

**nota**  
Para que un mensaje se considere válido, solo se puede cumplir una de las siguientes condiciones:  
El `propertyAlias` está establecido, o
Ambos `assetId` y `propertyId` están configurados
`PutAssetPropertyValueEntry`Tiene un `entryId` campo que no es obligatorio en este contexto.

# Configure el bróker EMQX
<a name="configure-emqx-broker"></a>

En esta sección se explica cómo añadir nombres de usuario y contraseñas. También explica cómo establecer una conexión TLS desde una fuente externa utilizando el nombre de usuario y la contraseña agregados. Puede configurar el broker EMQX mediante Linux o. Microsoft Windows

**nota**  
Para configurar el broker, necesita un dispositivo central que esté configurado con la configuración EMQX predeterminada en su puerta de enlace V3 habilitada para MQTT.

**importante**  
Tras completar este procedimiento, le recomendamos encarecidamente que configure las reglas de autorización. Para obtener más información, consulte [Configure las reglas de autorización para AWS IoT SiteWise Edge en EMQX](authorization-rules-emqx-broker.md). Las reglas de autorización para los usuarios adicionales mejoran la seguridad. 

## Actualice la configuración de despliegue de EMQX para la autenticación
<a name="update-emqx-broker-authentication"></a>

**Para actualizar la configuración de despliegue de EMQX para la autenticación**

1. <a name="sitewise-open-console"></a>Vaya a la [consola de AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. **En el panel de navegación de la izquierda, elija **las puertas de enlace Edge** en la sección Edge.**

1. Elija la puerta de enlace que desee configurar.

1. En la sección de **configuración de la puerta de enlace Edge**, copia el valor de tu **dispositivo principal de Greengrass**. Guárdelo para usarlo más adelante.

1. Abra la [consola de AWS IoT](https://console.aws.amazon.com/iot/).

1. **En el menú de navegación de la izquierda, en la sección **Administrar**, selecciona **dispositivos Greengrass** y, a continuación, Implementaciones.**

1. Busque el valor del dispositivo principal que guardó anteriormente y elija ese enlace para abrir la implementación.

1. Selecciona el botón desplegable **Acciones** y, a continuación, **Revisa**.

1. Lea el mensaje que aparece y, a continuación, seleccione **Revisar el despliegue**. Aparece la página **Especificar el destino**.

1. Elija **Siguiente** hasta llegar al paso **Configurar componentes**.

1. Seleccione el botón de opción `aws.greengrass.clientdevices.mqtt.EMQX`.

1. Pulse el botón **Configurar componente**. Aparece una página de configuración para el componente.

1. En **Actualización de la configuración**, seleccione **Restablecer la configuración predeterminada para la versión del componente: 2.\$1. **\$1.

1. Introduzca la siguiente configuración en la sección **Configuración para fusionar** en función de su sistema operativo.

------
#### [ Linux ]

   ```
   {
       "emqxConfig": {
           "authorization": {
               "no_match": "allow"
           },
           "listeners": {
               "tcp": {
                   "default": {
                       "enabled": true,
                       "enable_authn": false
                   }
               },
               "ssl": {
                   "default": {
                       "enabled": true,
                       "enable_authn": true,
                       "ssl_options": {
                           "verify": "verify_none",
                           "fail_if_no_peer_cert": false
                       }
                   }
               }
           },
           "authentication": {
               "enable": true,
               "backend": "built_in_database",
               "mechanism": "password_based",
               "password_hash_algorithm": {
                   "iterations": 210000,
                   "mac_fun": "sha512",
                   "name": "pbkdf2"
               },
               "user_id_type": "username"
           },
           "dashboard": {
               "listeners": {
                   "http": {
                       "bind": 18083
                   }
               }
           }
       },
       "authMode": "bypass",
       "dockerOptions": "-p 8883:8883 -p 127.0.0.1:1883:1883 -p 127.0.0.1:18083:18083 -v emqx-data:/opt/emqx/data -e EMQX_NODE__NAME=emqx@local",
       "requiresPrivilege": "true"
   }
   ```

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

   ```
   {
       "emqxConfig": {
           "authorization": {
               "no_match": "allow"
           },
           "listeners": {
               "tcp": {
                   "default": {
                       "enabled": true,
                       "enable_authn": false
                   }
               },
               "ssl": {
                   "default": {
                       "enabled": true,
                       "enable_authn": true,
                       "ssl_options": {
                           "verify": "verify_none",
                           "fail_if_no_peer_cert": false
                       }
                   }
               }
           },
           "authentication": {
               "enable": true,
               "backend": "built_in_database",
               "mechanism": "password_based",
               "password_hash_algorithm": {
                   "iterations": 210000,
                   "mac_fun": "sha512",
                   "name": "pbkdf2"
               },
               "user_id_type": "username"
           },
           "dashboard": {
               "listeners": {
                   "http": {
                       "bind": 18083
                   }
               }
           }
       },
       "authMode": "bypass",
       "requiresPrivilege": "true"
   }
   ```

   El `dockerOptions` campo es solo para pasarelas de Linux.

------

1. Elija **Confirmar**.

1. Seleccione **Siguiente** hasta llegar al paso de **revisión**.

1. Elija **Implementar**.

1. Una vez que la implementación se haya realizado correctamente, continúe con el siguiente paso.

## Habilite la autenticación de nombre de usuario y contraseña
<a name="emqx-broker-username-password-auth"></a>

En esta sección, se muestra cómo añadir nombres de usuario y contraseñas a través de la GUI del panel de EMQX.

**nota**  
Las instrucciones relacionadas con EMQX que se proporcionan son solo de referencia. Como la documentación y las funciones de EMQX pueden cambiar con el tiempo y no mantenemos su documentación, recomendamos consultar la documentación [oficial de EMQX para obtener la](https://docs.emqx.com/en/emqx/latest/) información más actualizada.

------
#### [ EMQX Dashboard ]

**Para habilitar la autenticación de nombre de usuario y contraseña a través del panel de EMQX**

1. Asegúrese de estar dentro del host de la puerta de enlace.

1. Abra una ventana del navegador y visite [http://localhost:18083/](http://localhost:18083/).

1. Introduzca el nombre de usuario **admin** y la contraseña predeterminados de**public**. Para obtener más información, consulte el [panel de control de EMQX](https://docs.emqx.com/en/emqx/latest/dashboard/introduction.html#first-login) en los documentos de *EMQX*.

1. Después de iniciar sesión, se le solicitará que cambie su contraseña. Actualice su contraseña para continuar con el panel de control de EMQX.

1. **En el menú de navegación de la izquierda, seleccione el icono del escudo y, a continuación, Autenticación.**

1. En la fila **Base de datos integrada**, pulse el botón **Usuarios**.

1. Pulse el botón con el icono del signo más para añadir usuarios. Aparece la pantalla **Añadir**.

1. Introduzca un nombre de usuario y una contraseña para el usuario de la aplicación externa.

1. Seleccione **Save**. El nombre de usuario que eligió aparece en la tabla de la página de **autenticación**.

**nota**  
Las reglas de autorización existentes o predeterminadas se aplican al nuevo usuario. Se recomienda revisarlas y ajustarlas a las necesidades de las aplicaciones externas.

------
#### [ EMQX Management with Linux ]

Utilice la herramienta AWS IoT SiteWise CLI de EMQX en. `/greengrass/v2/bin/swe-emqx-cli`

**Para habilitar la autenticación de nombre de usuario y contraseña mediante EMQX Management mediante Linux**

1. Cambie la contraseña de administrador ejecutando el siguiente comando:

   ```
   /greengrass/v2/bin/swe-emqx-cli admin change-pwd
   ```

1. Cuando se le solicite, haga lo siguiente:

   1. Introduzca su usuario administrador actual (el predeterminado es`admin`) y la contraseña (el predeterminado es`public`).

   1. Introduzca y confirme su nueva contraseña.

   Si se ejecuta correctamente, aparecerá el siguiente mensaje:

   ```
   admin password changed successfully
   ```

1. Añada usuarios para aplicaciones externas ejecutando el siguiente comando:

   ```
   /greengrass/v2/bin/swe-emqx-cli users add
   ```

1. Cuando se le solicite, haga lo siguiente:

   1. Introduzca el nombre de usuario del nuevo usuario.

   1. Introduzca y confirme la contraseña del nuevo usuario.

   Si se ejecuta correctamente, aparecerá el siguiente mensaje:

   ```
   User '[username]' created successfully
   ```

1. Compruebe la configuración del usuario ejecutando el siguiente comando:

   ```
   /greengrass/v2/bin/swe-emqx-cli users list
   ```

   El resultado muestra todos los usuarios configurados:

   ```
   Users:
   - [your-added-username]
   
   Total users: 1
   ```

------
#### [ EMQX Management with Windows ]

Utilice la herramienta AWS IoT SiteWise CLI de EMQX en una de las siguientes ubicaciones:
+ PowerShell: `C:\greengrass\v2\bin\swe-emqx-cli.ps1`
+ Línea de comandos: `C:\greengrass\v2\bin\swe-emqx-cli.bat`

**Para habilitar la autenticación de nombre de usuario y contraseña mediante la administración de EMQX mediante Windows**

1. Cambie la contraseña de administrador ejecutando el siguiente comando:

   ```
   C:\greengrass\v2\bin\swe-emqx-cli.ps1 admin change-pwd
   ```

1. Cuando se le solicite, haga lo siguiente:

   1. Introduzca su usuario administrador actual (el predeterminado es`admin`) y la contraseña (el predeterminado es`public`).

   1. Introduzca y confirme su nueva contraseña.

   Si se ejecuta correctamente, aparecerá el siguiente mensaje:

   ```
   admin password changed successfully
   ```

1. Añada usuarios para aplicaciones externas ejecutando el siguiente comando:

   ```
   C:\greengrass\v2\bin\swe-emqx-cli.ps1 users add
   ```

1. Cuando se le solicite, haga lo siguiente:

   1. Introduzca el nombre de usuario del nuevo usuario.

   1. Introduzca y confirme la contraseña del nuevo usuario.

   Si se ejecuta correctamente, aparecerá el siguiente mensaje:

   ```
   User '[username]' created successfully
   ```

1. Compruebe la configuración del usuario ejecutando el siguiente comando:

   ```
   C:\greengrass\v2\bin\swe-emqx-cli.ps1 users list
   ```

   El resultado muestra todos los usuarios configurados:

   ```
   Users:
   - [your-added-username]
   
   Total users: 1
   ```

------

# Conecte una aplicación al bróker EMQX en Edge AWS IoT SiteWise
<a name="connect-app-to-broker"></a>

El broker EMQX utiliza Transport Layer Security (TLS) en el puerto 8883 para cifrar todas las comunicaciones, lo que garantiza que sus datos permanezcan protegidos durante la transmisión. En esta sección, se explican los pasos para establecer conexiones entre sus aplicaciones y el bróker EMQX. Seguir estos pasos ayuda a mantener la integridad y confidencialidad de sus datos industriales. El proceso de conexión implica dos enfoques principales: utilizar la detección automática de IP a través de componentes o configurar manualmente los nombres DNS y las direcciones IP como nombres alternativos del sujeto (SANs) en los certificados TLS. Cada método tiene sus propias ventajas en función de la configuración de la red y de los requisitos de seguridad. Esta documentación lo guiará a través de ambas opciones.

**Topics**
+ [Configure TLS para establecer conexiones seguras con el intermediario EMQX en Edge AWS IoT SiteWise](#configure-tls-emqx-broker)
+ [Pruebe la conexión del broker EMQX en Edge AWS IoT SiteWise](#test-emqx-connection)
+ [Utilice su propia CA](#configure-tls-custom-ca)
+ [Abra el puerto 8883 para las conexiones de firewall externas](#emqx-firewall)

## Configure TLS para establecer conexiones seguras con el intermediario EMQX en Edge AWS IoT SiteWise
<a name="configure-tls-emqx-broker"></a>

De forma predeterminada, AWS IoT Greengrass genera un certificado de servidor TLS para el broker EMQX firmado por la autoridad de certificación (CA) del dispositivo principal. Para obtener más información, consulte [Conectar dispositivos cliente a un dispositivo AWS IoT Greengrass Core con un agente MQTT](https://docs.aws.amazon.com/greengrass/v2/developerguide/connecting-to-mqtt.html).

### Recupere el certificado TLS
<a name="configure-tls-retrieve-certificate"></a>

Para obtener el certificado de CA, ejecute el siguiente comando en el host de la puerta de enlace:

------
#### [ Linux ]

Ejecute el siguiente comando en una sesión de shell en el host de la puerta de enlace:

```
/greengrass/v2/bin/swe-emqx-cli cert
```

Este comando muestra la ubicación del certificado e imprime su contenido.

También puede guardar el certificado en un archivo mediante este comando:

```
/greengrass/v2/bin/swe-emqx-cli cert --output /path/to/certificate.pem
```

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

Ejecute el siguiente comando en una PowerShell sesión en el host de la puerta de enlace:

```
C:\greengrass\v2\bin\swe-emqx-cli.ps1 cert
```

Este comando muestra la ubicación del certificado e imprime su contenido.

También puede guardar el certificado en un archivo mediante este comando:

```
C:\greengrass\v2\bin\swe-emqx-cli.ps1 cert --output C:\path\to\certificate.pem
```

La CLI localiza automáticamente el certificado independientemente de la ruta exacta del sistema.

------

Copie el contenido del archivo ca.pem a la aplicación externa que va a conectar al agente. Guárdelo como `BrokerCoreDeviceCA.pem`.

### Agregue names/IP direcciones DNS personalizadas al certificado del servidor TLS
<a name="configure-tls-custom-dns-ip"></a>

El nombre alternativo (SAN) del sujeto del certificado generado por AWS IoT Greengrass es. `localhost` Al establecer una conexión TLS desde fuera del host de la puerta de enlace, se produce un error en el paso de verificación de TLS porque el nombre de host del intermediario no coincide con el nombre de host del certificado del `localhost` servidor.

Para solucionar el problema de los nombres de host no coincidentes, AWS IoT Greengrass proporciona dos formas de administrar los puntos finales de los dispositivos principales. En esta sección se describen ambas opciones. Para obtener información más detallada, consulte [Administrar los terminales de los dispositivos principales](https://docs.aws.amazon.com/greengrass/v2/developerguide/manage-core-device-endpoints.html) en la *Guía para AWS IoT Greengrass Version 2 desarrolladores*.
+ Para conectarse al agente EMQX mediante la dirección IP del dispositivo principal, utilice la sección Detección automática de IP.
+ Para conectarse al agente EMQX mediante un nombre DNS en lugar de una dirección IP, utilice la sección de administración manual.

------
#### [ Automated IP discovery ]

Esta opción permite que el dispositivo principal descubra automáticamente su dirección IP y la añada como nombre alternativo del sujeto (SAN) al certificado del agente.

1. Añada el `aws.greengrass.clientdevices.IPDetector` componente a la implementación de su dispositivo principal.

1. Implemente los cambios en su dispositivo

1. Espere a que se complete el despliegue.

   Una vez completada la implementación, puede establecer una conexión TLS segura mediante la dirección IP del intermediario.

   La dirección IP se agrega automáticamente como SAN al certificado del corredor.

------
#### [ Manual DNS and IP Configuration ]

Puede agregar manualmente nombres DNS y direcciones IP como nombres alternativos del asunto (SANs) a su certificado TLS. Este método resulta útil cuando ha configurado un nombre DNS para el host de la puerta de enlace.

**importante**  
Si utiliza el IPDetector componente, elimínelo de la implementación antes de continuar. El IPDetector componente anula las configuraciones manuales de los puntos finales.

**Para configurar manualmente los puntos finales**

1. <a name="sitewise-open-console"></a>Vaya a la [consola de AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. En el panel de navegación de la izquierda, elija **las puertas de enlace Edge** en la sección **Edge**.

1. Elija la puerta de enlace que desee configurar.

1. En la sección de **configuración de la puerta de enlace Edge**, elija la URL de su **dispositivo principal de Greengrass**. Aparece la página del dispositivo principal.

1. Seleccione la pestaña **Dispositivos cliente**.

1. Seleccione **Administrar puntos de conexión**.

1. En el cuadro de diálogo Administrar puntos de conexión, introduzca los nombres DNS y las direcciones IP que desee SANs añadir. Utilice el puerto 8883.

1. Elija **Actualizar**.

El certificado del servidor TLS del bróker se actualiza automáticamente para incluir sus nuevos puntos de conexión.

**Para verificar la actualización del certificado del servidor TLS mediante Linux**

1. Inicie una sesión de shell en el host de la puerta de enlace.

   ```
   docker exec emqx openssl x509 -in ./data/cert.pem -text -noout | grep -A1 "Subject Alternative Name"
   ```

1. El comando devuelve un resultado similar al siguiente:

   ```
   X509v3 Subject Alternative Name: 
   DNS:endpoint_you_added, DNS:localhost
   ```

1. Compruebe que su punto final aparezca en la lista de SANs.

**Para comprobar la actualización del certificado del servidor TLS mediante Windows**

1. Inicie una sesión de shell en el host de la puerta de enlace.

   ```
   (Get-PfxCertificate -FilePath "C:\greengrass\v2\work\aws.greengrass.clientdevices.mqtt.EMQX\v2\data\cert.pem").Extensions | Where-Object { $_.Oid.FriendlyName -eq "Subject Alternative Name" } | ForEach-Object { "Subject Alternative Name:", ($_.Format($true) -split "`n")[0..1] }
   ```

1. El comando devuelve un resultado similar al siguiente:

   ```
   Subject Alternative Name:
   DNS Name=your-endpoint
   DNS Name=localhost
   ```

1. Compruebe que el punto final que agregó esté en la lista de SANs.

------

## Pruebe la conexión del broker EMQX en Edge AWS IoT SiteWise
<a name="test-emqx-connection"></a>

Tras configurar su agente EMQX con certificados TLS y credenciales de autenticación, es importante comprobar que la configuración funciona correctamente. Probar la conexión ayuda a garantizar que las configuraciones de seguridad se implementen correctamente y que los clientes puedan establecer correctamente conexiones cifradas con el intermediario. En esta sección se muestra cómo probar la conexión de su intermediario mediante el cliente de interfaz de línea de comandos (CLI) de Mosquitto, una herramienta de cliente MQTT muy utilizada que admite el cifrado y la autenticación TLS.

### Utilice el cliente CLI de Mosquitto para probar la conexión del broker EMQX
<a name="test-emqx-connection-mosquitto"></a>

En este paso, utilizaremos el cliente CLI mosquitto para probar nuestra configuración y asegurarnos de que podemos conectarnos correctamente al corredor con el nombre de usuario y la contraseña que creamos anteriormente. Para obtener los `BrokerCoreDeviceCA.pem` siguientes pasos, consulte el Paso 3: Configuración de TLS.

```
mosquitto_sub -h hostname|ip address \
    -p 8883 \
    -t "#" \
    -q 1 \
    -u username -P password \
    --cafile BrokerCoreDeviceCA.pem
```

**nota**  
Es posible que aparezca un error SSL:Verify si la hostname/IP dirección a la que se está conectando no coincide con el nombre alternativo (SAN) del sujeto que figura en el certificado de CA que está transmitiendo al cliente. Consulte la sección «Añadir names/IP direcciones DNS personalizadas al certificado del servidor TLS» en el Paso 3: Configuración de TLS para obtener un certificado con la SAN correcta.

En este punto, todos los usuarios tienen acceso a publicar y suscribirse a todos los temas del intermediario. Continúe en [Configure las reglas de autorización para AWS IoT SiteWise Edge en EMQX](authorization-rules-emqx-broker.md).

## Utilice su propia CA
<a name="configure-tls-custom-ca"></a>

AWS IoT Greengrass describe cómo configurar su propio componente de autenticación del dispositivo cliente para que utilice su propia autoridad de certificación (CA). El componente de autenticación del dispositivo de cliente (`aws.greengrass.clientdevices.Auth`) autentica los dispositivos de cliente y autoriza las acciones de los dispositivos de cliente. Para obtener más información, consulte [Uso de su propia autoridad de certificación](https://docs.aws.amazon.com/greengrass/v2/developerguide/connecting-to-mqtt.html#use-your-own-CA) en la *Guía para AWS IoT Greengrass Version 2 desarrolladores*.

Para usar su propia CA, añada el `aws.greengrass.clientdevices.Auth` componente a su implementación para poder especificar una configuración personalizada.

## Abra el puerto 8883 para las conexiones de firewall externas
<a name="emqx-firewall"></a>

------
#### [ Linux ]

En la regla de firewall de su host Linux, añada una regla de entrada para el puerto 8883 a fin de permitir las conexiones entrantes desde fuera del host de la puerta de enlace. Si hay algún firewall instalado, asegúrese de que se permitan las conexiones TLS entrantes en el puerto 8883.

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

En la regla de firewall del Microsoft Windows host, añada una regla de entrada para el puerto 8883 a fin de permitir las conexiones entrantes desde fuera del host de la puerta de enlace. Asegúrese de que la regla sea una regla de permiso, del tipo puerto, que especifique el puerto 8883. Puede configurarlo de acuerdo con la configuración de su red para permitir las conexiones desde sus aplicaciones externas al intermediario.

------

# Configure las reglas de autorización para AWS IoT SiteWise Edge en EMQX
<a name="authorization-rules-emqx-broker"></a>

EMQX permite agregar reglas de autorización basadas en identificadores como el nombre de usuario, la dirección IP o el ID de cliente. Esto resulta útil si desea limitar el número de aplicaciones externas que se conectan a diversas operaciones o temas.

**Topics**
+ [Configure la autorización mediante la base de datos integrada con Linux](add-auth-rules-database-emqx-broker-linux.md)
+ [Configure la autorización mediante la base de datos integrada con Windows](add-auth-rules-database-emqx-broker-windows.md)
+ [Actualice la configuración de despliegue del EMQX para su autorización](update-emqx-broker-authorization.md)
+ [Agregue reglas de autorización a través del panel de control de EMQX para los usuarios](add-rules-emqx-broker.md)

# Configure la autorización mediante la base de datos integrada con Linux
<a name="add-auth-rules-database-emqx-broker-linux"></a>

Al configurar las reglas de autorización, hay dos opciones de configuración que dependen de la configuración de la implementación.
+ **Docker**— Si ejecuta una Docker instalación estándar sin ellaLitmus Edge, utilice la configuración de **puerta de enlace Docker Bridge**. Este suele ser el caso cuando solo se han implementado AWS IoT SiteWise componentes.
+ **Litmus Edge**— Si los ha Litmus Edge instalado en su puerta de enlace, utilice la configuración de **Litmus Edgesubred de la red**.

**nota**  
Si configura inicialmente la puerta de enlace Docker puente y la instala posteriormenteLitmus Edge, vuelva a configurar las reglas de autorización mediante la opción de Litmus Edge subred de red para garantizar una comunicación adecuada entre todos los componentes.

**Para agregar reglas de autorización básicas**

1. Compruebe que el bróker EMQX esté desplegado y en funcionamiento.

1. Inicie una sesión de shell en el host de su puerta de enlace.

------
#### [ Docker without Litmus Edge ]

   Para una Docker instalación estándar sin Litmus Edge ella, ejecute:

   ```
   /greengrass/v2/bin/swe-emqx-cli acl init
   ```

------
#### [ Litmus Edge network subnet ]

   Si estás utilizandoLitmus Edge, determina la IP de la subred de la red de Litmus Edge:

   ```
   docker network inspect LitmusNetwork | grep IPAM -A9
   ```

   Anota el valor de subred del resultado y ejecuta el siguiente comando. `litmus_subnet_ip`Sustitúyalo por el valor de subred del paso anterior.

   ```
   /greengrass/v2/bin/swe-emqx-cli acl init litmus_subnet_ip
   ```

------

   La herramienta crea y aplica automáticamente reglas de autorización para permitir las conexiones desde la dirección IP proporcionada al intermediario. Permite el acceso a todos los temas. Esto incluye el recopilador IoT SiteWise OPC UA y el SiteWise editor de IoT.

1. Continúe en [Actualice la configuración de despliegue del EMQX para su autorización](update-emqx-broker-authorization.md).

# Configure la autorización mediante la base de datos integrada con Windows
<a name="add-auth-rules-database-emqx-broker-windows"></a>

En esta sección se describe la configuración de las reglas de autorización mediante la base de datos integrada para las implementaciones de Windows.

**Para agregar reglas de autorización básicas**

1. Compruebe que el bróker EMQX esté desplegado y en funcionamiento.

1. Ejecute la herramienta AWS IoT SiteWise CLI de EMQX: 

   ```
   C:\greengrass\v2\bin\swe-emqx-cli.ps1 acl init
   ```

   La herramienta crea y aplica automáticamente las reglas de ACL que permiten las conexiones desde el servidor local (127.0.0.1) al intermediario. Permite el acceso a todos los temas. Esto incluye el recopilador IoT SiteWise OPC UA y el SiteWise editor de IoT.

1. Continúe en [Actualice la configuración de despliegue del EMQX para su autorización](update-emqx-broker-authorization.md).

# Actualice la configuración de despliegue del EMQX para su autorización
<a name="update-emqx-broker-authorization"></a>

**Para actualizar la configuración de despliegue de EMQX para su autorización**

1. <a name="sitewise-open-console"></a>Vaya a la [consola de AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. **En el panel de navegación de la izquierda, elija **las puertas de enlace Edge** en la sección Edge.**

1. Elija la puerta de enlace que desee configurar.

1. En la sección de **configuración de la puerta de enlace Edge**, copia el valor de tu **dispositivo principal de Greengrass**. Guárdelo para usarlo más adelante.

1. Abra la [consola de AWS IoT](https://console.aws.amazon.com/iot/).

1. **En el menú de navegación de la izquierda, en la sección **Administrar**, selecciona **dispositivos Greengrass** y, a continuación, Implementaciones.**

1. Busque el valor del dispositivo principal que guardó anteriormente y elija ese enlace para abrir la implementación.

1. Selecciona el botón desplegable **Acciones** y, a continuación, **Revisa**.

1. Lea el mensaje que aparece y, a continuación, seleccione **Revisar el despliegue**. Aparece la página **Especificar el destino**.

1. Elija **Siguiente** hasta llegar al paso **Configurar componentes**.

1. Seleccione el botón de opción `aws.greengrass.clientdevices.mqtt.EMQX`.

1. Pulse el botón **Configurar componente**. Aparece una página de configuración para el componente.

1. En **Actualización de la configuración**, seleccione **Restablecer la configuración predeterminada para la versión del componente: 2.\$1. **\$1.

1. Pegue el siguiente contenido en la sección **Configuración para fusionar** en función de su sistema operativo.

------
#### [ Linux ]

   ```
   {
       "emqxConfig": {
           "authorization": {
               "no_match": "deny",
               "sources": [
                   {
                       "type": "built_in_database"
                   },
                   {
                       "type": "file",
                       "path": "data/authz/acl.conf"
                   }
               ]
           },
           "listeners": {
               "tcp": {
                   "default": {
                       "enabled": true,
                       "enable_authn": false
                   }
               },
               "ssl": {
                   "default": {
                       "enabled": true,
                       "enable_authn": true,
                       "ssl_options": {
                           "verify": "verify_none",
                           "fail_if_no_peer_cert": false
                       }
                   }
               }
           },
           "authentication": {
               "enable": true,
               "backend": "built_in_database",
               "mechanism": "password_based",
               "password_hash_algorithm": {
                   "iterations": 210000,
                   "mac_fun": "sha512",
                   "name": "pbkdf2"
               },
               "user_id_type": "username"
           },
           "dashboard": {
               "listeners": {
                   "http": {
                       "bind": 18083
                   }
               }
           }
       },
       "authMode": "bypass",
       "dockerOptions": "-p 8883:8883 -p 127.0.0.1:1883:1883 -p 127.0.0.1:18083:18083 -v emqx-data:/opt/emqx/data -e EMQX_NODE__NAME=emqx@local",
       "requiresPrivilege": "true"
   }
   ```

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

   ```
   {
       "emqxConfig": {
           "authorization": {
               "no_match": "deny",
               "sources": [
                   {
                       "type": "built_in_database"
                   },
                   {
                       "type": "file",
                       "path": "C:\\greengrass\\v2\\work\\aws.greengrass.clientdevices.mqtt.EMQX\\v2\\data\\authz\\acl.conf"
                   }
               ]
           },
           "listeners": {
               "tcp": {
                   "default": {
                       "enabled": true,
                       "enable_authn": false
                   }
               },
               "ssl": {
                   "default": {
                       "enabled": true,
                       "enable_authn": true,
                       "ssl_options": {
                           "verify": "verify_none",
                           "fail_if_no_peer_cert": false
                       }
                   }
               }
           },
           "authentication": {
               "enable": true,
               "backend": "built_in_database",
               "mechanism": "password_based",
               "password_hash_algorithm": {
                   "iterations": 210000,
                   "mac_fun": "sha512",
                   "name": "pbkdf2"
               },
               "user_id_type": "username"
           },
           "dashboard": {
               "listeners": {
                   "http": {
                       "bind": 18083
                   }
               }
           }
       },
       "authMode": "bypass",
       "requiresPrivilege": "true"
   }
   ```

------

1. Elija **Confirmar**.

1. Elija **Siguiente** hasta llegar al paso **Revisar**.

1. Elija **Implementar**.

**nota**  
A partir de este momento, no podrá editar el archivo ACL para actualizar las reglas de autorización. Como alternativa, puede continuar [Agregue reglas de autorización a través del panel de control de EMQX para los usuarios](add-rules-emqx-broker.md) después de una implementación exitosa.

# Agregue reglas de autorización a través del panel de control de EMQX para los usuarios
<a name="add-rules-emqx-broker"></a>

Puede añadir o actualizar las reglas de autorización mediante el panel de control de EMQX o la herramienta CLI de AWS IoT SiteWise EMQX. La herramienta AWS IoT SiteWise CLI de EMQX gestiona la autorización mediante la base de datos integrada de EMQX.

**nota**  
Añadir reglas de autorización es un paso de configuración avanzada que requiere comprender los patrones de temas de MQTT y el control de acceso. *Para obtener más información sobre cómo crear reglas de autorización utilizando la base de datos integrada de EMQX, consulte [Uso de una base de datos integrada en los documentos de](https://docs.emqx.com/en/emqx/latest/access-control/authz/mnesia.html) EMQX.*

**nota**  
Las instrucciones relacionadas con el EMQX que se proporcionan son solo de referencia. Como la documentación y las funciones de EMQX pueden cambiar con el tiempo y no mantenemos su documentación, recomendamos consultar la documentación [oficial de EMQX para obtener la](https://docs.emqx.com/en/emqx/latest/) información más actualizada.

------
#### [ EMQX dashboard ]

Este procedimiento muestra cómo añadir reglas de autorización en el panel de EMQX.

Solo se puede acceder al panel de EMQX desde el host de la puerta de enlace. Si intenta conectarse desde fuera del host de la puerta de enlace, no podrá acceder al panel de control.

**Para añadir reglas de autorización mediante el panel de EMQX**

1. Asegúrese de estar dentro del host de la puerta de enlace.

1. Abra una ventana del navegador y visite [http://localhost:18083/](http://localhost:18083/).

1. Inicie sesión en el panel de EMQX. En este procedimiento se presupone que ha cambiado sus credenciales de inicio de sesión predeterminadas por las que ha elegido. Para obtener más información sobre la configuración inicial, consulte[Habilite la autenticación de nombre de usuario y contraseña](configure-emqx-broker.md#emqx-broker-username-password-auth).

1. Seleccione el icono del escudo y, a continuación, **Autorización** en el menú desplegable.

1. Pulse el botón **Permisos** en la fila de la **base de datos integrada**. 

1. En la sección de autorización de la base de datos integrada, añada o actualice las reglas de autorización de usuario según las necesidades de su empresa. Para obtener más información sobre la creación de reglas, consulte la sección [Uso de una base de datos integrada](https://docs.emqx.com/en/emqx/latest/access-control/authz/mnesia.html) en los documentos de *EMQX*.

------
#### [ AWS IoT SiteWise CLI tool using Linux ]

**Para administrar las reglas de autorización mediante la herramienta AWS IoT SiteWise CLI de EMQX en Linux:**
+ Agregue reglas de autorización para un usuario mediante el siguiente formato:

  ```
  /greengrass/v2/bin/swe-emqx-cli auth add your-username your-action your-permission your-topic [your-action-permission-topic]
  ```

**Example Agregue reglas de autorización para un usuario**  
En este ejemplo se muestra cómo añadir reglas para un usuario llamado`system1`:  

```
/greengrass/v2/bin/swe-emqx-cli auth add system1 \
    publish allow "sensors/#" \
    subscribe allow "control/#" \
    all deny "#"
```

**Example : Ver las reglas de autorización de un usuario**  
Para ver las reglas de autorización de los `system1` usuarios, ejecute el siguiente comando:  

```
/greengrass/v2/bin/swe-emqx-cli auth list system1
```

**Example : Vea todas las reglas de autorización existentes**  
Para ver todas las reglas de autorización que tiene actualmente, ejecute el siguiente comando:  

```
/greengrass/v2/bin/swe-emqx-cli auth list
```

**Example : Elimine todas las reglas de autorización de un usuario**  
Para eliminar todas las reglas de autorización aplicadas a un usuario concreto, ejecute el siguiente comando:  

```
/greengrass/v2/bin/swe-emqx-cli auth delete system1
```
Se le pedirá que confirme la eliminación.

------
#### [ AWS IoT SiteWise CLI tool using Windows ]

**Para administrar las reglas de autorización mediante la herramienta AWS IoT SiteWise CLI de EMQX en: Windows PowerShell**
+ Agregue reglas de autorización para un usuario mediante el siguiente formato:

  ```
  C:\greengrass\v2\bin\swe-emqx-cli.ps1 auth add your-username your-action your-permission your-topic [your-action-permission-topic]
  ```

**Example : Agregue reglas de autorización para un usuario**  
En este ejemplo se muestra cómo añadir reglas para un usuario llamado`system1`:  

```
C:\greengrass\v2\bin\swe-emqx-cli.ps1 auth add system1 `
    publish allow "sensors/#" `
    subscribe allow "control/#" `
    all deny "#"
```

**Example : Ver las reglas de autorización de un usuario**  
Para ver las reglas de autorización de los `system1` usuarios, ejecute el siguiente comando:  

```
C:\greengrass\v2\bin\swe-emqx-cli.ps1 auth list system1
```

**Example : Vea todas las reglas de autorización existentes**  
Para ver todas las reglas de autorización que tiene actualmente, ejecute el siguiente comando:  

```
C:\greengrass\v2\bin\swe-emqx-cli.ps1 auth list
```

**Example : Elimine todas las reglas de autorización de un usuario**  
Para eliminar todas las reglas de autorización aplicadas a un usuario concreto, ejecute el siguiente comando:  

```
C:\greengrass\v2\bin\swe-emqx-cli.ps1 auth delete system1
```
Se le pedirá que confirme la eliminación.

------

# Procese y visualice datos con SiteWise Edge y herramientas de código abierto
<a name="open-source-edge-integrations"></a>

Configure las puertas de enlace compatibles con AWS IoT SiteWise Edge MQTT con herramientas de código abierto para el procesamiento y la visualización locales a fin de mejorar sus capacidades de gestión de datos industriales.

Con SiteWise Edge, puede crear una canalización de procesamiento de datos local mediante herramientas externas de código abierto. [Utilice [Node-RED®](https://nodered.org/) para almacenar datos de series temporales con [InfluxDB® y supervise las operaciones a través de los paneles de Grafana®](https://www.influxdata.com/lp/influxdb-database/).](https://grafana.com/)

Node-RED procesa y transforma sus flujos de datos, mientras que InfluxDB proporciona almacenamiento de datos de series temporales. Grafana muestra sus datos operativos en tiempo real. Utilice estas herramientas con SiteWise Edge para sincronizar los datos entre su entorno local y el entorno local Nube de AWS, lo que le proporcionará información local inmediata y funciones de análisis a largo plazo basadas en la nube.

**nota**  
Node-RED®, InfluxDB® y Grafana® no son vendedores ni proveedores de Edge. SiteWise 

![\[Un diagrama que muestra algunas fuentes de datos y el simulador de turbinas que se conecta al EMQX Broker para publicarlos. Luego, el bróker EMQX se suscribe a Gateway y a Node-RED. AWS IoT SiteWise Node-RED ingresa a InfluxDB y luego Influx DB al panel de control de Grafana.\]](http://docs.aws.amazon.com/es_es/iot-sitewise/latest/userguide/images/gateway-open-source-overview.png)


**nota**  
En esta guía, utilizamos la versión de código abierto de [Grafana](https://grafana.com/) SiteWise for Edge en lugar del servicio [Amazon Managed Grafana](https://docs.aws.amazon.com/grafana/latest/userguide/what-is-Amazon-Managed-Service-Grafana.html).

## Opciones de implementación
<a name="deployment-options"></a>

Puede implementar esta solución mediante uno de estos dos enfoques. Con una configuración Microsoft Windows manual, usted controla la configuración y la integración de los componentes con su infraestructura. ConLinux, puede usar Docker para implementar componentes preconfigurados en contenedores.

Elija el método que se adapte a sus requisitos operativos.
+ [Configure las integraciones de código abierto manualmente (Windows)](windows-manual-setup.md)— Para configuraciones personalizadas o infraestructuras existentes
+ [Configure integraciones de código abierto con Docker (Linux)](linux-docker-setup.md)— Para un despliegue rápido con componentes preconfigurados

## Descripción general de un ejemplo de parque eólico
<a name="open-source-example-overview"></a>

Esta guía utiliza un ejemplo de parque eólico para demostrar cómo se puede monitorizar la velocidad del viento de una turbina en un parque eólico. Este escenario práctico ilustra las necesidades comunes de monitoreo industrial, en las que tanto la visibilidad local como la basada en la nube son valiosas para la eficiencia operativa.

Con esta integración, puede:
+ Recopile datos de equipos industriales mediante una puerta de enlace AWS IoT SiteWise Edge
+ Procese datos localmente con Node-RED, InfluxDB y Grafana
+ Almacene datos localmente usando InfluxDB
+ Supervise los datos en tiempo real mediante los paneles de control de Grafana

A lo largo de esta guía, utilizamos el ejemplo de un parque eólico. Usamos Node-RED para simular una turbina que genera datos de velocidad del viento. Node-RED traduce la carga útil de datos, los publica en el broker MQTT de SiteWise Edge, se suscribe para recibir datos del bróker y los almacena localmente en InfluxDB. Este enfoque garantiza que todos los datos operativos estén disponibles tanto localmente para su acceso inmediato como en la nube para su posterior análisis. Al implementar este patrón, gana resiliencia ante las interrupciones de la red y, al mismo tiempo, mantiene la capacidad de realizar análisis avanzados en la Nube de AWS red. Grafana se conecta a InfluxDB para el monitoreo local, lo que proporciona a los operadores visibilidad en tiempo real de las métricas sin depender de la nube. Una pasarela habilitada para MQTT de SiteWise Edge se conecta al mismo intermediario de MQTT al que enviar los datos AWS IoT SiteWise, lo que crea un puente entre sus operaciones perimetrales y los servicios basados en la nube.

Puede utilizar sus propios datos y configuraciones para crear un flujo de trabajo similar adaptado a sus requisitos industriales específicos, ya sea que esté supervisando equipos de fabricación, infraestructuras de servicios públicos u otros activos industriales.

## Requisitos para las integraciones de código abierto
<a name="open-source-requirements"></a>

Antes de implementar integraciones de código abierto con SiteWise Edge, asegúrese de que su entorno cumpla con los requisitos necesarios.
+ **Requisitos de hardware**: el hardware de su puerta de enlace debe cumplir los requisitos de las puertas de enlace SiteWise Edge. Para obtener más información, consulte las puertas de enlace V3 habilitadas [AWS IoT SiteWise Requisitos de la puerta de enlace autohospedada de Edge](configure-gateway-ggv2.md) para MQTT y. [Requisitos para la aplicación AWS IoT SiteWise Edge](siemens-app-gateway-requirements.md)
**importante**  
[Al implementar componentes de código abierto adicionales, asegúrese de que su hardware cumpla con los requisitos de [InfluxDB](https://docs.influxdata.com/influxdb/v2/install/), [Node-RED](https://nodered.org/docs/getting-started/) y Grafana.](https://grafana.com/docs/grafana/latest/setup-grafana/installation/)
+ La configuración de su red debe admitir tanto la comunicación local entre los componentes como la conectividad a la nube para Edge. SiteWise 
+ Todos los servicios deben ejecutarse en el mismo host.

## Consideraciones de seguridad
<a name="open-source-security-considerations"></a>

Se recomienda cifrar todas las comunicaciones entre los componentes, especialmente al acceder a las interfaces desde redes no locales. Implemente los controles de acceso adecuados para cada componente y siga las prácticas AWS recomendadas para la configuración de la puerta de enlace AWS IoT SiteWise Edge y la seguridad de las AWS cuentas.

**Entorno de desarrollo**  
Esta guía muestra cómo Node-RED, InfluxDB y Grafana se ejecutan y se accede localmente en un host de puerta de enlace. Para las implementaciones de producción que requieren acceso externo, implemente medidas de seguridad que incluyan el cifrado, la autenticación y la autorización TLS. Siga las prácticas recomendadas de seguridad de cada aplicación.

**Software de terceros**  
Esta solución utiliza software de terceros no mantenido por AWS, incluidos InfluxDB, Node-RED, Grafana y el complemento. `node-red-contrib-influxdb` Antes de la implementación, asegúrese de que estos componentes cumplan con los requisitos de seguridad, las normas de cumplimiento y las políticas de gobierno de su organización.

**importante**  
Esta guía hace referencia y utiliza software de terceros que no es propiedad ni mantenido por él AWS. Antes de la implementación, asegúrese de que todos los componentes cumplan con sus requisitos de seguridad, cumplimiento y gobierno. Mantenga todo el software actualizado con los parches de seguridad más recientes y siga las mejores prácticas para proteger su implementación perimetral.  
 InfluxDB, Node-RED y Grafana no son vendedores ni proveedores de Edge. SiteWise 

## Otras consideraciones
<a name="open-source-other-considerations"></a>

Tenga en cuenta estos factores adicionales al implementar integraciones de código abierto con Edge. SiteWise 
+ Usa las versiones más recientes de todos los servicios, herramientas y componentes.
+ Filtre y agregue los datos localmente antes de transmitirlos a la nube para reducir AWS IoT SiteWise los costos de ingesta de datos. Configure los períodos de retención de datos adecuados en InfluxDB y dimensione correctamente el hardware de su puerta de enlace. Para obtener más información, consulte [Precios de AWS IoT SiteWise](https://aws.amazon.com/iot-sitewise/pricing/).
+ Implemente procedimientos de respaldo periódicos para todos los datos.
+ Supervise el uso de los recursos en su puerta de enlace y configure los límites de recursos adecuados para cada componente. Implemente políticas de retención de datos en InfluxDB para administrar el uso del disco.

# Configure las integraciones de código abierto manualmente (Windows)
<a name="windows-manual-setup"></a>

Utilice esta guía para crear manualmente un depósito de series temporales para los datos de velocidad del viento que se conecte con Grafana® y Node-RED®.

 Instale y configure manualmente Node-RED, InfluxDB® y Grafana para controlar la configuración de la Microsoft Windows implementación. Puede almacenar y administrar los datos de series temporales de sus dispositivos mediante InfluxDB.

## Requisitos previos de configuración manual
<a name="windows-open-source-prerequisites"></a>

Antes de empezar, complete estos requisitos:

**nota**  
Ejecute todos los servicios (SiteWise Edge, InfluxDB, Node-RED y Grafana) en el mismo host.
+ Instale una puerta de enlace V3 habilitada para MQTT. Para obtener más información, consulte [Puertas de enlace V3 habilitadas para MQTT para Edge AWS IoT SiteWise](mqtt-enabled-v3-gateway.md).
+ Instale y ejecute estos servicios localmente:
  + InfluxDB OSS v2. Para ver los pasos de instalación, consulte [Instalar](https://docs.influxdata.com/influxdb/v2/install/) InfluxDB.
  + Node-RED. Para ver los pasos de instalación, consulte [Instalar Node-RED](https://nodered.org/docs/getting-started/local) localmente.
  + Grafana. Para ver los pasos de instalación, consulte [Instalación de Grafana](https://grafana.com/docs/grafana/latest/setup-grafana/installation/).

# Configure el almacenamiento local con InfluxDB
<a name="windows-influxdb-setup"></a>

Con InfluxDB®, puede almacenar datos de series temporales de sus dispositivos de forma local. El objetivo de la capacidad de almacenamiento local es mantener la visibilidad operativa durante las interrupciones de la red y reducir la latencia de las aplicaciones en las que el tiempo es crucial. Puede realizar análisis y visualizaciones en la periferia sin dejar de tener la opción de reenviar los datos a la nube de forma selectiva.

En esta sección, creará un depósito de series temporales para los datos de velocidad del viento de las turbinas y generará un token de API para la conectividad de Grafana® y Node-RED®. El depósito de InfluxDB sirve como un contenedor de almacenamiento dedicado para los datos de series temporales, similar a una base de datos en los sistemas tradicionales. El token de API permite un acceso programático seguro a sus datos.

**Para configurar InfluxDB**

1. [Tras completar los pasos previos y asegurarse de que todas las herramientas se ejecutan en el mismo servidor, abra su navegador web y vaya a http://127.0.0.1:8086.](http://127.0.0.1:8086)

1. (Opcional) Habilite el cifrado TLS para mejorar la seguridad. Para obtener más información, consulte [Habilitar el cifrado TLS](https://docs.influxdata.com/influxdb/v2/admin/security/enable-tls/) en. *InfluxData Documentation*

1. Cree un depósito de InfluxDB de series temporales para almacenar datos de Node-RED. El depósito servirá como un contenedor específico para los datos de su parque eólico, lo que le permitirá organizar y administrar las políticas de retención específicas de este conjunto de datos. Para obtener más información, consulte [Administrar depósitos](https://docs.influxdata.com/influxdb/v2/admin/buckets/) en. *InfluxData Documentation*

1. (Opcional) Configure el período de retención de datos para su ubicación perimetral. Establecer períodos de retención adecuados ayuda a administrar los recursos de almacenamiento de manera eficiente al eliminar automáticamente los datos antiguos que ya no son necesarios para las operaciones locales.

   Para obtener información sobre la retención de datos, consulte [Retención de datos en InfluxDB](https://docs.influxdata.com/influxdb/v2/reference/internals/data-retention/) en. *InfluxData Documentation*

1. Genere un token de API para el depósito. Este token permitirá una comunicación segura entre InfluxDB y otros componentes como Node-RED y Grafana. De esta forma, solo los servicios autorizados pueden leer o escribir en su almacén de datos. Para obtener más información, consulte [Crear un token](https://docs.influxdata.com/influxdb/cloud/admin/tokens/create-token/) en *InfluxData Documentation*.

Tras completar estos pasos, puede almacenar datos de series temporales en su instancia de InfluxDB, lo que proporciona una base para la persistencia y el análisis de los datos locales en su entorno perimetral.

# Configure los flujos de Node-RED para la integración de datos AWS IoT SiteWise
<a name="windows-nodered-config"></a>

Con Node-RED®, puede implementar dos flujos para administrar los datos entre sus dispositivos y. AWS IoT SiteWise Estos flujos funcionan en conjunto para crear una solución de administración de datos integral que aborde el flujo de datos local y en la nube.
+ **Flujo de publicación de datos**: se publica en la nube. El flujo de publicación de datos envía datos a AWS IoT SiteWise. Este flujo simula un dispositivo de turbina generando datos de sensores, traduciéndolos al AWS IoT SiteWise formato y publicándolos en el broker MQTT de SiteWise Edge. Esto le permite aprovechar las capacidades AWS IoT SiteWise de la nube para el almacenamiento, el análisis y la integración con otros servicios. AWS 

  Para obtener más información, consulte [Configure el flujo de publicación de datos](windows-nodered-data-publish-flow.md).
+ **Flujo de retención de datos**: almacena los datos en la periferia. El flujo de retención de datos se suscribe al broker MQTT de SiteWise Edge para recibir datos, traducirlos al formato InfluxDB® y almacenarlos localmente para su supervisión. Este almacenamiento local proporciona acceso inmediato a los datos operativos, reduce la latencia de las aplicaciones en las que el tiempo es crucial y garantiza la continuidad durante las interrupciones de la red.

  Para obtener más información, consulte [Configure el flujo de retención de datos](windows-nodered-data-retention-flow.md).

Estos dos flujos funcionan juntos para garantizar que los datos se envíen AWS IoT SiteWise y almacenen localmente para su acceso inmediato.

[Para acceder a la consola Node-RED, vaya a http://127.0.0.1:1880.](http://127.0.0.1:1880) Para obtener información sobre cómo habilitar el cifrado TLS, consulte [Habilitar](https://docs.influxdata.com/influxdb/v2/admin/security/enable-tls/) el cifrado TLS.

# Configure el flujo de publicación de datos
<a name="windows-nodered-data-publish-flow"></a>

El flujo de publicación de datos utiliza tres nodos para crear una canalización que envía los datos industriales a la nube. Este flujo es esencial para permitir el análisis basado en la nube, el almacenamiento a largo plazo y la integración con otros AWS servicios. En primer lugar, los datos simulados del dispositivo se envían al intermediario MQTT de SiteWise Edge. La puerta de enlace recoge los datos del intermediario, lo que permite su transmisión a la AWS IoT SiteWise nube, donde puede aprovechar las potentes funciones de análisis y visualización.
+ **Entrada de datos**: recibe datos de dispositivos de sus equipos industriales o simuladores
+ **Traductor de datos para AWS IoT SiteWise**: traduce los datos a un AWS IoT SiteWise formato para garantizar la compatibilidad con la puerta de enlace SiteWise Edge
+ **Publicador de MQTT**: publica los datos en el broker MQTT de SiteWise Edge, lo que los pone a disposición de los consumidores locales y de la nube

![\[Un diagrama que muestra el flujo de publicación de datos de Node-RED. Envía los datos simulados del dispositivo al broker MQTT de SiteWise Edge para que SiteWise Edge Gateway los recoja y luego los transfiera a la nube. AWS IoT SiteWise\]](http://docs.aws.amazon.com/es_es/iot-sitewise/latest/userguide/images/gateway-open-source-nodered-publish-flow.png)


## Configure el nodo de entrada de datos
<a name="windows-nodered-data-input-config"></a>

En este ejemplo, el nodo de entrada de datos usa un dispositivo de turbina eólica simulado que genera datos de velocidad del viento. Este nodo sirve como punto de entrada para sus datos industriales, ya provengan de fuentes simuladas (como en nuestro ejemplo) o de equipos industriales reales en entornos de producción.

Usamos un formato JSON personalizado para la carga útil de datos a fin de proporcionar una estructura estandarizada que funcione de manera eficiente tanto con las herramientas de procesamiento locales como con el servicio AWS IoT SiteWise en la nube. Este formato incluye metadatos esenciales, como marcas de tiempo e indicadores de calidad, junto con los valores de medición reales, lo que permite una gestión integral de los datos y un seguimiento de la calidad durante todo el proceso. Importe el nodo de inyección para recibir datos simulados en este formato JSON estandarizado con marcas de tiempo, indicadores de calidad y valores.

[https://nodered.org/docs/user-guide/nodes#inject](https://nodered.org/docs/user-guide/nodes#inject)

El simulador de turbina genera datos de velocidad del viento cada segundo en este formato JSON estandarizado:

**Example : Carga útil de datos de la turbina**  

```
{
    name: string,         // Property name/identifier
    timestamp: number,    // Epoch time in nanoseconds
    quality: "GOOD" | "UNCERTAIN" | "BAD",
    value: number | string | boolean
}
```

Este formato ofrece varias ventajas:
+ El `name` campo identifica la propiedad o medida específica, lo que le permite rastrear varios puntos de datos desde el mismo dispositivo
+ El valor `timestamp` en nanosegundos garantiza un seguimiento preciso del tiempo para un análisis histórico preciso
+ El `quality` indicador le ayuda a filtrar y gestionar los datos en función de su fiabilidad
+ El `value` campo flexible admite diferentes tipos de datos para adaptarse a las distintas salidas de los sensores

**Example : nodo de inyección de un simulador de turbina**  

```
[
    {
        "id": "string",
        "type": "inject",
        "z": "string",
        "name": "Turbine Simulator",
        "props": [
            {
                "p": "payload.timestamp",
                "v": "",
                "vt": "date"
            },
            {
                "p": "payload.quality",
                "v": "GOOD",
                "vt": "str"
            },
            {
                "p": "payload.value",
                "v": "$random()",
                "vt": "jsonata"
            },
            {
                "p": "payload.name",
                "v": "/Renton/WindFarm/Turbine/WindSpeed",
                "vt": "str"
            }
        ],
        "repeat": "1",
        "crontab": "",
        "once": false,
        "onceDelay": "",
        "topic": "",
        "x": 270,
        "y": 200,
        "wires": [
            [
                "string"
            ]
        ]
    }
]
```

## Configure un nodo para la traducción de datos
<a name="windows-nodered-sitewiseise-translator-config"></a>

La puerta de enlace SiteWise Edge requiere datos en un formato específico para garantizar la compatibilidad con AWS IoT SiteWise la nube. El nodo traductor es un componente importante que convierte los datos de entrada al formato de AWS IoT SiteWise carga útil requerido. Este paso de traducción garantiza que sus datos industriales se puedan procesar, almacenar y analizar posteriormente de forma adecuada en el entorno de AWS IoT SiteWise nube.

Al estandarizar el formato de los datos en esta etapa, posibilita la integración entre sus dispositivos periféricos y el servicio en la nube, donde puede utilizar las capacidades de modelado, análisis y visualización de activos. Utilice esta estructura:

**Example : Estructura de carga útil para el análisis de datos de SiteWise Edge**  

```
{
  "propertyAlias": "string",  
  "propertyValues": [
    {
      "value": { 
          "booleanValue": boolean, 
          "doubleValue": number, 
          "integerValue": number,
          "stringValue": "string" 
     },
      "timestamp": {
          "timeInSeconds": number,
          "offsetInNanos": number
      },
      "quality": "GOOD" | "UNCERTAIN" | "BAD",
  }]
}
```

**nota**  
Haga coincidir el `propertyAlias` tema con su jerarquía de temas de MQTT (por ejemplo,). `/Renton/WindFarm/Turbine/WindSpeed` Esto garantiza que sus datos estén asociados correctamente a la propiedad de activo correcta en AWS IoT SiteWise. Para obtener más información, consulte el concepto de «alias de flujo de datos» en[AWS IoT SiteWise conceptos](concept-overview.md). 

1. Importe el nodo de función de ejemplo para la traducción de la AWS IoT SiteWise carga útil. Esta función gestiona la conversión del formato de entrada estandarizado al formato AWS IoT SiteWise compatible, lo que garantiza que el formato de la marca de tiempo, los indicadores de calidad y la escritura de valores sean correctos.

   ```
   [
       {
           "id": "string",
           "type": "function",
           "z": "string",
           "name": "Translate to SiteWise payload",
           "func": "let input = msg.payload;\nlet output = {};\n\noutput[\"propertyAlias\"] = input.name;\n\nlet propertyVal = {}\n\nlet timeInSeconds = Math.floor(input.timestamp / 1000);\nlet offsetInNanos = (input.timestamp % 1000) * 1000000;\n\npropertyVal[\"timestamp\"] = {\n    \"timeInSeconds\": timeInSeconds,\n    \"offsetInNanos\": offsetInNanos,\n};\n\npropertyVal[\"quality\"] = input.quality\n\nlet typeNameConverter = {\n    \"number\": (x) => Number.isInteger(x) ? \"integerValue\" : \"doubleValue\",\n    \"boolean\": (x) => \"booleanValue\",\n    \"string\": (x) => \"stringValue\", \n}\nlet typeName = typeNameConverter[typeof input.value](input.value)\npropertyVal[\"value\"] = {}\npropertyVal[\"value\"][typeName] = input.value;\n\noutput[\"propertyValues\"] = [propertyVal]\n\nreturn {\n    payload: JSON.stringify(output)\n};",
           "outputs": 1,
           "timeout": "",
           "noerr": 0,
           "initialize": "",
           "finalize": "",
           "libs": [],
           "x": 530,
           "y": 200,
           "wires": [
               [
                   "string"
               ]
           ]
       }
   ]
   ```

1. Compruebe que el JavaScript código traduce los datos de velocidad del viento correctamente. La función realiza varias tareas importantes:
   + Extrae el nombre de la propiedad de la entrada y lo establece como PropertyAlias
   + Convierte la marca de tiempo de milisegundos al formato de segundos y nanosegundos requerido
   + Conserva el indicador de calidad para el seguimiento de la fiabilidad de los datos
   + Detecta automáticamente el tipo de valor y lo formatea según AWS IoT SiteWise los requisitos

1. Conecte el nodo a su flujo, vinculándolo entre el nodo de entrada de datos y el editor MQTT.

*Para obtener orientación sobre cómo escribir una función específica para las necesidades de su empresa, consulte Cómo [escribir funciones](https://nodered.org/docs/user-guide/writing-functions) en la documentación Node-RED*

## Configure el editor MQTT
<a name="windows-nodered-mqtt-publisher-config"></a>

Tras la traducción, los datos están listos para su publicación en el broker MQTT de SiteWise Edge.

Configure el editor MQTT con estos ajustes para enviar datos al agente MQTT de SiteWise Edge:

**Para importar el nodo de salida MQTT**

1. Importe un nodo de configuración de salida MQTT mediante. `"type": "mqtt out"` Los nodos de salida MQTT le permiten compartir la configuración de un corredor.

1. Introduzca los pares clave-valor para obtener información relevante sobre la conexión del bróker MQTT y el enrutamiento de mensajes.

Importe el nodo de ejemplo. `mqtt out`

**Example**  

```
[
    {
        "id": "string",
        "type": "mqtt out",
        "z": "string",
        "name": "Publish to MQTT broker",
        "topic": "/Renton/WindFarm/Turbine/WindSpeed",
        "qos": "1",
        "retain": "",
        "respTopic": "",
        "contentType": "",
        "userProps": "",
        "correl": "",
        "expiry": "",
        "broker": "string",
        "x": 830,
        "y": 200,
        "wires": []
    },
    {
        "id": "string",
        "type": "mqtt-broker",
        "name": "emqx",
        "broker": "127.0.0.1",
        "port": "1883",
        "clientid": "",
        "autoConnect": true,
        "usetls": false,
        "protocolVersion": "5",
        "keepalive": 15,
        "cleansession": true,
        "autoUnsubscribe": true,
        "birthTopic": "",
        "birthQos": "0",
        "birthPayload": "",
        "birthMsg": {},
        "closeTopic": "",
        "closePayload": "",
        "closeMsg": {},
        "willTopic": "",
        "willQos": "0",
        "willPayload": "",
        "willMsg": {},
        "userProps": "",
        "sessionExpiry": ""
    }
]
```

El nodo de salida MQTT de ejemplo crea la conexión MQTT con la siguiente información:
+ Servidor: `127.0.0.1`
+ Puerto: `1883`
+ Protocolo: `MQTT V5`

A continuación, el nodo de salida MQTT configura el enrutamiento de mensajes con la siguiente información:
+ Tema: `/Renton/WindFarm/Turbine/WindSpeed`
+ QoS: `1`

## Implemente y verifique los nodos
<a name="windows-verify-deployment"></a>

Tras configurar los tres nodos del flujo de publicación de datos, siga estos pasos para implementar el flujo y comprobar que los datos se transmiten correctamente a AWS IoT SiteWise

**Para implementar y verificar las conexiones**

1. Conecte los tres nodos como se muestra en el flujo de publicación de datos.  
![\[Data publish flow diagram showing input from turbine simulator to AWS IoT SiteWise to MQTT broker.\]](http://docs.aws.amazon.com/es_es/iot-sitewise/latest/userguide/images/gateway-open-source-nodered-publish-flow.png)

1. Elija **Implementar** para aplicar todos los cambios en la conexión de los nodos.

1. Navegue hasta la [AWS IoT SiteWise consola](https://console.aws.amazon.com/iotsitewise/) y elija **Flujos de datos**.

1. Asegúrese de seleccionar el **prefijo Alias** en el menú desplegable. A continuación, busca el `/Renton/WindFarm/Turbine/WindSpeed` alias.

Si ve el alias correcto en la búsqueda, significa que ha desplegado el flujo y verificado la transmisión de datos.

# Configure el flujo de retención de datos
<a name="windows-nodered-data-retention-flow"></a>

El flujo de retención de datos se puede utilizar para mantener la visibilidad operativa en la periferia. Esto resulta útil durante las interrupciones de la red o cuando se necesita acceso inmediato a los datos. Este flujo se suscribe al intermediario MQTT para recibir los datos del dispositivo, los convierte al formato InfluxDB® y los almacena localmente. Al implementar este flujo, se crea un almacén de datos local resiliente al que los operadores pueden acceder sin depender de la nube, lo que permite la supervisión en tiempo real y la toma de decisiones en la periferia.

El flujo consta de tres componentes clave que trabajan juntos para garantizar que sus datos se capturen y almacenen correctamente:
+ **Cliente de suscripción a MQTT**: recibe los datos del intermediario, lo que garantiza la captura de todos los datos industriales relevantes
+ **Traductor InfluxDB**: convierte la AWS IoT SiteWise carga útil al formato InfluxDB y prepara los datos para un almacenamiento eficiente de series temporales
+ **Escritor InfluxDB**: gestiona el almacenamiento local, lo que garantiza la persistencia de los datos y la disponibilidad de las aplicaciones locales

![\[Flujo de retención de datos de Node-RED\]](http://docs.aws.amazon.com/es_es/iot-sitewise/latest/userguide/images/gateway-open-source-nodered-data-retention.png)


## Configure el cliente de suscripción MQTT
<a name="windows-nodered-mqtt-subscriber"></a>
+ Configure el cliente de suscripción MQTT en Node-RED para recibir datos del broker EMQX de MQTT importando el siguiente ejemplo. AWS IoT SiteWise   
**Example : MQTT en el nodo**  

  ```
  [
      {
          "id": "string",
          "type": "mqtt in",
          "z": "string",
          "name": "Subscribe to MQTT broker",
          "topic": "/Renton/WindFarm/Turbine/WindSpeed",
          "qos": "1",
          "datatype": "auto-detect",
          "broker": "string",
          "nl": false,
          "rap": true,
          "rh": 0,
          "inputs": 0,
          "x": 290,
          "y": 340,
          "wires": [
              [
                  "string"
              ]
          ]
      },
      {
          "id": "string",
          "type": "mqtt-broker",
          "name": "emqx",
          "broker": "127.0.0.1",
          "port": "1883",
          "clientid": "",
          "autoConnect": true,
          "usetls": false,
          "protocolVersion": "5",
          "keepalive": 15,
          "cleansession": true,
          "autoUnsubscribe": true,
          "birthTopic": "",
          "birthQos": "0",
          "birthPayload": "",
          "birthMsg": {},
          "closeTopic": "",
          "closePayload": "",
          "closeMsg": {},
          "willTopic": "",
          "willQos": "0",
          "willPayload": "",
          "willMsg": {},
          "userProps": "",
          "sessionExpiry": ""
      }
  ]
  ```

Esta suscripción garantiza que todos los datos relevantes publicados en el corredor se recopilen para su almacenamiento local, lo que proporciona un registro completo de sus operaciones industriales. El nodo utiliza los mismos parámetros de conexión MQTT que la [Configure el editor MQTT](windows-nodered-data-publish-flow.md#windows-nodered-mqtt-publisher-config) sección, con los siguientes ajustes de suscripción:
+ Tema — `/Renton/WindFarm/Turbine/WindSpeed`
+ QoS — `1`

Para obtener más información, consulte [Conectarse a un broker de MQTT](https://cookbook.nodered.org/mqtt/connect-to-broker) en la *Node-REDdocumentación*.

## Configure el traductor InfluxDB
<a name="windows-nodered-influxdb-translator"></a>

[InfluxDB organiza los datos mediante [etiquetas](https://docs.influxdata.com/influxdb/v1/concepts/glossary/#tag) para la indexación y campos para los valores.](https://docs.influxdata.com/influxdb/v1/concepts/glossary/#field) Esta organización optimiza el rendimiento de las consultas y la eficiencia del almacenamiento de los datos de series temporales. Importe el nodo de función de ejemplo que contiene el JavaScript código para convertir la AWS IoT SiteWise carga útil al formato InfluxDB. El traductor divide las propiedades en dos grupos:
+ Etiquetas: propiedades de calidad y nombre para una indexación eficiente
+ Campos: marca de tiempo (en milisegundos desde la época) y valor

**Example : Nodo de función de traducción a una carga útil de InfluxDB**  

```
[
    {
        "id": "string",
        "type": "function",
        "z": "string",
        "name": "Translate to InfluxDB payload",
        "func": "let data = msg.payload;\n\nlet timeInSeconds = data.propertyValues[0].timestamp.timeInSeconds;\nlet offsetInNanos = data.propertyValues[0].timestamp.offsetInNanos;\nlet timestampInMilliseconds = (timeInSeconds * 1000) + (offsetInNanos / 1000000);\n\nmsg.payload = [\n    {\n        \"timestamp(milliseconds_since_epoch)\": timestampInMilliseconds,\n        \"value\": data.propertyValues[0].value.doubleValue\n    },\n    {\n        \"name\": data.propertyAlias,\n        \"quality\": data.propertyValues[0].quality\n    }\n]\n\nreturn msg",
        "outputs": 1,
        "timeout": "",
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 560,
        "y": 340,
        "wires": [
            [
                "string"
            ]
        ]
    }
]
```

Para ver opciones de configuración adicionales, consulte el [node-red-contrib-influxdb](https://github.com/mblackstock/node-red-contrib-influxdb)repositorio de Node-RED. GitHub 

## Configure el escritor InfluxDB
<a name="windows-nodered-influxdb-writer"></a>

El nodo de escritura de InfluxDB es el componente final de su flujo de retención de datos, responsable de almacenar sus datos industriales en la base de datos local de InfluxDB. Este almacenamiento local es importante para mantener la visibilidad operativa durante las interrupciones de la red y proporcionar acceso inmediato a los datos para las aplicaciones en las que el tiempo es crucial.

1. Instale el node-red-contrib-influxdb paquete mediante la opción Administrar paleta. Este paquete proporciona los nodos necesarios para conectar Node-RED con InfluxDB.

1. Agregue un nodo de salida de InfluxDB a su flujo. Este nodo se encargará de la escritura real de los datos en su base de datos de InfluxDB.

1. Configure las propiedades del servidor para establecer una conexión segura con su instancia de InfluxDB:

   1. Establezca la versión en 2.0: esto especifica que se está conectando a InfluxDB v2.x, que usa una API diferente a la de las versiones anteriores

   1. Establece la URL en`http://127.0.0.1:8086`: esto apunta a tu instancia local de InfluxDB

   1. Introduzca su token de autenticación de InfluxDB. Este token seguro autoriza la conexión a su base de datos. Generó el token durante el [Configure el almacenamiento local con InfluxDB](windows-influxdb-setup.md) procedimiento.

1. Especifique los parámetros de la ubicación de almacenamiento para definir dónde y cómo se almacenarán los datos:

   1. Introduzca el nombre de su organización de InfluxDB: la organización es un espacio de trabajo para un grupo de usuarios, al que pertenecen sus grupos y paneles. Para obtener más información, consulte [Administrar](https://docs.influxdata.com/influxdb/v2/admin/organizations/) organizaciones en. *InfluxData Documentation*

   1. Especifique el depósito de InfluxDB (por ejemplo,`WindFarmData`): el depósito equivale a una base de datos en los sistemas tradicionales y sirve como contenedor para los datos de sus series temporales

   1. Establezca la medición de InfluxDB (por ejemplo,`TurbineData`): la medición es similar a una tabla en las bases de datos relacionales y organiza los puntos de datos relacionados

**nota**  
Busca el nombre de tu organización en la barra lateral izquierda de la instancia de InfluxDB. Los conceptos de organización, grupo y medición son fundamentales para el modelo de organización de datos de InfluxDB. Para obtener más información, consulte la documentación de [InfluxDB](https://docs.influxdata.com/influxdb/v2/admin/organizations/).

## Implemente y verifique el flujo de retención
<a name="windows-nodered-retention-deploy"></a>

Tras configurar todos los componentes del flujo de retención de datos, debe implementar y comprobar que el sistema funciona correctamente. Esta verificación garantiza que sus datos industriales se almacenen adecuadamente a nivel local para su acceso y análisis inmediatos.

1. Conecte los tres nodos como se muestra en el diagrama de flujo de retención de datos. Esto crea un proceso completo desde la suscripción de datos hasta el almacenamiento local.  
![\[Flujo de retención de datos de Node-RED\]](http://docs.aws.amazon.com/es_es/iot-sitewise/latest/userguide/images/gateway-open-source-nodered-data-retention.png)

1. Elija **Deploy** para aplicar los cambios y activar el flujo. Esto inicia el proceso de recopilación y almacenamiento de datos.

1. Utilice el explorador de datos de InfluxDB para consultar y visualizar sus datos. Esta herramienta le permite verificar que los datos se almacenan correctamente y crear visualizaciones iniciales de los datos de sus series temporales.

   En el explorador de datos, debería poder ver cómo se registran las mediciones de la velocidad del viento a lo largo del tiempo, lo que confirma que todo el proceso, desde la generación de datos hasta el almacenamiento local, funciona correctamente. 

   Para obtener más información, consulte [Consulta en el explorador de datos](https://docs.influxdata.com/influxdb/v2/query-data/execute-queries/data-explorer/) en el *InfluxData Documentation*.

Con el flujo de publicación de datos y el flujo de retención de datos implementados, ahora tiene un sistema completo que envía los datos a la AWS IoT SiteWise nube y, al mismo tiempo, mantiene una copia local para un acceso inmediato y una mayor resiliencia. Este enfoque de doble vía garantiza que obtenga los beneficios del análisis y el almacenamiento basados en la nube y, al mismo tiempo, mantenga la visibilidad operativa en la periferia.

# Configurar Grafana para Edge SiteWise
<a name="windows-grafana"></a>

 Grafana® le permite crear paneles de monitoreo locales en tiempo real para sus datos industriales. Al visualizar los datos almacenados en InfluxDB®, puede proporcionar a los operadores información inmediata sobre el rendimiento del equipo, la eficiencia del proceso y los posibles problemas. Esta visibilidad perimetral es importante para las operaciones urgentes y para mantener la continuidad durante las interrupciones de la red.

## Configuración de los orígenes de datos
<a name="windows-grafana-data-source-config"></a>

Al conectar Grafana a su base de datos de InfluxDB, se crea una potente capa de visualización para sus datos industriales. Esta conexión permite disponer de paneles de control en tiempo real que los operadores pueden utilizar para tomar decisiones informadas sin depender de la nube.

1. Acceda a su instancia de Grafana de forma local desde [http://127.0.0.1:3000](http://127.0.0.1:3000) en su navegador. *Si es necesario habilitar TLS, puede consultar [Configurar Grafana HTTPS para un tráfico web seguro](https://grafana.com/docs/grafana/latest/setup-grafana/set-up-https/) en Grafana Labs la documentación.*

1. Agregue una fuente de datos de InfluxDB que apunte al segmento de series temporales de InfluxDB donde Node-RED escribe los datos. Por ejemplo, `WindFarmData`. Esta conexión establece el vínculo entre los datos almacenados y la plataforma de visualización.

1. *Para obtener instrucciones detalladas, consulte [Configurar la fuente de datos de InfluxDB](https://grafana.com/docs/grafana/latest/datasources/influxdb/configure-influxdb-data-source/) en la Grafana Labs documentación.*

### Cree un panel de Grafana para SiteWise los datos de Edge
<a name="windows-grafana-create-dashboard"></a>

La creación de un panel es el paso final para crear su solución de monitoreo local. Los paneles proporcionan representaciones visuales de sus datos industriales, lo que facilita la identificación de tendencias, anomalías y posibles problemas de un vistazo.
+ Siga la guía para crear un panel de control. Para obtener más información, consulte [Crear su primer panel](https://grafana.com/docs/grafana/latest/getting-started/build-first-dashboard/) en la *Grafana Labsdocumentación*. En esta plantilla se presupone que tu depósito tiene un nombre `WindFarmData` y una medida`TurbineData`.

  También puede utilizar la guía de inicio rápido importando la plantilla de panel de ejemplo proporcionada para crear rápidamente un panel con un gráfico de series temporales para los datos que Node-RED generó en la sección anterior. Esta plantilla proporciona un punto de partida que puede personalizar para satisfacer sus necesidades específicas de supervisión.

  ```
  {
    "__inputs": [
      {
        "name": "DS_WINDFARM-DEMO",
        "label": "windfarm-demo",
        "description": "",
        "type": "datasource",
        "pluginId": "influxdb",
        "pluginName": "InfluxDB"
      }
    ],
    "__elements": {},
    "__requires": [
      {
        "type": "grafana",
        "id": "grafana",
        "name": "Grafana",
        "version": "11.6.0-pre"
      },
      {
        "type": "datasource",
        "id": "influxdb",
        "name": "InfluxDB",
        "version": "1.0.0"
      },
      {
        "type": "panel",
        "id": "timeseries",
        "name": "Time series",
        "version": ""
      }
    ],
    "annotations": {
      "list": [
        {
          "builtIn": 1,
          "datasource": {
            "type": "grafana",
            "uid": "-- Grafana --"
          },
          "enable": true,
          "hide": true,
          "iconColor": "rgba(0, 211, 255, 1)",
          "name": "Annotations & Alerts",
          "type": "dashboard"
        }
      ]
    },
    "editable": true,
    "fiscalYearStartMonth": 0,
    "graphTooltip": 0,
    "id": null,
    "links": [],
    "panels": [
      {
        "datasource": {
          "type": "influxdb",
          "uid": "${DS_WINDFARM-DEMO}"
        },
        "fieldConfig": {
          "defaults": {
            "color": {
              "mode": "palette-classic"
            },
            "custom": {
              "axisBorderShow": false,
              "axisCenteredZero": false,
              "axisColorMode": "text",
              "axisLabel": "",
              "axisPlacement": "auto",
              "barAlignment": 0,
              "barWidthFactor": 0.6,
              "drawStyle": "line",
              "fillOpacity": 0,
              "gradientMode": "none",
              "hideFrom": {
                "legend": false,
                "tooltip": false,
                "viz": false
              },
              "insertNulls": false,
              "lineInterpolation": "linear",
              "lineWidth": 1,
              "pointSize": 5,
              "scaleDistribution": {
                "type": "linear"
              },
              "showPoints": "auto",
              "spanNulls": false,
              "stacking": {
                "group": "A",
                "mode": "none"
              },
              "thresholdsStyle": {
                "mode": "off"
              }
            },
            "mappings": [],
            "thresholds": {
              "mode": "absolute",
              "steps": [
                {
                  "color": "green"
                },
                {
                  "color": "red",
                  "value": 80
                }
              ]
            }
          },
          "overrides": []
        },
        "gridPos": {
          "h": 8,
          "w": 12,
          "x": 0,
          "y": 0
        },
        "id": 1,
        "options": {
          "legend": {
            "calcs": [],
            "displayMode": "list",
            "placement": "bottom",
            "showLegend": true
          },
          "tooltip": {
            "hideZeros": false,
            "mode": "single",
            "sort": "none"
          }
        },
        "pluginVersion": "11.6.0-pre",
        "targets": [
          {
            "datasource": {
              "type": "influxdb",
              "uid": "${DS_WINDFARM-DEMO}"
            },
            "query": "from(bucket: \"WindFarmData\")\n  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n  |> filter(fn: (r) => r[\"_measurement\"] == \"TurbineData\")\n  |> filter(fn: (r) => r[\"_field\"] == \"value\")\n  |> filter(fn: (r) => r[\"name\"] == \"/Renton/WindFarm/Turbine/WindSpeed\")\n  |> filter(fn: (r) => r[\"quality\"] == \"GOOD\")\n  |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)\n  |> yield(name: \"mean\")",
            "refId": "A"
          }
        ],
        "title": "Panel Title",
        "type": "timeseries"
      }
    ],
    "schemaVersion": 41,
    "tags": [],
    "templating": {
      "list": []
    },
    "time": {
      "from": "now-6h",
      "to": "now"
    },
    "timepicker": {},
    "timezone": "browser",
    "title": "demo dashboard",
    "uid": "fejc0t08o6d4wb",
    "version": 1,
    "weekStart": ""
  }
  ```

# Configure integraciones de código abierto con Docker (Linux)
<a name="linux-docker-setup"></a>

Para agilizar el proceso de implementación, puede usar Docker para configurar Node-RED®, InfluxDB® y Grafana® en un entorno Linux. Este método utiliza contenedores preconfigurados, lo que permite una implementación rápida y una administración más sencilla de los componentes.

## Requisitos previos de configuración de Docker
<a name="linux-docker-prerequisites"></a>

Antes de empezar, compruebe que tiene lo siguiente:
+ Una puerta de enlace V3 habilitada para MQTT. Para obtener más información, consulte [Puertas de enlace V3 habilitadas para MQTT para Edge AWS IoT SiteWise](mqtt-enabled-v3-gateway.md).
+ El complemento Docker Compose. Para ver los pasos de instalación, consulta [Instalar el Docker Compose complemento](https://docs.docker.com/compose/install/linux/) en la documentación de los manuales de *Docker*.

## Implemente los servicios
<a name="linux-docker-deployment"></a>

Esta implementación ejecuta SiteWise Edge, InfluxDB, Node-RED y Grafana en el mismo host.

### Configuración del entorno
<a name="linux-docker-env-setup"></a>

1. Obtenga acceso root:

   ```
   sudo -i
   ```

1. Cree un archivo.env o exporte estas variables de entorno:

   ```
   export INFLUXDB_PASSWORD=your-secure-influxdb-password
   export INFLUXDB_TOKEN=your-secure-influxdb-token
   export GRAFANA_PASSWORD=your-secure-grafana-password
   ```

### Configure la red Docker
<a name="linux-docker-network-config"></a>
+ Cree una red puente con el nombre`SiteWiseEdgeNodeRedDemoNetwork`.

  ```
  docker network create --driver=bridge SiteWiseEdgeNodeRedDemoNetwork
  ```

### Prepare el Docker Compose archivo
<a name="linux-docker-compose-file"></a>

Copie el contenido del siguiente archivo YAML en su dispositivo de puerta de enlace SiteWise Edge.

#### Amplíe para ver el ejemplo del archivo Docker Compose YAML
<a name="collapsible-section-docker-compose-file"></a>

```
services:
  influxdb:
    image: influxdb:latest
    container_name: influxdb
    ports:
      - "127.0.0.1:8086:8086"
    volumes:
      - influxdb-storage:/.influxdbv2
    environment:
      - DOCKER_INFLUXDB_INIT_MODE=setup
      - DOCKER_INFLUXDB_INIT_USERNAME=admin
      - DOCKER_INFLUXDB_INIT_PASSWORD=${INFLUXDB_PASSWORD}
      - DOCKER_INFLUXDB_INIT_ORG=iot-sitewise-edge
      - DOCKER_INFLUXDB_INIT_BUCKET=WindFarmData
      - DOCKER_INFLUXDB_INIT_RETENTION=0
      - DOCKER_INFLUXDB_INIT_ADMIN_TOKEN=${INFLUXDB_TOKEN}
    networks:
      - SiteWiseEdgeNodeRedDemoNetwork
    restart: unless-stopped

  grafana:
    image: grafana/grafana:latest
    container_name: grafana
    ports:
      - "127.0.0.1:3000:3000"
    volumes:
      - grafana-storage:/var/lib/grafana
      - ./grafana/provisioning:/etc/grafana/provisioning
    environment:
      - GF_SECURITY_ADMIN_USER=admin
      - GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_PASSWORD}
      - GF_INSTALL_PLUGINS=grafana-clock-panel,grafana-simple-json-datasource
      - GF_PATHS_PROVISIONING=/etc/grafana/provisioning
      - GF_PATHS_CONFIG=/etc/grafana/grafana.ini
      - GF_LOG_LEVEL=info
    configs:
      - source: grafana_datasource
        target: /etc/grafana/provisioning/datasources/influxdb.yaml
      - source: grafana_preload_dashboard_config
        target: /etc/grafana/provisioning/dashboards/dashboard.yml
      - source: grafana_preload_dashboard
        target: /etc/grafana/provisioning/dashboards/demo_dashboard.json
    depends_on:
      - influxdb
    networks:
      - SiteWiseEdgeNodeRedDemoNetwork
    restart: unless-stopped

  nodered:
    build:
      context: .
      dockerfile_inline: |
        FROM nodered/node-red:latest
        RUN npm install node-red-contrib-influxdb
    container_name: nodered
    ports:
      - "127.0.0.1:1880:1880"
    volumes:
      - node_red_data:/data
    environment:
      - NODE_RED_ENABLE_SAFE_MODE=false
      - NODE_RED_ENABLE_PALETTE_EDIT=true
      - NODE_RED_AUTO_INSTALL_MODULES=true
    configs:
      - source: nodered_flows
        target: /data/flows.json
      - source: nodered_settings
        target: /data/settings.js
      - source: nodered_flows_cred
        target: /data/flows_cred.json
    depends_on:
      - influxdb
    networks:
      - SiteWiseEdgeNodeRedDemoNetwork
    restart: unless-stopped

volumes:
  influxdb-storage:
  grafana-storage:
  node_red_data:

networks:
  SiteWiseEdgeNodeRedDemoNetwork:
    external: true

configs:
  grafana_datasource:
    content: |
      apiVersion: 1
      datasources:
        - name: windfarm-demo
          type: influxdb
          access: proxy
          url: http://influxdb:8086
          jsonData:
            version: Flux
            organization: iot-sitewise-edge
            defaultBucket: WindFarmData
            tlsSkipVerify: true
          secureJsonData:
            token: ${INFLUXDB_TOKEN}
          editable: false

  grafana_preload_dashboard_config:
    content: |
      apiVersion: 1
      providers:
        - name: "Dashboard provider"
          orgId: 1
          type: file
          options: 
            path: /etc/grafana/provisioning/dashboards

  grafana_preload_dashboard:
    content: |
      {
        "annotations": {
          "list": [
            {
              "builtIn": 1,
              "datasource": {
                "type": "grafana",
                "uid": "-- Grafana --"
              },
              "enable": true,
              "hide": true,
              "iconColor": "rgba(0, 211, 255, 1)",
              "name": "Annotations & Alerts",
              "type": "dashboard"
            }
          ]
        },
        "editable": true,
        "fiscalYearStartMonth": 0,
        "graphTooltip": 0,
        "id": 1,
        "links": [],
        "panels": [
          {
            "datasource": {
              "type": "influxdb",
              "uid": "PEB0DCBF338B3CEB2"
            },
            "fieldConfig": {
              "defaults": {
                "color": {
                  "mode": "palette-classic"
                },
                "custom": {
                  "axisBorderShow": false,
                  "axisCenteredZero": false,
                  "axisColorMode": "text",
                  "axisLabel": "",
                  "axisPlacement": "auto",
                  "barAlignment": 0,
                  "barWidthFactor": 0.6,
                  "drawStyle": "line",
                  "fillOpacity": 0,
                  "gradientMode": "none",
                  "hideFrom": {
                    "legend": false,
                    "tooltip": false,
                    "viz": false
                  },
                  "insertNulls": false,
                  "lineInterpolation": "linear",
                  "lineWidth": 1,
                  "pointSize": 5,
                  "scaleDistribution": {
                    "type": "linear"
                  },
                  "showPoints": "auto",
                  "spanNulls": false,
                  "stacking": {
                    "group": "A",
                    "mode": "none"
                  },
                  "thresholdsStyle": {
                    "mode": "off"
                  }
                },
                "mappings": [],
                "thresholds": {
                  "mode": "absolute",
                  "steps": [
                    {
                      "color": "green"
                    },
                    {
                      "color": "red",
                      "value": 80
                    }
                  ]
                }
              },
              "overrides": []
            },
            "gridPos": {
              "h": 8,
              "w": 12,
              "x": 0,
              "y": 0
            },
            "id": 1,
            "options": {
              "legend": {
                "calcs": [],
                "displayMode": "list",
                "placement": "bottom",
                "showLegend": true
              },
              "tooltip": {
                "hideZeros": false,
                "mode": "single",
                "sort": "none"
              }
            },
            "pluginVersion": "11.6.0",
            "targets": [
              {
                "datasource": {
                  "type": "influxdb",
                  "uid": "PEB0DCBF338B3CEB2"
                },
                "query": "from(bucket: \"WindFarmData\")\n  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n  |> filter(fn: (r) => r[\"_measurement\"] == \"TurbineData\")\n  |> filter(fn: (r) => r[\"_field\"] == \"value\")\n  |> filter(fn: (r) => r[\"name\"] == \"/Renton/WindFarm/Turbine/WindSpeed\")\n  |> filter(fn: (r) => r[\"quality\"] == \"GOOD\")\n  |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)\n  |> yield(name: \"mean\")",
                "refId": "A"
              }
            ],
            "title": "Wind Speed",
            "type": "timeseries"
          }
        ],
        "preload": false,
        "schemaVersion": 41,
        "tags": [],
        "templating": {
          "list": []
        },
        "time": {
          "from": "now-6h",
          "to": "now"
        },
        "timepicker": {},
        "timezone": "browser",
        "title": "Demo Dashboard",
        "uid": "eejtureqjo9a8c",
        "version": 2
      }

  nodered_flows:
    content: |
      [
        {
          "id": "95fce448fdd43b47",
          "type": "tab",
          "label": "Demo Flow",
          "disabled": false,
          "info": ""
        },
        {
          "id": "5f63740b66af3386",
          "type": "mqtt out",
          "z": "95fce448fdd43b47",
          "name": "Publish to MQTT broker",
          "topic": "/Renton/WindFarm/Turbine/WindSpeed",
          "qos": "1",
          "retain": "",
          "respTopic": "",
          "contentType": "",
          "userProps": "",
          "correl": "",
          "expiry": "",
          "broker": "5744207557fa19be",
          "x": 830,
          "y": 200,
          "wires": []
        },
        {
          "id": "8f2eb590d596679b",
          "type": "function",
          "z": "95fce448fdd43b47",
          "name": "Translate to SiteWise payload",
          "func": "let input = msg.payload;\nlet output = {};\n\noutput[\"propertyAlias\"] = input.name;\n\nlet propertyVal = {}\n\nlet timeInSeconds = Math.floor(input.timestamp / 1000);\nlet offsetInNanos = (input.timestamp % 1000) * 1000000;\n\npropertyVal[\"timestamp\"] = {\n    \"timeInSeconds\": timeInSeconds,\n    \"offsetInNanos\": offsetInNanos,\n};\n\npropertyVal[\"quality\"] = input.quality\n\nlet typeNameConverter = {\n    \"number\": (x) => Number.isInteger(x) ? \"integerValue\" : \"doubleValue\",\n    \"boolean\": (x) => \"booleanValue\",\n    \"string\": (x) => \"stringValue\", \n}\nlet typeName = typeNameConverter[typeof input.value](input.value)\npropertyVal[\"value\"] = {}\npropertyVal[\"value\"][typeName] = input.value;\n\noutput[\"propertyValues\"] = [propertyVal]\n\nreturn {\n    payload: JSON.stringify(output)\n};",
          "outputs": 1,
          "timeout": "",
          "noerr": 0,
          "initialize": "",
          "finalize": "",
          "libs": [],
          "x": 530,
          "y": 200,
          "wires": [
            [
              "5f63740b66af3386"
            ]
          ]
        },
        {
          "id": "4b78cbdea5e3258c",
          "type": "inject",
          "z": "95fce448fdd43b47",
          "name": "Turbine Simulator",
          "props": [
            {
              "p": "payload.timestamp",
              "v": "",
              "vt": "date"
            },
            {
              "p": "payload.quality",
              "v": "GOOD",
              "vt": "str"
            },
            {
              "p": "payload.value",
              "v": "$$random()",
              "vt": "jsonata"
            },
            {
              "p": "payload.name",
              "v": "/Renton/WindFarm/Turbine/WindSpeed",
              "vt": "str"
            }
          ],
          "repeat": "1",
          "crontab": "",
          "once": false,
          "onceDelay": "",
          "topic": "",
          "x": 270,
          "y": 200,
          "wires": [
            [
              "8f2eb590d596679b"
            ]
          ]
        },
        {
          "id": "b658bf337ea2e316",
          "type": "influxdb out",
          "z": "95fce448fdd43b47",
          "influxdb": "2f1c38495035d2e4",
          "name": "Store data in InfluxDB",
          "measurement": "TurbineData",
          "precision": "",
          "retentionPolicy": "",
          "database": "",
          "retentionPolicyV18Flux": "",
          "org": "iot-sitewise-edge",
          "bucket": "WindFarmData",
          "x": 840,
          "y": 340,
          "wires": []
        },
        {
          "id": "9432d39af35b202f",
          "type": "function",
          "z": "95fce448fdd43b47",
          "name": "Translate to InfluxDB payload",
          "func": "let data = msg.payload;\n\nlet timeInSeconds = data.propertyValues[0].timestamp.timeInSeconds;\nlet offsetInNanos = data.propertyValues[0].timestamp.offsetInNanos;\nlet timestampInMilliseconds = (timeInSeconds * 1000) + (offsetInNanos / 1000000);\n\nmsg.payload = [\n    {\n        \"timestamp(milliseconds_since_epoch)\": timestampInMilliseconds,\n        \"value\": data.propertyValues[0].value.doubleValue\n    },\n    {\n        \"name\": data.propertyAlias,\n        \"quality\": data.propertyValues[0].quality\n    }\n]\n\nreturn msg",
          "outputs": 1,
          "timeout": "",
          "noerr": 0,
          "initialize": "",
          "finalize": "",
          "libs": [],
          "x": 560,
          "y": 340,
          "wires": [
            [
              "b658bf337ea2e316"
            ]
          ]
        },
        {
          "id": "b689403d2c80816b",
          "type": "mqtt in",
          "z": "95fce448fdd43b47",
          "name": "Subscribe to MQTT broker",
          "topic": "/Renton/WindFarm/Turbine/WindSpeed",
          "qos": "1",
          "datatype": "auto-detect",
          "broker": "5744207557fa19be",
          "nl": false,
          "rap": true,
          "rh": 0,
          "inputs": 0,
          "x": 290,
          "y": 340,
          "wires": [
            [
              "9432d39af35b202f"
            ]
          ]
        },
        {
          "id": "4f59bed8e829fc35",
          "type": "comment",
          "z": "95fce448fdd43b47",
          "name": "Data Publish Flow",
          "info": "dfgh",
          "x": 270,
          "y": 160,
          "wires": []
        },
        {
          "id": "b218c7fc58c8b6e7",
          "type": "comment",
          "z": "95fce448fdd43b47",
          "name": "Data Retention flow",
          "info": "",
          "x": 270,
          "y": 300,
          "wires": []
        },
        {
          "id": "5744207557fa19be",
          "type": "mqtt-broker",
          "name": "emqx",
          "broker": "emqx",
          "port": "1883",
          "clientid": "",
          "autoConnect": true,
          "usetls": false,
          "protocolVersion": "5",
          "keepalive": 15,
          "cleansession": true,
          "autoUnsubscribe": true,
          "birthTopic": "",
          "birthQos": "0",
          "birthPayload": "",
          "birthMsg": {},
          "closeTopic": "",
          "closePayload": "",
          "closeMsg": {},
          "willTopic": "",
          "willQos": "0",
          "willPayload": "",
          "willMsg": {},
          "userProps": "",
          "sessionExpiry": ""
        },
        {
          "id": "2f1c38495035d2e4",
          "type": "influxdb",
          "hostname": "influxdb",
          "port": 8086,
          "protocol": "http",
          "database": "",
          "name": "InfluxDB",
          "usetls": false,
          "tls": "",
          "influxdbVersion": "2.0",
          "url": "http://influxdb:8086",
          "timeout": "",
          "rejectUnauthorized": false
        }
      ]

  nodered_flows_cred:
    content: |
      {
        "2f1c38495035d2e4": {
          "token": "${INFLUXDB_TOKEN}"
        }
      }

  nodered_settings:
    content: |
      module.exports = {
        flowFile: 'flows.json',
        credentialSecret: false,
        adminAuth: null,
        editorTheme: {
          projects: {
            enabled: false
          }
        }
      }
```

### Actualice la implementación de SiteWise Edge
<a name="w2aac17c19c19c26c27b7c11"></a>

1. Vaya a la [consola AWS IoT](https://console.aws.amazon.com/iot/).

1. Elija **dispositivos Greengrass** en el menú de navegación izquierdo, en la sección **Administrar**, y luego Dispositivos **principales**.

1. Seleccione el dispositivo principal conectado a su SiteWise Edge Gateway.

1. Elija la pestaña **Implementaciones y**, a continuación, seleccione el valor del **ID de implementación**.

1. Elija **Acciones** y, a continuación, seleccione **Revisar**. 

1. Lea el mensaje emergente y, a continuación, seleccione **Revisar Deployment**.

1. En el **paso 2: Seleccione los componentes**, seleccione los siguientes componentes y, a continuación, elija **Siguiente**.
   + `aws.greengrass.clientdevices.mqtt.EMQX`
   + `aws.iot.SiteWiseEdgePublisher`

1. En el **paso 3: Configurar los componentes**, seleccione el valor del `aws.greengrass.clientdevices.mqtt.EMQX` componente y añada la siguiente configuración de red:

   ```
   {
       "emqxConfig": {
           "authorization": {
               "no_match": "allow"
           },
           "listeners": {
               "tcp": {
                   "default": {
                       "enabled": true,
                       "enable_authn": false
                   }
               }
           }
       },
       "authMode": "bypass",
       "dockerOptions": "-p 127.0.0.1:1883:1883 --network=SiteWiseEdgeNodeRedDemoNetwork",
       "requiresPrivilege": "true"
   }
   ```

1. Elija **Siguiente**.

1. En el **paso 4: Configurar los ajustes avanzados**, seleccione **Siguiente**.

1. Elija **Implementar**.

### Inicie los servicios
<a name="linux-docker-launch"></a>

1. Inicie los servicios con el archivo Docker Compose. Ejecute el siguiente comando en el directorio que contiene el `compose.yaml` archivo.

   ```
   docker compose up -d
   ```

1. Cree un túnel SSH para acceder a los servicios:

   ```
   ssh -i path_to_your_ssh_key -L 1880:127.0.0.1:1880 -L 3000:127.0.0.1:3000 -L 8086:127.0.0.1:8086 username@gateway_ip_address
   ```

Esta implementación crea los siguientes servicios en: `SiteWiseEdgeNodeRedDemoNetwork network`

**InfluxDB v2 (puerto 8086)**  
Incluye una organización preconfigurada (iot-sitewise-edge), un depósito de WindFarmData InfluxDB y credenciales de administrador

**Node-RED (puerto 1880)**  
Incluye nodos InfluxDB y flujos preconfigurados para la integración AWS IoT SiteWise 

**Grafana (puerto 3000)**  
Incluye un usuario administrador, una fuente de datos de InfluxDB y un panel de monitoreo

### Acceda a los servicios
<a name="linux-docker-access-services"></a>

Tras la implementación, acceda a los servicios con URLs las siguientes credenciales:

**nota**  
Puede acceder a cada servicio desde su host o desde la máquina de puerta de enlace.


**Detalles de acceso al servicio**  

| Servicio | URL | Credenciales | 
| --- | --- | --- | 
| Node-RED | [http://127.0.0.1:1880](http://127.0.0.1:1880) | No se requieren credenciales | 
| InfluxDB | [http://127.0.0.1:8086](http://127.0.0.1:8086) |  Nombre de usuario: admin Contraseña: \$1INFLUXDB\$1PASSWORD  | 
| Grafana | [http://127.0.0.1:3000](http://127.0.0.1:3000) |  Nombre de usuario: admin Contraseña: \$1GRAFANA\$1PASSWORD  | 

## Verifique la implementación
<a name="linux-docker-verify-deployment"></a>

Para garantizar que la implementación se realice correctamente, realice las siguientes comprobaciones:

1. En el caso de Node-RED, compruebe la presencia de dos flujos precargados:
   + Flujo de publicación de datos
   + Flujo de retención de datos

1. Para AWS IoT SiteWise, en la AWS IoT SiteWise consola, confirme la presencia de un flujo de datos con el alias`/Renton/WindFarm/Turbine/WindSpeed`.

1. En el caso de InfluxDB, utilice el explorador de datos para verificar el almacenamiento de los datos en la `TurbineData` medición dentro del `WindFarmData` depósito.

1. En el caso de Grafana, consulta el panel para confirmar la visualización de los datos de series temporales generados por Node-RED.

# Procesa datos para integraciones de código abierto
<a name="open-source-data-processing-open-source"></a>

Los datos se pueden procesar (por ejemplo, mediante la transformación o la agregación) en diferentes etapas y utilizando diversas herramientas, cada una de las cuales cumple diferentes requisitos de monitoreo.

## Procese los datos con los nodos Node-RED
<a name="open-source-nodered-nodes"></a>

Transforme sus datos en tiempo real utilizando los nodos de procesamiento integrados de Node-RED®. Configure estos nodos a través de la consola Node-RED para crear su canalización de datos.

### Nodos de transformación de datos
<a name="open-source-data-transformation-nodes"></a>

Transforme puntos de datos individuales, de forma similar a Transforms in AWS IoT SiteWise, mediante estos nodos:
+ **cambiar de nodo**: realiza modificaciones de valores sencillas en los datos.
+ **nodo de función**: permite JavaScript transformaciones personalizadas para el procesamiento de datos complejos.

### Nodos de cálculo de métricas
<a name="open-source-metrics-calculation-nodes"></a>

Combine varios puntos de datos en una sola salida, de forma similar a Metrics in AWS IoT SiteWise, mediante estos nodos:
+ **nodo por lotes**: agrupa varios mensajes para su procesamiento por lotes.
+ **nodo de unión**: combina varios flujos de datos en una sola salida.
+ **nodo agregador**: calcula las métricas agregadas a partir de varios puntos de datos.

Para ver opciones de nodos adicionales, consulte la biblioteca [Node-RED](https://flows.nodered.org/).

## Cree tareas de InfluxDB
<a name="open-source-influxdb-tasks"></a>

Si bien Node-RED destaca en el procesamiento básico de datos con una configuración rápida, los cálculos métricos complejos pueden resultar complicados en la programación basada en flujos. Las tareas de InfluxDB® ofrecen una alternativa a través de los scripts Flux programados para necesidades de procesamiento avanzadas.

Utilice las tareas de InfluxDB para:
+ Agregaciones estadísticas en grandes conjuntos de datos
+ Operaciones matemáticas en múltiples propiedades
+ Mediciones derivadas de múltiples fuentes

### Características de la tarea
<a name="open-source-task-features"></a>
+ **Ejecución programada**: ejecuta tareas basadas en expresiones cron
+ **Procesamiento por lotes**: optimice las operaciones para datos de series temporales
+ **Recuperación de errores**: reintente automáticamente las operaciones fallidas
+ **Supervisión**: realice un seguimiento de la ejecución mediante registros detallados

Administre las tareas a través de la interfaz de usuario, la API o la CLI de InfluxDB. Para obtener más información, consulte [Procesar datos con tareas de InfluxDB](https://docs.influxdata.com/influxdb/cloud/process-data/).

## Usa las transformaciones de Grafana
<a name="open-source-grafana-transformations"></a>

Transforme la visualización de datos en Grafana® sin modificar los datos de origen en InfluxDB. Las transformaciones de Grafana se aplican solo a la capa de visualización.
+ **Visual Builder**: cree transformaciones sin escribir código
+ **Vista previa en vivo**: vea los resultados de la transformación en tiempo real
+ **Fuentes múltiples**: procese datos de múltiples fuentes de bases de datos
+ **Almacenamiento eficiente**: transforme los datos en el momento de la visualización sin almacenar resultados intermedios

Para obtener más información, consulte [Transformar datos](https://grafana.com/docs/grafana/latest/panels/transform-data/).

## Solución de problemas de integraciones de código abierto
<a name="open-source-troubleshoot"></a>

Para obtener más información sobre la solución de problemas relacionados con las integraciones de código abierto para las puertas de enlace SiteWise Edge, consulte. [Solución de problemas de integraciones de código abierto en Edge](troubleshooting-gateway.md#open-source-troubleshooting)

# Transmisiones clásicas, pasarelas V2 para Edge AWS IoT SiteWise
<a name="classic-streams-v2-gateway"></a>

Conozca las características y limitaciones de las transmisiones clásicas, las pasarelas V2 para AWS IoT SiteWise Edge.

La pasarela V2 Classic Streams mantiene la funcionalidad tradicional que ya existía en las AWS IoT SiteWise implementaciones anteriores antes de la introducción de las pasarelas V3 habilitadas para MQTT. Estas pasarelas SiteWise Edge se consideran pasarelas clásicas de transmisiones V2. Mantienen la compatibilidad con versiones anteriores y funcionan con el paquete de procesamiento de datos. Si bien la pasarela Classic Streams V2 ofrece un rendimiento fiable para las configuraciones existentes, presenta limitaciones en comparación con las nuevas opciones de pasarela. En concreto, este tipo de puerta de enlace no es totalmente compatible con las funciones avanzadas disponibles en el destino de puerta de enlace V3 habilitado para MQTT. Para utilizar el protocolo de mensajería MQTT, puede crear una nueva puerta de enlace V3 habilitada para MQTT. Para obtener más información, consulte [Puertas de enlace V3 habilitadas para MQTT para Edge AWS IoT SiteWise](mqtt-enabled-v3-gateway.md).

**Topics**
+ [Utilice paquetes para recopilar y procesar datos en Edge SiteWise](data-packs.md)
+ [Configure el AWS IoT SiteWise componente de publicación](configure-publisher-component.md)
+ [Gestor de destinos y AWS IoT Greengrass transmisiones](destinations-gg-stream-manager.md)
+ [Configure las capacidades perimetrales en AWS IoT SiteWise Edge](edge-data-collection-and-processing.md)
+ [Configure el procesamiento de datos AWS IoT SiteWise perimetrales para modelos y activos](edge-processing.md)

# Utilice paquetes para recopilar y procesar datos en Edge SiteWise
<a name="data-packs"></a>

**nota**  
La característica de paquete de procesamiento de datos (DPP) ya no está disponible para los nuevos clientes. Los clientes existentes pueden seguir utilizando el servicio con normalidad. Para obtener más información, consulte [Cambio en la disponibilidad del paquete de procesamiento de datos](https://docs.aws.amazon.com/iot-sitewise/latest/appguide/iotsitewise-dpp-availability-change.html).

AWS IoT SiteWise Las pasarelas Edge utilizan diferentes paquetes para determinar cómo recopilar y procesar los datos. 

Actualmente están disponibles los siguientes paquetes:
+ **Paquete de recopilación de datos**: utilice este paquete para recopilar sus datos industriales y enviarlos a destinos AWS en la nube. De forma predeterminada, este paquete se habilita automáticamente para su puerta de enlace SiteWise Edge.
+ **Paquete de procesamiento de datos**: utilice este paquete para habilitar la comunicación de la puerta de enlace SiteWise Edge con modelos de activos y activos configurados de forma perimetral. Puede utilizar la configuración de periferia para controlar qué datos de activos se van a computar y procesar en las instalaciones. A continuación, puede enviar sus datos a AWS IoT SiteWise u otros AWS servicios. Para obtener más información sobre el paquete de procesamiento de datos, consulte [Configure el procesamiento de datos AWS IoT SiteWise perimetrales para modelos y activos](edge-processing.md).

## Actualización de paquetes
<a name="update-gateway-packs"></a>

**importante**  
La actualización de las versiones de los paquetes de procesamiento de datos anteriores a la 2.0.x (incluidas) a la versión 2.1.x provocará la pérdida de datos de las mediciones almacenadas localmente.

SiteWise Las pasarelas perimetrales utilizan diferentes paquetes para determinar cómo recopilar y procesar los datos. Puede utilizar la AWS IoT SiteWise consola para actualizar los paquetes.

**Para actualizar paquetes (consola)**

1. <a name="sitewise-open-console"></a>Vaya a la [consola de AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. En el panel de navegación de la izquierda, selecciona **las puertas de enlace Edge** en la sección **Edge**.

1. En la lista de **puertas** de enlace, elija la puerta de enlace SiteWise Edge con los paquetes que desee actualizar.

1. En la sección de **Configuración de puerta de enlace**, seleccione **Actualizaciones de software disponibles**.

1. En la página Editar versiones de software, selecciona **Actualizaciones**.
**nota**  
Solo puede actualizar los paquetes que estén habilitados. Para ver la lista de paquetes que están habilitados para esta puerta de enlace de SiteWise Edge, seleccione **Descripción general** y, a continuación, consulte la sección de **capacidades de Edge**.

1. En la página de versiones del software de edición, en la sección **Actualizaciones de componentes de puerta de enlace**, haga lo siguiente:
   + Para actualizar el **Recopilador OPC UA**, elija una versión y, a continuación, **Implementar**.
   + Para actualizar el **Publicador**, elija una versión y, a continuación, **Implementar**.
   + Para actualizar el **Paquete de procesamiento de datos**, elija una versión y, a continuación, **Implementar**.

1. Cuando haya terminado de implementar las nuevas versiones, elija **Listo**.

Si tiene problemas para actualizar los paquetes, consulte [No se han podido implementar paquetes en las puertas de enlace de SiteWise Edge](troubleshooting-gateway.md#gateway-issue-ggv2-packs).

# Cambio en la disponibilidad de los paquetes de procesamiento de datos
<a name="iotsitewise-dpp-availability-change"></a>

**nota**  
La característica de paquete de procesamiento de datos (DPP) ya no está disponible para los nuevos clientes. Los clientes existentes pueden seguir utilizando el servicio con normalidad. Para obtener más información, consulte [Cambio en la disponibilidad del paquete de procesamiento de datos](https://docs.aws.amazon.com/iot-sitewise/latest/appguide/iotsitewise-dpp-availability-change.html).

Para obtener capacidades similares a la función del paquete de procesamiento de datos de AWS IoT, explore las [alternativas de código abierto o las](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/open-source-edge-integrations.html) [integraciones de nuestros socios](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/cpa-add-source.html). El paquete de procesamiento de AWS IoT SiteWise datos es una función AWS IoT SiteWise que proporciona transformaciones de datos, métricas, filtrado, almacenamiento local y visualización en la periferia.

**nota**  
AWS IoT SiteWise y la función del paquete de recopilación de datos de AWS IoT SiteWise Edge sigue estando disponible, pero la función del paquete de procesamiento de datos está entrando en modo de mantenimiento.

## Opciones de migración
<a name="iotsitewise-dpp-migration-options"></a>

Explore estas opciones de migración para reemplazar la funcionalidad del paquete de procesamiento de datos.

**Alternativas de código abierto**  
Cree canalizaciones de procesamiento de datos locales con Node-RED para la transformación de datos, InfluxDB para el almacenamiento de series temporales y Grafana para la visualización. Estas herramientas funcionan con pasarelas V3 habilitadas para MQTT a través de MQTT para proporcionar procesamiento perimetral e información local, a la vez que sincronizan los datos con la nube. AWS   
Para obtener más información, consulte [Procesar y visualizar datos con Edge y herramientas](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/open-source-edge-integrations.html) de código abierto. SiteWise 

**Integraciones de socios**  
Conecte equipos y sensores industriales a través de fuentes de datos de socios externos CloudRail EasyEdge, como Litmus Edge. Estos componentes de Greengrass se han desarrollado en colaboración con más de 200 protocolos industriales AWS y son compatibles con ellos para la recopilación y el procesamiento integrales de datos.  
Para obtener más información, consulte [Añadir una fuente de datos](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/cpa-add-source.html).

**Puertas de enlace V3 habilitadas para MQTT**  
Las pasarelas V3 habilitadas para MQTT utilizan un protocolo MQTT ligero para una comunicación de datos eficiente y ofrecen destinos de datos flexibles, incluida la ingesta en tiempo real y la ingesta en búfer de Amazon S3. Puede implementar filtros de ruta para una recopilación de datos precisa y beneficiarse de una escalabilidad mejorada y de la alineación de los estándares de IoT. Las pasarelas V3 habilitadas para MQTT proporcionan un procesamiento de datos basado en la nube a través de servicios AWS IoT SiteWise básicos que incluyen modelos de activos, propiedades computadas, alarmas y consultas de datos históricos.  
Para obtener más información, consulte [Puertas de enlace V3 habilitadas para MQTT para Edge AWS IoT SiteWise](mqtt-enabled-v3-gateway.md).

## Preguntas frecuentes
<a name="iotsitewise-dpp-faq"></a>

### ¿Puedo migrar gradualmente?
<a name="iotsitewise-dpp-faq-gradual"></a>

Sí, puede migrar gradualmente mediante cualquier combinación de opciones de migración. Puede implementar pasarelas V3 compatibles con MQTT, alternativas de código abierto o integraciones de socios junto con las transmisiones clásicas existentes o las pasarelas V2 con el paquete de procesamiento de datos. Todas las opciones pueden enviar datos al mismo entorno. AWS IoT SiteWise 

### ¿Cuánto tiempo puedo seguir utilizando el paquete de procesamiento de datos?
<a name="iotsitewise-dpp-faq-timeline"></a>

El paquete de procesamiento de datos permanece disponible para los clientes actuales en modo de mantenimiento. Recibirás un aviso anticipado si está previsto algún cambio en la disponibilidad. Supervisa los anuncios AWS de servicio y las notificaciones de tu cuenta para ver si hay actualizaciones.

# Configure el AWS IoT SiteWise componente de publicación
<a name="configure-publisher-component"></a>

Tras crear una puerta de enlace de AWS IoT SiteWise Edge e instalar el software, puede configurar el componente de publicación para que la puerta de enlace de SiteWise Edge pueda exportar datos a la AWS nube. Utilice el componente de publicador para habilitar características adicionales o configurar ajustes predeterminados. Para obtener más información, consulte [AWS IoT SiteWise publisher](https://docs.aws.amazon.com/greengrass/v2/developerguide/iotsitewise-publisher-component.html) en la *Guía para desarrolladores de AWS IoT Greengrass Version 2 *.

**nota**  
La configuración del editor varía según el tipo de puerta de enlace que utilice. En el caso de las pasarelas Classic Stream V2, utilice el `iotsitewise:publisher:2` espacio de nombres. Para las puertas de enlace V3 habilitadas para MQTT, utilice el espacio de nombres. `iotsitewise:publisher:3`

------
#### [ Console ]

1. Vaya a la [consola de AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. En el panel de navegación, seleccione **Puertas de enlace Edge**.

1. Seleccione la puerta de enlace SiteWise Edge para la que desee configurar el publicador.

1. En la sección **Configuración del editor**, elija **Editar**.

1. En **Orden de publicación**, elija una de las siguientes opciones.
   + **Publique primero los datos más antiguos**: la puerta de enlace SiteWise Edge publica primero los datos más antiguos en la nube de forma predeterminada.
   + **Publique primero los datos más recientes**: la puerta de enlace SiteWise Edge publica primero los datos más recientes en la nube.

1. (Opcional) Si no desea que la puerta de enlace SiteWise Edge comprima sus datos, anule la selección de **Activar la compresión al cargar** datos.

1. (Opcional) Si no desea publicar datos antiguos, seleccione **Excluir los datos caducados** y haga lo siguiente:

   1. En **Periodo límite**, introduzca un valor y elija una unidad. El periodo límite debe ser de entre cinco minutos y siete días. Por ejemplo, si el periodo límite es de tres días, los datos anteriores a tres días no se publicarán en la nube.

1. (Opcional) Para establecer una configuración personalizada sobre cómo se gestionan los datos en el dispositivo local, elija **Configuración de almacenamiento local** y haga lo siguiente:

   1. En **Periodo de retención**, introduzca un número y elija una unidad. El periodo de retención debe ser de entre un minuto y 30 días, y mayor o igual que el periodo de rotación. Por ejemplo, si el período de retención es de 14 días, la puerta de enlace de SiteWise Edge elimina todos los datos del borde que hayan superado el período límite especificado después de haberlos almacenado durante 14 días.

   1. En **Periodo de rotación**, introduzca un número y elija una unidad. El periodo de rotación debe ser mayor que un minuto y menor o igual que el periodo de retención. Por ejemplo, supongamos que el período de rotación es de dos días, la puerta de enlace SiteWise Edge agrupa los datos anteriores al período límite y los guarda en un solo archivo. Para las puertas de enlace autohospedadas AWS IoT Greengrass V2, la puerta de enlace SiteWise Edge transfiere un lote de datos al siguiente directorio local una vez cada dos días:. `/greengrass/v2/work/aws.iot.SiteWiseEdgePublisher/exports`

   1. En **Capacidad de almacenamiento**, introduzca un valor que sea mayor o igual a 1. Si la capacidad de almacenamiento es de 2 GB, la puerta de enlace SiteWise Edge comienza a eliminar datos cuando hay más de 2 GB de datos almacenados localmente. 

1. Seleccione **Save**.

------
#### [ AWS CLI ]

Use la [UpdateGatewayCapabilityConfiguration](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateGatewayCapabilityConfiguration.html)API para configurar el editor.

Establezca el parámetro `capabilityNamespace` como `iotsitewise:publisher:2`.

**Example : Configuración de editor para las pasarelas Classic Stream V2**  
Espacio de nombres del publicador: `iotsitewise:publisher:2`  

```
{
    "SiteWisePublisherConfiguration": {                               
        "publishingOrder": "TIME_ORDER",
        "enableCompression": true,
        "dropPolicy": {
            "cutoffAge": "7d",
            "exportPolicy": {
                "retentionPeriod": "7d",
                "rotationPeriod": "6h",
                "exportSizeLimitGB": 10
            }
        }
    },
    "SiteWiseS3PublisherConfiguration": {
        "accessRoleArn": "arn:aws:iam:123456789012:role/roleName",
        "streamToS3ConfigMapping": [
            {
                "streamName": "S3_OPC-UA_Data_Collector",
                "targetBucketArn": "arn:aws:s3:::amzn-s3-demo-bucket/dataCollector",
                "publishPolicy": {
                    "publishFrequency": "10m",
                    "localSizeLimitGB": 10
                },
                "siteWiseImportPolicy": {
                    "enableSiteWiseStorageImport": true,
                    "enableDeleteAfterImport": true
                }
            }
        ]
    }
}
```

El publicador proporciona los siguientes parámetros de configuración que puede personalizar.

`SiteWisePublisherConfiguration`    
`publishingOrder`  
El orden en el que se publican los datos en la nube. El valor de este parámetro puede ser uno de los siguientes.  
+ `TIME_ORDER` (**Publicar primero los datos más antiguos**): De forma predeterminada, los datos más antiguos se publican primero en la nube.
+ `RECENT_DATA` (**Publicar primero los datos más recientes**): los datos más recientes se publican primero en la nube.  
`enableCompression`  
Configúrelo `true` para comprimir los datos antes de publicarlos. La compresión de datos puede reducir el uso del ancho de banda.  
`dropPolicy`  
(Opcional) Una política que controle qué datos se publican en la nube.    
`cutoffAge`  
La antigüedad máxima de los datos que se van a publicar se especifica en días, horas y minutos. Por ejemplo, `7d` o `1d7h16m`. Los datos anteriores a los especificados no se envían a AWS IoT SiteWise.   
Los datos anteriores al período límite no se publican en la nube. La antigüedad límite debe ser de entre cinco minutos y siete días.  
Puede utilizar `m`, `h` y `d` cuando especifique una edad límite. Tenga en cuenta que `m` representa minutos, `h` representa horas y `d` representa días.  
`exportPolicy`  
(Opcional) Una política que administra el almacenamiento de datos en la periferia. Esta política se aplica a los datos que son anteriores a la antigüedad límite.    
`retentionPeriod`  
La puerta de enlace SiteWise Edge elimina del almacenamiento local cualquier dato periférico anterior al período límite una vez que se haya almacenado durante el período de retención especificado. El periodo de retención debe ser de entre un minuto y 30 días, y mayor o igual que el periodo de rotación.  
Puede utilizar `m`, `h` y `d` cuando especifique un periodo de retención. Tenga en cuenta que `m` representa minutos, `h` representa horas y `d` representa días.  
`rotationPeriod`  
El intervalo de tiempo en que los datos se procesan por lotes y se guardan en un único archivo que es anterior al periodo límite. La puerta de enlace SiteWise Edge transfiere un lote de datos al siguiente directorio local al final de cada período de rotación:. `/greengrass/v2/work/aws.iot.SiteWiseEdgePublisher/exports` El periodo de rotación debe ser mayor que un minuto y menor o igual que el periodo de retención.  
Puede utilizar `m`, `h` y `d` cuando especifique un periodo de rotación. Tenga en cuenta que `m` representa minutos, `h` representa horas y `d` representa días.  
`exportSizeLimitGB`  
El tamaño máximo permitido de datos almacenados localmente, en GB. Si se supera esta cuota, la puerta de enlace SiteWise Edge comienza a eliminar los primeros datos hasta que el tamaño de los datos almacenados localmente sea igual o inferior a la cuota. El valor de este parámetro debe ser mayor o igual que 1.

`SiteWiseS3PublisherConfiguration`    
`accessRoleArn`  
El rol de acceso que da AWS IoT SiteWise permiso para administrar el bucket de Amazon S3 en el que está publicando.  
`streamToS3ConfigMapping`  
Conjunto de configuraciones que asigna un flujo a una configuración de Amazon S3.    
`streamName`  
El flujo que se va a leer y publicar en la configuración de Amazon S3.  
`targetBucketArn`  
El ARN del bucket en el que se va a publicar.  
`publishPolicy`  
    
`publishFrequency`  
La frecuencia con la que la puerta de enlace SiteWise Edge publica en el bucket de Amazon S3.   
`localSizeLimitGB`  
El tamaño máximo de los archivos escritos en el disco local. Si se supera este umbral, el publicador publica todos los datos almacenados en el búfer en su destino.  
`siteWiseImportPolicy`  
    
`enableSiteWiseStorageImport`  
`true`Configúrelo para importar datos de un bucket de Amazon S3 al AWS IoT SiteWise almacenamiento.  
`enableDeleteAfterImport`  
Configure como `true` para eliminar el archivo del bucket de Amazon S3 después de su ingesta en el almacenamiento de AWS IoT SiteWise .

------

# Gestor de destinos y AWS IoT Greengrass transmisiones
<a name="destinations-gg-stream-manager"></a>

AWS IoT Greengrass El administrador de transmisiones le permite enviar datos a los siguientes Nube de AWS destinos: canales entrantes AWS IoT Analytics, transmisiones en Amazon Kinesis Data Streams, propiedades de activos u objetos AWS IoT SiteWise en Amazon Simple Storage Service (Amazon S3). Para obtener más información, consulte [Administración de flujos de datos en AWS IoT Greengrass Core](https://docs.aws.amazon.com/greengrass/v2/developerguide/manage-data-streams.html) en la *Guía para desarrolladores de AWS IoT Greengrass Version 2 *.

**Example : Estructura de mensajes de transmisión de datos**  
El siguiente ejemplo muestra la estructura de mensajes de flujo de datos requerida transmitida por el administrador de AWS IoT Greengrass flujo.  

```
{
   "assetId": "string",
   "propertyAlias": "string",
   "propertyId": "string",
   "propertyValues": [
      {
         "quality": "string",
         "timestamp": {
            "offsetInNanos": number,
            "timeInSeconds": number
         },
         "value": {
            "booleanValue": boolean,
            "doubleValue": number,
            "integerValue": number,
            "stringValue": "string"
         }
      }
   ]
}
```

**nota**  
El mensaje de flujo de datos debe incluir (`assetId` y `propertyId`) o `propertyAlias` en su estructura. 

`assetId`  
(Opcional) ID del activo que se desea actualizar.

`propertyAlias`  
(Opcional) Alias que identifica la propiedad, como una ruta de flujo de datos del servidor OPC UA. Por ejemplo:  

```
/company/windfarm/3/turbine/7/temperature
```
Para obtener más información, consulte [Administrar flujos de datos](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/manage-data-streams.html) en la *Guía del AWS IoT SiteWise usuario*.

`propertyId`  
(Opcional) ID de la propiedad de activo de esta entrada.

`propertyValues`  
(Obligatorio) Lista de valores de propiedad que se va a cargar. Puede especificar hasta 10 elementos de la matriz `propertyValues`.    
`quality`  
(Opcional) La calidad del valor de la propiedad de activo.  
 `timestamp`   
(Obligatorio) Marca de tiempo del valor de propiedad del activo.    
 `offsetInNanos`   
(Opcional) Desfase en nanosegundos respecto a `timeInSeconds`.  
 `timeInSeconds`   
(Obligatorio) Marca de tiempo, en segundos, en formato epoch de Unix. Los datos fraccionarios de nanosegundos los proporciona `offsetInNanos`.  
 `value`   
(Obligatorio) Valor de la propiedad del activo.  
Solo puede haber uno de los siguientes valores en el campo `value`.   
 `booleanValue`   
(Opcional) Datos de propiedades del activo de tipo booleano (`true` o `false`).  
 `doubleValue`   
(Opcional) Datos de propiedad del activo de tipo doble (número de coma flotante).  
 `integerValue`   
(Opcional) Datos de propiedad del activo de tipo entero (número entero).  
 `stringValue`   
(Opcional) Datos de propiedad del activo de tipo cadena (secuencia de caracteres).

# Configure las capacidades perimetrales en AWS IoT SiteWise Edge
<a name="edge-data-collection-and-processing"></a>

**nota**  
La característica de paquete de procesamiento de datos (DPP) ya no está disponible para los nuevos clientes. Los clientes existentes pueden seguir utilizando el servicio con normalidad. Para obtener más información, consulte [Cambio en la disponibilidad del paquete de procesamiento de datos](https://docs.aws.amazon.com/iot-sitewise/latest/appguide/iotsitewise-dpp-availability-change.html).

Puede usar AWS IoT SiteWise Edge para recopilar y almacenar datos temporalmente para poder organizar y procesar los datos del dispositivo de forma local. Al habilitar el procesamiento perimetral, puede optar por enviar solo datos agregados Nube de AWS para optimizar el uso del ancho de banda y los costos de almacenamiento en la nube. Al utilizar AWS IoT SiteWise componentes con AWS IoT Greengrass, puede recopilar y procesar datos en la periferia antes de enviarlos a ella Nube de AWS, o bien gestionarlos de forma local mediante SiteWise Edge APIs. 

La recopilación de datos se realiza mediante paquetes de datos y AWS IoT SiteWise componentes que se ejecutan en AWS IoT Greengrass ellos.

**nota**  
AWS IoT SiteWise conserva sus datos perimetrales en sus gateways SiteWise Edge durante un máximo de 30 días. El periodo de retención de los datos depende del espacio de disco disponible en el dispositivo.
Si su puerta de enlace SiteWise Edge ha estado desconectada de ella Nube de AWS durante 30 días, el [paquete de procesamiento de datos](configure-opcua-source.md) se desactiva automáticamente.

**Topics**
+ [Configure la capacidad SiteWise perimetral en Edge](#using-sitewise-edge)

## Configure la capacidad SiteWise perimetral en Edge
<a name="using-sitewise-edge"></a>

AWS IoT SiteWise proporciona los siguientes paquetes que su puerta de enlace SiteWise Edge puede usar para determinar cómo recopilar y procesar sus datos. Seleccione paquetes para habilitar las capacidades perimetrales de su puerta de enlace SiteWise perimetral.
+ El **paquete de recopilación de datos** permite a su puerta de enlace SiteWise Edge recopilar datos de varios servidores OPC UA y luego exportarlos desde el borde a la AWS nube. Se activa una vez que haya agregado fuentes de datos a su puerta de enlace SiteWise Edge.
+ **El paquete de procesamiento de datos** permite que su pasarela SiteWise Edge procese los datos de su equipo en la periferia. Por ejemplo, puede utilizar modelos de activos para calcular métricas y transformaciones. Para obtener más información sobre modelos de activos y los activos, consulte [Modelado de activos industriales](industrial-asset-models.md).
**nota**  
El paquete de procesamiento de datos solo está disponible en plataformas x86.

**Configuración de capacidades de periferia**

1. Vaya a la [consola de AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. En el panel de navegación, seleccione **Puertas de enlace Edge**.

1. Seleccione la puerta de enlace SiteWise Edge para la que desee activar las funciones perimetrales.

1. En la sección **Capacidades de periferia**, elija **Editar**.

1. En la sección **Capacidades de periferia**, seleccione **Paquete de procesamiento de datos (se aplican cargos adicionales).**

1. (Opcional) En la sección de **conexión LDAP de Edge**, puede conceder a los grupos de usuarios de su directorio corporativo acceso a esta puerta de enlace de SiteWise Edge. Los grupos de usuarios pueden usar las credenciales del Protocolo ligero de acceso a directorios (LDAP) para acceder a la puerta de enlace Edge. SiteWise Luego, pueden usarlas AWS OpsHub para la AWS IoT SiteWise aplicación, las operaciones de la AWS IoT SiteWise API u otras herramientas para administrar la puerta de enlace SiteWise Edge. Para obtener más información, consulte [Administre las puertas de enlace SiteWise Edge](manage-gateways-ggv2.md).
**nota**  
También puede usar Linux o las Microsoft Windows credenciales para acceder a la puerta de enlace SiteWise Edge. Para obtener más información, consulte [Acceda a su puerta de enlace SiteWise Edge con las credenciales del sistema operativo Linux](manage-gateways-ggv2.md#linux-user-pool).

   1. Seleccione **Activado**.

   1. En **Nombre del proveedor**, introduzca un nombre para su proveedor de LDAP.

   1. En **Nombre de host o dirección IP**, introduzca el nombre de host o la dirección IP de su servidor LDAP.

   1. En **Puerto**, introduzca un número de puerto.

   1. En **Nombre distinguido (DN) de base**, introduzca un nombre distinguido (DN) para la base. 

      Se admiten los siguientes tipos de atributos: CommonName (CN), LocalityName (L), Name (ST), stateOrProvince OrganizationName (O), (OU), CountryName (C), organizationalUnitName StreetAddress (STREET), DomainComponent (DC) e ID de usuario (UID).

   1. En **DN de grupo de administradores**, introduzca un DN.

   1. En **DN de grupo de usuarios**, introduzca un DN.

1. Seleccione **Save**.

Ahora que ha activado las funciones perimetrales en su puerta de enlace perimetral, debe configurar su modelo de activos para la SiteWise periferia. La configuración de periferia de su modelo de activos especifica dónde se calculan las propiedades de los activos. Puede calcular todas las propiedades en la periferia o puede configurar las propiedades de su modelo de activos por separado. Las propiedades del modelo de activos incluyen [métricas](concept-overview.md#concept-metric), [transformaciones](concept-overview.md#concept-transform) y [mediciones](concept-overview.md#concept-measurement).

Para obtener más información sobre las propiedades de activos, consulte [Definición de propiedades de datos](asset-properties.md).

 Después de crear el modelo de activo, puede configurarlo para la periferia. Para obtener más información sobre cómo configurar su modelo de activos para la periferia, consulte [Creación de un modelo de activos (consola)](create-asset-models.md#create-asset-model-console). 

**nota**  
Los modelos de activos y los paneles de control se sincronizan automáticamente entre la AWS nube y su puerta de enlace SiteWise Edge cada 10 minutos. También puedes sincronizarlos manualmente desde la aplicación SiteWise Edge Gateway local.

# Configure el procesamiento de datos AWS IoT SiteWise perimetrales para modelos y activos
<a name="edge-processing"></a>

**nota**  
La característica de paquete de procesamiento de datos (DPP) ya no está disponible para los nuevos clientes. Los clientes existentes pueden seguir utilizando el servicio con normalidad. Para obtener más información, consulte [Cambio en la disponibilidad del paquete de procesamiento de datos](https://docs.aws.amazon.com/iot-sitewise/latest/appguide/iotsitewise-dpp-availability-change.html).

 Puede usar AWS IoT SiteWise Edge para recopilar, almacenar, organizar y monitorear los datos del equipo a nivel local. Puede usar SiteWise Edge para modelar sus datos industriales y visualizarlos localmente. Puede procesar sus datos de forma local y enviarlos a la AWS nube, o bien procesarlos de forma local mediante la AWS IoT SiteWise API. 

Con AWS IoT SiteWise Edge, puede procesar los datos sin procesar de forma local y elegir enviar solo los datos agregados a la AWS nube para optimizar el uso del ancho de banda y los costos de almacenamiento en la nube.

**nota**  
AWS IoT SiteWise conserva los datos perimetrales en sus gateways SiteWise Edge durante un máximo de 30 días. El periodo de retención de los datos depende del espacio de disco disponible en el dispositivo.
Si su puerta de enlace SiteWise Edge ha estado desconectada de la AWS nube durante 30 días, [Configure una fuente OPC UA en Edge SiteWise](configure-opcua-source.md) se deshabilita automáticamente.

## Configure un modelo de activos para el procesamiento de datos en SiteWise Edge
<a name="process-gateway-data-edge"></a>

Debe configurar su modelo de activos para la periferia antes de poder procesar los datos de la puerta de enlace SiteWise perimetral en la periferia. La configuración de periferia de su modelo de activos especifica dónde se calculan las propiedades de los activos. Puede elegir entre calcular todas las propiedades en la periferia y enviar los resultados a la Nube de AWS o personalizar el lugar donde se calculará cada propiedad de los activos por separado. Para obtener más información, consulte [Configure el procesamiento de datos AWS IoT SiteWise perimetrales para modelos y activos](#edge-processing).

Las propiedades de los activos incluyen métricas, transformaciones y mediciones:
+ Las métricas son los datos agregados del activo en un periodo de tiempo determinado. Puede calcular nuevas métricas utilizando los datos de métricas existentes. AWS IoT SiteWise siempre envía tus métricas a la AWS nube para almacenarlas a largo plazo. AWS IoT SiteWise calcula las métricas en la AWS nube de forma predeterminada. Puede configurar su modelo de activos para calcular sus métricas en la periferia. AWS IoT SiteWise envía los resultados procesados a la AWS nube.
+ Las transformaciones son expresiones matemáticas que asignan puntos de datos de la propiedad de un activo de un formulario a otro. Las transformaciones pueden utilizar métricas como datos de entrada y deben computarse y almacenarse en la misma ubicación que sus entradas. Si configura una entrada de métrica para que se calcule en la periferia, AWS IoT SiteWise también calcula su transformación asociada en la periferia. 
+ Las mediciones se formatean como datos sin procesar que su dispositivo recopila y envía a la AWS nube de forma predeterminada. Puede configurar su modelo de activos para almacenar estos datos en su dispositivo local.

Para obtener más información sobre las propiedades de activos, consulte [Definición de propiedades de datos](asset-properties.md).

 Después de crear el modelo de activo, puede configurarlo para la periferia. Para obtener más información sobre cómo configurar su modelo de activos para la periferia, consulte [Creación de un modelo de activos (consola)](create-asset-models.md#create-asset-model-console). 

**nota**  
Los modelos de activos y los paneles de control se sincronizan automáticamente entre la AWS nube y su puerta de enlace SiteWise Edge cada 10 minutos. También puede sincronizarlos manualmente desde [Administre las puertas de enlace SiteWise Edge](manage-gateways-ggv2.md).

Puede usar el AWS IoT SiteWise REST APIs y el AWS Command Line Interface (AWS CLI) para consultar los datos de la periferia en su puerta de enlace SiteWise Edge. Antes de consultar los datos de la SiteWise periferia en la puerta de enlace de Edge, debe cumplir los siguientes requisitos previos:
+ Sus credenciales deben estar configuradas para el REST APIs. Para obtener más información acerca de cómo configurar las credenciales, consulte [Administre las puertas de enlace SiteWise Edge](manage-gateways-ggv2.md).
+ El punto final del SDK debe apuntar a la dirección IP de su puerta de enlace SiteWise Edge. Puede encontrar más información en la documentación de su SDK. Por ejemplo, consulte [Especificar puntos de conexión personalizados](https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/specifying-endpoints.html) en la *Guía para desarrolladores de AWS SDK for Java 2.x *.
+ Su certificado de puerta de enlace SiteWise Edge debe estar registrado. Puedes encontrar más información sobre cómo registrar tu certificado de puerta de enlace SiteWise Edge en la documentación de tu SDK. Por ejemplo, consulte el [Registro de paquetes de certificados en Node.js](https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/node-registering-certs.html) en la *Guía para desarrolladores de AWS SDK for Java 2.x *.

Para obtener más información sobre cómo consultar datos con AWS IoT SiteWise, consulte[Consulta datos de AWS IoT SiteWise](query-industrial-data.md).

# Agregue fuentes de datos a su puerta de enlace AWS IoT SiteWise Edge
<a name="add-data-sources"></a>

Después de configurar una puerta de enlace AWS IoT SiteWise Edge, puede agregar y configurar fuentes de datos para ingerir datos desde equipos industriales locales. AWS IoT SiteWise SiteWise Edge admite varios protocolos, incluido el OPC UA, y muchos otros protocolos disponibles a través de fuentes de datos asociadas. Estas fuentes permiten que su puerta de enlace se conecte con los servidores locales y recupere sus datos industriales. Al configurar las fuentes de datos, puede ingerir datos de diversas fuentes de datos y, a continuación, asociar los flujos de datos con las propiedades de los activos, lo que permite modelar y mapear los datos de forma integral de los activos industriales. AWS IoT SiteWise

**Topics**
+ [Fuentes de datos OPC UA para AWS IoT SiteWise pasarelas Edge](configure-sources-opcua.md)
+ [Fuentes de datos asociadas en las puertas de enlace SiteWise Edge](partner-data-sources.md)

# Fuentes de datos OPC UA para AWS IoT SiteWise pasarelas Edge
<a name="configure-sources-opcua"></a>

Después de configurar una puerta de enlace AWS IoT SiteWise Edge, puede configurar las fuentes de datos para que la puerta de enlace SiteWise Edge pueda ingerir datos de equipos industriales locales a AWS IoT SiteWise. Cada fuente representa un servidor local, como un servidor OPC UA, al que la puerta de enlace SiteWise Edge conecta y recupera los flujos de datos industriales. Para obtener más información sobre la configuración de una puerta de enlace SiteWise Edge, consulte. [Cree una puerta de enlace SiteWise Edge autohospedada](create-gateway-ggv2.md)

El tipo de puerta de enlace, las puertas de enlace V3 habilitadas para MQTT frente a las puertas de enlace V2 de transmisión clásica, influye en la forma en que se gestionan los datos del OPC UA. En Classic Stream, las puertas de enlace V2 y las fuentes de datos OPC UA se agregan directamente a la configuración del SiteWise editor de IoT de la puerta de enlace. Cada fuente de datos está acoplada a la puerta de enlace y el enrutamiento de datos se configura individualmente para cada fuente. Por el contrario, al utilizar pasarelas V3 habilitadas para MQTT, las fuentes de datos OPC UA se convierten en temas MQTT y se gestionan a través de destinos centralizados. Para obtener más información sobre cada tipo, consulte y. [Puertas de enlace V3 habilitadas para MQTT para Edge AWS IoT SiteWise](mqtt-enabled-v3-gateway.md) [Transmisiones clásicas, pasarelas V2 para Edge AWS IoT SiteWise](classic-streams-v2-gateway.md)

**nota**  
AWS IoT SiteWise reinicia la puerta de enlace SiteWise Edge cada vez que agrega o edita una fuente. La puerta de enlace SiteWise Edge no ingiere datos mientras actualiza la configuración de la fuente. El tiempo necesario para reiniciar la puerta de enlace SiteWise Edge depende de la cantidad de etiquetas que haya en las fuentes de la puerta de enlace SiteWise Edge. El tiempo de reinicio puede oscilar entre unos segundos (para una puerta de enlace SiteWise Edge con pocas etiquetas) y varios minutos (para una puerta de enlace SiteWise Edge con muchas etiquetas).

Después de crear los orígenes, puede asociar sus flujos de datos a las propiedades de los activos. Para obtener más información acerca de cómo crear y utilizar activos, consulte [Modelado de activos industriales](industrial-asset-models.md).

Puede ver CloudWatch las métricas para comprobar a qué fuente de datos está conectada AWS IoT SiteWise. Para obtener más información, consulte [AWS IoT Greengrass Version 2 métricas de puerta de enlace](monitor-cloudwatch-metrics.md#gateway-metrics-ggv2).

Actualmente, AWS IoT SiteWise es compatible con los siguientes protocolos de fuente de datos:
+ [OPC UA](https://en.wikipedia.org/wiki/OPC_Unified_Architecture): un protocolo de comunicación machine-to-machine (M2M) para la automatización industrial.

## Support para protocolos industriales adicionales
<a name="additional-protocols"></a>

SiteWise Edge admite una amplia gama de protocolos industriales mediante la integración con los socios de fuentes de datos. Estas asociaciones permiten la conectividad con más de 200 protocolos diferentes, que se adaptan a diversos sistemas y dispositivos industriales.

Para obtener una lista de los socios de fuentes de datos disponibles, consulte[SiteWise Opciones de fuentes de datos de los socios de Edge Gateway](connect-partner-data-source.md).

# Configure una fuente OPC UA en Edge SiteWise
<a name="configure-opcua-source"></a>

Puede usar la AWS IoT SiteWise consola o una función de puerta de enlace SiteWise Edge para definir y agregar una fuente OPC UA a su puerta de enlace SiteWise Edge para representar un servidor OPC UA local.

**Topics**
+ [Configuración de un origen OPC UA (consola)](#config-opcua-source-console)
+ [Configure una fuente OPC UA ()AWS CLI](#configure-opc-ua-source-cli)

## Configuración de un origen OPC UA (consola)
<a name="config-opcua-source-console"></a>

Puede utilizar la consola para configurar el origen OPC UA mediante el siguiente procedimiento.

**nota**  
Advertencia: si se duplica, se TQVs puede duplicar la carga.

**Para configurar una fuente OPC UA mediante la consola AWS IoT SiteWise**

1. Vaya a la [consola de AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. En el panel de navegación de la izquierda, selecciona **las puertas de enlace Edge** en la sección **Edge**.

1. Seleccione la puerta de enlace SiteWise Edge para añadir una fuente OPC UA.

1. Seleccione **Añadir origen de datos**.

1. Introduzca un nombre para el origen.

1. Escriba el **Punto de conexión local** del servidor de origen de datos. El punto de conexión puede ser la dirección IP o el nombre de host. También puede añadir un número de puerto al punto de conexión local. Por ejemplo, su punto de conexión local podría tener el siguiente aspecto: **opc.tcp://203.0.113.0:49320**

1. (Opcional) En **ID de nodo de selección**, añada filtros de nodo para limitar los flujos de datos que se ingieren en la nube de AWS . De forma predeterminada, las puertas de enlace SiteWise Edge utilizan el nodo raíz de un servidor para ingerir todos los flujos de datos. Puede usar filtros de nodos para reducir el tiempo de inicio de la puerta de enlace SiteWise Edge y el uso de la CPU al incluir únicamente las rutas a los datos que usted modele. AWS IoT SiteWise De forma predeterminada, las pasarelas SiteWise Edge cargan todas las rutas OPC UA excepto las que comienzan por. `/Server/` Para definir filtros de nodo OPC UA, puede utilizar rutas de nodo y los caracteres comodín `*` y `**`. Para obtener más información, consulte [Utilice filtros de nodo OPC UA en Edge SiteWise](opc-ua-node-filters.md).

1. Los **destinos** varían entre las pasarelas V3 habilitadas para MQTT y las pasarelas V2 para transmisiones clásicas.
   + En las **transmisiones clásicas, los destinos de las pasarelas V2** tienen una relación 1:1 con la fuente. Cada fuente envía datos a un destino concreto.
   + Los **destinos de puerta de enlace V3 habilitados para MQTT se configuran por separado,** ya que el modelo de concentrador y radio permite centralizar la configuración y la administración de múltiples fuentes de datos en diferentes puertas de enlace. Para configurar los destinos en una puerta de enlace V3, consulte. [Comprenda los destinos de AWS IoT SiteWise Edge](gw-destinations.md#source-destination)

------
#### [ Classic steams, V2 gateway destinations ]
   + **AWS IoT SiteWise en tiempo real**: elija esta opción para enviar los datos directamente al AWS IoT SiteWise almacenamiento. Ingiera y supervise los datos en tiempo real en la periferia.
   + **AWS IoT SiteWise Almacenados en búfer mediante Amazon S3**: envíe datos en formato Parquet a Amazon S3 y, a continuación, impórtelos al AWS IoT SiteWise almacenamiento. Elija esta opción para ingerir datos en lotes y almacenar los datos históricos de forma rentable. Puede configurar la ubicación del bucket de Amazon S3 que prefiera y la frecuencia con la que desea que se carguen los datos en Amazon S3. También puede elegir qué hacer con los datos después de su ingesta en AWS IoT SiteWise. Puede elegir que los datos estén disponibles AWS IoT SiteWise tanto en Amazon S3 como en Amazon S3 o puede optar por eliminarlos automáticamente de Amazon S3 después de importarlos AWS IoT SiteWise.
     + El bucket de Amazon S3 es un mecanismo de almacenamiento y almacenamiento en búfer y admite archivos en formato Parquet.
     + Si selecciona la casilla **Importar datos al AWS IoT SiteWise almacenamiento**, los datos se cargan primero en Amazon S3 y, después, en el AWS IoT SiteWise almacenamiento.
       + Si selecciona la casilla **Eliminar datos de Amazon S3**, los datos se eliminarán de Amazon S3 después de importarlos al SiteWise almacenamiento. 
       + Si desactiva la casilla **Eliminar datos de Amazon S3**, los datos se almacenan tanto en Amazon S3 como en SiteWise almacenamiento. 
     + Si desactiva la casilla **Importación de datos al almacenamiento de AWS IoT SiteWise **, los datos solo se almacenarán en Amazon S3. No se importan al SiteWise almacenamiento. 

     Visite [Administración del almacenamiento de datos](manage-data-storage.md) para obtener más información sobre las distintas opciones de almacenamiento que ofrece AWS IoT SiteWise . Para obtener más información sobre precios, consulte [Precios de AWS IoT SiteWise](https://aws.amazon.com/iot-sitewise/pricing/).

      
   + **AWS IoT Greengrass administrador de transmisiones**: utilice el administrador de AWS IoT Greengrass transmisiones para enviar datos a los siguientes destinos en la AWS nube: canales AWS IoT Analytics entrantes, transmisiones en Amazon Kinesis Data Streams, propiedades de activos u objetos AWS IoT SiteWise en Amazon Simple Storage Service (Amazon S3). Para obtener más información, consulte [Administrar flujos de datos en la Guía AWS IoT Greengrass básica](https://docs.aws.amazon.com/greengrass/v2/developerguide/manage-data-streams.html) *para AWS IoT Greengrass Version 2 desarrolladores*.

     Introduzca un nombre para la AWS IoT Greengrass transmisión.

------
#### [ MQTT-enabled, V3 gateway destinations ]

   1. Consulta [Puertas de enlace V3 habilitadas para MQTT para Edge AWS IoT SiteWise](mqtt-enabled-v3-gateway.md) para obtener información sobre cómo añadir tus destinos relevantes.

   1. Vuelva a este procedimiento después de añadir sus destinos de origen.

------

1. En el panel **Configuración avanzada** puede realizar lo siguiente:

   1. Elija un **modo de seguridad de mensajes** para las conexiones y los datos en tránsito entre el servidor de origen y la puerta de enlace SiteWise Edge. Este campo es la combinación de la política de seguridad OPC UA y el modo de seguridad de mensajes. Elija la misma política de seguridad y el mismo modo de seguridad de mensajes que especificó para su servidor OPC UA.

   1. Si su origen requiere autenticación, elija un secreto de AWS Secrets Manager en la lista **Configuración de autenticación**. La puerta de enlace SiteWise Edge utiliza las credenciales de autenticación que figuran en este secreto cuando se conecta a esta fuente de datos. Debe adjuntar los secretos al AWS IoT Greengrass componente de la puerta de enlace SiteWise Edge para utilizarlos en la autenticación de la fuente de datos. Para obtener más información, consulte [Configurar la autenticación de fuentes de datos para SiteWise Edge](configure-source-authentication-ggv2.md).
**sugerencia**  
Es posible que el servidor de datos tenga una opción denominada **Permitir inicio de sesión anónimo**. Si esta opción es **Sí**, entonces el origen no requerirá autenticación.

   1. (Opcional) Puede activar un prefijo de flujo de datos seleccionando **Activar prefijo de flujo de datos: *opcional***.

      1. Introduzca un **Prefijo de flujo de datos**. La puerta de enlace SiteWise Edge agrega este prefijo a todos los flujos de datos de esta fuente. Utilice un prefijo de flujo de datos para distinguir entre flujos de datos que tienen el mismo nombre y orígenes diferentes. Cada flujo de datos debe tener un nombre único en su cuenta.

   1. (Opcional) Elija una opción **Conversión de tipos de datos** para convertir los tipos de datos OPC UA no compatibles en cadenas antes de ingerirlos en AWS IoT SiteWise. Convierta valores de matriz con tipos de datos simples en cadenas JSON y tipos de DateTime datos en cadenas ISO 8601. Para obtener más información, consulte [Conversión de tipos de datos no admitidos](string-conversion.md).

   1. Elija un **activador de cambio de datos predeterminado** para los nodos que no estén incluidos en un grupo de propiedades definido por el usuario. El activador de cambio de datos predeterminado determina cuándo el servidor OPC UA envía los valores actualizados a la puerta de enlace. Puede elegir una de las siguientes opciones:
      + **Estado**: para recibir datos solo cuando cambia un estado.
      + **StatusValue**— recibir datos cuando cambia un estado o un valor.
      + **StatusValueTimestamp**— recibir datos cuando cambia un estado, un valor o una marca de tiempo.

   1. (Opcional) En una puerta de enlace V3 habilitada para MQTT, puede usar la **configuración Discovery para configurar el proceso de descubrimiento de** nodos OPC UA. La configuración de Discovery reemplaza el sistema de archivos de anulación de la configuración anterior para estas opciones por ajustes basados en la consola que se actualizan dinámicamente sin necesidad de reiniciar la puerta de enlace.
**nota**  
El **activador de cambio de datos predeterminado** requiere la versión 3.1.0 o posterior del componente recopilador IoT SiteWise OPC UA. Para obtener más información, consulte [Actualice la versión de un componente AWS IoT SiteWise](manage-gateways-ggv2.md#update-component-version).

      1. Para obtener el número **máximo de solicitudes de navegación simultáneas**, introduzca el número máximo de solicitudes de navegación que el servidor OPC UA puede gestionar simultáneamente. Puede configurar hasta 500 solicitudes de navegación simultáneas por fuente de datos.

      1. Para obtener el **número máximo de nodos por solicitud de navegación**, introduzca el número máximo de nodos que se van a enviar en cada solicitud de navegación al servidor OPC UA. Puede enviar hasta 1000 nodos por solicitud de navegación.

      1. Seleccione **Evitar los bucles del árbol de nodos** para evitar que la puerta de enlace se quede atascada en referencias circulares al navegar por la estructura del servidor OPC UA. Cuando está seleccionada, la puerta de enlace rastrea las ubicaciones visitadas para evitar los bucles infinitos que pueden producirse cuando los nodos del servidor se refieren entre sí siguiendo un patrón circular.

      1. Seleccione **Habilitar el recorrido de nodos** para permitir que la puerta de enlace explore la estructura completa de su servidor OPC UA y descubra todos los puntos de datos disponibles en sus equipos y dispositivos. Cuando se selecciona, la pasarela navega por la organización de datos del equipo más allá del nivel raíz para encontrar automáticamente todos los sensores, controles y puntos de medición.

      1. Seleccione **Activar la detección periódica** para ejecutar automáticamente las operaciones de detección a intervalos regulares a fin de detectar cambios en la estructura del servidor OPC UA. Cuando se selecciona, la puerta de enlace monitorea continuamente los equipos o puntos de datos recién agregados, lo que garantiza que se detecten automáticamente y estén disponibles para la recopilación de datos.

         1. En **Intervalo de detección periódica**, establezca el intervalo de tiempo entre las operaciones de detección automática cuando se ejecute la detección periódica. El intervalo mínimo de detección periódica es de 30 segundos y el máximo de 30 días.

         1. En el número **máximo de nodos descubiertos por intervalo**, establezca el número máximo de nodos que se deben descubrir por intervalo de descubrimiento. Esto ayuda a controlar la carga tanto en la puerta de enlace como en el servidor OPC UA durante las operaciones de descubrimiento.

   1. (Opcional) En **Grupos de propiedades**, seleccione **Añadir nuevo grupo**.

      1. Introduzca un **Nombre** para el grupo de propiedades.

      1. En **Propiedades**:

         1. (Opcional) En **Rutas de nodo**, añada filtros de nodo OPC UA para limitar las rutas OPC UA que se cargan en AWS IoT SiteWise. El formato es similar a **ID de nodo para su selección**.

      1. En **Configuración**, realice lo siguiente:

         1. En la **configuración de calidad de los datos**, elija el tipo de calidad de datos que desea que AWS IoT SiteWise incorpore Collector.

         1. En **Configuración del modo de análisis**, configure las propiedades de la suscripción estándar mediante **Modo de análisis**. Puede seleccionar **Suscribirse** o **Sondeo**. Para obtener más información sobre el modo de escaneo, consulte [Filtrado de rangos de ingesta de datos con OPC UA](opcua-data-acquisition.md).

------
#### [ Subscribe ]

**Envío de todos los puntos de datos**

            1. Seleccione **Suscribirse** y configure lo siguiente:

               1. **[Desencadenador de cambio de datos](https://reference.opcfoundation.org/v104/Core/docs/Part4/7.17.2/)**: condición que inicia una alerta de cambio de datos.

               1. **[Tamaño de la cola de suscripciones](https://reference.opcfoundation.org/v104/Core/docs/Part4/7.16/)**: profundidad de la cola en un servidor OPC UA para una métrica concreta en la que se ponen en cola las notificaciones de los elementos monitorizados.

               1. **[Intervalo de publicación de suscripciones](https://reference.opcfoundation.org/v104/Core/docs/Part4/5.13.2/)**: intervalo (en milisegundos) del ciclo de publicación especificado al crearse la suscripción.

               1. **Intervalo de instantáneas: *opcional***: se ajusta el tiempo de espera de las instantáneas para garantizar que AWS IoT SiteWise Edge ingiera un flujo constante de datos.

               1. **Velocidad de escaneo**: la velocidad a la que desea que la puerta de enlace SiteWise Edge lea sus registros. AWS IoT SiteWise calcula automáticamente la velocidad de escaneo mínima permitida para su puerta de enlace SiteWise Edge.

               1. **Marca de tiempo**: marca de tiempo que se debe incluir en los puntos de datos OPC UA. Puede utilizar la marca de tiempo del servidor o de su dispositivo.
**nota**  
Utilice la versión 2.5.0 o posterior del componente recopilador IoT SiteWise OPC UA. Si utiliza la función de marca de tiempo con versiones anteriores, las actualizaciones de configuración fallarán. Para obtener más información, consulte [Actualice la versión de un componente AWS IoT SiteWise](manage-gateways-ggv2.md#update-component-version).

            1. En **Configuración de la zona neutra**, configure un **Tipo de zona neutra**. El tipo de banda inactiva controla los datos que la fuente le envía y los datos que descarta. AWS IoT SiteWise Para obtener más información sobre configuración de la banda muerta, consulte [Filtrado de rangos de ingesta de datos con OPC UA](opcua-data-acquisition.md).
               + **Ninguno**: el servidor asociado envía todos los puntos de datos de este grupo de propiedades.
               + **Porcentaje**: el servidor asociado solo envía datos que se encuentran fuera de un porcentaje específico del rango de datos. El servidor calcula este rango en función de la unidad de ingeniería mínima y máxima definida para cada nodo. Si el servidor no admite zonas neutras de porcentaje o carece de unidades de ingeniería definidas, la puerta de enlace calcula el rango utilizando los valores mínimo y máximo que se indican a continuación.
               + **Absoluto**: el servidor asociado solo envía datos que se encuentran fuera de un rango específico.

               1. Establezca el **Valor de la zona neutra** como el porcentaje del rango de datos con respecto a la zona neutra.

               1. (Opcional) Especifique un mínimo y un máximo para el rango de zona neutra utilizando **Rango mínimo: *opcional*** y **Rango máximo: *opcional***.

------
#### [ Poll ]

**Envío de puntos de datos en un intervalo específico**
            + Seleccione **Suscribirse** y configure lo siguiente:

              1. **Velocidad de escaneo**: la velocidad a la que quieres que la puerta de enlace SiteWise Edge lea tus registros. AWS IoT SiteWise calcula automáticamente la velocidad de escaneo mínima permitida para su puerta de enlace SiteWise Edge.

              1. **Marca de tiempo**: marca de tiempo que se debe incluir en los puntos de datos OPC UA. Puede utilizar la marca de tiempo del servidor o de su dispositivo.
**nota**  
Utilice la versión 3.1.0 o posterior del componente recopilador IoT SiteWise OPC UA. Si utiliza la función de marca de tiempo con versiones anteriores, las actualizaciones de configuración fallarán. Para obtener más información, consulte [Actualice la versión de un componente AWS IoT SiteWise](manage-gateways-ggv2.md#update-component-version).

**nota**  
**Configuración de la zona neutra** se aplica cuando ha seleccionado **Suscribirse** en **Configuración del modo de análisis**.

------

1. Seleccione **Save**.

## Configure una fuente OPC UA ()AWS CLI
<a name="configure-opc-ua-source-cli"></a>

Puede definir las fuentes de datos OPC UA para una puerta de enlace SiteWise Edge mediante. AWS CLI Para ello, cree un archivo JSON de configuración de capacidades OPC UA y utilice el [ update-gateway-capability-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iotsitewise/update-gateway-capability-configuration.html#)comando para actualizar la configuración de la puerta de enlace SiteWise Edge. Debe definir todos los orígenes OPC UA en una única configuración de capacidad.

------
#### [ MQTT-enabled, V3 gateway ]

Esta capacidad tiene el siguiente espacio de nombres.
+ `iotsitewise:opcuacollector:3`

```
{
  "sources": [
    {
      "name": "string",
      "endpoint": {
        "certificateTrust": {
          "type": "TrustAny" | "X509",
          "certificateBody": "string",
          "certificateChain": "string",
        },
        "endpointUri": "string",
        "securityPolicy": "NONE" | "BASIC128_RSA15" | "BASIC256" | "BASIC256_SHA256" | "AES128_SHA256_RSAOAEP" | "AES256_SHA256_RSAPSS",
        "messageSecurityMode": "NONE" | "SIGN" | "SIGN_AND_ENCRYPT",
        "identityProvider": {
          "type": "Anonymous" | "Username",
          "usernameSecretArn": "string"
        },
        "nodeFilterRules": [
          {
            "action": "INCLUDE",
            "definition": {
              "type": "OpcUaRootPath",
              "rootPath": "string"
            }
          }
        ]
      },
      "measurementDataStreamPrefix": "string",
      "typeConversions": {
        "array": "JsonArray",
        "datetime": "ISO8601String"
        },
      "destination": {
        {
          "type":"MQTT"
        }           
      },
      "defaultPropertyGroupConfig": {
        "dataChangeTrigger": "STATUS" | "STATUS_VALUE" | "STATUS_VALUE_TIMESTAMP"
      },
      "discoveryConfig": {
        "enableNodeTraversal": true | false,
        "avoidNodeTreeLoops": true | false,
        "maxConcurrentBrowseRequests": integer,
        "maxNodesPerBrowseRequest": integer,
        "periodicDiscovery": {
          "interval": "string",
          "maxNodesDiscoveredPerInterval": integer
        }
      },
      "propertyGroups": [
        {
          "name": "string",
          "nodeFilterRuleDefinitions": [
            {
              "type": "OpcUaRootPath",
              "rootPath": "string"
            }
          ],
          "deadband": {
            "type": "PERCENT" | "ABSOLUTE",
            "value": double,
            "eguMin": double,
            "eguMax": double,
            "timeoutMilliseconds": integer
          },
          "scanMode": {
            "type": "EXCEPTION" | "POLL",
            "rate": integer,
            "timestampToReturn": "SOURCE_TIME" | "SERVER_TIME"
          },
          "dataQuality": {
            "allowGoodQuality": true | false,
            "allowBadQuality": true | false,
            "allowUncertainQuality": true | false
          },
          "subscription": {
            "dataChangeTrigger": "STATUS" | "STATUS_VALUE" | "STATUS_VALUE_TIMESTAMP",
            "queueSize": integer,
            "publishingIntervalMilliseconds": integer,
            "snapshotFrequencyMilliseconds": integer
          }  
        }  
      ]  
    }  
  ]  
}
```

------
#### [ Classic streams, V2 gateway ]

Esta capacidad tiene el siguiente espacio de nombres.
+ `iotsitewise:opcuacollector:2`

Sintaxis de la solicitud

```
{
  "sources": [
    {
      "name": "string",
      "endpoint": {
        "certificateTrust": {
          "type": "TrustAny" | "X509",
          "certificateBody": "string",
          "certificateChain": "string",
        },
        "endpointUri": "string",
        "securityPolicy": "NONE" | "BASIC128_RSA15" | "BASIC256" | "BASIC256_SHA256" | "AES128_SHA256_RSAOAEP" | "AES256_SHA256_RSAPSS",
        "messageSecurityMode": "NONE" | "SIGN" | "SIGN_AND_ENCRYPT",
        "identityProvider": {
          "type": "Anonymous" | "Username",
          "usernameSecretArn": "string"
        },
        "nodeFilterRules": [
          {
            "action": "INCLUDE",
            "definition": {
              "type": "OpcUaRootPath",
              "rootPath": "string"
            }
          }
        ]
      },
      "measurementDataStreamPrefix": "string",
      "typeConversions": {
        "array": "JsonArray",
        "datetime": "ISO8601String"
        },
      "destination": {
        "type": "StreamManager",
        "streamName": "string",
        "streamBufferSize": integer,                      
      },
      "propertyGroups": [
        {
          "name": "string",
          "nodeFilterRuleDefinitions": [
            {
              "type": "OpcUaRootPath",
              "rootPath": "string"
            }
          ],
          "deadband": {
            "type": "PERCENT" | "ABSOLUTE",
            "value": double,
            "eguMin": double,
            "eguMax": double,
            "timeoutMilliseconds": integer
          },
          "scanMode": {
            "type": "EXCEPTION" | "POLL",
            "rate": integer,
            "timestampToReturn": "SOURCE_TIME" | "SERVER_TIME"
          },
          "dataQuality": {
            "allowGoodQuality": true | false,
            "allowBadQuality": true | false,
            "allowUncertainQuality": true | false
          },
          "subscription": {
            "dataChangeTrigger": "STATUS" | "STATUS_VALUE" | "STATUS_VALUE_TIMESTAMP",
            "queueSize": integer,
            "publishingIntervalMilliseconds": integer,
            "snapshotFrequencyMilliseconds": integer
          }  
        }  
      ]  
    }  
  ]  
}
```

------

### Cuerpo de la solicitud
<a name="opcua-request-body"></a>

`sources`  
Una lista de estructuras de definición de origen OPC UA que contienen la siguiente información:    
`name`  
Un nombre único y sencillo para el origen.  
`endpoint`  
Una estructura de punto de conexión que contiene la siguiente información:    
`certificateTrust`  
Una estructura de política de confianza de certificados que contiene la siguiente información:    
`type`  
El modo de confianza del certificado para el origen. Seleccione una de las siguientes opciones:  
+ `TrustAny`— La puerta de enlace SiteWise Edge confía en cualquier certificado cuando se conecta a la fuente OPC UA.
+ `X509`— La puerta de enlace SiteWise Edge confía en un certificado X.509 cuando se conecta a la fuente OPC UA. Si elige esta opción, debe definir `certificateBody` en `certificateTrust`. También puede definir `certificateChain` en `certificateTrust`.  
`certificateBody`  
(Opcional) Cuerpo de un certificado X.509.  
Este campo es obligatorio si elige `X509` para `type` en `certificateTrust`.  
`certificateChain`  
(Opcional) Cadena de confianza para un certificado X.509.  
Este campo solo se utiliza si elige `X509` para `type` en `certificateTrust`.  
`endpointUri`  
Punto de conexión local del origen OPC UA. Por ejemplo, su punto de conexión local podría tener el siguiente aspecto: `opc.tcp://203.0.113.0:49320`.  
`securityPolicy`  
Política de seguridad que se debe utilizar para proteger los mensajes que se leen desde el origen OPC UA. Seleccione una de las siguientes opciones:  
+ `NONE`— La puerta de enlace SiteWise Edge no protege los mensajes de la fuente OPC UA. Le recomendamos que elija una política de seguridad diferente. Si elige esta opción, también debe elegir `NONE` para `messageSecurityMode`.
+ `BASIC256_SHA256`: la política de seguridad `Basic256Sha256`.
+ `AES128_SHA256_RSAOAEP`: la política de seguridad `Aes128_Sha256_RsaOaep`.
+ `AES256_SHA256_RSAPSS`: la política de seguridad `Aes256_Sha256_RsaPss`.
+ `BASIC128_RSA15`: (obsoleta) la política de seguridad `Basic128Rsa15` está en desuso en la especificación OPC UA porque ya no se considera segura. Le recomendamos que elija una política de seguridad diferente. Para obtener más información, consulte [Profile SecurityPolicy — Basic128Rsa15](https://profiles.opcfoundation.org/profile/1532).
+ `BASIC256`: (obsoleta) la política de seguridad `Basic256` está en desuso en la especificación OPC UA porque ya no se considera segura. Le recomendamos que elija una política de seguridad diferente. [Para obtener más información, consulte — Basic256. SecurityPolicy ](https://profiles.opcfoundation.org/profile/1536)
Si elige una política de seguridad distinta a `NONE`, debe elegir `SIGN` o `SIGN_AND_ENCRYPT` para `messageSecurityMode`. También debe configurar el servidor de origen para que confíe en la puerta de enlace SiteWise Edge. Para obtener más información, consulte [Configure los servidores OPC UA para que confíen en la puerta de enlace Edge AWS IoT SiteWise](enable-source-trust.md).  
`messageSecurityMode`  
Modo de seguridad de mensajes que se va a utilizar para proteger las conexiones con el origen OPC UA. Seleccione una de las siguientes opciones:  
+ `NONE`— La puerta de enlace SiteWise Edge no protege las conexiones a la fuente OPC UA. Le recomendamos que elija un modo de seguridad de mensajes diferente. Si elige esta opción, también debe elegir `NONE` para `securityPolicy`.
+ `SIGN`— Los datos en tránsito entre la puerta de enlace SiteWise Edge y la fuente OPC UA están firmados pero no cifrados.
+ `SIGN_AND_ENCRYPT`: los datos en tránsito entre la puerta de enlace y el origen OPC UA se firman y cifran.
Si elige un modo de seguridad de mensajes que no sea `NONE`, debe elegir una `securityPolicy` distinta de `NONE`. También debe configurar el servidor de origen para que confíe en la puerta de enlace SiteWise Edge. Para obtener más información, consulte [Configure los servidores OPC UA para que confíen en la puerta de enlace Edge AWS IoT SiteWise](enable-source-trust.md).  
`identityProvider`  
Estructura de proveedor de identidades que contiene la siguiente información:    
`type`  
Tipo de credenciales de autenticación requeridas por el origen. Seleccione una de las siguientes opciones:  
+ `Anonymous`: el origen no requiere autenticación para conectarse.
+ `Username`: el origen requiere un nombre de usuario y una contraseña para conectarse. Si elige esta opción, debe definir `usernameSecretArn` en `identityProvider`.  
`usernameSecretArn`  
(Opcional) El ARN de un AWS Secrets Manager secreto. La puerta de enlace SiteWise Edge usa las credenciales de autenticación de este secreto cuando se conecta a esta fuente. Debe adjuntar los secretos al SiteWise conector IoT de su puerta de enlace SiteWise Edge para usarlos en la autenticación de origen. Para obtener más información, consulte [Configurar la autenticación de fuentes de datos para SiteWise Edge](configure-source-authentication-ggv2.md).  
Este campo es obligatorio si elige `Username` para `type` en `identityProvider`.  
`nodeFilterRules`  
Una lista de estructuras de reglas de filtrado de nodos que definen las rutas de flujo de datos OPC UA que se van a enviar a la AWS nube. Puedes usar filtros de nodos para reducir el tiempo de inicio de la puerta de enlace SiteWise Edge y el uso de la CPU al incluir únicamente las rutas a los datos que modeles. AWS IoT SiteWise De forma predeterminada, las pasarelas SiteWise Edge cargan todas las rutas OPC UA excepto las que comienzan por. `/Server/` Para definir filtros de nodo OPC UA, puede utilizar rutas de nodo y los caracteres comodín `*` y `**`. Para obtener más información, consulte [Utilice filtros de nodo OPC UA en Edge SiteWise](opc-ua-node-filters.md).  
Cada estructura de la lista debe contener la siguiente información:    
`action`  
Es la acción de esta regla de filtro de nodo. Puede elegir la siguiente opción:  
+ `INCLUDE`— La puerta de enlace SiteWise Edge incluye solo los flujos de datos que cumplen esta regla.  
`definition`  
Estructura de reglas de filtros de nodo que contiene la siguiente información:    
`type`  
Es el tipo de ruta de filtro de nodo para esta regla. Puede elegir la siguiente opción:  
+ `OpcUaRootPath`— La puerta de enlace SiteWise Edge evalúa esta ruta de filtro de nodos comparándola con la raíz de la jerarquía de rutas OPC UA.  
`rootPath`  
Ruta de filtro de nodo que se va a evaluar con la raíz de la jerarquía de rutas de OPC UA. Esta ruta debe comenzar con `/`.  
`measurementDataStreamPrefix`  
Cadena que se debe anteponer a todos los flujos de datos del origen. La puerta de enlace SiteWise Edge agrega este prefijo a todos los flujos de datos de esta fuente. Utilice un prefijo de flujo de datos para distinguir entre flujos de datos que tienen el mismo nombre y orígenes diferentes. Cada flujo de datos debe tener un nombre único en su cuenta.  
`typeConversions`  
Tipos de conversiones disponibles para tipos de datos OPC UA no compatibles. Cada tipo de datos se convierte en cadenas. Para obtener más información, consulte [Conversión de tipos de datos no admitidos](string-conversion.md).    
`array`  
Tipo de datos de matriz simple que se convierte en cadenas. Puede elegir la siguiente opción:  
+ `JsonArray`: indica que ha elegido convertir los tipos de datos de matriz simple en cadenas.  
`datetime`  
El tipo de DateTime datos que se convierte en cadenas. Puede elegir la siguiente opción:  
+ `ISO8601String`: indica que ha elegido convertir los tipos de datos ISO 8601 en cadenas.  
`destination`  
Configuración para el destino de las etiquetas OPC UA. Las pasarelas V3 de transmisión clásica, las versiones 2 y las habilitadas para MQTT tienen diferentes configuraciones para los destinos.    
`type`  
El tipo del destino.  
`streamName`— *solo para* transmisiones clásicas y pasarelas V2  
El nombre del flujo de . El nombre del flujo debe ser único.  
`streamBufferSize`— *solo para transmisiones clásicas y pasarelas V2*  
Tamaño de búfer del flujo. Es importante para administrar el flujo de datos de orígenes OPC UA.  
`defaultPropertyGroupConfig`— Compatible con *MQTT, solo pasarelas V3*  
(Opcional) Configuración para el grupo de propiedades predeterminado. El grupo de propiedades predeterminado contiene todos los nodos que de otro modo no estarían incluidos en un grupo de propiedades definido por el usuario.    
`dataChangeTrigger`  
El activador de cambios de datos predeterminado que se utilizará en el grupo de propiedades predeterminado. Los valores válidos son `STATUS_VALUE_TIMESTAMP`, `STATUS_VALUE` o `STATUS`.
`defaultPropertyGroupConfig`requiere la versión 3.1.0 o posterior del componente recopilador IoT SiteWise OPC UA. Para obtener más información, consulte [Actualice la versión de un componente AWS IoT SiteWise](manage-gateways-ggv2.md#update-component-version).  
`discoveryConfig`— Solo pasarelas V3 habilitadas para *MQTT*  
(Opcional) Configuración para el proceso de descubrimiento de nodos OPC UA.    
`enableNodeTraversal`  
Especifica si se deben seguir recorriendo los nodos secundarios del nodo raíz definidos por el filtro de nodos de la fuente de datos. Cuando se establece en`false`, la detección se detiene en el nodo raíz.  
`avoidNodeTreeLoops`  
Especifica si se deben evitar los bucles infinitos durante el proceso de navegación del nodo OPC UA. Cuando se establece en`true`, la puerta de enlace rastrea los nodos visitados para evitar referencias circulares.  
`maxConcurrentBrowseRequests`  
El número máximo de solicitudes de navegación simultáneas que el servidor OPC UA puede gestionar simultáneamente. El rango válido es de 1 a 500.  
`maxNodesPerBrowseRequest`  
El número máximo de nodos que se deben enviar en cada solicitud de navegación al servidor OPC UA. El rango válido es de 1 a 1000.  
`periodicDiscovery`  
Configuración para ejecutar el descubrimiento periódicamente a intervalos fijos. La detección periódica está habilitada cuando se proporciona esta configuración.    
`interval`  
El tiempo que transcurre entre las operaciones de detección periódicas. Se puede utilizar `m` durante minutos, `h` horas y `d` días. Por ejemplo, `90m` o `1h`. El intervalo mínimo es de 30 segundos.  
`maxNodesDiscoveredPerInterval`  
El número máximo de nodos que se deben descubrir por intervalo de descubrimiento. Esto ayuda a controlar la carga tanto en la puerta de enlace como en el servidor OPC UA.
`periodicDiscovery`requiere la versión 3.1.0 o posterior del componente recopilador IoT SiteWise OPC UA. Para obtener más información, consulte [Actualice la versión de un componente AWS IoT SiteWise](manage-gateways-ggv2.md#update-component-version).
Si la detección se repite de forma infinita, habilítela. `avoidNodeTreeLoops` Supervise el progreso de la detección en CloudWatch los registros del `aws.iot.SiteWiseOpcUaCollector` componente.

`propertyGroups`  
(Opcional) La lista de grupos de propiedades que definen la `deadband` y el `scanMode` solicitados por el protocolo.    
`name`  
El nombre del grupo de propiedades. Debe ser un identificador único.  
`deadband`  
El valor de `deadband` define el cambio mínimo en el valor de un punto de datos que debe producirse antes de que los datos se envíen a la nube. Contiene la siguiente información:    
`type`  
Los tipos de banda muerta admitidos. Puede elegir las opciones siguientes:  
+ `ABSOLUTE`: valor fijo que especifica el cambio absoluto mínimo necesario para considerar un punto de datos lo suficientemente significativo como para su envío a la nube.
+ `PERCENT`: valor dinámico que especifica el cambio mínimo requerido como porcentaje del valor del último punto de datos enviado. Este tipo de zona neutra resulta útil cuando los valores de los datos varían considerablemente a lo largo del tiempo.  
`value`  
El valor de la banda muerta. Cuando `type` es `ABSOLUTE`, este valor es un doble sin unidades. Cuando `type` es `PERCENT`, este valor es un doble entre `1` y `100`.  
`eguMin`  
(Opcional) La unidad de ingeniería mínima al utilizar una banda muerta `PERCENT`. Establézcala si el servidor OPC UA no tiene unidades de ingeniería configuradas.  
`eguMax`  
(Opcional) La unidad de ingeniería máxima al utilizar una banda muerta `PERCENT`. Establézcala si el servidor OPC UA no tiene unidades de ingeniería configuradas.  
`timeoutMilliseconds`  
La duración en milisegundos antes del tiempo de espera. El mínimo es `100`.  
`scanMode`  
La estructura de `scanMode` que contiene la siguiente información:    
`type`  
Los tipos admitidos de `scanMode`. Los valores aceptados son `POLL` y `EXCEPTION`.  
`rate`  
El intervalo de muestreo para el modo de escaneo.  
`timestampToReturn`  
Origen de la marca de tiempo. Puede elegir las opciones siguientes:  
+ `SOURCE_TIME`: utiliza la marca de tiempo del dispositivo.
+ `SERVER_TIME`: utiliza la marca de tiempo del servidor.
Úselo `TimestampToReturn` con la versión 2.5.0 o posterior del componente recopilador IoT SiteWise OPC UA. Si utiliza esta función con versiones anteriores, se produce un error en las actualizaciones de configuración. Para obtener más información, consulte [Actualice la versión de un componente AWS IoT SiteWise](manage-gateways-ggv2.md#update-component-version).  
`nodeFilterRuleDefinitions`  
(Opcional) Una lista de rutas de nodos para incluir en el grupo de propiedades. Los grupos de propiedades no pueden solaparse. Si no especifica un valor para este campo, el grupo contendrá todas las rutas bajo la raíz y no podrá crear grupos de propiedades adicionales. La estructura `nodeFilterRuleDefinitions` contiene la siguiente información:    
`type`  
`OpcUaRootPath` es el único tipo admitido. Especifica que el valor de `rootPath` es una ruta relativa a la raíz del espacio de navegación de OPC UA.  
`rootPath`  
Lista delimitada por comas que especifica las rutas (relativas a la raíz) por incluir en el grupo de propiedades.

### Ejemplos de configuración de capacidades adicionales para transmisiones clásicas y puertas de enlace V2 ()AWS CLI
<a name="opc-ua-source-example-cli"></a>

El siguiente ejemplo define la configuración de la capacidad de una puerta de enlace OPC UA SiteWise Edge a partir de una carga útil almacenada en un archivo JSON.

```
aws iotsitewise update-gateway-capability-configuration \
--capability-namespace "iotsitewise:opcuacollector:2" \
--capability-configuration file://opc-ua-configuration.json
```

**Example : configuración de origen OPC UA**  
El siguiente archivo `opc-ua-configuration.json` define una configuración de origen OPC UA básica y no segura.  

```
{
    "sources": [
        {
            "name": "Wind Farm #1",
            "endpoint": {
                "certificateTrust": {
                    "type": "TrustAny"
                },
                "endpointUri": "opc.tcp://203.0.113.0:49320",
                "securityPolicy": "NONE",
                "messageSecurityMode": "NONE",
                "identityProvider": {
                    "type": "Anonymous"
                },
                "nodeFilterRules": []
            },
            "measurementDataStreamPrefix": ""
        }
    ]
}
```

**Example : configuración de origen OPC UA con grupos de propiedades definidos**  
El siguiente archivo `opc-ua-configuration.json` define una configuración de origen OPC UA básica y no segura con grupos de propiedades definidos.  

```
{
    "sources": [
        {
            "name": "source1",
            "endpoint": {
                "certificateTrust": {
                    "type": "TrustAny"
                },
                "endpointUri": "opc.tcp://10.0.0.9:49320",
                "securityPolicy": "NONE",
                "messageSecurityMode": "NONE",
                "identityProvider": {
                    "type": "Anonymous"
                },
                "nodeFilterRules": [
                    {
                        "action": "INCLUDE",
                        "definition": {
                            "type": "OpcUaRootPath",
                            "rootPath": "/Utilities/Tank"
                        }
                    }
                ]
            },
            "measurementDataStreamPrefix": "propertyGroups",
            "propertyGroups": [
                 {
                     "name": "Deadband_Abs_5",
                     "nodeFilterRuleDefinitions": [
                         {
                             "type": "OpcUaRootPath",
                             "rootPath": "/Utilities/Tank/Temperature/TT-001"
                         },
                         {
                             "type": "OpcUaRootPath",
                             "rootPath": "/Utilities/Tank/Temperature/TT-002"
                         }
                     ],
                     "deadband": {
                         "type":"ABSOLUTE",
                         "value": 5.0,
                         "timeoutMilliseconds": 120000
                     }
                 },
                 {
                     "name": "Polling_10s",
                     "nodeFilterRuleDefinitions": [
                         {
                             "type": "OpcUaRootPath",
                             "rootPath": "/Utilities/Tank/Pressure/PT-001"
                         }
                     ],
                     "scanMode": {
                         "type": "POLL",
                         "rate": 10000
                     }
                 },
                 {
                     "name": "Percent_Deadband_Timeout_90s",
                     "nodeFilterRuleDefinitions": [
                         {
                             "type": "OpcUaRootPath",
                             "rootPath": "/Utilities/Tank/Flow/FT-*"
                         }
                     ],
                     "deadband": {
                         "type":"PERCENT",
                         "value": 5.0,
                         "eguMin": -100,
                         "eguMax": 100,
                         "timeoutMilliseconds": 90000
                     }
                 }
             ]
        }
    ]
}
```

**Example : configuración de origen OPC UA con propiedades**  
El siguiente JSON de ejemplo de `opc-ua-configuration.json` define una configuración de origen OPC UA con las siguientes propiedades:  
+ Confía en cualquier certificado.
+ Utiliza la política de seguridad `BASIC256` para proteger los mensajes.
+ Utiliza el modo `SIGN_AND_ENCRYPT` para proteger las conexiones.
+ Utiliza credenciales de autenticación almacenadas en un secreto del administrador de secretos.
+ Filtra los flujos de datos, excepto aquellos cuya ruta comienza por `/WindFarm/2/WindTurbine/`.
+ Añade `/Washington` al inicio de cada ruta de flujo de datos para distinguir entre este “Wind Farm \$12” y un “Wind Farm \$12” en otra área.

```
{
    "sources": [
        {
            "name": "Wind Farm #2",
            "endpoint": {
                "certificateTrust": {
                    "type": "TrustAny"
                },
                "endpointUri": "opc.tcp://203.0.113.1:49320",
                "securityPolicy": "BASIC256",
                "messageSecurityMode": "SIGN_AND_ENCRYPT",
                "identityProvider": {
                    "type": "Username",
                    "usernameSecretArn": "arn:aws:secretsmanager:region:123456789012:secret:greengrass-windfarm2-auth-1ABCDE"
                },
                "nodeFilterRules": [
                  {
                      "action": "INCLUDE",
                      "definition": {
                          "type": "OpcUaRootPath",
                          "rootPath": "/WindFarm/2/WindTurbine/"
                    }
                  }
                ]
            },
            "measurementDataStreamPrefix": "/Washington"
        }
    ]
}
```

**Example : configuración de origen OPC UA con certificado de confianza**  
El siguiente JSON de ejemplo de `opc-ua-configuration.json` define una configuración de origen OPC UA con las siguientes propiedades:  
+ Confiar en un certificado X.509 dado.
+ Utiliza la política de seguridad `BASIC256` para proteger los mensajes.
+ Utiliza el modo `SIGN_AND_ENCRYPT` para proteger las conexiones.

```
{
    "sources": [
        {
            "name": "Wind Farm #3",
            "endpoint": {
                "certificateTrust": {
                    "type": "X509",
                    "certificateBody": "-----BEGIN CERTIFICATE-----
          MIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w
 0BAQUFADCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZ
 WF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIw
 EAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5
 jb20wHhcNMTEwNDI1MjA0NTIxWhcNMTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBh
 MCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBb
 WF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMx
 HzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wgZ8wDQYJKoZIhvcNAQE
 BBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ21uUSfwfEvySWtC2XADZ4nB+BLYgVI
 k60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9TrDHudUZg3qX4waLG5M43q7Wgc/MbQ
 ITxOUSQv7c7ugFFDzQGBzZswY6786m86gpEIbb3OhjZnzcvQAaRHhdlQWIMm2nr
 AgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4nUhVVxYUntneD9+h8Mg9q6q+auN
 KyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0FkbFFBjvSfpJIlJ00zbhNYS5f6Guo
 EDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTbNYiytVbZPQUQ5Yaxu2jXnimvw
 3rrszlaEXAMPLE=
          -----END CERTIFICATE-----",
                    "certificateChain": "-----BEGIN CERTIFICATE-----
          MIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w
 0BAQUFADCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZ
 WF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIw
 EAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5
 jb20wHhcNMTEwNDI1MjA0NTIxWhcNMTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBh
 MCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBb
 WF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMx
 HzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wgZ8wDQYJKoZIhvcNAQE
 BBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ21uUSfwfEvySWtC2XADZ4nB+BLYgVI
 k60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9TrDHudUZg3qX4waLG5M43q7Wgc/MbQ
 ITxOUSQv7c7ugFFDzQGBzZswY6786m86gpEIbb3OhjZnzcvQAaRHhdlQWIMm2nr
 AgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4nUhVVxYUntneD9+h8Mg9q6q+auN
 KyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0FkbFFBjvSfpJIlJ00zbhNYS5f6Guo
 EDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTbNYiytVbZPQUQ5Yaxu2jXnimvw
 3rrszlaEXAMPLE=
          -----END CERTIFICATE-----"
                },
                "endpointUri": "opc.tcp://203.0.113.2:49320",
                "securityPolicy": "BASIC256",
                "messageSecurityMode": "SIGN_AND_ENCRYPT",
                "identityProvider": {
                    "type": "Anonymous"
                },
                "nodeFilterRules": []
              },
            "measurementDataStreamPrefix": ""
              
        }
    ]
}
```

# Configure los servidores OPC UA para que confíen en la puerta de enlace Edge AWS IoT SiteWise
<a name="enable-source-trust"></a>

Si elige una opción `messageSecurityMode` distinta de **Ninguna** al configurar su fuente OPC UA, debe permitir que sus servidores de origen confíen en la puerta de enlace AWS IoT SiteWise Edge. La puerta de enlace SiteWise Edge genera un certificado que puede necesitar su servidor de origen. El proceso varía en función de los servidores de origen. Para obtener más información, consulte la documentación de los servidores.

El siguiente procedimiento describe los pasos básicos.

**Para permitir que un servidor OPC UA confíe en la puerta de enlace SiteWise Edge**

1. Abra la interfaz para configurar el servidor OPC UA.

1. Escriba el nombre de usuario y la contraseña del administrador del servidor OPC UA.

1. Localice **Clientes de confianza** en la interfaz y, a continuación, seleccione **Cliente de puerta de enlace de AWS IoT SiteWise **.para conectarse.

1. Elija **Confiar**.

## Exportación del certificado de cliente OPC UA
<a name="export-opc-ua-client-certificate"></a>

Algunos servidores OPC UA requieren acceso al archivo de certificado de cliente OPC UA para poder confiar en la SiteWise puerta de enlace Edge. Si esto se aplica a sus servidores OPC UA, puede utilizar el siguiente procedimiento para exportar el certificado de cliente OPC UA desde la puerta de enlace Edge. SiteWise A continuación, puede importar el certificado en su servidor OPC UA.

**Exportación del archivo de certificado de cliente OPC UA de un origen**

1. Ejecute el siguiente comando para ir al directorio que contiene el archivo de certificado. *sitewise-work*Sustitúyala por la ruta de almacenamiento local de la carpeta de trabajo de *aws.iot.SiteWiseEdgeCollectorOpcua* Greengrass y *source-name* sustitúyala por el nombre de la fuente de datos. 

   De forma predeterminada, la carpeta de trabajo de Greengrass está */greengrass/v2/work/aws.iot.SiteWiseEdgeCollectorOpcua* en Linux y *C:/greengrass/v2/work/aws.iot.SiteWiseEdgeCollectorOpcua* activada. Microsoft Windows 

   ```
   cd /sitewise-work/source-name/opcua-certificate-store
   ```

1. El certificado de cliente OPC UA de la puerta de enlace SiteWise Edge para esta fuente está en el `aws-iot-opcua-client.pfx` archivo.

   Ejecute el siguiente comando para exportar el certificado a un archivo `.pem` llamado `aws-iot-opcua-client-certificate.pem`.

   ```
   keytool -exportcert -v -alias aws-iot-opcua-client -keystore aws-iot-opcua-client.pfx -storepass amazon -storetype PKCS12 -rfc > aws-iot-opcua-client-certificate.pem
   ```

1. Transfiera el archivo de certificado desde la puerta de enlace SiteWise Edge al servidor OPC UA. `aws-iot-opcua-client-certificate.pem`

   Para ello, puede utilizar un software común como el programa `scp` para transferir el archivo utilizando el protocolo SSH. Para obtener más información, consulte [Copia segura](https://en.wikipedia.org/wiki/Secure_copy) en *Wikipedia*.
**nota**  
Si su puerta de enlace SiteWise Edge se ejecuta en Amazon Elastic Compute Cloud (Amazon EC2) y se conecta a ella por primera vez, debe configurar los requisitos previos para conectarse. Para obtener más información, consulte [Conexión a la instancia de Linux con SSH](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-to-linux-instance.html) en la *Guía del usuario de Amazon EC2*.

1. Importe el archivo de certificado en el servidor OPC UA para confiar en la SiteWise puerta de enlace Edge. `aws-iot-opcua-client-certificate.pem` Los pasos pueden variar en función del servidor de origen que utilice. Consulte la documentación de cada servidor.

# Filtrado de rangos de ingesta de datos con OPC UA
<a name="opcua-data-acquisition"></a>

Puede controlar la forma de ingerir datos con un origen OPC UA mediante rangos de zona neutra y modo de análisis. Estas funciones le permiten controlar qué tipo de datos desea ingerir y cómo y cuándo su servidor y la puerta de enlace SiteWise Edge intercambian esta información.

## Recopile o filtre los datos en función de la calidad
<a name="opcua-data-quality"></a>

Puede configurar los ajustes de calidad de los datos para controlar qué datos se recopilan del origen OPC UA. El origen de datos incluye la calificación de calidad como metadatos cuando los envía. Puede seleccionar una o todas las opciones siguientes:
+ `Good`
+ `Bad`
+ `Uncertain`

### Manejar NaN o valores nulos
<a name="nan-null"></a>

SiteWise Edge admite la recopilación y el manejo de NaN y valores nulos.
+ *NaN (no es un número):* representa resultados numéricos indefinidos o irrepresentables.
+ *Nulo: indica que faltan* datos.

El recopilador IoT SiteWise OPC UA captura los valores NaN y Null con una calidad MALA o INCIERTA. Estos valores especiales se escriben en la transmisión local, lo que permite una recopilación de datos más completa.

## Control de la frecuencia de recopilación de datos con el modo de escaneo
<a name="opcua-scanmode"></a>

Puede configurar el modo de análisis OPC UA para controlar el modo de recopilación de datos desde su origen OPC UA. Puede elegir el modo de suscripción o de sondeo.
+ Modo de suscripción: la fuente OPC UA recopila datos para enviarlos a su puerta de enlace SiteWise Edge con la frecuencia definida por su velocidad de escaneo. El servidor solo envía datos cuando el valor ha cambiado, por lo que esta es la frecuencia máxima con la que su puerta de enlace SiteWise Edge recibe datos.
+ Modo de sondeo: su puerta de enlace SiteWise Edge sondea la fuente OPC UA a una frecuencia establecida definida por su velocidad de escaneo. El servidor envía los datos independientemente de si el valor ha cambiado, por lo que su puerta de enlace SiteWise Edge siempre recibe los datos en este intervalo.
**nota**  
La opción de modo de sondeo anula sus ajustes de banda muerta para este origen.

## Filtrado de la ingesta de datos OPC UA con intervalos de zona neutra
<a name="opcua-deadbanding"></a>

 Puede aplicar una zona neutra a sus grupos de propiedades de origen OPC UA para filtrar y descartar determinados datos en lugar de enviarlos a la Nube de AWS . Una zona neutra especifica una ventana de fluctuaciones esperadas en los valores de datos entrantes desde su origen OPC UA. Si los valores se encuentran dentro de este intervalo, su servidor OPC UA no los enviará a la AWS nube. Puedes usar el filtrado de banda muerta para reducir la cantidad de datos que procesas y envías a la AWS nube. Para obtener información sobre cómo configurar las fuentes OPC UA para su puerta de enlace SiteWise Edge, consulte. [Fuentes de datos OPC UA para AWS IoT SiteWise pasarelas Edge](configure-sources-opcua.md)

**nota**  
 Su servidor elimina todos los datos que caen dentro de la ventana especificada por su banda muerta. Los datos descartados no se pueden recuperar.

### Tipos de bandas muertas
<a name="deadband-types"></a>

 Puede especificar dos tipos de zonas neutras para su grupo de propiedades del servidor OPC UA. Estas le permiten elegir cuántos datos se envían a la nube de AWS y cuántos se descartan.
+ Porcentaje: usted especifica una ventana utilizando un porcentaje de fluctuación esperada en el valor de medición. El servidor calcula el intervalo exacto a partir de este porcentaje y envía a la AWS nube los datos que exceden el intervalo que queda fuera del intervalo. Por ejemplo, si se especifica un valor de banda muerta del 2% en un sensor con un rango de -100 grados Fahrenheit a \$1100 grados Fahrenheit, se indica al servidor que envíe los datos a la AWS nube cuando el valor cambie 4 grados Fahrenheit o más. 
**nota**  
 Si lo desea, puede especificar un valor mínimo y máximo de banda muerta para esta ventana si su servidor de origen no define unidades de ingeniería. Si no se proporciona un rango de unidades de ingeniería, el servidor OPC UA utilizará de forma predeterminada el rango completo del tipo de datos de medición.
+ Absoluto: usted especifica una ventana utilizando unidades exactas. Por ejemplo, si se especifica un valor de banda inactiva de 2 en un sensor, se indica al servidor que envíe los datos a la AWS nube cuando su valor cambie al menos 2 unidades. Puede utilizar la banda muerta absoluta para entornos dinámicos en los que se esperan fluctuaciones regulares durante las operaciones normales.

### Tiempos de espera de banda muerta
<a name="deadband-timeout"></a>

 Si lo desea, puede configurar un tiempo de espera de banda muerta. Una vez transcurrido este tiempo de espera, el servidor OPC UA envía el valor de medición actual aunque se encuentre dentro de la fluctuación de zona neutra esperada. Puede usar la configuración de tiempo de espera para asegurarse de que AWS IoT SiteWise se ingiere un flujo constante de datos en todo momento, incluso cuando los valores no superen el intervalo de tiempo definido. 

# Utilice filtros de nodo OPC UA en Edge SiteWise
<a name="opc-ua-node-filters"></a>

Al definir las fuentes de datos OPC UA para una puerta de enlace SiteWise Edge, puede definir filtros de nodos. Los filtros de nodos le permiten limitar las rutas de flujo de datos que la puerta de enlace SiteWise Edge envía a la nube. Puedes usar filtros de nodos para reducir el tiempo de inicio de la puerta de enlace SiteWise Edge y el uso de la CPU al incluir únicamente las rutas a los datos que modeles AWS IoT SiteWise. De forma predeterminada, las pasarelas SiteWise Edge cargan todas las rutas OPC UA excepto las que comienzan por. `/Server/` Puede utilizar los caracteres comodín `*` y `**` en los filtros de nodos para incluir varios flujos de datos con un solo filtro. Para obtener información sobre cómo configurar las fuentes OPC UA para su puerta de enlace SiteWise Edge, consulte. [Fuentes de datos OPC UA para AWS IoT SiteWise pasarelas Edge](configure-sources-opcua.md)

**nota**  
AWS IoT SiteWise reinicia la puerta de enlace SiteWise Edge cada vez que añada o edite una fuente. La puerta de enlace SiteWise Edge no ingiere datos mientras actualiza la configuración de la fuente. El tiempo necesario para reiniciar la puerta de enlace SiteWise Edge depende de la cantidad de etiquetas que haya en las fuentes de la puerta de enlace SiteWise Edge. El tiempo de reinicio puede oscilar entre unos segundos (para una puerta de enlace SiteWise Edge con pocas etiquetas) y varios minutos (para una puerta de enlace SiteWise Edge con muchas etiquetas).

En la tabla siguiente se enumeran los caracteres comodín que se pueden utilizar para filtrar orígenes de datos OPC UA.


**Comodines para filtros de nodos OPC UA**  

| Comodín | Description (Descripción) | 
| --- | --- | 
| \$1 | Coincide con un solo nivel en una ruta de flujo de datos. | 
| \$1\$1 | Coincide con varios niveles en una ruta de flujo de datos. | 

**nota**  
Si configura una fuente con un filtro amplio y luego cambia la fuente para usar un filtro más restrictivo, AWS IoT SiteWise deja de almacenar los datos que no coinciden con el nuevo filtro.

**Example : Escenario que utiliza filtros de nodos**  
Piense en los siguientes flujos de datos hipotéticos:  
+ `/WA/Factory 1/Line 1/PLC1`
+ `/WA/Factory 1/Line 1/PLC2`
+ `/WA/Factory 1/Line 2/Counter1`
+ `/WA/Factory 1/Line 2/PLC1`
+ `/OR/Factory 1/Line 1/PLC1`
+ `/OR/Factory 1/Line 2/Counter2`
Con los flujos de datos anteriores, puede definir filtros de nodos para limitar qué datos se van a incluir de su origen OPC UA.  
+ Para seleccionar todos los nodos en este ejemplo, utilice `/` o `/**/`. Puede incluir varios directorios o carpetas con los caracteres comodín `**`.
+ Para seleccionar todos los flujos de datos de `PLC`, utilice `/*/*/*/PLC*` o `/**/PLC*`.
+ Para seleccionar todos los contadores en este ejemplo, utilice `/**/Counter*` o `/*/*/*/Counter*`.
+ Para seleccionar todos los contadores de `Line 2`, utilice `/**/Line 2/Counter*`.

# Conversión de tipos de datos no admitidos
<a name="string-conversion"></a>

Si lo desea, habilite la conversión de tipos AWS IoT SiteWise de datos en matrices y tipos de DateTime datos simples. AWS IoT SiteWise no es compatible con todos los tipos de datos OPC UA. Cuando envías datos no compatibles a tu flujo de AWS IoT Greengrass datos, esos datos se pierden. Sin embargo, al convertir los tipos de datos nativos no compatibles en cadenas, puede ingerir los datos en AWS IoT SiteWise lugar de descartarlos. AWS IoT SiteWise serializa los datos convertidos para que luego pueda utilizar sus propias funciones para volver a convertir las cadenas a su tipo de datos original en sentido descendente, si es necesario. 

Puede actualizar la configuración de conversión de tipos de datos para un origen de datos en cualquier momento y cada origen de datos puede tener su propia configuración.

**Al añadir fuentes de datos en Consola de AWS IoT SiteWise, hay dos casillas de verificación en la sección **Conversión de tipos de datos** en la configuración avanzada.** Puede indicar qué tipos de datos desea convertir en cadenas.

Además, el recopilador IoT SiteWise OPC UA puede aceptar NaN o valores nulos en el borde.
+ Conversión de valores de matriz con tipos de datos simples en cadenas JSON
+ Convierta DateTime valores en cadenas ISO 8601

## Requisito previo
<a name="string-conversion-prereq"></a>
+ Utilice la versión 2.5.0 o posterior del recopilador [IoT SiteWise OPC UA](https://docs.aws.amazon.com/greengrass/v2/developerguide/iotsitewise-opcua-collector-component.html).

## Limitaciones
<a name="string-conversion-limits"></a>

Estas son las limitaciones de la conversión de tipos de datos OPC UA a cadenas en AWS IoT SiteWise.
+ No se admite la conversión de tipos de datos complejos.
+ El límite de cadena después de la conversión es de 1024 bytes. Si la cadena tiene más de 1024 bytes, se rechaza por. AWS IoT SiteWise

# Configurar la autenticación de fuentes de datos para SiteWise Edge
<a name="configure-source-authentication-ggv2"></a>

Si su servidor OPC UA requiere credenciales de autenticación para conectarse, puede utilizarlas AWS Secrets Manager para crear e implementar un secreto en su puerta de enlace SiteWise Edge. AWS Secrets Manager cifra los secretos del dispositivo para proteger su nombre de usuario y contraseña hasta que necesite usarlos. Para obtener más información sobre el componente de administrador de AWS IoT Greengrass secretos, consulte [Secret Manager](https://docs.aws.amazon.com/greengrass/v2/developerguide/secret-manager-component.html) en la *Guía para AWS IoT Greengrass Version 2 desarrolladores*.

Para obtener información sobre la administración del acceso a los secretos de Secrets Manager, consulte:
+ [Quién tiene permisos para acceder a tus AWS Secrets Manager secretos](https://docs.aws.amazon.com/secretsmanager/latest/userguide/determine-acccess_examine-iam-policies.html).
+ [Determinar si una solicitud está permitida o denegada en una cuenta](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html#policy-eval-denyallow).

## Paso 1: Crear secretos de autenticación de origen
<a name="create-secrets-ggv2"></a>

Se puede utilizar AWS Secrets Manager para crear un secreto de autenticación para la fuente de datos. En el secreto, defina pares clave-valor, **username** y **password**, que contengan detalles de autenticación para su origen de datos.

**Para crear un secreto (consola)**

1. Vaya a la [consola de AWS Secrets Manager](https://console.aws.amazon.com/secretsmanager/).

1. Seleccione **Almacenar un nuevo secreto**.

1. En **Tipo de secreto**, seleccione **Otro tipo de secretos**.

1. En **Pares clave/valor**, haga lo siguiente:

   1. En el primer cuadro de entrada, introduzca **username** y, en el segundo cuadro de entrada, introduzca el nombre de usuario.

   1. Seleccione **Agregar regla**.

   1. En el primer cuadro de entrada, introduzca **password** y, en el segundo cuadro de entrada, introduzca la contraseña.

1. En **Clave de cifrado**, seleccione **aws/secretsmanager** y, a continuación, elija **Siguiente**.

1. En la página **Guardar un nuevo secreto**, introduzca un **Nombre secreto**. 

1. (Opcional) Introduzca una **Descripción** que le ayude a identificar este secreto y, a continuación, seleccione **Siguiente**.

1. (Opcional) En la página **Guardar un nuevo secreto**, active **Rotación automática**. Para obtener más información, consulte [Rotación de secretos](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets.html) en la *Guía del usuario de AWS Secrets Manager *.

1. Especifique un calendario de rotación.

1. Elija una función de Lambda que pueda rotar este secreto y, a continuación, seleccione **Siguiente**.

1. Revise la configuración de sus secretos y, a continuación, seleccione **Guardar**.

Para autorizar la interacción con la puerta de enlace de SiteWise Edge AWS Secrets Manager, la función de IAM de la puerta de enlace de SiteWise Edge debe permitir esta `secretsmanager:GetSecretValue` acción. Puede utilizar el **dispositivo principal de Greengrass** para buscar la política de IAM. *Para obtener más información sobre la actualización de una política de IAM, consulte [Edición de políticas de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-edit.html) en la Guía del usuario.AWS Identity and Access Management *

**Example policy**  
*secret-arn*Sustitúyalo por el nombre de recurso de Amazon (ARN) del secreto que creaste en el paso anterior. Para obtener más información sobre cómo obtener el ARN de un secreto, consulte [Buscar secretos AWS Secrets Manager en](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_search-secret.html) la Guía del *AWS Secrets Manager usuario*.    
****  

```
{
"Version":"2012-10-17",		 	 	 
"Statement":[
  {
     "Action":[
        "secretsmanager:GetSecretValue"
     ],
     "Effect":"Allow",
     "Resource":[
        "arn:aws:secretsmanager:us-east-1:123456789012:secret/*"
     ]
  }
]
}
```

## Paso 2: Implemente los secretos en su dispositivo de puerta de enlace SiteWise Edge
<a name="deploy-secrets-ggv2"></a>

Puede usar la AWS IoT SiteWise consola para implementar datos secretos en su puerta de enlace SiteWise Edge.

**Para implementar un secreto (consola)**

1. Vaya a la [consola de AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. En el panel de navegación, seleccione **Puertas de enlace**.

1. En la lista de **puertas de enlace**, elija la puerta de enlace SiteWise Edge de destino.

1. En la sección de **configuración de la puerta** de enlace, elija el enlace del **dispositivo principal de Greengrass** para abrir el AWS IoT Greengrass núcleo asociado a la puerta de enlace SiteWise Edge.

1. En el panel de navegación, seleccione **Implementaciones**.

1. Seleccione la implementación de destino y, a continuación, **Revisar**.

1. En la página **Especificar destino**, seleccione **Siguiente**.

1. En la página **Seleccionar componentes**, en la sección **Componentes públicos**, desactive la opción **Mostrar solo componentes seleccionados**.

1. Busque y elija **aws.greengrass. **SecretManager**componente y, a continuación, elija Siguiente.**

1. En la lista de **componentes seleccionados**, elija **aws.greengrass. **SecretManager**componente y, a continuación, elija Configurar componente.**

1. En el campo **Configuración por fusionar**, añada el siguiente objeto JSON.
**nota**  
*secret-arn*Sustitúyalo por el ARN del secreto que creó en el paso anterior. Para obtener más información sobre cómo obtener el ARN de un secreto, consulte [Buscar secretos AWS Secrets Manager en](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_search-secret.html) la Guía del *AWS Secrets Manager usuario*.

   ```
   {
   "cloudSecrets":[
     {
        "arn":"secret-arn"
     }
   ]
   }
   ```

1. Seleccione **Confirmar**.

1. Elija **Siguiente**.

1. En la página **Configurar opciones avanzadas**, seleccione **Siguiente**.

1. Revise las configuraciones de su implementación y, a continuación, seleccione **Implementar**.

## Paso 3: Añadir configuraciones de autenticación
<a name="add-authentication-configurations"></a>

Puede usar la AWS IoT SiteWise consola para agregar configuraciones de autenticación a su puerta de enlace SiteWise Edge.

**Para añadir configuraciones de autenticación (consola)**

1. Vaya a la [consola de AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. En la lista de **puertas de enlace**, elija la puerta de enlace SiteWise Edge de destino.

1. En la lista **Orígenes de datos**, seleccione el origen de datos de destino y, a continuación, **Editar**.

1. En la página **Añadir un origen de datos**, seleccione **Configuración avanzada**.

1. En **Configuración de autenticación**, elija el secreto que implementó en el paso anterior.

1. Seleccione **Save**.

# Fuentes de datos asociadas en las puertas de enlace SiteWise Edge
<a name="partner-data-sources"></a>

Al utilizar una puerta de enlace de AWS IoT SiteWise Edge, puede conectar una fuente de datos asociada a su puerta de enlace de SiteWise Edge y recibir datos del socio en su puerta de enlace de SiteWise Edge y en la AWS nube. Estas fuentes de datos de los socios son AWS IoT Greengrass componentes que se desarrollan en colaboración entre el socio AWS y el socio. Cuando añada una fuente de datos asociada, AWS IoT SiteWise creará este componente y lo implementará en su puerta de enlace SiteWise Edge. 

**nota**  
Puede agregar una fuente de datos para cada socio en cada puerta de enlace.

Para añadir un origen de datos de un socio, realice lo siguiente:

1. [Agregue una fuente de datos asociada en Edge SiteWise](cpa-add-source.md)

1. Vaya al portal web del socio, si corresponde, y configure la fuente de datos del socio para que se conecte a la puerta de enlace SiteWise Edge.

**Topics**
+ [Seguridad](#cpa-security)
+ [Configúrelo Docker en su puerta de enlace SiteWise Edge](cpa-install-docker.md)
+ [Agregue una fuente de datos asociada en Edge SiteWise](cpa-add-source.md)
+ [SiteWise Opciones de fuentes de datos de los socios de Edge Gateway](connect-partner-data-source.md)

## Seguridad
<a name="cpa-security"></a>

Como parte del [modelo de responsabilidad compartida](https://aws.amazon.com/compliance/shared-responsibility-model/) entre AWS nuestros clientes y nuestros socios, a continuación se describe quién es responsable de los distintos aspectos de la seguridad:

**Responsabilidad del cliente**  
+ Investigar al socio.
+ Configurar el acceso a la red otorgado al socio. 
+ Supervisión para garantizar un uso razonable de los recursos de la máquina SiteWise Edge Gateway (CPU, memoria y sistema de archivos).

**AWS responsabilidad**  
+ Aislar al socio de los recursos AWS en la nube del cliente, excepto los que necesite el socio. En este caso, ingesta de AWS IoT SiteWise .
+ Restringir la solución del socio a un uso razonable de los recursos de la máquina de SiteWise Edge Gateway (CPU y memoria).

**Responsabilidad del socio**  
+ Uso de valores predeterminados seguros.
+ Mantener la solución segura en el tiempo mediante parches y otras actualizaciones apropiadas.
+ Mantener la confidencialidad de los datos de los clientes.

# Configúrelo Docker en su puerta de enlace SiteWise Edge
<a name="cpa-install-docker"></a>

AWS IoT SiteWise proporciona una Docker imagen que le permite ejecutar la aplicación SiteWise Edge en varias plataformas y entornos. Esta Docker imagen resume todos los componentes y dependencias necesarios para recopilar, procesar y enviar datos de sus equipos industriales a la AWS nube. Con la imagen de Docker, puede implementar y ejecutar la aplicación SiteWise Edge en hosts compatibles con Docker, como servidores, dispositivos perimetrales o servicios de contenedores basados en la nube.

Para añadir un origen de datos de socios debe instalar [Docker Engine](https://docs.docker.com/engine/) 1.9.1 o posterior en su dispositivo local.

**nota**  
La versión 20.10 es la última que se ha comprobado que funciona con el software Edge Gateway. SiteWise 

## Verifica que Docker esté instalada
<a name="cpa-install-docker-verify"></a>

Para comprobar si Docker está instalado, ejecute el siguiente comando desde un terminal conectado a la puerta de enlace SiteWise Edge:

```
docker info
```

Si el comando devuelve un `docker is not recognized` resultado o si Docker hay instalada una versión anterior de, [instale Docker Engine](https://docs.docker.com/engine/install/) antes de continuar.

## Configuración de Docker
<a name="cpa-install-docker-setup"></a>

El usuario del sistema que ejecuta un componente Docker contenedor debe tener permisos de administrador o root, o bien debe configurarlo Docker para ejecutarlo como usuario no root o no administrador.

En los dispositivos Linux, debe añadir un `ggc_user` usuario al `docker` grupo para poder ejecutar comandos sin él. Docker `sudo`

Para añadir `ggc_user` al `docker` grupo al usuario no root que utiliza para ejecutar los componentes del Docker contenedor, ejecute el siguiente comando:

```
sudo usermod -aG docker ggc_user
```

Para obtener más información, consulte los [pasos posteriores a la instalación de Linux para Docker Engine](https://docs.docker.com/engine/install/linux-postinstall/).

# Agregue una fuente de datos asociada en Edge SiteWise
<a name="cpa-add-source"></a>

Para conectar una fuente de datos asociada a su puerta de enlace SiteWise Edge, agréguela como fuente de datos. Cuando lo añada como fuente de datos, AWS IoT SiteWise implementará un AWS IoT Greengrass componente privado en su puerta de enlace SiteWise Edge.

## Requisitos previos
<a name="cpa-add-prereqs"></a>

Para añadir un origen de datos de un socio, debe hacer lo siguiente:
+ Para EasyEdge y CloudRail, cree una cuenta con el socio y, a continuación, vincule las cuentas.
+ [Configúrelo Docker en su puerta de enlace SiteWise Edge](cpa-install-docker.md)

## Cree una puerta de enlace SiteWise Edge con una fuente de datos asociada
<a name="cpa-add-create-gateway"></a>

Si desea crear una nueva puerta de enlace SiteWise Edge, complete los pasos que se indican a continuación[Cree una puerta de enlace SiteWise Edge autohospedada](create-gateway-ggv2.md). Una vez que haya creado la puerta de enlace SiteWise Edge, siga los pasos que se indican [Agregue una fuente de datos asociada a una puerta de enlace de SiteWise Edge existente](#cpa-existing-gateway) para agregar una fuente de datos asociada.

## Agregue una fuente de datos asociada a una puerta de enlace de SiteWise Edge existente
<a name="cpa-existing-gateway"></a>

1. Vaya a la [consola de AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. En el panel de navegación de la izquierda, selecciona **las puertas de enlace Edge** en la sección **Edge**.

1. Elija la puerta de enlace SiteWise Edge a la que desee conectar la fuente de datos del socio.

1. En **Orígenes de datos**, elija **Añadir origen de datos**.

1. En la pantalla **Agregar fuente de datos**, elija un **tipo de fuente** para seleccionar el socio que conecta su puerta de enlace SiteWise Edge. Cada origen de datos tiene sus propias opciones de configuración. Hay dos categorías de orígenes de datos: orígenes de AWS y orígenes de socios.

   Con un origen de datos de socios puede seleccionar un origen por puerta de enlace. Para obtener una lista de opciones de integración de socios de orígenes de datos, consulte [SiteWise Opciones de fuentes de datos de los socios de Edge Gateway](connect-partner-data-source.md). Tenga en cuenta que puede añadir hasta 100 fuentes de datos OPC UA (AWS fuentes). Para empezar a utilizar orígenes de datos OPC UA, consulte [Fuentes de datos OPC UA para AWS IoT SiteWise pasarelas Edge](configure-sources-opcua.md). 

1. Introduzca un nombre para el origen.

1. Seleccione la pestaña del origen de datos que aparece a continuación y siga el procedimiento de configuración.

------
#### [ CloudRail ]

   Gran parte de la CloudRail configuración se realiza en el CloudRail portal después de guardar la fuente de datos para la puerta de enlace SiteWise Edge. Sin embargo, es necesario autorizar la conexión.

**nota**  
La conexión de CloudRail solo está disponible en Linux.

   1. [Cree una cuenta de CloudRail](https://devices.cloudrail.com/signup) para empezar a conectarse a AWS IoT SiteWise.

   1. Asegúrese de que Docker esté instalado en su puerta de enlace. Para obtener más información, consulte [Configúrelo Docker en su puerta de enlace SiteWise Edge](cpa-install-docker.md).

   1. Lea el acuerdo de **Autorizar el acceso y la implementación** y, a continuación, seleccione **Autorizar**. Al marcar esta casilla, el AWS socio tiene acceso a su fuente de datos y AWS permite la implementación en el componente del socio.

**nota**  
El **Prefijo de medición: *opcional*** se establece en el portal de CloudRail.

**nota**  
El software del socio es desarrollado, mantenido y respaldado por el AWS socio. AWS no es responsable de la interfaz, la configuración o el software.

   Para obtener más información, consulte [CloudRail](connect-partner-data-source.md#cp-cloudrail).

------
#### [ EasyEdge ]

   Gran parte de la EasyEdge configuración se realiza en el EasyEdge portal después de guardar la fuente de datos para la puerta de enlace SiteWise Edge. Sin embargo, es necesario autorizar la conexión.

**nota**  
La conexión de EasyEdge solo está disponible en Linux.

   1. [Cree una cuenta de EasyEdge](https://accounts.easyedge.io/signup?partner=aws) para empezar a conectarse a AWS IoT SiteWise.

   1. Asegúrese de que Docker esté instalado en su puerta de enlace. Para obtener más información, consulte [Configúrelo Docker en su puerta de enlace SiteWise Edge](cpa-install-docker.md).

   1. Lea el acuerdo de **Autorizar el acceso y la implementación** y, a continuación, seleccione **Autorizar**. Al marcar esta casilla, el AWS socio tiene acceso a su fuente de datos y AWS permite la implementación en el componente del socio.

**nota**  
El **Prefijo de medición: *opcional*** se establece en el portal de EasyEdge.

**nota**  
El software del socio es desarrollado, mantenido y respaldado por el AWS socio. AWS no es responsable de la interfaz, la configuración o el software.

   Para obtener más información, consulte [EasyEdge](connect-partner-data-source.md#cp-easyedge).

------
#### [ Litmus Edge ]

   Puede activar la configuración de Litmus de dos formas. Active Litmus Edge directamente mediante AWS IoT SiteWise utilizando información del portal de Litmus Edge Manager. También puede activar Litmus Edge manualmente para AWS IoT SiteWise a través de Litmus Edge Manager.

**nota**  
La conexión de Litmus Edge solo está disponible en Linux.

    

**Para activarlo mediante un código Litmus Edge de activación en AWS IoT SiteWise**

   Utilice este procedimiento cuando añada un origen de datos de Litmus Edge con un código de activación de Litmus Edge en Consola de AWS IoT SiteWise.

   1. Seleccione **Actívelo ahora con un código**. Aparecen opciones de configuración adicionales.

   1. Introduce el Litmus Edge Manager para conectarte Litmus Edge a tu puerta de enlace SiteWise Edge. Para obtener más información, consulte [Step 3a: Set Data and Device Management Endpoint](https://docs.litmus.io/edgemanager/quickstart-guide/activate-an-edge-device/step-3-activation-request) en la documentación de Litmus Edge Manager.

   1. Proporcione el código de Litmus Edge Manager activación para Litmus Edge activarlo AWS IoT SiteWise

   1. Si lo desea, AWS IoT SiteWise proporcione el **certificado de Litmus Edge Manager CA**. El certificado impide que Litmus Edge se active en un Litmus Edge Manager no autorizado.

   1. Asegúrese de que Docker esté instalado en su puerta de enlace. Para obtener más información, consulte [Configúrelo Docker en su puerta de enlace SiteWise Edge](cpa-install-docker.md).
**nota**  
AWS IoT SiteWise despliega la aplicación asociada como un contenedor de Docker. La aplicación se implementa con capacidad `NET_ADMIN` para que se pueda administrar el contenedor de Docker de Litmus Edge a través de Litmus Edge Manager. Litmus Edge requiere que este acceso privilegiado se ejecute en los dispositivos. Para obtener más información sobre los requisitos de Litmus Edge Docker, consulta la sección [Instalación de Docker](https://docs.litmus.io/litmusedge-v1/quickstart-guide/installation-and-deployments/docker-installation) en la *QuickStart guía* de la documentación de Litmus Edge. 

   1. Lea el acuerdo de **Autorizar el acceso y la implementación** y, a continuación, seleccione **Autorizar**. Al marcar esta casilla, el AWS socio tiene acceso a tu fuente de datos y permite AWS realizar la implementación en el componente del socio.

    

**Activación manual mediante Litmus Edge**

   1. Seleccione **Actívelo más tarde en Litmus Edge**.

   1. Asegúrese de que Docker esté instalado en su puerta de enlace. Para obtener más información, consulte [Configúrelo Docker en su puerta de enlace SiteWise Edge](cpa-install-docker.md).
**nota**  
AWS IoT SiteWise despliega la aplicación asociada como un contenedor de Docker. La aplicación se implementa con capacidad `NET_ADMIN` para que se pueda administrar el contenedor de Docker de Litmus Edge a través de Litmus Edge Manager. Litmus Edge requiere que este acceso privilegiado se ejecute en los dispositivos. Para obtener más información sobre los requisitos de Litmus Edge Docker, consulta la sección [Instalación de Docker](https://docs.litmus.io/litmusedge-v1/quickstart-guide/installation-and-deployments/docker-installation) en la *QuickStart guía* de la documentación de Litmus Edge. 

   1. Lea el acuerdo de **Autorizar el acceso y la implementación** y, a continuación, seleccione **Autorizar**. Al marcar esta casilla, el AWS socio tiene acceso a tu fuente de datos y permite AWS realizar la implementación en el componente del socio.

   1. Una vez completada la implementación, siga las instrucciones de [Access the Litmus Edge Web UI](https://docs.litmus.io/litmusedge/quickstart-guide/access-the-litmus-edge-web-ui) en la documentación de Litmus Edge *QuickStart Guide*.

**nota**  
El software del socio es desarrollado, mantenido y respaldado por el AWS socio. AWS no es responsable de la interfaz, la configuración o el software.

   Para obtener más información, consulte [Litmus Edge](connect-partner-data-source.md#cp-litmus).

------

1. Seleccione **Save**.

# SiteWise Opciones de fuentes de datos de los socios de Edge Gateway
<a name="connect-partner-data-source"></a>

AWS IoT SiteWise le permite conectar e ingerir datos de varias fuentes de datos de socios, como equipos industriales, sensores y otros sistemas de terceros. Para conectar una fuente de datos asociada, debe seguir algunos pasos, como configurar la fuente de datos a la que enviar los datos AWS IoT SiteWise, configurar los permisos y la autenticación necesarios y asignar los datos a sus modelos de activos. Este proceso garantiza que sus datos de socios se integren sin problemas en su entorno de AWS IoT SiteWise , lo que le permite supervisarlos y analizarlos junto con otros orígenes de datos.

En esta sección se enumeran los socios disponibles para la integración de fuentes de datos de terceros en las puertas de enlace SiteWise Edge. Utilice la siguiente información para configurar un origen de datos de un socio.

**nota**  
Puede agregar una fuente de datos para cada socio en cada puerta de enlace

## CloudRail
<a name="cp-cloudrail"></a>

**Portal:**   
[https://devices.cloudrail.com/](https://devices.cloudrail.com/)

**Requisitos**  
Para obtener más información sobre los requisitos de CloudRail, consulte [FAQS](https://cloudrail.com/faqs/) en el sitio web de CloudRail.

**Documentación de CloudRail:**  
[Computación perimetral: SiteWise perimetral](https://devices.cloudrail.com/documentation?service=AWSIoTSitewiseEdge#awsiotsitewiseEdge1)

## EasyEdge
<a name="cp-easyedge"></a>

**Portal:**   
[https://studio.easyedge.io/](https://studio.easyedge.io/)

**Requisitos**  
[Requisitos de EasyEdge](https://docs.easyedge.io/getting-started/requirements.html): información sobre los requisitos de EasyEdge, incluidos los puntos de conexión y los puertos necesarios para configurar el firewall. **Nota**: Necesitará una cuenta de EasyEdge para acceder a esta documentación.

**Documentación de EasyEdge:**  
[EasyEdgepara AWS](https://www.easyedge.io/easyedge-for-aws/)

## Litmus Edge
<a name="cp-litmus"></a>

**Acceda a Litmus Edge Manager:**   
Para acceder a Litmus Edge, configure una cuenta del [Litmus Edge Manager](https://docs.litmus.io/edgemanager/quickstart-guide/access-to-litmus-edge-manager).

**Requisitos**  
[Requisitos de Litmus Edge](https://docs.litmus.io/litmusedge/quickstart-guide/system-requirements): configuraciones recomendadas y requisitos del sistema para implementar Litmus Edge.

**Documentación de Litmus:**  
+ [Integración a AWS IoT SiteWise](https://docs.litmus.io/litmusedge-v1/litmusedge-with-aws-iot-sitewise)
+ [Documentación de Litmus Edge](https://docs.litmus.io/litmusedge/)

# AWS IoT Greengrass componentes para AWS IoT SiteWise Edge
<a name="sw-edge-components"></a>

SiteWise Edge utiliza AWS IoT Greengrass componentes para recopilar, procesar y transmitir datos industriales en la periferia. Estos componentes funcionan juntos para permitir el procesamiento local de datos y una integración perfecta con el servicio AWS IoT SiteWise en la nube.

** SiteWise Publicador de IoT**  
El componente de SiteWise editor de IoT (`aws.iot.SiteWiseEdgePublisher`) es responsable de:  
+ Transmitir de forma segura los datos recopilados al servicio AWS IoT SiteWise en la nube
+ Administrar el almacenamiento en búfer y los reintentos de datos durante problemas de conectividad
Para obtener más información sobre la configuración del editor para SiteWise Edge, consulte. [Configure el AWS IoT SiteWise componente de publicación](configure-publisher-component.md) Y, para obtener más información sobre el componente de editor, consulte [IoT SiteWise Publisher](https://docs.aws.amazon.com/greengrass/v2/developerguide/iotsitewise-publisher-component.html) en la *Guía para AWS IoT Greengrass Version 2 desarrolladores*. 

** SiteWise Procesador IoT**  
El componente SiteWise procesador de IoT (`aws.iot.SiteWiseEdgeProcessor`) realiza las siguientes tareas:  
+ Ejecuta transformaciones y cálculos de datos en la periferia
+ Implementación local de definiciones y cálculos de propiedades de activos
+ Reducir el volumen de datos mediante la agregación o el filtrado de los datos antes de la transmisión
Para obtener más información sobre el componente del procesador, consulte el [ SiteWise procesador IoT](https://docs.aws.amazon.com/greengrass/v2/developerguide/iotsitewise-processor-component.html) en la *Guía para AWS IoT Greengrass Version 2 desarrolladores*.

**Colector IoT SiteWise OPC UA**  
El componente IoT SiteWise OPC UA collector (`aws.iot.SiteWiseEdgeCollectorOpcua`) está diseñado para:  
+ Conéctese a servidores OPC UA en entornos industriales
+ Recopile datos de fuentes de datos OPC UA de forma eficiente
+ Transforma los datos del OPC UA en un formato compatible con AWS IoT SiteWise
Para obtener más información sobre el componente recopilador OPC UA, consulte el [recopilador SiteWise OPC UA de IoT](https://docs.aws.amazon.com/greengrass/v2/developerguide/iotsitewise-opcua-collector-component.html) en la Guía *AWS IoT Greengrass Version 2 para desarrolladores*.

**Simulador de fuente de datos IoT SiteWise OPC UA**  
El componente simulador de fuente de datos IoT SiteWise OPC UA (`aws.iot.SiteWiseEdgeOpcuaDataSourceSimulator`) proporciona la siguiente funcionalidad:  
+ Inicia un servidor OPC UA local que genera datos de muestra
+ Simula una fuente de datos que el componente recopilador AWS IoT SiteWise OPC UA puede leer en una puerta de enlace AWS IoT SiteWise 
+ Permite la exploración de AWS IoT SiteWise características utilizando los datos de muestra generados
Este componente es particularmente útil para fines de prueba y desarrollo, ya que permite simular fuentes de datos industriales sin necesidad de equipo físico.  
Para obtener más información sobre el componente de simulación de fuentes de datos, consulte el [simulador de fuentes de datos IoT SiteWise OPC UA](https://docs.aws.amazon.com/greengrass/v2/developerguide/iotsitewise-opcua-data-source-simulator-component.html) en la *Guía para AWS IoT Greengrass Version 2 desarrolladores*.

Estos AWS IoT Greengrass componentes funcionan para habilitar la funcionalidad SiteWise Edge. El SiteWise editor de IoT garantiza que los datos se envíen de forma fiable a la nube, el SiteWise procesador de IoT gestiona los cálculos locales y la optimización de los datos, y el recopilador IoT SiteWise OPC UA facilita la integración con los protocolos industriales habituales.

**nota**  
Para utilizar estos componentes, debe disponer de sus dispositivos AWS IoT Greengrass V2 periféricos o instalarlos posteriormente en ellos. La configuración adecuada de cada componente es importante para un rendimiento óptimo de SiteWise Edge.

# Filtre los activos en una puerta de enlace SiteWise Edge
<a name="filter-assets-ggv2"></a>

Puede usar el filtrado perimetral para administrar sus activos de manera más eficiente enviando solo un subconjunto de activos a una puerta de enlace de SiteWise Edge específica para su uso en el procesamiento de datos. Si sus activos están organizados en forma de árbol o estructura principal secundaria, puede configurar una política de IAM asociada a la función de IAM de una puerta de enlace de SiteWise Edge que solo permita enviar la raíz del árbol, o principal, y sus elementos secundarios a una puerta de enlace de Edge específica. SiteWise 

**nota**  
Si está organizando los activos existentes en una estructura de árbol, después de crear la estructura, vaya a cada activo existente que haya agregado a la estructura y elija **Editar** y, a continuación, seleccione **Guardar** para asegurarse de que AWS IoT SiteWise reconoce la nueva estructura.

## Configuración del filtrado de periferia
<a name="set-up-edge-filter-ggv2"></a>

Para configurar el filtrado de borde en la puerta de enlace de SiteWise Edge, añada la siguiente política de IAM a la función de IAM de la puerta de enlace de SiteWise Edge y *<root-asset-id>* reemplácela por el ID del activo raíz que desee enviar a la puerta de enlace de SiteWise Edge.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "iotsitewise:DescribeAsset",
                "iotsitewise:ListAssociatedAssets"
            ],
            "Resource": "arn:aws:iotsitewise:*:*:asset/*",
            "Condition": {
                "StringNotLike": {
                    "iotsitewise:assetHierarchyPath": "/<root-asset-id>*"
                }
            }
        }
    ]
}
```

------

Si actualmente hay activos en su puerta de enlace de SiteWise Edge que le gustaría eliminar, inicie sesión en su puerta de enlace de SiteWise Edge y ejecute el siguiente comando para forzar a la puerta de enlace de SiteWise Edge a sincronizarse con ellos AWS IoT SiteWise mediante la eliminación de la memoria caché.

```
sudo rm /greengrass/v2/work/aws.iot.SiteWiseEdgeProcessor/sync-app/sync_resource_bundles/edge.json
```

# Configura el soporte de proxy y administra los almacenes de confianza para AWS IoT SiteWise Edge
<a name="edge-apis-manage-trust-stores-proxy"></a>

En AWS IoT SiteWise Edge, configure y administre los almacenes de confianza para configurar el soporte de proxy para sus dispositivos perimetrales. En primer lugar, configure el proxy y, a continuación, configure los almacenes de confianza. Puede configurar los almacenes de confianza durante la instalación de la puerta de enlace o manualmente una vez establecida la puerta de enlace. 
+ **Proxies**: facilitan la conectividad entre sus dispositivos y AWS servicios periféricos en varios entornos de red.
+ **Almacenes de confianza**: garantice la seguridad de las conexiones mediante la administración de certificados de confianza. Las configuraciones adecuadas le ayudan a cumplir con las políticas de seguridad de la red, permiten la comunicación en entornos de red restringidos y optimizan la transferencia de datos entre los dispositivos periféricos y los servicios en la nube.

SiteWise Edge utiliza varios almacenes de confianza para diferentes tipos de componentes, lo que garantiza un flujo de datos seguro y eficiente desde los dispositivos periféricos a la nube. Puede configurar los almacenes de confianza y los proxies en una puerta de enlace existente o durante el proceso de instalación al crear una nueva puerta de enlace. 

## Requisitos para las configuraciones de almacenes de confianza y proxy
<a name="manage-trust-stores-proxy_implementation-requirements"></a>

Antes de configurar un almacén de confianza o instalar SiteWise Edge con la configuración de proxy, asegúrese de cumplir los requisitos previos. Existen diversos requisitos de implementación según el uso de los componentes y los requisitos de funcionalidad.

**Requisitos de soporte de proxy**
+ La URL de su servidor proxy. La URL debe incluir la información del usuario y el número de puerto del host. Por ejemplo, `scheme://[userinfo@]host[:port]`.
  + `scheme`— Debe ser HTTP o HTTPS
  + (Opcional)`userinfo`: información de nombre de usuario y contraseña
  + `host`— El nombre de host o la dirección IP del servidor proxy
  + `port`— El número de puerto
+ Una lista de direcciones para evitar el proxy.
+ (Opcional) El archivo de certificado de CA del proxy si utiliza un proxy HTTPS con un certificado autofirmado.

**Requisitos del almacén de confianza**
+ Para que el paquete de procesamiento de datos funcione plenamente con el proxy HTTPS, debe actualizar los tres almacenes de confianza.
+ Si solo usa el recopilador SiteWise OPC UA de IoT y el SiteWise editor de IoT, actualice los almacenes de confianza AWS IoT Greengrass Core y Java de certificados a la última versión.

## Prácticas recomendadas para las configuraciones perimetrales de servidores proxy y almacenes fiduciarios
<a name="manage-trust-stores-proxy_best-practices"></a>

Para un mantenimiento continuo y para mantener el más alto nivel de seguridad en su entorno perimetral:
+ Revise y actualice periódicamente la configuración del proxy para adaptarla a los requisitos de seguridad de su red.
+ Supervise la conectividad de la puerta de enlace y el flujo de datos para garantizar una comunicación proxy adecuada
+ Mantenga y actualice los almacenes de confianza de acuerdo con las políticas de administración de certificados de su organización
+ Puede implementar y seguir nuestras prácticas recomendadas para una comunicación segura en entornos periféricos, como:
+ Documente las configuraciones de su proxy y almacén de confianza para obtener visibilidad operativa
+ Siga las prácticas de seguridad de su organización para la administración de credenciales

Estas prácticas ayudan a mantener las operaciones seguras y confiables de sus puertas de enlace SiteWise Edge y, al mismo tiempo, se mantienen alineadas con sus políticas de seguridad más amplias.

# Configure los ajustes del proxy durante la instalación de la puerta de enlace AWS IoT SiteWise Edge
<a name="manage-trust-stores-proxy_config"></a>

Puede configurar AWS IoT SiteWise Edge para que funcione con un servidor proxy durante la instalación de la puerta de enlace. El script de instalación admite proxies HTTP y HTTPS y puede configurar automáticamente almacenes de confianza para conexiones proxy seguras.

Al ejecutar el script de instalación con la configuración del proxy, realiza varias tareas importantes:
+ Valida el formato y los parámetros de la URL del proxy para garantizar que estén correctamente especificados.
+ Descarga e instala las dependencias necesarias a través del proxy configurado.
+ Si se proporciona un certificado de CA proxy, se adjunta al certificado de CA AWS IoT Greengrass raíz y se importa a Java. KeyStore
+ Se configura AWS IoT Greengrass (lo que usa SiteWise Edge) para usar el proxy en todas las conexiones salientes.
+ Completa la instalación de SiteWise Edge con las configuraciones de proxy y almacén de confianza adecuadas.

**Para configurar los ajustes del proxy al instalar el software de puerta de enlace**

1. Cree una puerta de enlace SiteWise Edge. Para obtener más información, consulte [Cree una puerta de enlace SiteWise Edge autohospedada](create-gateway-ggv2.md) y [Instale el software AWS IoT SiteWise Edge Gateway en su dispositivo local](install-gateway-software-on-local-device.md).

1. Ejecute el script de instalación con la configuración de proxy adecuada para su entorno. Sustituya los marcadores de posición por su información de proxy específica 

   Sustituya cada uno de los siguientes elementos:
   + `-p`, `--proxy-url` — La URL del servidor proxy. La URL debe ser una de las dos `http``https`.
   + `-n`, `--no-proxy` — Una lista de direcciones separadas por comas para evitar el proxy.
   + (Opcional)`-c`, `--proxy-ca-cert` — Ruta al archivo de certificado de CA del proxy.
   + (Opcional)`-j`, `--javastorepass` — La KeyStore contraseña de Java. La contraseña predeterminada es `changeit`.

------
#### [ Linux ]

   Para los sistemas Linux, utilice la siguiente estructura de comandos:

   ```
   sudo ./install.sh -p proxy-url -n no-proxy-addresses [-c proxy-ca-cert-path] [-j javastorepass]
   ```

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

   Para Microsoft Windows los sistemas que utilizan PowerShell, utilice esta estructura de comandos:

   ```
   .\install.ps1 -ProxyUrl proxy-url -NoProxyAddresses no-proxy-addresses [-ProxyCaCertPath proxy-ca-cert-path] [-JavaStorePass javastorepass]
   ```

------

## Solución de problemas durante una instalación con proxy
<a name="manage-trust-stores-proxy_installation-process_troubleshooting"></a>

Para obtener más información sobre cómo resolver los problemas del almacén de confianza relacionados con una puerta de enlace SiteWise Edge, consulte[Problemas de instalación con proxy](troubleshooting-gateway.md#troubleshoot-proxy-during-installation).

# Configure manualmente los almacenes de confianza para que sean compatibles con el proxy HTTPS en AWS IoT SiteWise Edge
<a name="manage-trust-stores-proxy_trust-store-locations-and-configuration"></a>

Al configurar los componentes de AWS IoT SiteWise Edge para que se conecten a través de un proxy HTTPS, añada el certificado del servidor proxy a los almacenes de confianza correspondientes. SiteWise Edge usa varios almacenes de confianza para proteger las comunicaciones. Hay tres almacenes de confianza y el uso que haga de ellos depende del tipo de componente de SiteWise Edge que utilice en la implementación de la puerta de enlace.

Los almacenes de confianza se actualizan automáticamente durante el proceso de instalación cuando se proporciona la configuración del proxy.
+ [Configure un almacén de confianza de componentes AWS IoT Greengrass principales](#manage-trust-stores-proxy_greengrass-core-components)— El certificado AWS IoT Greengrass raíz de la CA se incluye en los almacenes de confianza para comprobar la autenticidad de AWS los servicios.

  Este almacén de confianza ayuda a AWS IoT Greengrass los componentes a comunicarse de forma segura con AWS los servicios a través del proxy y, al mismo tiempo, verifica la autenticidad de esos servicios.
+ [Configure un almacén de confianza de componentes basado en Java](#manage-trust-stores-proxy_java-based-components)— Java KeyStore (JKS) es el principal almacén de confianza que utilizan los componentes basados en Java para las conexiones. SSL/TLS 

   Las aplicaciones Java se basan en el JKS para establecer conexiones seguras. Por ejemplo, si utilizas el SiteWise editor de IoT o el recopilador SiteWise OPC UA de IoT, que están basados en Java, tendrás que configurar este almacén de confianza. Esto garantiza que estos componentes puedan comunicarse de forma segura a través del proxy HTTPS al enviar datos a la nube o recopilar datos de los servidores OPC UA.
+ [Configuración del almacén de confianza de componentes a nivel del sistema](#manage-trust-stores-proxy_system-level-components)— Cuando se utilizan proxies HTTPS, sus certificados deben añadirse a los almacenes de confianza adecuados para permitir conexiones seguras.

  Cuando se utilizan proxies HTTPS, sus certificados deben añadirse a los almacenes de confianza adecuados para permitir conexiones seguras. Esto es necesario porque los componentes a nivel del sistema, que suelen estar escritos en lenguajes como Rust o Go, se basan en el almacén de confianza del sistema y no en el JKS de Java. Por ejemplo, si utilizas utilidades del sistema que necesitan comunicarse a través del proxy (como las actualizaciones de software o la sincronización horaria), tendrás que configurar el almacén de confianza a nivel del sistema. Esto garantiza que estos componentes y utilidades puedan establecer conexiones seguras a través del proxy.

## Configure un almacén de confianza de componentes AWS IoT Greengrass principales
<a name="manage-trust-stores-proxy_greengrass-core-components"></a>

Para las funciones AWS IoT Greengrass principales que utilizan la CA raíz de Amazon:

1. Localice el archivo del certificado en `/greengrass/v2/AmazonRootCA1.pem`

1. Añada el certificado raíz del proxy HTTPS (autofirmado) a este archivo.

```
-----BEGIN CERTIFICATE-----
MIIEFTCCAv2gAwIQWgIVAMHSAzWG/5YVRYtRQOxXUTEpHuEmApzGCSqGSIb3DQEK
\nCwUAhuL9MQswCQwJVUzEPMAVUzEYMBYGA1UECgwP1hem9uLmNvbSBJbmMuMRww
... content of proxy CA certificate ...
+vHIRlt0e5JAm5\noTIZGoFbK82A0/nO7f/t5PSIDAim9V3Gc3pSXxCCAQoFYnui
GaPUlGk1gCE84a0X\n7Rp/lND/PuMZ/s8YjlkY2NmYmNjMCAXDTE5MTEyN2cM216
gJMIADggEPADf2/m45hzEXAMPLE=
-----END CERTIFICATE-----

-----BEGIN CERTIFICATE-----
MIIDQTCCAimgF6AwIBAgITBmyfz/5mjAo54vB4ikPmljZKyjANJmApzyMZFo6qBg
ADA5MQswCQYDVQQGEwJVUzEPMA0tMVT8QtPHRh8jrdkGA1UEChMGDV3QQDExBBKW
... content of root CA certificate ...
o/ufQJQWUCyziar1hem9uMRkwFwYVPSHCb2XV4cdFyQzR1KldZwgJcIQ6XUDgHaa
5MsI+yMRQ+hDaXJiobldXgjUka642M4UwtBV8oK2xJNDd2ZhwLnoQdeXeGADKkpy
rqXRfKoQnoZsG4q5WTP46EXAMPLE
-----END CERTIFICATE-----
```

### Configure el proxy HTTPS en una puerta de enlace establecida
<a name="manage-trust-stores-proxy_proxy-configuration"></a>

Puede agregar soporte de proxy a una puerta de enlace establecida conectándose al puerto 443 en lugar del puerto 8883. Para obtener más información sobre el uso de un servidor proxy, consulte [Conectarse en el puerto 443 o mediante un proxy de red](https://docs.aws.amazon.com/greengrass/v2/developerguide/configure-greengrass-core-v2.html#configure-alpn-network-proxy) en la *Guía para AWS IoT Greengrass Version 2 desarrolladores*. Si crea una nueva puerta de enlace, puede establecer la configuración del proxy durante la instalación de la puerta de enlace. Para obtener más información, consulte [Configure los ajustes del proxy durante la instalación de la puerta de enlace AWS IoT SiteWise Edge](manage-trust-stores-proxy_config.md).

Cuando utilizas un proxy HTTPS con AWS IoT Greengrass on SiteWise Edge, el software elige automáticamente entre HTTP y HTTPS para las conexiones proxy en función de la URL proporcionada.

**importante**  
Actualiza todos los almacenes de confianza necesarios antes de intentar conectarte a través de un proxy HTTPS.

## Configure un almacén de confianza de componentes basado en Java
<a name="manage-trust-stores-proxy_java-based-components"></a>

Para el SiteWise editor de IoT, el recopilador SiteWise OPC UA de IoT y los servicios Java del paquete de procesamiento de datos, la ubicación predeterminada del almacén de confianza de Java es `$JAVA_HOME/jre/lib/security/cacerts`

**Para añadir un certificado**

1. Cree un archivo para almacenar el certificado del servidor proxy, por ejemplo`proxy.crt`.
**nota**  
Cree el archivo con antelación utilizando el certificado del servidor proxy.

1. Añada el archivo al almacén de confianza de Java mediante el siguiente comando:

   ```
   sudo keytool -import -alias proxyCert -keystore /usr/lib/jvm/java-11-openjdk-amd64/lib/security/cacerts -file proxy.crt
   ```

1. Cuando se le pida, utilice la contraseña predeterminada: `changeit`

## Configuración del almacén de confianza de componentes a nivel del sistema
<a name="manage-trust-stores-proxy_system-level-components"></a>

Para los componentes escritos en Rust, Go y otros lenguajes que utilizan el almacén de confianza del sistema:

------
#### [ Linux ]

Sistemas Linux: añada certificados a `/etc/ssl/certs/ca-certificates.crt`

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

Microsoft Windowssistemas: para configurar el almacén de confianza, siga el procedimiento del [almacén de certificados](https://learn.microsoft.com/en-us/windows-hardware/drivers/install/certificate-stores) de la documentación de *Microsoft Ignite*.

Windows ofrece varios almacenes de certificados, incluidos almacenes independientes para usuarios y ordenadores, cada uno con varios subalmacenes. Para la mayoría de las configuraciones de SiteWise Edge, recomendamos añadir certificados al almacén. `COMPUTER | Trusted Root Certification Authorities` Sin embargo, en función de sus requisitos específicos de configuración y seguridad, es posible que necesite utilizar un almacén diferente.

------

## Solución de problemas con los almacenes de confianza
<a name="manage-trust-stores-proxy_trust-stores-troubleshooting"></a>

Para obtener más información sobre cómo resolver los problemas del almacén de confianza relacionados con una puerta de enlace de SiteWise Edge, consulte[Problemas con el almacén de confianza](troubleshooting-gateway.md#troubleshoot-trust-stores).

# AWS IoT SiteWise APIs Úselo en el borde
<a name="edge-apis"></a>

AWS IoT SiteWise proporciona un subconjunto de ellos APIs, junto con otros específicos para cada entorno APIs, lo que permite una interacción fluida con los modelos de activos y sus activos asociados desplegados en la periferia. Estos modelos de activos deben configurarse para ejecutarse en la periferia. Para obtener más información, consulte instrucciones detalladas sobre este proceso de configuración en [Configure un modelo de activos para el procesamiento de datos en SiteWise Edge](edge-processing.md#process-gateway-data-edge).

Después de configurarlos APIs, puede recuperar datos completos sobre sus modelos de activos y activos individuales. La recuperación de información sobre modelos de activos, activos, paneles, portales y proyectos puede ayudarlo a supervisar los portales y paneles implementados y a acceder a los datos de los activos recopilados en la periferia. Esto proporciona un host central en la red para las interacciones AWS IoT SiteWise sin necesidad de una llamada a la API web. 

**Topics**
+ [Todos los dispositivos AWS IoT SiteWise Edge disponibles APIs](edge-apis-available.md)
+ [Solo Edge APIs para su uso con dispositivos periféricos AWS IoT SiteWise](edge-local-apis.md)
+ [Habilite CORS en Edge AWS IoT SiteWise APIs](enable-cors-edge-apis.md)
+ [Configura los tiempos de espera de las sesiones para Edge AWS IoT SiteWise](edge-apis-session-timeout.md)
+ [Tutorial: Enumere los modelos de activos en una puerta de enlace de AWS IoT SiteWise Edge](edge-apis-tutorial.md)

# Todos los dispositivos AWS IoT SiteWise Edge disponibles APIs
<a name="edge-apis-available"></a>

AWS IoT SiteWise ofrece una variedad de dispositivos periféricos APIs para que pueda completar las tareas de forma local en el dispositivo. Algunas de las ventajas disponibles APIs incluyen la recuperación de modelos de activos, la creación y actualización de las propiedades de los activos y el envío de flujos de datos a la nube. Al aprovecharlos APIs, puede crear soluciones que puedan funcionar en entornos con conectividad de red intermitente o limitada.

## Disponible AWS IoT SiteWise APIs
<a name="edge-apis-available-sw"></a>

Los siguientes AWS IoT SiteWise APIs están disponibles en los dispositivos periféricos:
+ [ListAssetModels](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ListAssetModels.html)
+ [DescribeAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAssetModel.html)
+ [ListAssets](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ListAssets.html)
+ [DescribeAsset](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAsset.html)
+ [DescribeAssetProperty](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAssetProperty.html)
+ [ListAssociatedAssets](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ListAssociatedAssets.html)
+ [GetAssetPropertyAggregates](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_GetAssetPropertyAggregates.html)
+ [GetAssetPropertyValue](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_GetAssetPropertyValue.html)
+ [GetAssetPropertyValueHistory](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_GetAssetPropertyValueHistory.html)
+ [ListDashboards](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ListDashboards.html)
+ [ListPortals](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ListPortals.html)
+ [ListProjectAssets](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ListProjectAssets.html)
+ [ListProjects](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ListProjects.html)
+ [DescribeDashboard](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeDashboard.html)
+ [DescribePortal](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribePortal.html)
+ [DescribeProject](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeProject.html)

## Disponible solo en Edge APIs
<a name="edge-apis-available-local"></a>

Lo siguiente APIs se usa localmente en los dispositivos periféricos:
+ [Autenticación](edge-local-apis.md#edge-local-apis-authenticate): utilice esta API para obtener las credenciales temporales SigV4 que utilizará para realizar llamadas a la API.

# Solo Edge APIs para su uso con dispositivos periféricos AWS IoT SiteWise
<a name="edge-local-apis"></a>

Además de los AWS IoT SiteWise APIs que están disponibles en el borde, hay otros específicos para el borde. Los específicos de los bordes se describen APIs a continuación.

## Autenticación
<a name="edge-local-apis-authenticate"></a>

Obtiene las credenciales de la puerta de enlace Edge SiteWise . Tendrá que añadir usuarios locales o conectarse a su sistema utilizando LDAP o un grupo de usuarios de Linux. Para obtener más información sobre cómo añadir usuarios, consulte [LDAP](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/manage-gateways-ggv2.html#opshub-app) o [Grupo de usuarios de Linux](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/manage-gateways-ggv2.html#opshub-app).

### Sintaxis de la solicitud
<a name="authenticate-request-syntax"></a>

```
POST /authenticate HTTP/1.1
Content-type: application/json
{
  "username": "string",
  "password": "string",
  "authMechanism": "string"
}
```

### Parámetros de solicitud del URI
<a name="authenticate-request-parameters"></a>

La solicitud no utiliza ningún parámetro de URI.

### Cuerpo de la solicitud
<a name="authenticate-request-body"></a>

La solicitud acepta los siguientes datos en formato JSON.

**nombre de usuario**  
El nombre de usuario utilizado para validar la llamada de solicitud.  
Tipo: cadena  
Obligatorio: sí

**contraseña**  
La contraseña del usuario que solicita las credenciales.  
Tipo: cadena  
Obligatorio: sí

**authMechanism**  
El método de autenticación para validar a este usuario en el host.  
Tipo: cadena  
Valores válidos: `ldap`, `linux`, `winnt`  
Obligatorio: sí

### Sintaxis de la respuesta
<a name="authenticate-response-syntax"></a>

```
HTTP/1.1 200
Content-type: application/json
{
  "accessKeyId": "string",
  "secretAccessKey": "string",
  "sessionToken": "string",
  "region": "edge"
}
```

### Elementos de respuesta
<a name="authenticate-response-elements"></a>

Si la acción se realiza correctamente, el servicio devuelve una respuesta HTTP 200.

Los siguientes datos se devuelven en formato JSON.

**accessKeyId**  
El ID de clave de acceso que identifica las credenciales de seguridad temporales.  
Restricciones de longitud: longitud mínima de 16. Longitud máxima de 128.  
Patrón: `[\w]*`

**secretAccessKey**  
La clave de acceso secreta que se puede utilizar para firmar las solicitudes.  
Tipo: cadena

**sessionToken**  
El token que los usuarios deben pasar a la API de servicio para utilizar las credenciales temporales.  
Tipo: cadena

**region**  
La región a la que se dirigen las llamadas a la API.  
Tipo: CONSTANT - `edge`

### Errores
<a name="authenticate-errors"></a>

**IllegalArgumentException**  
La solicitud ha sido rechazada porque el formato del cuerpo del documento proporcionado no era correcto. El mensaje de error describe el error específico.  
Código de estado HTTP: 400

**AccessDeniedException**  
El usuario no tiene credenciales válidas basadas en el proveedor de identidad actual. El mensaje de error describe el mecanismo de autenticación.  
Código de estado HTTP: 403

**TooManyRequestsException**  
La solicitud ha alcanzado su límite de intentos de autenticación. El mensaje de error contiene la cantidad de tiempo que debe esperarse hasta que se realicen nuevos intentos de autenticación.  
Código de estado HTTP: 429

# Habilite CORS en Edge AWS IoT SiteWise APIs
<a name="enable-cors-edge-apis"></a>

Al habilitar el CORS (intercambio de recursos entre orígenes) en AWS IoT SiteWise Edge APIs , las aplicaciones web se comunican directamente con ellos APIs en diferentes dominios. Esto permite una integración perfecta, el intercambio de datos en tiempo real y el acceso a los datos entre dominios sin servidores intermediarios ni soluciones alternativas. Los ajustes del CORS se pueden configurar para especificar los orígenes permitidos, lo que garantiza un acceso controlado desde distintos orígenes. 

**nota**  
CORS está disponible para la versión 3.3.1 y posteriores del componente. Esta función está disponible para la versión 3.3.1 y posteriores del componente. `aws.iot.SiteWiseEdgeProcessor` *Para obtener más información, consulte el [AWS IoT SiteWise procesador](https://docs.aws.amazon.com/greengrass/v2/developerguide/iotsitewise-processor-component.html) en la AWS IoT Greengrass Version 2 Guía para desarrolladores.*

**Para habilitar CORS en Edge SiteWise APIs**

1. Vaya a la [consola de AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. En el panel de navegación, seleccione **Puertas de enlace Edge**.

1. Seleccione la puerta de enlace SiteWise Edge para la que desee habilitar CORS. Puede habilitar CORS en el tipo de AWS IoT Greengrass V2 implementación.

1. En la sección de **configuración de la puerta** de enlace, elija el dispositivo **principal de Greengrass** asociado.

1. En la pestaña **Implementaciones**, en Dispositivos **Greengrass**, seleccione el enlace de implementación correspondiente.

1. En **Acciones**, elija **Revisar y, a continuación, **Revisar**** el despliegue.
**importante**  
Al crear una configuración revisada y habilitada para CORS, se reemplaza la configuración actual del dispositivo.

1. En el **paso 1, especifique el destino**, proporcione un **nombre** opcional para identificar la implementación. 

1. En el **paso 2, Seleccionar los componentes (opcional)**, puede dejar todas las selecciones actuales tal como están y elegir **Siguiente**.

1. En el **paso 3, Configurar los componentes (opcional),** seleccione **aws.iot. SiteWiseEdgeProcessor**y elija **Configurar** componente.

1. En la sección Actualización de la configuración, en Configuración para fusionar, introduzca el siguiente JSON:

   ```
   {
       "AWS_SITEWISE_EDGE_ACCESS_CONTROL_ALLOW_ORIGIN": "*"
   }
   ```
**nota**  
Si `*` se utiliza como valor para, se `AWS_SITEWISE_EDGE_ACCESS_CONTROL_ALLOW_ORIGIN` permiten todos los orígenes. Para los entornos de producción, se recomienda especificar el origen exacto URLs para una mayor seguridad.

1. Elija **Confirmar**.

1. Seleccione **Siguiente** para continuar con los pasos restantes hasta llegar al **paso 5, Revisar**.

1. Revise los cambios de configuración y, a continuación, seleccione **Deploy** para aplicar los cambios a su puerta de enlace SiteWise Edge.
**nota**  
Como alternativa, puede habilitar CORS configurando globalmente la variable `AWS_SITEWISE_EDGE_ACCESS_CONTROL_ALLOW_ORIGIN` de entorno `*` en su AWS IoT SiteWise puerta de enlace.

**nota**  
En el caso del proxy autenticado, `userinfo` debe incluirse en el `url` campo de la configuración del proxy `username` y `password` no como campos separados.

Una vez completada la implementación, CORS se habilita en la API de SiteWise Edge, lo que permite a los orígenes específicos realizar solicitudes de origen cruzado a la API.

# Configura los tiempos de espera de las sesiones para Edge AWS IoT SiteWise
<a name="edge-apis-session-timeout"></a>

SiteWise Edge le permite configurar los tiempos de espera de sesión para la API de SiteWise Edge. Esta función mejora la seguridad al finalizar automáticamente las sesiones inactivas después de un período de tiempo específico. Esta sección le guía a través del proceso de configuración del tiempo de espera de la sesión mediante el. Consola de AWS IoT SiteWise

**nota**  
La configuración del tiempo de espera de la sesión está disponible para la versión 3.4.0 y versiones posteriores del componente. `aws.iot.SiteWiseEdgeProcessor` Para obtener más información, consulte el [AWS IoT SiteWise procesador](https://docs.aws.amazon.com/greengrass/v2/developerguide/iotsitewise-processor-component.html) en la Guía *AWS IoT Greengrass Version 2 para desarrolladores*.

**Para configurar un tiempo de espera de sesión para una puerta de enlace SiteWise Edge**

1. Vaya a la [consola de AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. En el panel de navegación, seleccione **Puertas de enlace Edge**.

1. Elija la puerta de enlace SiteWise Edge en la que desee configurar el tiempo de espera de la sesión.
**nota**  
Puede configurar el tiempo de espera de la sesión según el tipo de AWS IoT Greengrass V2 implementación.

1. En la sección de **configuración de la puerta** de enlace, elija el dispositivo **principal de Greengrass** asociado.

1. En la pestaña **Implementaciones**, en Dispositivos **Greengrass**, seleccione el enlace de implementación correspondiente.

1. **En **Acciones, elija Revisar**.** Lea la advertencia y, a continuación, seleccione **Revisar el despliegue**.
**importante**  
Al crear una configuración de tiempo de espera de sesión revisada, se reemplaza la configuración actual del dispositivo.

1. En el **paso 1, especifique el destino**, proporcione un **nombre** opcional para identificar la implementación revisada y, a continuación, elija **Siguiente**.

1. En el **paso 2, Seleccionar los componentes (opcional)**, puede dejar todas las selecciones actuales tal como están y seleccionar **Siguiente**.

1. En el **paso 3, Configurar los componentes (opcional),** seleccione **aws.iot. SiteWiseEdgeProcessor**y elija **Configurar** componente.

1. En la sección **Actualización de la configuración**, en **Configuración para fusionar**, introduzca el siguiente JSON:

   ```
   {
       "AWS_SITEWISE_EDGE_SESSION_TIMEOUT_MINUTES": "240"
   }
   ```

1. Defina el valor `AWS_SITEWISE_EDGE_SESSION_TIMEOUT_MINUTES` en minutos. Los valores de tiempo de espera de la sesión pueden oscilar entre 1 minuto y 10080 minutos (7 días). El valor predeterminado es 240 minutos (4 horas).

1. Elija **Confirmar**.

1. Seleccione **Siguiente** para continuar con los pasos restantes hasta llegar al paso 5, **Revisar**.

1. Revise los cambios de configuración y, a continuación, seleccione **Deploy** para aplicar los cambios a su puerta de enlace SiteWise Edge.

**nota**  
Como alternativa, puede configurar el tiempo de espera de la sesión configurando la variable de entorno global **AWS\$1SITEWISE\$1EDGE\$1SESSION\$1TIMEOUT\$1MINUTES en el valor deseado (en minutos**) en su puerta de enlace Edge. SiteWise 

Una vez completada la implementación, la nueva configuración de tiempo de espera de la sesión se aplica a la API de Edge. SiteWise 

# Tutorial: Enumere los modelos de activos en una puerta de enlace de AWS IoT SiteWise Edge
<a name="edge-apis-tutorial"></a>

Puede utilizar un subconjunto de los disponibles AWS IoT SiteWise APIs junto con los específicos de Edge APIs para interactuar con los modelos de activos y sus activos en Edge. Este tutorial le explicará cómo obtener credenciales temporales para una puerta de enlace de AWS IoT SiteWise Edge y cómo obtener una lista de los modelos de activos de la puerta de enlace de Edge. SiteWise 

## Requisitos previos
<a name="edge-apis-tutorial-prerequisites"></a>

En los pasos de este tutorial puede utilizar diversas herramientas. Para utilizar estas herramientas, asegúrese de tener instalados los requisitos previos correspondientes.

Necesitará lo siguiente para completar este tutorial:
+ Un [AWS IoT SiteWise Requisitos de la puerta de enlace autohospedada de Edge](configure-gateway-ggv2.md) implementado y en ejecución
+ Acceda a su puerta de enlace SiteWise Edge en la misma red a través del puerto 443.
+ [OpenSSL](https://www.openssl.org/) instalado
+ (AWS OpsHub para AWS IoT SiteWise) La [AWS IoT SiteWise aplicación AWS OpsHub para](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/manage-gateways-ggv2.html#opshub-app)
+ (curl) [curl](https://ec.haxx.se/install/) instalado
+ (Python) [urllib3](https://urllib3.readthedocs.io/en/stable/index.html) instalado
+ (Python) [Python3](https://www.python.org/downloads/) instalado
+ (Python) [Boto3](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html) instalado
+ (Python) [BotoCore](https://botocore.amazonaws.com/v1/documentation/api/latest/index.html)instalado

## Paso 1: Obtenga un certificado firmado por el servicio SiteWise Edge Gateway
<a name="edge-apis-tutorial-gateway-cert"></a>

Para establecer una conexión TLS con la APIs disponible en la puerta de enlace SiteWise Edge, necesita un certificado de confianza. Puede generar este certificado mediante OpenSSL AWS OpsHub o for. AWS IoT SiteWise

------
#### [ OpenSSL ]

**nota**  
Necesita tener instalado [OpenSSL](https://www.openssl.org/) para ejecutar este comando.

Abre una terminal y ejecuta el siguiente comando para obtener un certificado firmado desde la puerta de enlace de SiteWise Edge. `<sitewise_gateway_ip>`Sustitúyala por la IP de la puerta de enlace SiteWise Edge.

```
openssl s_client -connect <sitewise_gateway_ip>:443 </dev/null 2>/dev/null | openssl x509 -outform PEM > GatewayCert.pem
```

------
#### [ AWS OpsHub for AWS IoT SiteWise ]

Se puede usar AWS OpsHub para AWS IoT SiteWise. Para obtener más información, consulte [Administre las puertas de enlace SiteWise Edge](manage-gateways-ggv2.md).

------

En este tutorial se utiliza la ruta absoluta al certificado de puerta de enlace SiteWise Edge descargado. Ejecute el siguiente comando para exportar la ruta completa de su certificado, sustituyendo `<absolute_path_to_certificate>` por la ruta al certificado:

```
export PATH_TO_CERTIFICATE='<absolute_path_to_certificate>'
```

## Paso 2: Obtenga el nombre de host de la puerta de enlace SiteWise Edge
<a name="edge-apis-tutorial-gateway-hostname"></a>

**nota**  
Necesita tener instalado [OpenSSL](https://www.openssl.org/) para ejecutar este comando.

Para completar el tutorial, necesitará el nombre de host de su puerta de enlace SiteWise Edge. Para obtener el nombre de host de la puerta de enlace SiteWise Edge, ejecute lo siguiente y sustitúyalo por `<sitewise_gateway_ip>` la IP de la puerta de enlace SiteWise Edge:

```
openssl s_client -connect <sitewise_gateway_ip>:443 </dev/null 2>/dev/null | grep -Po 'CN = \K.*'| head -1
```

Ejecute el siguiente comando para exportar el nombre de host para usarlo más adelante y `<your_edge_gateway_hostname>` sustitúyalo por el nombre de host de su SiteWise puerta de enlace Edge:

```
export GATEWAY_HOSTNAME='<your_edge_gateway_hostname>'
```

## Paso 3: Obtenga credenciales temporales para su SiteWise puerta de enlace Edge
<a name="edge-apis-tutorial-temporary-credentials"></a>

Ahora que tiene el certificado firmado y el nombre de host de su puerta de enlace SiteWise Edge, necesita obtener credenciales temporales para poder ejecutar APIs en la puerta de enlace. Puede obtener estas credenciales a través de la puerta AWS OpsHub de enlace SiteWise Edge AWS IoT SiteWise o directamente desde ella mediante APIs.

**importante**  
Las credenciales caducan cada 4 horas, por lo que debe obtenerlas justo antes de utilizarlas APIs en su puerta de enlace SiteWise Edge. No almacene las credenciales en caché durante más de 4 horas.

### Obtenga credenciales temporales utilizando AWS OpsHub para AWS IoT SiteWise
<a name="edge-apis-tutorial-temp-creds-opshub"></a>

**nota**  
Necesita tener instalada la [AWS IoT SiteWise aplicación AWS OpsHub for](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/manage-gateways-ggv2.html#opshub-app).

Para utilizar AWS IoT SiteWise la aplicación AWS OpsHub para obtener sus credenciales temporales, haga lo siguiente:

1. Inicie sesión en la aplicación.

1. Seleccione **Configuración**.

1. En **Autenticación**, elija **Copiar credenciales**.

1. Amplíe la opción que se adapte a su entorno y elija **Copiar**.

1. Guarde las credenciales para utilizarlas más tarde.

### Obtenga credenciales temporales mediante la API de SiteWise Edge Gateway
<a name="edge-apis-tutorial-temp-creds-api"></a>

Para usar la API de puerta de enlace de SiteWise Edge para obtener las credenciales temporales, puede usar un script de Python o un curl, primero necesitará tener un nombre de usuario y una contraseña para su puerta de enlace de SiteWise Edge. Las puertas de enlace SiteWise Edge utilizan la autenticación y la autorización SigV4. Para obtener más información sobre cómo añadir usuarios, consulte [LDAP](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/manage-gateways-ggv2.html#opshub-app) o [Grupo de usuarios de Linux](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/manage-gateways-ggv2.html#opshub-app). Estas credenciales se utilizarán en los siguientes pasos para obtener las credenciales locales de la puerta de enlace SiteWise Edge necesarias para utilizarla. AWS IoT SiteWise APIs

------
#### [ Python ]

**nota**  
Necesita tener [urllib3](https://urllib3.readthedocs.io/en/stable/index.html) y [Python3](https://www.python.org/downloads/) instalados.

**Para obtener las credenciales mediante Python**

1. Cree un archivo llamado **get\$1credentials.py** y copie en él el siguiente código.

   ```
   '''
   The following demonstrates how to get the credentials from the SiteWise Edge gateway. You will need to add local users or connect your system to LDAP/AD
   https://docs.aws.amazon.com/iot-sitewise/latest/userguide/manage-gateways-ggv2.html#create-user-pool
   
   Example usage:
       python3 get_credentials.py -e https://<gateway_hostname> -c <path_to_certificate> -u '<gateway_username>' -p '<gateway_password>' -m '<method>'
   '''
   import urllib3
   import json
   import urllib.parse
   import sys
   import os
   import getopt
   
   """
   This function retrieves the AWS IoT SiteWise Edge gateway credentials.
   """
   def get_credentials(endpoint,certificatePath, user, password, method):
       http = urllib3.PoolManager(cert_reqs='CERT_REQUIRED', ca_certs= certificatePath)
       encoded_body = json.dumps({
           "username": user,
           "password": password,
           "authMechanism": method,
       })
   
       url =  urllib.parse.urljoin(endpoint, "/authenticate")
   
       response = http.request('POST', url,
           headers={'Content-Type': 'application/json'}, 
           body=encoded_body)
       
       if response.status != 200:
           raise Exception(f'Failed to authenticate! Response status {response.status}')
   
       auth_data = json.loads(response.data.decode('utf-8'))
   
       accessKeyId = auth_data["accessKeyId"]
       secretAccessKey = auth_data["secretAccessKey"]
       sessionToken = auth_data["sessionToken"]
       region = "edge"
   
       return accessKeyId, secretAccessKey, sessionToken, region
   
   def print_help():
       print('Usage:')
       print(f'{os.path.basename(__file__)} -e <endpoint> -c <path/to/certificate> -u <user> -p <password> -m <method> -a <alias>')
       print('')
       print('-e, --endpoint   edge gateway endpoint. Usually the Edge gateway hostname.')
       print('-c, --cert_path path to downloaded gateway certificate')
       print('-u, --user       Edge user')
       print('-p, --password   Edge password')
       print('-m, --method     (Optional) Authentication method (linux, winnt, ldap), default is linux')
       sys.exit()
   
   
   def parse_args(argv):
       endpoint = ""
       certificatePath = None
       user = None
       password = None
       method = "linux"
       
       try:
           opts, args = getopt.getopt(argv, "he:c:u:p:m:", ["endpoint=","cert_path=", "user=", "password=", "method="])
       except getopt.GetoptError:
           print_help()
   
       for opt, arg in opts:
           if opt == '-h':
               print_help()
           elif opt in ("-e", "--endpoint"):
               endpoint = arg
           elif opt in ("-u", "--user"):
               user = arg
           elif opt in ("-p", "--password"):
               password = arg
           elif opt in ("-m", "--method"):
               method = arg.lower()
           elif opt in ("-c", "--cert_path"):
               certificatePath = arg
   
       if method not in ['ldap', 'linux', 'winnt']:
           print("not valid method parameter, required are ldap, linux, winnt")
           print_help()
   
       if (user == None or password == None):
           print("To authenticate against edge user, password have to be passed together, and the region has to be set to 'edge'")
           print_help()
       
       if(endpoint == ""):
           print("You must provide a valid and reachable gateway hostname")
           print_help()
   
       return endpoint,certificatePath, user, password, method
   
   
   def main(argv):
       # get the command line args
       endpoint, certificatePath, user, password, method = parse_args(argv)
       
       accessKeyId, secretAccessKey, sessionToken, region=get_credentials(endpoint, certificatePath, user, password, method)
   
       print("Copy and paste the following credentials into the shell, they are valid for 4 hours:")
       print(f"export AWS_ACCESS_KEY_ID={accessKeyId}")
       print(f"export AWS_SECRET_ACCESS_KEY={secretAccessKey}")
       print(f"export AWS_SESSION_TOKEN={sessionToken}")
       print(f"export AWS_REGION={region}")
       print()
       
       
       
   
   if __name__ == "__main__":
      main(sys.argv[1:])
   ```

1. Ejecute **get\$1credentials.py** desde el terminal sustituyendo `<gateway_username>` y `<gateway_password>` por las credenciales que ha creado.

   ```
   python3 get_credentials.py -e https://$GATEWAY_HOSTNAME -c $PATH_TO_CERTIFICATE -u '<gateway_username>' -p '<gateway_password>' -m 'linux'
   ```

------
#### [ curl ]

**nota**  
Necesita tener [curl](https://ec.haxx.se/install/) instalado.

**Para obtener las credenciales mediante curl**

1. Ejecute el siguiente comando desde el terminal sustituyendo <gateway\$1username> y <gateway\$1password> por las credenciales que ha creado.

   ```
   curl --cacert $PATH_TO_CERTIFICATE --location \
   -X POST https://$GATEWAY_HOSTNAME:443/authenticate \
   --header 'Content-Type: application/json' \
   --data-raw '{
       "username": "<gateway_username>",
       "password": "<gateway_password>",
       "authMechanism": "linux"
   }'
   ```

   La respuesta debe ser similar a la siguiente:

   ```
   {
       "username": "sweuser",
       "accessKeyId": "<accessKeyId>",
       "secretAccessKey": "<secretAccessKey>",
       "sessionToken": "<sessionToken>",
       "sessionExpiryTime": "2022-11-17T04:51:40.927095Z",
       "authMechanism": "linux",
       "role": "edge-user"
   }
   ```

1. Ejecute el siguiente comando desde el terminal.

   ```
   export AWS_ACCESS_KEY_ID=<accessKeyId>
   export AWS_SECRET_ACCESS_KEY=<secretAccessKey>
   export AWS_SESSION_TOKEN=<sessionToken>
   export AWS_REGION=edge
   ```

------

## Paso 4: Obtenga una lista de los modelos de activos de la puerta de enlace SiteWise Edge
<a name="edge-apis-tutorial-get-asset-models"></a>

Ahora que tiene un certificado firmado, el nombre de host de la puerta de enlace SiteWise Edge y las credenciales temporales de la puerta de enlace SiteWise Edge, puede usar la `ListAssetModels` API para obtener una lista de los modelos de activos de la puerta de enlace SiteWise Edge.

------
#### [ Python ]

**nota**  
Necesitas tener instalado [Python3 y [Boto3](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html)](https://www.python.org/downloads/). [BotoCore](https://botocore.amazonaws.com/v1/documentation/api/latest/index.html)

**Para obtener la lista de modelos de activos mediante Python**

1. Cree un archivo llamado **list\$1asset\$1model.py** y copie el siguiente código en él.

   ```
   import json
   import boto3
   import botocore
   import os
   
   # create the client using the credentials
   client = boto3.client("iotsitewise", 
       endpoint_url= "https://"+ os.getenv("GATEWAY_HOSTNAME"),
       region_name=os.getenv("AWS_REGION"), 
       aws_access_key_id=os.getenv("AWS_ACCESS_KEY_ID"), 
       aws_secret_access_key=os.getenv("AWS_SECRET_ACCESS_KEY"), 
       aws_session_token=os.getenv("AWS_SESSION_TOKEN"),
       verify=os.getenv("PATH_TO_CERTIFICATE"),
       config=botocore.config.Config(inject_host_prefix=False))
   
   # call the api using local credentials
   response = client.list_asset_models()
   print(response)
   ```

1. Ejecute **list\$1asset\$1model.py** desde el terminal.

   ```
   python3 list_asset_model.py
   ```

------
#### [ curl ]

**nota**  
Necesita tener [curl](https://ec.haxx.se/install/) instalado.

**Para obtener la lista de modelos de activos mediante curl**

Ejecute el siguiente comando desde el terminal.

```
curl \
  --request GET https://$GATEWAY_HOSTNAME:443/asset-models \
  --cacert $PATH_TO_CERTIFICATE \
  --aws-sigv4 "aws:amz:edge:iotsitewise" \
  --user "$AWS_ACCESS_KEY_ID:$AWS_SECRET_ACCESS_KEY" \
  -H "x-amz-security-token:$AWS_SESSION_TOKEN"
```

La respuesta debe ser similar a la siguiente:

```
{
    "assetModelSummaries": [
        {
            "arn": "arn:aws:iotsitewise:{region}:{account-id}:asset-model/{asset-model-id}",
            "creationDate": 1.669245291E9,
            "description": "This is a small example asset model",
            "id": "{asset-model-id}",
            "lastUpdateDate": 1.669249038E9,
            "name": "Some Metrics Model",
            "status": {
                "error": null,
                "state": "ACTIVE"
            }
        },
        .
        .
        .
    ],
    "nextToken": null
}
```

------