MQTT Device Tracker


The mqtt device tracker platform allows you to define new device_trackers through manual YAML configuration in configuration.yaml and also to automatically discover device_trackers through a discovery schema using the MQTT Discovery protocol.

YAML Configuration

To use this device tracker in your installation, add the following to your configuration.yaml file:

# Example configuration.yaml entry
device_tracker:
  - platform: mqtt
    devices:
      paulus_oneplus: "location/paulus"
      annetherese_n4: "location/annetherese"

Configuration Variables

devices list Required

List of devices with their topic.

qos integer (Optional)

The QoS level of the topic.

payload_home string (Optional, default: home)

The payload value that represents the ‘home’ state for the device.

payload_not_home string (Optional, default: not_home)

The payload value that represents the ‘not_home’ state for the device.

source_type string (Optional)

Attribute of a device tracker that affects state when being used to track a person. Valid options are gps, router, bluetooth, or bluetooth_le.

Complete YAML example configuration

# Complete configuration.yaml entry
device_tracker:
  - platform: mqtt
    devices:
      paulus_oneplus: "location/paulus"
      annetherese_n4: "location/annetherese"
    qos: 1
    payload_home: "present"
    payload_not_home: "not present"
    source_type: bluetooth

YAML Usage

To set the state of the device_tracker then you need to publish a JSON message to the topic (e.g., via mqtt.publish service). As an example, the following JSON message would set the paulus_oneplus device_tracker to home:

{
  "topic": "location/paulus",
  "payload": "present"
}

Discovery Schema

MQTT device_trackers are also supported through MQTT discovery. This is different to the YAML configuration from above. Here, the device_tracker can be created via a discovery topic that follows the following topic name convention: <discovery_prefix>/device_tracker/[<node_id>/]<object_id>/config and the JSON message content of a specific format as defined below.

Configuration Variables

availability list (Optional)

A list of MQTT topics subscribed to receive availability (online/offline) updates. Must not be used together with availability_topic.

payload_available string (Optional, default: online)

The payload that represents the available state.

payload_not_available string (Optional, default: offline)

The payload that represents the unavailable state.

topic string Required

An MQTT topic subscribed to receive availability (online/offline) updates.

availability_mode string (Optional, default: latest)

When availability is configured, this controls the conditions needed to set the entity to available. Valid entries are all, any, and latest. If set to all, payload_available must be received on all configured availability topics before the entity is marked as online. If set to any, payload_available must be received on at least one configured availability topic before the entity is marked as online. If set to latest, the last payload_available or payload_not_available received on any configured availability topic controls the availability.

availability_topic string (Optional)

The MQTT topic subscribed to receive availability (online/offline) updates. Must not be used together with availability.

device map (Optional)

Information about the device this device tracker is a part of that ties it into the device registry.

connections list | map (Optional)

A list of connections of the device to the outside world as a list of tuples [connection_type, connection_identifier]. For example the MAC address of a network interface: 'connections': ['mac', '02:5b:26:a8:dc:12'].

identifiers list | string (Optional)

A list of IDs that uniquely identify the device. For example a serial number.

manufacturer string (Optional)

The manufacturer of the device.

model string (Optional)

The model of the device.

name string (Optional)

The name of the device.

suggested_area string (Optional)

Suggest an area if the device isn’t in one yet.

sw_version string (Optional)

The firmware version of the device.

via_device string (Optional)

Identifier of a device that routes messages between this device and Home Assistant. Examples of such devices are hubs, or parent devices of a sub-device. This is used to show device topology in Home Assistant.

icon icon (Optional)

Icon for the entity.

json_attributes_template template (Optional)

Defines a template to extract the JSON dictionary from messages received on the json_attributes_topic. Usage example can be found in MQTT sensor documentation.

json_attributes_topic string (Optional)

The MQTT topic subscribed to receive a JSON dictionary payload and then set as device_tracker attributes. Usage example can be found in MQTT sensor documentation.

name string (Optional)

The name of the MQTT device_tracker.

payload_available string (Optional, default: online)

The payload that represents the available state.

payload_home string (Optional, default: home)

The payload value that represents the ‘home’ state for the device.

payload_not_available string (Optional, default: offline)

The payload that represents the unavailable state.

payload_not_home string (Optional, default: not_home)

The payload value that represents the ‘not_home’ state for the device.

qos integer (Optional, default: 0)

The maximum QoS level of the state topic.

source_type string (Optional)

Attribute of a device tracker that affects state when being used to track a person. Valid options are gps, router, bluetooth, or bluetooth_le.

state_topic string Required

The MQTT topic subscribed to receive device tracker state changes.

unique_id string (Optional)

An ID that uniquely identifies this device_tracker. If two device_trackers have the same unique ID, Home Assistant will raise an exception.

value_template template (Optional)

Defines a template that returns a device tracker state.

Discovery Example

You can use the discovery protocol to create a new device tracker and set it’s state using the command line tool mosquitto_pub shipped with mosquitto or the mosquitto-clients package to send MQTT messages.

To create the device_tracker:

mosquitto_pub -h 127.0.0.1 -t home-assistant/device_tracker/a4567d663eaf/config -m '{"state_topic": "a4567d663eaf/state", "name": "My Tracker", "payload_home": "home", "payload_not_home": "not_home"}'

To set the state of the device tracker to “home”:

mosquitto_pub -h 127.0.0.1 -t a4567d663eaf/state -m 'home'