ERDDAP MQTT-integrasjon
ERDDAP Nå inkluderer støtte for MQTT-protokollen for å lette datainntak og varsler i sanntid. Denne funksjonaliteten drives av åpen kilde HiveMQ MQTT-klient og HiveMQ Community Edition megler biblioteker.
ERDDAP kan utnytte MQTT på to primære måter:
-
Som MQTT-klient: ERDDAP kan abonnere på emner på en eksisterende MQTT megler å innta data og opprette sanntidsdatasett.
-
Som MQTT Broker: ERDDAP kan være vert for sin egen innebygde MQTT megler, slik at eksterne klienter kan publisere data direkte til det.
ERDDAP som MQTT-klient
ERDDAP kan fungere som en MQTT-klient for å abonnere på emner på en ekstern eller sin egen innebygd MQTT-megler. Dette oppnås ved hjelp av det nye EDDTableFraMqtt Datasett, som fungerer på samme måte som eksisterende EDDTableFraHttpGet - Datasett.
Kundens implementering støtter for tiden kun abonnerer til emner.
Oppsett: EDDTableFraMqtt
For å konfigurere et datasett for å abonnere på en MQTT megler, definere et datasett av type EDDTableFraMqtt i din datasets.xml fil. Følgende konfigurasjonsmerker er tilgjengelige i <dataset> blokk:
<!-- 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 som MQTT Broker
ERDDAP kan kjøre en innebygd MQTT megler, som tjener to hovedformål:
-
Opplysninger: For å motta data publisert av eksterne MQTT-klienter for å skape datasett i sanntid.
-
Varsel: Å publisere varsler om endringer i datasett.
Aktivere den innebygde brokeren
Den innebygde MQTT megleren er deaktivert som standard. For å aktivere det, legg til følgende flagg i config.xml :)
<!-- Enables the embedded HiveMQ broker. Default is 'false'. --> <enableMqttBroker> sant </enableMqttBroker>
Broker Configuration & Data Directorys
Du kan angi egendefinerte mapper for meglerens konfigurasjon og datafiler i config.xml .. Hvis disse taggene er tomme, ERDDAP vil bruke standardmappene som er angitt i HiveMQ-biblioteket. For mer avanserte konfigurasjonsdetaljer, inkludert logging og utvidelser, vennligst se den offisielle 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>
Bruk Case 1: Utstedelse av data fra MQTT-klienter
For å bygge et datasett i sanntid ved hjelp av den innebygde megleren, kan du konfigurere en EDDTableFraMqtt Datasett (som beskrevet ovenfor) i same ERDDAP eksempel å koble til sin egen lokale megler. Eksterne MQTT-klienter kan deretter publisere data til dette ERDDAP megler, som EDDTableFraMqtt Datasett vil abonnere på og innta.
Bruk Case 2: Publishing Dataset Endre varsler
ERDDAP kan konfigureres til å publisere varsler om endringer i datasett (For eksempel oppdateringer eller reloader) til et emne på en MQTT megler. For det første, sørg for at megleren er aktivert eller en ekstern er tilgjengelig. Deretter kan du aktivere varslingsfunksjonen i config.xml :)
<!-- Set to 'true' to publish dataset change notifications via MQTT. Default is 'false'. --> <publishMqttNotif> sant </publishMqttNotif>
Når denne funksjonen er aktivert, ERDDAP bruker en intern MQTT-klient til å publisere meldingene. Tilkoblingsinnstillingene for denne klienten kan tilpasses config.xml .. Tabellen nedenfor viser tilgjengelige innstillinger og standardverdier.
| Tagg | Type | Standardverdi | Beskrivelse |
| -... | ------- | -... | Jeg vet ikke. |
| <mqttServerHost> | streng | localhost | Meglerens vert å publisere varsler til. |
| <mqttServerPort> | Interessert | 1883 | Havnen til varslingsmegleren. |
| <mqttClientId> | streng | erddap-client | Kunde-ID for meldingsutgiveren. |
| <mqttUserName> | streng | erddap-brukernavn | Brukernavn for meldingsutgiveren. |
| <mqttPassword> | streng | erddap-passord | Passord for meldingsutgiveren. |
| <mqttSsl> | boolsk | falsk | Bruk SSL/TLS til varslingstilkoblingen. |
| <mqttKeepAlive> | Interessert | 60 | Hold-alive intervall i sekunder. |
| <mqttCleanStart> | boolsk | falsk | Start med en ren sesjon (Ingen vedvarande sesjonstilstand) .. |
| <mqttSessionExpiry> | Interessert | 10 | Sesjon utløpsintervall i sekunder. |
| <mqttConnectionTimeout> | Interessert | 10 | Tilkoblingstid i sekunder. |
| <mqttAutomaticReconnect> | boolsk | sant | Koble automatisk igjen hvis tilkoblingen går tapt. |
Miljøvariabel Parsing i datasets.xml
En ny funksjon er introdusert som tillater bruk av miljøvariabler i datasets.xml .. Dette er aktivert som standard ..
Hvis du vil deaktivere denne funksjonen, kan du legge til følgende flagg i config.xml :)
xml
<enableEnvParsing> falsk </enableEnvParsing>