MQTT Topic Updates

Introduction

The MQTT file defines topics that must be available on the bus's MQTT bridge and which will be bridged to or from Ruter's own broker. A template is provided that the operators or suppliers must use to create a new configuration for each specific bus. The file also specifies the URL of Ruter's broker for reference only.

This file must be checked daily after 16:00 and all changes must be made on all buses before they start running the following day. Ruter has a deadline before 16:00 to post changes.

The HTML pages provided in packages may depend on changes in the topics, as we may add new topics to support new features or change existing topics to point to new versions of the broker.

In practice, operators will receive advanced notice that topics will be changed through a beta channel. Moreover, topics are not expected to be updated often.

Example

Here we show an example of two topics, one to and one from Router.

{
  "timestamp": "2018-09-17T10:57:00Z",
  "broker": "",
  "topics": [
    {
      "topic": "+/json",
      "direction": "out",
      "qos": 2,
      "localPrefix": "apc/",
      "remotePrefix": "ruter/{operator}/{vehicleid}/itxpt/ota/apc/"
    },
    {
      "topic": "json",
      "direction": "in",
      "qos": 2,
      "localPrefix": "infohub/dpi/journey/",
      "remotePrefix": "{operator}/ruter/{vehicleid}/itxpt/ota/dpi/journey/"
    }
  ]
}

Content

The examples of S3 in AWS include all topics defined in the tender. In addition, there are some extra with "desc": "non-standard". These are topics that DPI will need and are examples of how we would like to expand the topics.

Mapping

The file follows the format used for the configuration of Mosquitto. The fields are mapped below. If other MQTT bridges are used, mapping is for guidance only.

NB!

  1. If the topic is "", it must be printed as "" in the mosquitto file.
  2. According to the mosquitto.conf format, + is a wildcard for a level in the topic name. This is used to account for e.g. several doors indicated by a number.

Bridge Configuration

Based on Mosquitto, we recommend that the JSON information be used to define the bridge to Ruter in a separate file.

With Mosquitto, the configuration is set up in /etc/mosquitto, and /etc/mosquitto/conf.d is used to define addition to the basic configuration:

The mosquitto.conf file must contain at least:

...
listener 1883 # tcp
listener 9883 # websockets
protocol websockets
...
include_dir /etc/mosquitto/conf.d

The ruter-bridge.conf will look like:

#
# Ruter MQTT Bridge
#
connection bus-to-authority-bridge
try_private false
address 34.250.54.9
bridge_attempt_unsubscribe true
bridge_protocol_version mqttv311
start_type automatic
restart_timeout 5
bridge_insecure true
username <username>
password <password>
cleansession true
notifications false
allow_anonymous false

#
# Bridged Topics - from mqtt.json
#
# topic type in/out qos shortroute longroute

topic json out 2 signon/ ruter/alpha/000000/itxpt/ota/signon/
topic json out 2 signoff/ ruter/alpha/000000/itxpt/ota/signoff/
topic json out 2 avl/ ruter/alpha/000000/itxpt/ota/avl/
topic +/json out 2 apc/ ruter/alpha/000000/itxpt/ota/apc/
topic json out 2 stopsignal/ ruter/alpha/000000/itxpt/stopsignal/ # non-standard
topic +/json out 2 telemetry/ ruter/alpha/000000/itxpt/telemetry/ # non-standard
topic json out 2 infohub/dpi/diagnostics/ ruter/alpha/000000/itxpt/dpi/diagnostics/ # non-standard

topic json in 2 infohub/dpi/journey/ alpha/ruter/000000/itxpt/ota/dpi/journey/
topic json in 2 infohub/dpi/externaldisplay/ alpha/ruter/000000/itxpt/ota/dpi/externaldisplay/
topic json in 2 infohub/dpi/eta/ alpha/ruter/000000/itxpt/ota/dpi/eta/
topic json in 2 infohub/dpi/nextstop/ alpha/ruter/000000/itxpt/ota/dpi/nextstop/
topic json in 2 infohub/dpi/arriving/ alpha/ruter/000000/itxpt/ota/dpi/arriving/
topic json in 2 infohub/dpi/deviation/ alpha/ruter/000000/itxpt/ota/dpi/deviation/
topic json in 2 infohub/dpi/announcement/ alpha/ruter/000000/itxpt/ota/dpi/announcement/
topic json in 2 infohub/madt/notification/ alpha/ruter/000000/itxpt/ota/madt/notification/
topic json in 2 infohub/dpi/connections/ alpha/ruter/000000/itxpt/ota/dpi/connections/ # non-standard
topic json in 2 infohub/dpi/digitalsignage/ alpha/ruter/000000/itxpt/ota/dpi/digitalsignage/ # non-standard
topic json in 2 infohub/dpi/audio/ alpha/ruter/000000/itxpt/ota/dpi/audio/ # non-standard

Handling

Schema

A JSON schema will be defined for this configuration file.