Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 12 additions & 4 deletions source/_docs/mqtt/service.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,15 @@ The MQTT integration will register the service `mqtt.publish` which allows publi
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
| `topic` | no | Topic to publish payload to.
| `topic_template` | no | Template to render as topic to publish payload to.
| `payload` | yes | Payload to publish.
| `payload_template` | yes | Template to render as payload value. Ignored if payload given.
| `payload_template` | yes | Template to render as payload value.
| `qos` | yes | Quality of Service to use. (default: 0)
| `retain` | yes | If message should have the retain flag set. (default: false)

<div class='note'>
You need to include either payload or payload_template, but not both.
</div>
<p class='note'>
You must include either `topic` or `topic_template`, but not both. If providing a payload, you need to include either `payload` or `payload_template`, but not both.
</p>

```yaml
topic: home-assistant/light/1/command
Expand All @@ -32,6 +33,13 @@ payload_template: "{{ states('device_tracker.paulus') }}"
```
{% endraw %}

{% raw %}
```yaml
topic_template: "home-assistant/light/{{ states('sensor.light_active') }}/state"
payload_template: "{{ states('device_tracker.paulus') }}"
```
{% endraw %}

`payload` must be a string. If you want to send JSON then you need to format/escape it properly. Like:

```yaml
Expand Down