---
title: mqtt.to() function
description: mqtt.to() outputs data from a stream of tables to an MQTT broker using MQTT protocol.
url: https://docs.influxdata.com/flux/v0/stdlib/experimental/mqtt/to/
estimated_tokens: 1952
product: Flux
version: v0
---

# mqtt.to() function

-   Flux 0.40.0+
-   View InfluxDB support

`mqtt.to()` 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. exclude\_from: nightly: true oss: ^\* enterprise: ^\*

`mqtt.to()` outputs data from a stream of tables to an MQTT broker using MQTT protocol.

##### Function type signature

```js
(
    <-tables: stream[A],
    broker: string,
    ?clientid: string,
    ?name: string,
    ?password: string,
    ?qos: int,
    ?retain: bool,
    ?tagColumns: [string],
    ?timeColumn: string,
    ?timeout: duration,
    ?topic: string,
    ?username: string,
    ?valueColumns: [string],
) => stream[B] where A: Record, B: Record
```

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

## Parameters

### broker

(Required) MQTT broker connection string.

### topic

MQTT topic to send data to.

### 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.

### name

Name for the MQTT message.

### timeout

MQTT connection timeout. Default is `1s`.

### timeColumn

Column to use as time values in the output line protocol. Default is `"_time"`.

### tagColumns

Columns to use as tag sets in the output line protocol. Default is `[]`.

### valueColumns

Columns to use as field values in the output line protocol. Default is `["_value"]`.

### tables

Input data. Default is piped-forward data (`<-`).

## Examples

### Send data to an MQTT broker

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

sampledata.float()
    |> mqtt.to(
        broker: "tcp://localhost:8883",
        topic: "example-topic",
        clientid: r.id,
        tagColumns: ["id"],
        valueColumns: ["_value"],
    )
```

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