Chapter 12. MQTT (experimental)

Table of Contents

12.1. Limitations
12.2. Features
12.3. Integration with FireBrick opperations
12.3.1. Profiles
12.3.2. VoIP
12.3.3. DHCP

MQTT is a protocol that is designed to allow IoT (Internet of Things) devices to communicate - for example smart light switches, sensors, and all sorts of home automation.

To communicate, these devices connect to a broker which acts as a hub / switchboard to relay messages. The FB2900 can operate as an MQTT broker, allowing your IoT devices to communicate in a typical home or office.

The FireBrick operates three separate brokers: An intenal insecure MQTT broker; and internal secure MQTTS broker; and a connection to an external broker (MQTT or MQTTS). Messages received on these can be kept separate, or relayed to any of the other two. Internal operations of the FireBrick that generate messages can be configured to sent to one or more of these there brokers. Internal operations of the FireBrick that accept messages can be configured to only accept from one or more of these brokers.

Please bear in mind that this is experimental, and so may change in ways that are not always backwards compatible. Please do check release notes.

12.1. Limitations

As with any broker, there are limitations to the operation. As an embedded device, the FireBrick is designed to ensure reliable operation, and so has some specific limitations to its operation. However, as with any FireBrick feature, if these are a problem for your use case, please do let us know.

  • Maximum message size (3000 bytes).
  • Maximum connections (300), including connections which are idle but have state or retained messages.
  • Maximum subscriptions per connection (200).
  • Maximum messages in flight (10000), including retained and will messages.
  • Messages accepted and handshake for QoS 1/2, but are all demoted to QoS 0 for sending. As TCP is used messages are normally reliably sent, but this limitation greatly reduces complexity and state. Please let us know if this is an issue.
  • No retained state over reboot.