

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.

# Tipos de componentes de ejemplo
<a name="twinmaker-component-types-examples"></a>

Este tema contiene ejemplos que muestran cómo implementar los conceptos clave de los tipos de componentes.

## Alarma (abstracta)
<a name="twinmaker-component-types-examples-alarm"></a>

El siguiente ejemplo es el tipo de componente de alarma abstracto que aparece en la AWS IoT TwinMaker consola. Contiene una lista de `functions` que consta de un `dataReader` que no tiene ningún valor `implementedBy`.

```
{
  "componentTypeId": "com.example.alarm.basic:1",
  "workspaceId": "{{MyWorkspace}}",
  "description": "Abstract alarm component type",
  "functions": {
    "dataReader": {
         "isInherited": false
    }
  },
  "isSingleton": false,
  "propertyDefinitions": {
    "alarm_key": {
      "dataType": { "type": "STRING" },
      "isExternalId": true,
      "isRequiredInEntity": true,
      "isStoredExternally": false,
      "isTimeSeries": false
    },
    "alarm_status": {
      "dataType": {
        "allowedValues": [
          {
            "stringValue": "ACTIVE"
          },
          {
            "stringValue": "SNOOZE_DISABLED"
          },
          {
            "stringValue": "ACKNOWLEDGED"
          },
          {
            "stringValue": "NORMAL"
          }
        ],
        "type": "STRING"
      },
      "isRequiredInEntity": false,
      "isStoredExternally": true,
      "isTimeSeries": true
    }
  }
}
```

Notas:

Los valores para `componentTypeId` y `workspaceID` son obligatorios. El valor de `componentTypeId` debe ser exclusivo de su espacio de trabajo. El valor de `alarm_key` es un identificador único que una función puede utilizar para recuperar datos de la alarma de un origen externo. El valor de la clave es obligatorio y se almacena en AWS IoT TwinMaker. Los valores `alarm_status` de las series temporales se almacenan en el origen externo.

