---
title: mqtt.publish() function
description: mqtt.publish() sends data to an MQTT broker using MQTT protocol.
url: https://docs.influxdata.com/flux/v0/stdlib/experimental/mqtt/publish/
estimated_tokens: 2122
product: Flux
version: v0
---

# mqtt.publish() function

-   Flux 0.133.0+
-   View InfluxDB support

`mqtt.publish()` is experimental and [subject to change at any time](/flux/v0/stdlib/experimental/#experimental-packages-are-subject-to-change).

#### Only supported in InfluxDB Cloud (TSM)

The `experimental/mqtt` package only supported in InfluxDB Cloud (TSM). It is still available to import in InfluxDB OSS and Enterprise, but functions will not successfully publish to an MQTT broker.

`mqtt.publish()` sends data to an MQTT broker using MQTT protocol.

##### Function type signature

```js
(
    broker: string,
    message: string,
    topic: string,
    ?clientid: string,
    ?password: string,
    ?qos: int,
    ?retain: bool,
    ?timeout: duration,
    ?username: string,
) => bool
```

For more information, see [Function type signatures](/flux/v0/function-type-signatures/).

## Parameters

### broker

(Required) MQTT broker connection string.

### topic

(Required) MQTT topic to send data to.

### message

(Required) Message to send to the MQTT broker.

### qos

MQTT Quality of Service (QoS) level. Values range from `[0-2]`. Default is `0`.

### retain

MQTT retain flag. Default is `false`.

### clientid

MQTT client ID.

### username

Username to send to the MQTT broker.

Username is only required if the broker requires authentication. If you provide a username, you must provide a password.

### password

Password to send to the MQTT broker.

Password is only required if the broker requires authentication. If you provide a password, you must provide a username.

### timeout

MQTT connection timeout. Default is `1s`.

## Examples

-   [Send a message to an MQTT endpoint](#send-a-message-to-an-mqtt-endpoint)
-   [Send a message to an MQTT endpoint using input data](#send-a-message-to-an-mqtt-endpoint-using-input-data)

### Send a message to an MQTT endpoint

```js
import "experimental/mqtt"

mqtt.publish(
    broker: "tcp://localhost:8883",
    topic: "alerts",
    message: "wake up",
    clientid: "alert-watcher",
    retain: true,
)
```

### Send a message to an MQTT endpoint using input data

```js
import "experimental/mqtt"
import "sampledata"

sampledata.float()
    |> map(
        fn: (r) =>
            ({r with sent:
                    mqtt.publish(
                        broker: "tcp://localhost:8883",
                        topic: "sampledata/${r.id}",
                        message: string(v: r._value),
                        clientid: "sensor-12a4",
                    ),
            }),
    )
```

[mqtt](/flux/v0/tags/mqtt/)
