.. _mqtt:
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 :ref:`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).
.. code-block:: javascript
["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:
.. code-block:: javascript
{
"address": "tcp://10.1.30.42:1883",
"client_id": "nbx-pp-1",
"export_map": [
["platform.system_state", "neobotix//platform/system_state"],
["platform.emergency_state", "neobotix//platform/emergency_state"]
],
"export_map_ex": [
["platform.info", {
"topic": "neobotix//platform/info",
"retained": true
}]
],
"last_will": {
"topic": "neobotix//disconnect",
"message": "Apparently, an unexpected disconnect happened..."
}
}
Find all configuration options at :ref:`vnx.mqtt.Proxy`.