Hay más ejemplos disponibles en [Muestras de AWS IoT TwinMaker](https://github.com/aws-samples/aws-iot-twinmaker-samples).

## Telemetría de Timestream
<a name="twinmaker-component-types-examples-telemetry"></a>

El siguiente ejemplo es un tipo de componente simple que recupera datos de telemetría sobre un tipo específico de componente (como una alarma o un mezclador de galletas) de una fuente externa. Especifica una función de Lambda que hereda los tipos de componentes.

```
{
    "componentTypeId": "com.example.timestream-telemetry",
    "workspaceId": "{{MyWorkspace}}",
    "functions": {
        "dataReader": {
            "implementedBy": {
                "lambda": {
                    "arn": "{{lambdaArn}}"
                }
            }
        }
    },
    "propertyDefinitions": {
        "telemetryType": {
            "dataType": { "type": "STRING" },
            "isExternalId": false,
            "isStoredExternally": false,
            "isTimeSeries": false,
            "isRequiredInEntity": true
        },
        "telemetryId": {
            "dataType": { "type": "STRING" },
            "isExternalId": false,
            "isStoredExternally": false,
            "isTimeSeries": false,
            "isRequiredInEntity": true
        }
    }
}
```

## Alarma (se hereda de una alarma abstracta)
<a name="twinmaker-component-types-examples-alarm-implementation"></a>

En el siguiente ejemplo se heredan los tipos de componentes de la alarma abstracta y de telemetría de Timestream. Especifica su propia función de Lambda que recupera los datos de la alarma.

```
{
    "componentTypeId": "com.example.cookiefactory.alarm",
    "workspaceId": "{{MyWorkspace}}",
    "extendsFrom": [
        "com.example.timestream-telemetry",
        "com.amazon.iottwinmaker.alarm.basic"
    ],
    "propertyDefinitions": {
        "telemetryType": {
            "defaultValue": {
                "stringValue": "Alarm"
            }
        }
    },
    "functions": {
        "dataReader": {
            "implementedBy": {
                "lambda": {
                    "arn": "{{lambdaArn}}"
                }
            }
        }
    }
}
```

**nota**  
Como el conector de la alarma hereda del tipo de componente de la alarma abstracta, la función de Lambda debe devolver el valor `alarm_key`. Si no devuelve este valor, Grafana no lo reconocerá como una alarma. Esto es obligatorio para todos los componentes que devuelven alarmas.

## Ejemplos de equipamiento
<a name="twinmaker-component-types-examples-equipment"></a>

En los ejemplos en esta sección se muestra cómo modelar posibles equipos. Puede utilizar estos ejemplos para obtener algunas ideas sobre cómo modelar equipos en sus propios procesos.

### Mezclador de cookies
<a name="twinmaker-component-types-examples-mixer"></a>

En el siguiente ejemplo se hereda del tipo de componente de telemetría de Timestream. Especifica propiedades de series temporales adicionales para la velocidad de rotación y la temperatura del mezclador de cookies.

```
{
    "componentTypeId": "com.example.cookiefactory.mixer",
    "workspaceId": "{{MyWorkspace}}",
    "extendsFrom": [
        "com.example.timestream-telemetry"
    ],
    "propertyDefinitions": {
        "telemetryType": {
            "defaultValue" : { "stringValue": "Mixer" }
        },
        "RPM": {
            "dataType": { "type": "DOUBLE" },
            "isTimeSeries": true,
            "isStoredExternally": true
        },
        "Temperature": {
            "dataType": { "type": "DOUBLE" },
            "isTimeSeries": true,
            "isStoredExternally": true
        }
    }
}
```

### Depósito de agua
<a name="twinmaker-component-types-examples-watertank"></a>

En el siguiente ejemplo se hereda del tipo de componente de telemetría de Timestream. Especifica propiedades de series temporales adicionales para el volumen y el caudal de un depósito de agua.

```
{
    "componentTypeId": "com.example.cookiefactory.watertank",
    "workspaceId": "{{MyWorkspace}}",
    "extendsFrom": [
        "com.example.timestream-telemetry"
    ],
    "propertyDefinitions": {
        "telemetryType": {
            "defaultValue" : { "stringValue": "WaterTank" }
        },
        "tankVolume1": {
            "dataType": { "type": "DOUBLE" },
            "isTimeSeries": true,
            "isStoredExternally": true
        },
        "tankVolume2": {
            "dataType": { "type": "DOUBLE" },
            "isTimeSeries": true,
            "isStoredExternally": true
        },
        "flowRate1": {
            "dataType": { "type": "DOUBLE" },
            "isTimeSeries": true,
            "isStoredExternally": true
        },
        "flowrate2": {
            "dataType": { "type": "DOUBLE" },
            "isTimeSeries": true,
            "isStoredExternally": true
        }
    }
}
```

### Ubicación del espacio
<a name="twinmaker-component-types-examples-space"></a>

El siguiente ejemplo contiene propiedades, cuyos valores se almacenan en. AWS IoT TwinMaker Como los valores los especifican los usuarios y se almacenan internamente, no es necesaria ninguna función para recuperarlos. En el ejemplo también se usa el tipo de datos `RELATIONSHIP` para especificar una relación con otro tipo de componente.

Este componente proporciona un mecanismo ligero para agregar contexto a un gemelo digital. Puede usarlo para agregar metadatos que indiquen dónde se encuentra algo. También puede usar esta información en la lógica que se utiliza para determinar qué cámaras pueden ver un equipo o un espacio, o para saber cómo enviar a alguien a un lugar.

```
{
    "componentTypeId": "com.example.cookiefactory.space",
    "workspaceId": "{{MyWorkspace}}",
    "propertyDefinitions": {
        "position":  {"dataType": {"nestedType": {"type": "DOUBLE"},"type": "LIST"}},
        "rotation":  {"dataType": {"nestedType": {"type": "DOUBLE"},"type": "LIST"}},
        "bounds":  {"dataType": {"nestedType": {"type": "DOUBLE"},"type": "LIST"}},
        "parent_space" : { "dataType": {"type": "RELATIONSHIP"}}
    }
}
```