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.
El componente puente MQTT (aws.greengrass.clientdevices.mqtt.Bridge
) transmite mensajes MQTT entre los dispositivos cliente, la publicación/suscripción local de Greengrass y. AWS IoT Core Puede utilizar este componente para actuar sobre los mensajes MQTT de los dispositivos de cliente en componentes personalizados y sincronizar los dispositivos de cliente con la Nube de AWS.
nota
Los dispositivos de cliente son dispositivos IoT locales que se conectan a un dispositivo principal de Greengrass para enviar mensajes MQTT y datos para su procesamiento. Para obtener más información, consulte Interacción con dispositivos IoT locales.
Puede usar este componente para retransmitir mensajes entre los siguientes agentes de mensajes:
-
MQTT local: el agente MQTT local maneja los mensajes entre los dispositivos de cliente y un dispositivo principal.
-
Publicación/suscripción local: el agente de mensajes local de Greengrass gestiona los mensajes entre los componentes de un dispositivo principal. Para obtener más información acerca de cómo interactuar con estos mensajes en los componentes de Greengrass, consulte Publicar/suscribir mensajes locales.
-
AWS IoT Core — El broker AWS IoT Core MQTT gestiona los mensajes entre dispositivos y Nube de AWS destinos de IoT. Para obtener más información acerca de cómo interactuar con estos mensajes en los componentes de Greengrass, consulte Publicar/suscribir mensajes MQTT AWS IoT Core.
nota
El puente MQTT usa QoS 1 para publicar y AWS IoT Core suscribirse, incluso cuando un dispositivo cliente usa QoS 0 para publicar y suscribirse al broker MQTT local. Como resultado, es posible que observe una latencia adicional al retransmitir mensajes MQTT desde los dispositivos cliente del broker MQTT local. AWS IoT Core Para obtener más información acerca de la configuración de MQTT en los dispositivos principales, consulte Configuración de los tiempos de espera y los ajustes de caché de MQTT.
Temas
Versiones
Este componente tiene las siguientes versiones:
-
2.3.x
-
2.2.x
-
2.1.x
-
2.0.x
Tipo
Este componente es un componente de complemento (aws.greengrass.plugin
). El núcleo de Greengrass ejecuta este componente en la misma máquina virtual Java (JVM) que el núcleo. El núcleo se reinicia al cambiar la versión de este componente en el dispositivo principal.
Este componente usa el mismo archivo de registro que el núcleo de Greengrass. Para obtener más información, consulte Supervise AWS IoT Greengrass los registros.
Para obtener más información, consulte Tipos de componentes.
Sistema operativo
Este componente se puede instalar en los dispositivos principales que ejecutan los siguientes sistemas operativos:
Linux
Windows
Requisitos
Este componente tiene los siguientes requisitos:
-
Si configura el componente agente MQTT del dispositivo principal para que utilice un puerto que no sea el puerto 8883 predeterminado, debe usar el puente de MQTT versión 2.1.0 o posterior. Configúrelo para que se conecte al puerto en el que opera el agente.
-
Se admite la ejecución del componente puente de MQTT en una VPC.
Dependencias
Al implementar un componente, AWS IoT Greengrass también despliega versiones compatibles de sus dependencias. Esto significa que debe cumplir los requisitos del componente y de todas sus dependencias para poder implementar el componente correctamente. En esta sección, se enumeran las dependencias de las versiones publicadas de este componente y las restricciones de las versiones semánticas que definen las versiones de los componentes para cada dependencia. También puede ver las dependencias de cada versión del componente en la consola de AWS IoT Greengrass
En la siguiente tabla, se muestran las dependencias de la versión 2.3.2 de este componente.
Dependencia | Versiones compatibles | Tipo de dependencia |
---|---|---|
Autenticación del dispositivo de cliente | >=2.2.0 <2.6.0 | Rígido |
Para obtener más información sobre las dependencias del componente, consulte la referencia de receta de componentes.
Configuración
Este componente ofrece los siguientes parámetros de configuración que puede personalizar cuando implemente el componente.
mqttTopicMapping
-
Las asignaciones de temas que desea unir. Este componente se suscribe a los mensajes del tema de origen y publica los mensajes que recibe en el tema de destino. Cada asignación de temas define el tema, el tipo de origen y el tipo de destino.
Este objeto contiene la siguiente información:
topicMappingNameKey
-
El nombre de esta asignación de temas.
topicMappingNameKey
Sustitúyalo por un nombre que ayude a identificar el mapeo de este tema.Este objeto contiene la siguiente información:
topic
-
El tema o filtro de temas que sirve de puente entre los agentes de origen y de destino.
Puede utilizar los caracteres comodín de temas MQTT
+
y#
para transmitir mensajes en todos los temas que coincidan con un filtro de temas. Para obtener más información, consulte Temas MQTT en la Guía para desarrolladores de AWS IoT Core .nota
Para usar comodines de temas de MQTT con el agente
Pubsub
de origen, debe usar la versión 2.6.0 o posterior del componente núcleo de Greengrass. targetTopicPrefix
-
El prefijo que se agrega al tema de destino cuando este componente transmite el mensaje.
source
-
El agente de mensajes de origen. Puede elegir entre las siguientes opciones:
-
LocalMqtt
: el agente MQTT local donde se comunican los dispositivos de cliente. -
Pubsub
: el agente local de la mensajería de publicación y suscripción de Greengrass. -
IotCore
— El intermediario de mensajes AWS IoT Core MQTT.nota
El puente MQTT usa QoS 1 para publicar y AWS IoT Core suscribirse, incluso cuando un dispositivo cliente usa QoS 0 para publicar y suscribirse al broker MQTT local. Como resultado, es posible que observe una latencia adicional al retransmitir mensajes MQTT desde los dispositivos cliente del broker MQTT local. AWS IoT Core Para obtener más información acerca de la configuración de MQTT en los dispositivos principales, consulte Configuración de los tiempos de espera y los ajustes de caché de MQTT.
source
ytarget
deben ser diferentes. -
target
-
El agente de mensajes de destino. Puede elegir entre las siguientes opciones:
-
LocalMqtt
: el agente MQTT local donde se comunican los dispositivos de cliente. -
Pubsub
: el agente local de la mensajería de publicación y suscripción de Greengrass. -
IotCore
— El intermediario de mensajes AWS IoT Core MQTT.nota
El puente MQTT usa QoS 1 para publicar y AWS IoT Core suscribirse, incluso cuando un dispositivo cliente usa QoS 0 para publicar y suscribirse al broker MQTT local. Como resultado, es posible que observe una latencia adicional al retransmitir mensajes MQTT desde los dispositivos cliente del broker MQTT local. AWS IoT Core Para obtener más información acerca de la configuración de MQTT en los dispositivos principales, consulte Configuración de los tiempos de espera y los ajustes de caché de MQTT.
source
ytarget
deben ser diferentes. -
- mqtt5 RouteOptions
-
(Opcional) Ofrece opciones para configurar las asignaciones de temas a fin de unir los mensajes del tema de origen al tema de destino.
Este objeto contiene la siguiente información:
mqtt5RouteOptionsNameKey
-
El nombre de las opciones de ruta de una asignación de temas.
mqtt5RouteOptionsNameKey
Sustitúyala por la coincidenciatopicMappingNameKey
definida en elmqttTopicMapping
campo.Este objeto contiene la siguiente información:
- noLocal
-
(Opcional) Cuando está activado, el puente no reenvía los mensajes sobre un tema que haya publicado el propio puente. Utilice esta opción para evitar los bucles, de la siguiente manera:
{ "mqtt5RouteOptions": { "toIoTCore": { "noLocal": true } }, "mqttTopicMapping": { "toIoTCore": { "topic": "device", "source": "LocalMqtt", "target": "IotCore" }, "toLocal": { "topic": "device", "source": "IotCore", "target": "LocalMqtt" } } }
noLocal
solo se admite en las rutas en las quesource
esLocalMqtt
.Predeterminado: false
- retainAsPublished
-
(Opcional) Cuando está habilitado, los mensajes reenviados por el puente tienen la misma marca
retain
que los mensajes publicados en el agente para esa ruta.retainAsPublished
solo se admite en las rutas en las quesource
esLocalMqtt
.Predeterminado: false
- mqtt
-
(Opcional) Configuración del protocolo MQTT para comunicarse con el agente local.
- versión
-
(Opcional) La versión del protocolo MQTT utilizada por el puente para comunicarse con el agente local. Debe ser la misma que la versión de MQTT seleccionada en la configuración del núcleo.
Elija una de las siguientes opciones:
-
mqtt3
-
mqtt5
Debe implementar un agente MQTT cuando el campo
source
otarget
del objetomqttTopicMapping
esté establecido enLocalMqtt
. Si elige la opciónmqtt5
, debe usar el Agente MQTT 5 (EMQX).Valor predeterminado:
mqtt3
-
- ackTimeoutSeconds
-
(Opcional) Intervalo de tiempo para esperar a que lleguen los paquetes PUBACK, SUBACK o UNSUBACK antes de que se produzca un error en la operación.
Predeterminado: 60
- connAckTimeoutSrta.
-
(Opcional) Intervalo de tiempo para esperar un paquete CONNACK antes de cerrar la conexión.
Valor predeterminado: 20 000 (20 segundos)
- pingTimeoutMs
-
(Opcional) El tiempo en milisegundos que el puente espera a recibir un mensaje PINGACK del agente local. Si la espera supera el tiempo de espera, el puente se cierra y vuelve a abrir la conexión MQTT. Este valor debe ser inferior a
keepAliveTimeoutSeconds
.Valor predeterminado: 30 000 (30 segundos)
- keepAliveTimeoutSegundos
-
(Opcional) El tiempo en segundos que transcurre entre cada mensaje PING que envía el puente para mantener activa la conexión MQTT. El valor debe ser mayor que
pingTimeoutMs
.Predeterminado: 60
- maxReconnectDelaySrta.
-
(Opcional) Tiempo máximo en segundos que MQTT se vuelve a conectar.
Valor predeterminado: 30 000 (30 segundos)
- minReconnectDelaySra.
-
(Opcional) Tiempo mínimo en segundos para que MQTT se vuelva a conectar.
- receiveMaximum
-
(Opcional) La cantidad máxima de paquetes QoS1 no confirmados que puede enviar el puente.
Predeterminado: 100
- maximumPacketSize
-
El número máximo de bytes que el cliente aceptará para un paquete MQTT.
Predeterminado: nulo (sin límite)
- sessionExpiryInterval
-
(Opcional) La cantidad de tiempo en segundos que puede solicitar para que dure una sesión entre el puente y el agente local.
Predeterminado: 4294967295 (la sesión nunca caduca)
brokerUri
-
(Opcional) El URI del agente MQTT local. Debe especificar este parámetro si configura el agente MQTT para que utilice un puerto diferente al puerto predeterminado 8883. Utilice el siguiente formato y
port
sustitúyalo por el puerto en el que opera el broker MQTT:ssl://localhost:
.port
Valor predeterminado:
ssl://localhost:8883
- startupTimeoutSeconds
-
(Opcional) El tiempo máximo en segundos para que se inicie el componente. El estado del componente cambia a
BROKEN
si supera este tiempo de espera.Valor predeterminado:
120
ejemplo Ejemplo: actualización de la combinación de configuraciones
El siguiente ejemplo de archivo de configuración especifica lo siguiente:
-
Transmita mensajes desde los dispositivos cliente a AWS IoT Core temas que coincidan con el filtro de
clients/+/hello/world
temas. -
Transmita los mensajes desde los dispositivos de cliente a la publicación/suscripción local en temas que coinciden el filtro de temas
clients/+/detections
y agregue el prefijoevents/input/
al tema de destino. El tema de destino resultante coincide con el filtro de temasevents/input/clients/+/detections
. -
Transmita los mensajes desde los dispositivos cliente a los AWS IoT Core temas que coincidan con el
clients/+/status
filtro de temas y añada el$aws/rules/StatusUpdateRule/
prefijo al tema de destino. En este ejemplo, se transmiten estos mensajes directamente a una regla AWS IoT denominadaStatusUpdateRule
para la reducción de costos mediante la ingesta básica.
{
"mqttTopicMapping": {
"ClientDeviceHelloWorld": {
"topic": "clients/+/hello/world",
"source": "LocalMqtt",
"target": "IotCore"
},
"ClientDeviceEvents": {
"topic": "clients/+/detections",
"targetTopicPrefix": "events/input/",
"source": "LocalMqtt",
"target": "Pubsub"
},
"ClientDeviceCloudStatusUpdate": {
"topic": "clients/+/status",
"targetTopicPrefix": "$aws/rules/StatusUpdateRule/",
"source": "LocalMqtt",
"target": "IotCore"
}
}
}
ejemplo Ejemplo: configuración de MQTT 5
El siguiente ejemplo de archivo de configuración actualiza lo siguiente:
-
Permite que el puente utilice el protocolo MQTT 5 con el agente local.
-
Configura MQTT para retenerlo como configuración publicada para la asignación de temas
ClientDeviceHelloWorld
.
{ "mqttTopicMapping": { "ClientDeviceHelloWorld": { "topic": "clients/+/hello/world", "source": "LocalMqtt", "target": "IotCore" } }, "mqtt5RouteOptions": { "ClientDeviceHelloWorld": { "retainAsPublished": true } }, "mqtt": { "version": "mqtt5" } }
Archivo de registro local
Este componente utiliza el mismo archivo de registro que el componente núcleo de Greengrass.
/logs/greengrass.log
/greengrass/v2
Visualización de los registros de este componente
-
Ejecute el siguiente comando en el dispositivo de núcleo para ver el archivo de registro de este componente en tiempo real. Sustituya
o/greengrass/v2
C:\greengrass\v2
por la ruta a la carpeta AWS IoT Greengrass raíz.sudo tail -f
/logs/greengrass.log/greengrass/v2
Registros de cambios
En la siguiente tabla, se describen los cambios en cada versión del componente.
Versión |
Cambios |
---|---|
2.3.2 |
Versión actualizada para la versión 2.5.0 de autenticación de dispositivos de cliente. |
2.3.1 |
|
2.3.0 |
|
2.2.6 |
|
2.2.5 |
Versión actualizada para la versión 2.4.0 de autenticación de dispositivos de cliente. |
2.2.4 |
Versión actualizada para la versión 2.3.0 de autenticación de dispositivos de cliente de Greengrass. |
2.2.3 |
Esta versión contiene correcciones de errores y mejoras. |
2.2.2 |
|
2.2.1 |
|
2.2.0 |
|
2.1.1 |
|
2.1.0 |
|
2.0.1 |
Esta versión incluye correcciones de errores y mejoras. |
2.0.0 |
Versión inicial. |