An instance of a physical piece of hardware is called a device. For example, a car, an Arduino/ESP8266 or a coffee machine.


A device can expose multiple nodes. Nodes are independent or logically separable parts of a device. For example, a car might expose a wheels node, an engine node and a lights node.


A node can have multiple properties. Properties represent basic characteristics of the node/device, often given as numbers or finite states. For example the wheels node might expose an angle property. The engine node might expose a speed, direction and temperature property. The lights node might expose an intensity and a color property.


Devices, nodes and properties have specific attributes characterizing them. Attributes are represented by topic identifier starting with $. The precise definition of attributes is important for the automatic discovery of devices following the MMRC convention.

Examples: A device might have an IP attribute, a node will have a name attribute, and a property will have a unit attribute.

Base Topic

The root topic for this convention is mmrc/.

Broadcast Channel

MMRC defines a broadcast channel, so a controller is able to broadcast a message to all MMRC devices:

  • mmrc / $broadcast / level: level is an arbitrary broadcast identifier. It must adhere to the ID format.

For example, you might want to broadcast an alert event with the alert reason as the payload. Devices are then free to react or not. In our case, every buzzer of your home automation system would start buzzing.

mmrc/$broadcast/alert ← "Intruder detected"

Any other topic is not part of the MMRC convention.