El bloque de funciones FB_MqttClient permite establecer una conexión con el Servidor MQTT especificado. La conexión se inicia en un flanco ascendente de la entrada i_xEnable. La salida q_xActive indica que el bloque de funciones se está ejecutando y debe ejecutarse de manera cíclica. El estado de la conexión se indica mediante la salida q_xReady. Si la salida es TRUE, significa que el cliente está conectado.
Si la entrada i_xEnable se ajusta en FALSE mientras se está estableciendo una conexión, el proceso se cancelará.
Si la entrada i_xEnable se ajusta en FALSE y existe una conexión, esta se cerrará con el indicador CleanSession establecido en TRUE. Esto significa que las suscripciones activas que pertenecen al identificador de cliente en cuestión se borrarán del Servidor MQTT.
Una vez establecida correctamente la conexión, el bloque de funciones gestionará los mensajes recibidos del servidor en segundo plano. Por lo tanto, el bloque de funciones también debe ejecutarse de manera cíclica una vez establecida la conexión.
El bloque de funciones FB_MqttClient admite el establecimiento de una conexión con el Servidor MQTT a través de un servidor proxy.
Si un servidor proxy prohíbe una conexión directa entre su cliente y el Servidor MQTT pero admite el establecimiento de un túnel al servidor remoto, podrá implementar la conexión al servidor remoto con la ayuda de la interfaz IF_ProxyHandler y la implementación correspondiente.
El bloque de funciones FB_MqttClient proporciona la propiedad ProxyHandler, que permite asignar una interfaz de tipo IF_ProxyHandler. Una vez que se ha asignado una interfaz válida a la propiedad, los métodos de interfaz se llaman desde el bloque de funciones mientras se establece una conexión con el Servidor MQTT.
La secuencia de llamada es la siguiente:
Cuando el bloque de funciones está habilitado, se llama el método de interfaz ConnectToProxy.
Si se selecciona el cifrado TLS para la conexión con el Servidor MQTT, el tipo de socket StartTls se establece en TRUE. El método se llama cíclicamente hasta que una de las salidas q_xDone (conexión establecida) o q_xError (conexión incorrecta) indica TRUE.
Una vez establecida la conexión con el servidor proxy, se llama el método de interfaz ConnectToRemoteServer.
Si se selecciona el cifrado TLS para la conexión con el Servidor MQTT, la opción UpgradeToTls se establece en TRUE. El método se llama cíclicamente hasta que una de las salidas q_xDone (conexión establecida) o q_xError (conexión incorrecta) indica TRUE.
Una vez que el método ConnectToRemoteServer se ha completado correctamente, el siguiente paso consiste en establecer la conexión MQTT en el nivel de protocolo MQTT. La interfaz IF_ProxyHandler no es necesaria hasta la próxima vez que se active el bloque de funciones.
Si se detecta un error durante el establecimiento de una conexión mediante la interfaz IF_ProxyHandler, se llama una vez el método de interfaz Abort.
Para desactivar el uso de la interfaz IF_ProxyHandler, pase una interfaz no asignada o un puntero nulo a la propiedad ProxyHandler. Por ejemplo, : fbMqttClient.ProxyHandler := 0;
Para obtener más información sobre la implementación de los métodos de interfaz o sobre las implementaciones ya proporcionadas, consulte la Guía de la biblioteca ProxyCommunicationSupport.
La dirección Servidor MQTT la especifica la dirección IPv4. Si la conexión se establece a través de un servidor proxy (consulte Configuración de proxy), también se admite la especificación de la dirección mediante el nombre de host del servidor. En tal caso, solo se podrá utilizar un parámetro, la dirección IP o el nombre del host.
Entrada |
Tipo de datos |
Descripción |
---|---|---|
i_xEnable |
BOOL |
El bloque de funciones establece una conexión con el Servidor MQTT en un flanco ascendente de esta entrada. Si la entrada se ajusta en FALSE, el bloque de funciones se restablecerá y la conexión existente se cerrará o bien se cancelará el establecimiento de la conexión. Consulte Comportamiento de los bloques de funciones con la entrada i_xEnable. |
i_stConnectionSettings |
ST_ConnectionSettings |
Estructura en la que se transfiere el parámetro de conexión. |
i_timTimeout |
TIME |
Intervalo de tiempo en el que se espera que se establezca correctamente la conexión. Si el valor es T#0 s, se aplicará el valor predeterminado de T#10 s. |
Salida |
Tipo de datos |
Descripción |
---|---|---|
q_xActive |
BOOL |
Indica que la ejecución del bloque de funciones permanece activa. Mientras la salida muestre TRUE, el bloque de funciones deberá ejecutarse de manera cíclica. |
q_xReady |
BOOL |
Indica que se ha establecido la conexión. El Cliente MQTT está listo para el intercambio de mensajes de aplicación con el Servidor MQTT. |
q_xError |
BOOL |
Si esta salida se establece en TRUE, se ha detectado un error. Para obtener información detallada, consulte q_etResult y q_etResultMsg. |
q_xTlsUsed |
BOOL |
Indica si la conexión con Servidor MQTT es segura a través de TLS (Transport Layer Security, seguridad de la capa de transporte). |
q_etResult |
ET_Result |
Proporciona información de diagnóstico y estado en forma de valor numérico. |
q_sResultMsg |
STRING [80] |
Proporciona información adicional de diagnóstico y estado en forma de mensaje de texto. |
En la tabla se describe la propiedad ProxyHandler proporcionada por el bloque de funciones FB_MqttClient.
Nombre |
Tipo de datos |
Acceso |
Descripción |
---|---|---|---|
ProxyHandler |
PXCS.IF_ProxyHandler |
Get/Set |
Bloque de funciones que implementa la interfaz IF_ProxyHandler. Si se asigna una interfaz válida, la conexión con el Servidor MQTT se establece mediante los métodos de interfaz. |