

Aviso de fin de soporte: el 7 de octubre de 2026, AWS suspenderemos el soporte para AWS IoT Greengrass Version 1. Después del 7 de octubre de 2026, ya no podrá acceder a los AWS IoT Greengrass V1 recursos. Para obtener más información, visita [Migrar desde AWS IoT Greengrass Version 1](https://docs.aws.amazon.com/greengrass/v2/developerguide/migrate-from-v1.html).

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.

# Conector adaptador de protocolo Modbus-RTU
<a name="modbus-protocol-adapter-connector"></a>

El [conector](connectors.md) del adaptador de protocolo Modbus-RTU recopila información de los dispositivos Modbus RTU que están en el grupo. AWS IoT Greengrass 

Este conector recibe los parámetros de una solicitud de Modbus RTU de una función de Lambda definida por el usuario. Envía la solicitud correspondiente y, a continuación, publica la respuesta del dispositivo de destino como mensaje de MQTT.

Este conector tiene las siguientes versiones.


| Versión | ARN | 
| --- | --- | 
| 3 | `arn:aws:greengrass:region::/connectors/ModbusRTUProtocolAdapter/versions/3` | 
| 2. | `arn:aws:greengrass:region::/connectors/ModbusRTUProtocolAdapter/versions/2` | 
| 1 | `arn:aws:greengrass:region::/connectors/ModbusRTUProtocolAdapter/versions/1` | 

Para obtener información sobre los cambios de versión, consulte el [Registro de cambios](#modbus-protocol-adapter-connector-changelog).

## Requisitos
<a name="modbus-protocol-adapter-connector-req"></a>

Este conector exige los siguientes requisitos:

------
#### [ Version 3 ]
+ <a name="conn-req-ggc-v1.9.3"></a>AWS IoT Greengrass Software básico v1.9.3 o posterior.
+ <a name="conn-req-py-3.7-and-3.8"></a>Se necesita tener la versión 3.7 o 3.8 de [Python](https://www.python.org/) instalada en el dispositivo principal y añadido a la variable de entorno PATH.
**nota**  <a name="use-runtime-py3.8"></a>
Para usar Python 3.8, ejecute el siguiente comando para crear un enlace simbólico desde la carpeta de instalación predeterminada de Python 3.7 a los binarios de Python 3.8 instalados.  

  ```
  sudo ln -s path-to-python-3.8/python3.8 /usr/bin/python3.7
  ```
Esto configura su dispositivo para que cumpla con el requisito de Python para AWS IoT Greengrass.
+ <a name="conn-modbus-req-physical-connection"></a>Una conexión física entre el AWS IoT Greengrass núcleo y los dispositivos Modbus. El núcleo debe ser conectado físicamente a la red de Modbus RTU a través de un puerto serie (por ejemplo, un puerto USB).
+ <a name="conn-modbus-req-serial-port-resource"></a>Un [recurso de dispositivo local](access-local-resources.md) en el grupo Greengrass que apunta al puerto serie Modbus físico.
+ <a name="conn-modbus-req-user-lambda"></a>Una función de Lambda definida por el usuario que envía los parámetros de una solicitud de Modbus RTU a este conector. Los parámetros de la solicitud deben ajustarse a los patrones esperados e incluir las direcciones IDs y direcciones de los dispositivos de destino de la red Modbus RTU. Para obtener más información, consulte [Datos de entrada](#modbus-protocol-adapter-connector-data-input).

------
#### [ Versions 1 - 2 ]
+ <a name="conn-req-ggc-v1.7.0"></a>AWS IoT Greengrass Software básico v1.7 o posterior.
+ Versión 2.7 de [Python](https://www.python.org/) instalada en el dispositivo principal y añadida a la variable de entorno PATH.
+ <a name="conn-modbus-req-physical-connection"></a>Una conexión física entre el AWS IoT Greengrass núcleo y los dispositivos Modbus. El núcleo debe ser conectado físicamente a la red de Modbus RTU a través de un puerto serie (por ejemplo, un puerto USB).
+ <a name="conn-modbus-req-serial-port-resource"></a>Un [recurso de dispositivo local](access-local-resources.md) en el grupo Greengrass que apunta al puerto serie Modbus físico.
+ <a name="conn-modbus-req-user-lambda"></a>Una función de Lambda definida por el usuario que envía los parámetros de una solicitud de Modbus RTU a este conector. Los parámetros de la solicitud deben ajustarse a los patrones esperados e incluir las direcciones IDs y direcciones de los dispositivos de destino de la red Modbus RTU. Para obtener más información, consulte [Datos de entrada](#modbus-protocol-adapter-connector-data-input).

------

## Parámetros de conector
<a name="modbus-protocol-adapter-connector-param"></a>

Este conector admite los siguientes parámetros:

`ModbusSerialPort-ResourceId`  
El ID del recurso de dispositivo local que representa el puerto de serie físico de Modbus.  
A este conector se le concede acceso de lectura y escritura al recurso.
Nombre para mostrar en la AWS IoT consola: recurso de puerto serie **Modbus**  
Obligatorio: `true`  
Tipo: `string`  
Patrón válido: `.+`

`ModbusSerialPort`  
La ruta absoluta del puerto de serie físico de Modbus del dispositivo. Esta es la ruta de origen que haya especificado para el recurso de dispositivo local de Modbus.  
Nombre para mostrar en la AWS IoT consola: **ruta de origen del recurso de puerto serie Modbus**  
Obligatorio: `true`  
Tipo: `string`  
Patrón válido: `.+`

### Ejemplo de creación de conector (AWS CLI)
<a name="modbus-protocol-adapter-connector-create"></a>

El siguiente comando CLI crea un `ConnectorDefinition` con una versión inicial que contiene el conector del adaptador del protocolo Modbus-RTU.

```
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{
    "Connectors": [
        {
            "Id": "MyModbusRTUProtocolAdapterConnector",
            "ConnectorArn": "arn:aws:greengrass:region::/connectors/ModbusRTUProtocolAdapter/versions/3",
            "Parameters": {
                "ModbusSerialPort-ResourceId": "MyLocalModbusSerialPort",
                "ModbusSerialPort": "/path-to-port"
            }
        }
    ]
}'
```

**nota**  
La función de Lambda de este conector tiene un ciclo de vida [prolongado](lambda-functions.md#lambda-lifecycle).

En la AWS IoT Greengrass consola, puede añadir un conector desde la página de **conectores** del grupo. Para obtener más información, consulte [Introducción a los conectores de Greengrass (consola)](connectors-console.md).

**nota**  
Tras implementar el conector del adaptador de protocolo Modbus-RTU, podrás utilizarlo AWS IoT Things Graph para organizar las interacciones entre los dispositivos de tu grupo. Para obtener más información, consulte [Modbus](https://docs.aws.amazon.com/thingsgraph/latest/ug/iot-tg-protocols-modbus.html) en la *Guía del usuario de AWS IoT Things Graph *.

## Datos de entrada
<a name="modbus-protocol-adapter-connector-data-input"></a>

Este conector acepta los parámetros de una solicitud de Modbus RTU de una función de Lambda definida por el usuario en un tema de MQTT. Los mensajes de entrada deben tener un formato JSON válido.

<a name="topic-filter"></a>**Filtro de temas en la suscripción**  
`modbus/adapter/request`

**Propiedades de mensajes**  
El mensaje de solicitud varía en función del tipo de solicitud de Modbus RTU que representa. Las siguientes propiedades son necesarias para todas las solicitudes:  
+ En el objeto `request`:
  + `operation`. Nombre de la operación que se va a ejecutar. Por ejemplo, especifique `"operation": "ReadCoilsRequest"` para leer salidas digitales (coils). Este valor debe ser una cadena Unicode. Para obtener información sobre las operaciones admitidas, consulte [Solicitudes y respuestas de Modbus RTU](#modbus-protocol-adapter-connector-requests-responses).
  + `device`. El dispositivo de destino de la solicitud. Este valor debe estar entre `0 - 247`.
+ La propiedad `id`. ID de la solicitud. Este valor se utiliza para la desduplicación de datos y se devuelve tal cual se encuentra en la propiedad `id` de todas las respuestas, incluidas las de error. Este valor debe ser una cadena Unicode.
Si la solicitud incluye un campo de dirección, debe especificar el valor como un entero. Por ejemplo, `"address": 1`.
El resto de los parámetros que se incluirán en la solicitud dependen de la operación. Todos los parámetros de solicitud son necesarios, excepto el CRC, que se gestiona por separado. Para ver ejemplos, consulte [Solicitudes y respuestas de ejemplo](#modbus-protocol-adapter-connector-examples).

**Ejemplo de entrada: Solicitud de lectura de salidas digitales (coils)**  

```
{
    "request": {
        "operation": "ReadCoilsRequest",
    	"device": 1,
    	"address": 1,
    	"count": 1
    },
    "id": "TestRequest"
}
```

## Datos de salida
<a name="modbus-protocol-adapter-connector-data-output"></a>

Este conector publica las respuestas a las solicitudes de Modbus RTU entrantes.

<a name="topic-filter"></a>**Filtro de temas en la suscripción**  
`modbus/adapter/response`

**Propiedades de mensajes**  
El formato del mensaje de respuesta varía en función de la solicitud correspondiente y el estado de la respuesta. Para ver ejemplos, consulte [Solicitudes y respuestas de ejemplo](#modbus-protocol-adapter-connector-examples).  
Una respuesta para una operación de escritura es simplemente un eco de la solicitud. Aunque no se devuelve información significante para las respuestas de escritura, se recomienda comprobar el estado de la respuesta.
Cada respuesta incluye las siguientes propiedades:  
+ En el objeto `response`:
  + `status`. El estado de la solicitud. El estado puede ser uno de los siguientes valores:
    + `Success`. La solicitud es válida, se envía a la red de Modbus RTU y se devuelve una respuesta.
    + `Exception`. La solicitud es válida, se envía a la red de Modbus RTU y se devuelve una respuesta de excepción. Para obtener más información, consulte [Estado de respuesta: excepción](#modbus-protocol-adapter-connector-response-exception).
    + `No Response`. La solicitud no era válida y el conector detecta el error antes de que la solicitud se envíe a través de la red de Modbus RTU. Para obtener más información, consulte [Estado de respuesta: sin respuesta](#modbus-protocol-adapter-connector-response-noresponse).
  + `device`. El dispositivo al que se envía la solicitud.
  + `operation`. El tipo de solicitud que se envía.
  + `payload`. El contenido de la respuesta que se ha devuelto. Si `status` es `No Response`, este objeto contiene únicamente una propiedad `error` con la descripción de error (por ejemplo, `"error": "[Input/Output] No Response received from the remote unit"`).
+ La propiedad `id`. La ID de la solicitud, que se utilizan para la desduplicación de datos.

**Ejemplo de salida: Correcto**  

```
{
    "response" : {
        "status" : "success",
        "device": 1,
    	"operation": "ReadCoilsRequest",
    	"payload": {
        	"function_code": 1,
        	"bits": [1]
    	}
     },
     "id" : "TestRequest"
}
```

**Ejemplo de salida: Error**  

```
{
    "response" : {
        "status" : "fail",
        "error_message": "Internal Error",
        "error": "Exception",
        "device": 1,
    	"operation": "ReadCoilsRequest",
    	"payload": {
        	"function_code": 129,
        	"exception_code": 2
    	}
     },
     "id" : "TestRequest"
}
```
Para obtener más ejemplos, consulte [Solicitudes y respuestas de ejemplo](#modbus-protocol-adapter-connector-examples).

## Solicitudes y respuestas de Modbus RTU
<a name="modbus-protocol-adapter-connector-requests-responses"></a>

Este conector acepta los parámetros de solicitud de Modbus RTU como [datos de entrada](#modbus-protocol-adapter-connector-data-input) y publica las respuestas como [datos de salida](#modbus-protocol-adapter-connector-data-output).

Se admiten las siguientes operaciones comunes.


| Nombre de la operación en la solicitud | Código de característica en la respuesta | 
| --- | --- | 
| ReadCoilsRequest | 01 | 
| ReadDiscreteInputsRequest | 02 | 
| ReadHoldingRegistersRequest | 03 | 
| ReadInputRegistersRequest | 04 | 
| WriteSingleCoilRequest | 05 | 
| WriteSingleRegisterRequest | 06 | 
| WriteMultipleCoilsRequest | 15 | 
| WriteMultipleRegistersRequest | 16 | 
| MaskWriteRegisterRequest | 22 | 
| ReadWriteMultipleRegistersRequest | 23 | 

### Solicitudes y respuestas de ejemplo
<a name="modbus-protocol-adapter-connector-examples"></a>

A continuación, se muestran ejemplos de solicitudes y respuestas de las operaciones compatibles.

Leer bobinas  
**Ejemplo de solicitud:**  

```
{
    "request": {
        "operation": "ReadCoilsRequest",
    	"device": 1,
    	"address": 1,
    	"count": 1
    },
    "id": "TestRequest"
}
```
**Ejemplo de respuesta:**  

```
{
    "response": {
        "status": "success",
        "device": 1,
    	"operation": "ReadCoilsRequest",
    	"payload": {
        	"function_code": 1,
        	"bits": [1]
    	}
     },
     "id" : "TestRequest"
}
```

Leer entradas discretas  
**Ejemplo de solicitud:**  

```
{
    "request": {
        "operation": "ReadDiscreteInputsRequest",
        "device": 1,
        "address": 1,
        "count": 1
    },
    "id": "TestRequest"
}
```
**Ejemplo de respuesta:**  

```
{
    "response": {
        "status": "success",
        "device": 1,
        "operation": "ReadDiscreteInputsRequest",
        "payload": {
            "function_code": 2,
            "bits": [1]
        }
     },
     "id" : "TestRequest"
}
```

Leer registros mantenidos  
**Ejemplo de solicitud:**  

```
{
    "request": {
        "operation": "ReadHoldingRegistersRequest",
    	"device": 1,
    	"address": 1,
    	"count": 1
    },
    "id": "TestRequest"
}
```
**Ejemplo de respuesta:**  

```
{
    "response": {
        "status": "success",
        "device": 1,
    	"operation": "ReadHoldingRegistersRequest",
    	"payload": {
    	    "function_code": 3,
            "registers": [20,30]
    	}
     },
     "id" : "TestRequest"
}
```

Leer registros de entrada  
**Ejemplo de solicitud:**  

```
{
    "request": {
        "operation": "ReadInputRegistersRequest",
    	"device": 1,
    	"address": 1,
    	"value": 1
    },
    "id": "TestRequest"
}
```

Escribir una única bobina  
**Ejemplo de solicitud:**  

```
{
    "request": {
        "operation": "WriteSingleCoilRequest",
    	"device": 1,
    	"address": 1,
    	"value": 1
    },
    "id": "TestRequest"
}
```
**Ejemplo de respuesta:**  

```
{
    "response": {
        "status": "success",
        "device": 1,
    	"operation": "WriteSingleCoilRequest",
    	"payload": {
    	    "function_code": 5,
    	    "address": 1,
    	    "value": true
    	}
     },
     "id" : "TestRequest"
```

Escribir un único registro  
**Ejemplo de solicitud:**  

```
{
    "request": {
        "operation": "WriteSingleRegisterRequest",
    	"device": 1,
    	"address": 1,
    	"value": 1
    },
    "id": "TestRequest"
}
```

Escribir varias bobinas  
**Ejemplo de solicitud:**  

```
{
    "request": {
        "operation": "WriteMultipleCoilsRequest",
    	"device": 1,
    	"address": 1,
    	"values": [1,0,0,1]
    },
    "id": "TestRequest"
}
```
**Ejemplo de respuesta:**  

```
{
    "response": {
        "status": "success",
        "device": 1,
    	"operation": "WriteMultipleCoilsRequest",
    	"payload": {
    	    "function_code": 15,
    	    "address": 1,
    	    "count": 4
    	}
     },
     "id" : "TestRequest"
}
```

Escribir varios registros  
**Ejemplo de solicitud:**  

```
{
    "request": {
        "operation": "WriteMultipleRegistersRequest",
    	"device": 1,
    	"address": 1,
    	"values": [20,30,10]
    },
    "id": "TestRequest"
}
```
**Ejemplo de respuesta:**  

```
{
    "response": {
        "status": "success",
        "device": 1,
    	"operation": "WriteMultipleRegistersRequest",
    	"payload": {
    	    "function_code": 23,
    	    "address": 1,
       		"count": 3
    	}
     },
     "id" : "TestRequest"
}
```

Máscara de registro de escritura  
**Ejemplo de solicitud:**  

```
{
    "request": {
        "operation": "MaskWriteRegisterRequest",
    	"device": 1,
    	"address": 1,
        "and_mask": 175,
        "or_mask": 1
    },
    "id": "TestRequest"
}
```
**Ejemplo de respuesta:**  

```
{
    "response": {
        "status": "success",
        "device": 1,
    	"operation": "MaskWriteRegisterRequest",
    	"payload": {
    	    "function_code": 22,
            "and_mask": 0,
            "or_mask": 8
    	}
     },
     "id" : "TestRequest"
}
```

Leer y escribir varios registros  
**Ejemplo de solicitud:**  

```
{
    "request": {
        "operation": "ReadWriteMultipleRegistersRequest",
    	"device": 1,
    	"read_address": 1,
        "read_count": 2,
        "write_address": 3,
        "write_registers": [20,30,40]
    },
    "id": "TestRequest"
}
```
**Ejemplo de respuesta:**  

```
{
    "response": {
        "status": "success",
        "device": 1,
    	"operation": "ReadWriteMultipleRegistersRequest",
    	"payload": {
    	    "function_code": 23,
    	    "registers": [10,20,10,20]
    	}
     },
     "id" : "TestRequest"
}
```
Los registros devueltos en esta respuesta son los registros desde los que se lee.

### Estado de respuesta: excepción
<a name="modbus-protocol-adapter-connector-response-exception"></a>

Las excepciones pueden producirse cuando el formato de la solicitud es válido, pero la solicitud no se completó correctamente. En este caso, la respuesta contiene la siguiente información:
+ `status` se establece en `Exception`.
+ `function_code` equivale al código de la característica de la solicitud \$1 128.
+ `exception_code` contiene el código de excepción. Para obtener más información, consulte los códigos de excepción de Modbus.

**Ejemplo:**

```
{
    "response" : {
        "status" : "fail",
        "error_message": "Internal Error",
        "error": "Exception",
        "device": 1,
    	"operation": "ReadCoilsRequest",
    	"payload": {
        	"function_code": 129,
        	"exception_code": 2
    	}
     },
     "id" : "TestRequest"
}
```

### Estado de respuesta: sin respuesta
<a name="modbus-protocol-adapter-connector-response-noresponse"></a>

Este conector realiza las comprobaciones de validación de la solicitud de Modbus. Por ejemplo, comprueba los formatos no válidos y los campos que faltan. Si no se supera la validación, el conector no envía la solicitud. En su lugar, devuelve una respuesta que contiene la siguiente información:
+ `status` se establece en `No Response`.
+ `error` contiene el motivo del error.
+ `error_message` contiene el mensaje de error.

**Ejemplos**:

```
{
    "response" : {
        "status" : "fail",
        "error_message": "Invalid address field. Expected <type 'int'>, got <type 'str'>",
        "error": "No Response",
        "device": 1,
    	"operation": "ReadCoilsRequest",
    	"payload": {
        	"error": "Invalid address field. Expected <type 'int'>, got <type 'str'>"
    	}
     },
     "id" : "TestRequest"
}
```

Si la solicitud selecciona como destino un dispositivo inexistente o si la red de Modbus RTU no funciona, es posible que aparezca una respuesta `ModbusIOException`, que utiliza el formato de respuesta No.

```
{
    "response" : {
        "status" : "fail",
        "error_message": "[Input/Output] No Response received from the remote unit",
        "error": "No Response",
        "device": 1,
    	"operation": "ReadCoilsRequest",
    	"payload": {
        	"error": "[Input/Output] No Response received from the remote unit"
    	}
     },
     "id" : "TestRequest"
}
```

## Ejemplo de uso
<a name="modbus-protocol-adapter-connector-usage"></a>

<a name="connectors-setup-intro"></a>Utilice los siguientes pasos de alto nivel para configurar una función de Lambda de Python 3.7 de ejemplo que puede utilizar para probar el conector.

**nota**  <a name="connectors-setup-get-started-topics"></a>
Si usa otros tiempos de ejecución de Python, puede crear un enlace simbólico de Python3.x a Python 3.7.
Los temas [Introducción a los conectores (consola)](connectors-console.md) y [Introducción a los conectores (CLI)](connectors-cli.md) contienen pasos detallados que muestran cómo configurar e implementar un conector de notificaciones Twilio de ejemplo.

1. Asegúrese de cumplir los [requisitos](#modbus-protocol-adapter-connector-req) para el conector.

1. <a name="connectors-setup-function"></a>Cree y publique una función de Lambda que envíe datos de entrada al conector.

   Guarde el [código de ejemplo](#modbus-protocol-adapter-connector-usage-example) como un archivo PY. <a name="connectors-setup-function-sdk"></a>Descargue y descomprima el [SDK de AWS IoT Greengrass Core para Python](lambda-functions.md#lambda-sdks-core). A continuación, cree un paquete zip que contenga el archivo PY y la carpeta `greengrasssdk` en el nivel raíz. Este paquete zip es el paquete de implementación que se carga en AWS Lambda.

   <a name="connectors-setup-function-publish"></a>Después de crear la función de Lambda de Python 3.7, publique una versión de característica y cree un alias.

1. Configuración del grupo de Greengrass.

   1. <a name="connectors-setup-gg-function"></a>Agregue la función de Lambda por su alias (recomendado). Configure el ciclo de vida de Lambda como de larga duración (o `"Pinned": true` en la CLI).

   1. <a name="connectors-setup-device-resource"></a>Añada el recurso de dispositivo local necesario y conceda read/write acceso a la función Lambda.

   1. Agregue el conector y configure sus [parámetros](#modbus-protocol-adapter-connector-param).

   1. Agregue suscripciones que permitan al conector recibir [datos de entrada](#modbus-protocol-adapter-connector-data-input) y enviar [datos de salida](#modbus-protocol-adapter-connector-data-output) en filtros de tema compatibles.
      + <a name="connectors-setup-subscription-input-data"></a>Establezca la función de Lambda como fuente, el conector como destino y utilice un filtro de tema de entrada compatible.
      + <a name="connectors-setup-subscription-output-data"></a>Establezca el conector como origen, AWS IoT Core como destino y utilice un filtro de tema de salida compatible. Esta suscripción se utiliza para ver los mensajes de estado en la AWS IoT consola.

1. <a name="connectors-setup-deploy-group"></a>Implemente el grupo.

1. <a name="connectors-setup-test-sub"></a>En la AWS IoT consola, en la página de **prueba**, suscríbase al tema de datos de salida para ver los mensajes de estado del conector. La función de Lambda de ejemplo es de larga duración y comienza a enviar mensajes inmediatamente después de implementar el grupo.

   Cuando haya terminado de probar, puede establecer el ciclo de vida de Lambda en Bajo demanda (o `"Pinned": false` en la CLI) e implementar el grupo. Esto impide que la característica envíe mensajes.

### Ejemplo
<a name="modbus-protocol-adapter-connector-usage-example"></a>

El siguiente ejemplo de función de Lambda envía un mensaje de entrada al conector.

```
import greengrasssdk
import json

TOPIC_REQUEST = 'modbus/adapter/request'

# Creating a greengrass core sdk client
iot_client = greengrasssdk.client('iot-data')

def create_read_coils_request():
	request = {
		"request": {
			"operation": "ReadCoilsRequest",
			"device": 1,
			"address": 1,
			"count": 1
		},
		"id": "TestRequest"
	}
	return request

def publish_basic_request():
	iot_client.publish(payload=json.dumps(create_read_coils_request()), topic=TOPIC_REQUEST)

publish_basic_request()

def lambda_handler(event, context):
	return
```

## Licencias
<a name="modbus-protocol-adapter-connector-license"></a>

El conector del adaptador del protocolo Modbus-RTU incluye las siguientes licencias y software de terceros:
+ [pymodbus](https://github.com/riptideio/pymodbus/blob/master/README.rst)/BSD
+ [pyserial](https://github.com/pyserial/pyserial)/BSD

Este conector se publica bajo el [contrato de licencia de software de Greengrass Core](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf).

## Registros de cambios
<a name="modbus-protocol-adapter-connector-changelog"></a>

La siguiente tabla describe los cambios en cada versión del conector.


| Versión | Cambios | 
| --- | --- | 
| 3 | <a name="upgrade-runtime-py3.7"></a>Se actualizó el tiempo de ejecución de Lambda a Python 3.7, lo que cambia el requisito de tiempo de ejecución. | 
| 2 | Se actualizó el ARN del conector para Región de AWS brindar soporte. Se ha mejorado el registro de errores. | 
| 1 | Versión inicial.  | 

<a name="one-conn-version"></a>Un grupo de Greengrass solo puede contener una versión del conector a la vez. Para obtener información sobre cómo actualizar una versión de conector, consulte [Actualización de versiones de los conectores](connectors.md#upgrade-connector-versions).

## Véase también
<a name="modbus-protocol-adapter-connector-see-also"></a>
+ [Integración con servicios y protocolos mediante conectores de Greengrass](connectors.md)
+ [Introducción a los conectores de Greengrass (consola)](connectors-console.md)
+ [Introducción a los conectores de Greengrass (CLI)](connectors-cli.md)