Pasar al contenido principal

ERDDAP MQTT Integration

ERDDAP ahora incluye el apoyo al protocolo MQTT para facilitar la ingestión y notificaciones de datos en tiempo real. Esta funcionalidad está impulsada por el código abierto HiveMQ Cliente MQTT y HiveMQ Community Edition bibliotecas de corredores.

ERDDAP puede aprovechar el MQTT de dos maneras principales:

  1. Como cliente MQTT: ERDDAP puede suscribirse a temas sobre un corredor MQTT existente para ingerir datos y crear conjuntos de datos en tiempo real.

  2. Como MQTT Broker: ERDDAP puede albergar su propio broker MQTT integrado, permitiendo a los clientes externos publicar datos directamente a él.


ERDDAP como cliente MQTT​

ERDDAP puede actuar como un cliente MQTT para suscribirse a temas en un corredor MQTT externo o integrado. Esto se logra utilizando el nuevo EDDTableDesde Mqt tipo de conjunto de datos, que funciona de forma similar al existente EDDTableDesdeHtpGet Dataset.

Actualmente, la implementación del cliente solo apoya suscriptores a temas.

Configuración: EDDTableDesde Mqt​

Para configurar un conjunto de datos para suscribirse a un broker MQTT, defina un conjunto de datos de tipo EDDTableDesde Mqt en tu datasets.xml archivo. Las siguientes etiquetas de configuración están disponibles dentro de las <dataset> bloque:

<!-- Example configuration for an EDDTableFromMqtt dataset in datasets.xml -->
<dataset type="EDDTableFromMqtt" datasetID="mqtt_realtime_data" active="true">

<!-- The hostname or IP address of the MQTT broker. -->
<serverHost>broker.example.com</serverHost>

<!-- The port number of the MQTT broker. -->
<serverPort>1883</serverPort>

<!-- A unique identifier for this MQTT client. -->
<clientId>erddap-subscriber-1</clientId>

<!-- The username for broker authentication (optional). -->
<username>user</username>

<!-- The password for broker authentication (optional). -->
<password>secret</password>

<!-- A comma-separated list of MQTT topics to subscribe to. -->
<topics>sensor/+/data, another/topic</topics>

<!-- Set to 'true' to use a secure SSL/TLS connection. Default is 'false'. -->
<useSsl>false</useSsl>

<!-- The session expiry interval in seconds. -->
<sessionExpiryInterval>3600</sessionExpiryInterval>

<!-- The connection timeout in seconds. -->
<connectionTimeout>10</connectionTimeout>

<!-- Set to 'true' to enable automatic reconnection. Default is 'true'. -->
<automaticReconnect>true</automaticReconnect>

</dataset>

ERDDAP como MQTT Broker​

ERDDAP puede ejecutar un broker MQTT integrado, que sirve dos propósitos principales:

  1. Ingestión de datos: Para recibir datos publicados por clientes externos de MQTT para crear conjuntos de datos en tiempo real.

  2. Notificaciones: Publicar notificaciones sobre cambios de conjunto de datos.

Activar el Broker Embedded​

El broker MQTT integrado está deshabilitado por defecto. Para habilitarlo, agregue la siguiente bandera setup.xml :

<!-- Enables the embedded HiveMQ broker. Default is 'false'. --> <enableMqttBroker> verdadero </enableMqttBroker>

Configuración de carpetas " Directores de datos​

Puede especificar directorios personalizados para la configuración del corredor y archivos de datos en setup.xml . Si estas etiquetas quedan vacías, ERDDAP utilizará los directorios predeterminados especificados por la biblioteca HiveMQ. Para más detalles de configuración avanzados, incluyendo registro y extensiones, consulte al funcionario HiveMQ Community Edition Wiki .

<!-- The parent directory for all MQTT-related files. -->
<bigParentDirectory>/opt/erddap/mqtt/</bigParentDirectory>

<!-- The path to the embedded MQTT broker's configuration folder. -->
<mqttConfigFolder>/opt/erddap/mqtt/conf/</mqttConfigFolder>

<!-- The path to the embedded MQTT broker's data folder. -->
<mqttDataFolder>/opt/erddap/mqtt/data/</mqttDataFolder>

Caso 1: Ingerir datos de los clientes de MQTT​

Para construir un conjunto de datos en tiempo real utilizando el broker integrado, puede configurar un EDDTableDesde Mqt Dataset (como se describe anteriormente) dentro del same ERDDAP instancia para conectar a su propio corredor local . Los clientes externos MQTT pueden publicar datos a este ERDDAP bróker, que EDDTableDesde Mqt Dataset se suscribirá e ingerirá.

Caso de uso 2: Publicación de notificaciones de cambio de dataset​

ERDDAP puede configurarse para publicar notificaciones sobre cambios de conjunto de datos (por ejemplo, actualizaciones o recargas) a un tema sobre un corredor de MQTT. En primer lugar, asegurar que el corredor esté habilitado o que esté disponible. Luego, active la función de notificación en setup.xml :

<!-- Set to 'true' to publish dataset change notifications via MQTT. Default is 'false'. --> <publishMqttNotif> verdadero </publishMqttNotif>

Cuando esta función está habilitada, ERDDAP utiliza un cliente MQTT interno para publicar los mensajes. Los ajustes de conexión para este cliente se pueden personalizar en setup.xml . La tabla siguiente enumera los ajustes disponibles y sus valores predeterminados.

| Tag | Tipo | Valor predeterminado | Descripción | | -------- | --- | - Sí. | ----- | | <mqttServerHost> | cuerda | localhost | El anfitrión del corredor para publicar notificaciones a. | | <mqttServerPort> | int | 1883 | El puerto del corredor de notificación. | | <mqttClientId> | cuerda | Erddap-client | El ID del cliente para el editor de notificación. | | <mqttUserName> | cuerda | erddap-username | El nombre de usuario para el editor de notificación. | | <mqttPassword> | cuerda | erddap-password | La contraseña para el editor de notificaciones. | | <mqttSsl> | boolean | falso | Use SSL/TLS para la conexión de notificación. | | <mqttKeepAlive> | int | 60 | Mantener el intervalo en segundos. | | <mqttCleanStart> | boolean | falso | Comience con una sesión limpia (no persiste sesión Estado) . | | <mqttSessionExpiry> | int | 10 | Período de expiración de sesión en segundos. | | <mqttConnectionTimeout> | int | 10 | Tiempo de conexión en segundos. | | <mqttAutomaticReconnect> | boolean | verdadero | Reconectar automáticamente si la conexión se pierde. |


Medio ambiente Variable datasets.xml​

Se ha introducido una nueva característica que permite el uso de variables ambientales dentro de datasets.xml . Esto es habilitado por defecto .

Para deshabilitar esta funcionalidad, añadir la siguiente bandera a setup.xml :

xml

<enableEnvParsing> falso </enableEnvParsing>