Gateway Edge Agent Local Broker
The Gateway Edge Agent (GEA) exposes a local MQTT broker to be used for local machine-to-machine (M2M) communication, or to trigger Edge Workflows using the MQTT Trigger to process and forward sensor data to the cloud.
If the devices need to connect directly to the cloud, you can use Losant’s Cloud MQTT broker. The GEA broker is for local communication between the GEA and edge devices with MQTT clients built in.
For example, you can use the GEA’s MQTT broker to enable the agent to communicate with MQTT-enabled PLCs on the same network as the agent. The GEA’s MQTT broker supports a wide range of configuration options.
Gateway Edge Agent Support
The GEA’s local MQTT broker is only supported in Gateway Edge Agent versions 1.17.0 or higher.
Usage
By default, the local MQTT broker is disabled and must be enabled through the Gateway Edge Agent configuration. See LOCAL_BROKER_ENABLED
.
If enabled, the local MQTT broker can be used to subscribe and publish to topics through an Edge Workflow with the MQTT Trigger and MQTT Output Nodes.
System Topics
Publishing to $SYS
topics is reserved for automatic system messages, these messages are published by the broker when certain events occur and do not contain a clientId
.
The following $SYS
topics are currently used by the broker:
$SYS/broker/new/clients
: Publishes aclientId
whenever a client connects.$SYS/broker/disconnect/clients
: Publishes aclientId
whenever a client disconnects.$SYS/broker/heartbeat
: Health signal every 60 seconds.
Connecting to the Cloud Broker
To connect the Gateway Edge Agent’s broker to the cloud broker, you must do so explicitly using an Edge Workflow. This can be done by using the MQTT Output Node that’s connected to the cloud broker.
Configuration
The following options can be used to configure the GEA MQTT Broker. A full list of all configuration options for the Gateway Edge Agent can be found here.
Environment Variable | Configuration File Option | Command Line Flag |
---|---|---|
LOCAL_BROKER_ENABLED |
localBroker.enabled |
--local-broker-enabled |
LOCAL_BROKER_PORT |
localBroker.port |
--local-broker-port |
LOCAL_BROKER_ADDRESS |
localBroker.address |
--local-broker-address |
LOCAL_BROKER_USERNAME |
localBroker.username |
--local-broker-username <username> |
LOCAL_BROKER_PASSWORD |
localBroker.password |
--local-broker-password <password> |
LOCAL_BROKER_SSL_KEY_PATH |
localBroker.ssl.keyPath |
--local-broker-key-path <path> |
LOCAL_BROKER_SSL_KEY |
N/A | N/A |
LOCAL_BROKER_SSL_CERT_PATH |
localBroker.ssl.certificatePath |
--local-broker-cert-path <path> |
LOCAL_BROKER_SSL_CERT |
N/A | N/A |
LOCAL_BROKER_SSL_BUNDLE_PATH |
localBroker.ssl.bundlePath |
--local-broker-bundle-path <path> |
LOCAL_BROKER_SSL_BUNDLE |
N/A | N/A |
Example Configuration
The following is an example of the GEA MQTT broker in a configuration file:
#...
[localBroker]
# If the local MQTT broker should be enabled - CLI: --local-broker-enabled, EnvVar: LOCAL_BROKER_ENABLED
# enabled = false
# Port to run the local MQTT broker on - CLI: --local-broker-port, EnvVar: LOCAL_BROKER_PORT
# port = 1883
# Address to run the local MQTT broker on - CLI: --local-broker-address, EnvVar: LOCAL_BROKER_ADDRESS
# address = '0.0.0.0'
# Username for the local MQTT broker - CLI: --local-broker-username, EnvVar: LOCAL_BROKER_USERNAME
# username = ''
# Password for the local MQTT broker - CLI: --local-broker-password, EnvVar: LOCAL_BROKER_PASSWORD
# password = ''
Was this page helpful?
Still looking for help? You can also search the Losant Forums or submit your question there.