MQTT Interface

MQTT is a publish-subscribe protocol to transport arbitrary data between clients. MQTT clients connect to a server (called MQTT broker) and publish and/or subscribe to topics, identified by an (almost) arbitrary name. Topics are often structured in a hierarchy using slashes, for example neobotix/platform/mpo-700-1/navigation/map_pose.

PlatformPilot can be set up to act as an MQTT client to a MQTT broker, translating messages from and to internal topics. All sent messages will be JSON objects, except possibly the Last-Will message. All messages that should be received also have to be JSON objects.

Client

In your configuration folder add or append a file named mqtt_proxy_list to contain a list of the MQTT proxies that should be started. Each one will be one MQTT client (usually you only need one per broker).

["MQTT_Proxy_1", "MQTT_Proxy_2", ...]

The individual options can be set in the corresponding configuration file, e.g. in MQTT_Proxy_1.json. The only necessary setting is the broker address, but you probably also want to specify the client ID and the exported topics. Here is an example configuration:

{
        "address": "tcp://10.1.30.42:1883",
        "client_id": "nbx-pp-1",
        "export_map": [
                ["platform.system_state", "neobotix/<robot-name>/platform/system_state"],
                ["platform.emergency_state", "neobotix/<robot-name>/platform/emergency_state"]
        ],
        "export_map_ex": [
                ["platform.info", {
                        "topic": "neobotix/<robot-name>/platform/info",
                        "retained": true
                }]
        ],
        "last_will": {
                "topic": "neobotix/<robot-name>/disconnect",
                "message": "Apparently, an unexpected disconnect happened..."
        }
}

Find all configuration options at vnx.mqtt.Proxy.