> For the complete documentation index, see [llms.txt](https://docs.akenza.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.akenza.io/how-to-create-a-working-environment/how-to-connect-a-device.md).

# Connect a Device

Create a data flow, add your first device, and confirm that its data arrives in akenza.

Connecting a device to akenza requires a **data flow**, which describes how data is authenticated, decoded, and stored, and a **device**, which represents the hardware itself and points at that data flow.

You create the data flow first. It is reusable, so every further device of the same model can point at the same data flow without you configuring anything twice.

{% hint style="info" %}
If you do not have a physical device at hand, you can use the [Device Simulator](/device-management/create-new-device/device-simulator.md) and complete this guide exactly as written.
{% endhint %}

{% stepper %}
{% step %}

### Create a data flow

Select *Create Data Flow* on the **Data Flow** menu tab. A data flow is assembled from three parts, which you configure in order.
{% endstep %}

{% step %}

### Choose a device connector

The device connector holds the information on how a device communicates with akenza, and defines the secret used to authenticate its data.

**Direct connectivity**

* [LoRaWAN](/device-management/your-data-flow/device-connector/lorawan.md)
* [HTTP](/device-management/your-data-flow/device-connector/http.md)
* [MQTT](/device-management/your-data-flow/device-connector/mqtt.md)
* [CoAP](/device-management/your-data-flow/device-connector/coap.md)
* [NB-IoT](/device-management/your-data-flow/device-connector/nb-iot.md)
* [mioty](/device-management/your-data-flow/device-connector/mioty.md)

**Cloud-to-cloud connectors**, for devices that already live in a vendor platform:

* [Disruptive Technologies](/device-management/your-data-flow/device-connector/disruptive-technologies.md)
* [VergeSense](/device-management/your-data-flow/device-connector/vergesense.md)
* [Spaceti](/device-management/your-data-flow/device-connector/spaceti.md)
* [Haltian](/device-management/your-data-flow/device-connector/haltian.md)

<figure><img src="https://2165942204-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MMKXTFIN5ZlLOjBlfC4%2Fuploads%2FJJ4fofdfadr0scKd4MRB%2Fscreely-1685009166920.png?alt=media&amp;token=413d96f4-2d5b-46f8-ad2a-3f580a865c5c" alt="Selecting a device connector"><figcaption><p>Selecting a device connector</p></figcaption></figure>

{% hint style="info" %}
If you already run a LoRaWAN network through a provider such as Swisscom, Loriot, Actility, or The Things Network, set up a [connectivity integration](/device-management/your-data-flow/device-connector/lorawan/your-integration.md) instead. The device connector is then created for you, and the provider platform is configured to forward data to akenza.
{% endhint %}
{% endstep %}

{% step %}

### Choose a device type

The device type extracts, transforms, and normalizes the data sent by the device. akenza provides an extensive [device type library](https://akenza.io/features/device-type-library) with more than 300 ready-to-use device types from manufacturers around the globe, maintained openly on [GitHub](https://github.com/akenza-io/device-type-library).

If no suitable device type exists, create a [custom device type](/device-management/your-data-flow/device-type/device-type.md) and write your own decoder. Select *Passthrough* if no parsing is required at all, in which case the payload is forwarded unchanged.

<figure><img src="https://2165942204-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MMKXTFIN5ZlLOjBlfC4%2Fuploads%2FPZM1h8LTsI3xFig7kmd1%2Fscreely-1685009335042.png?alt=media&amp;token=042d53ae-9dd0-4f45-8f62-f6506fb01178" alt="Selecting a device type"><figcaption><p>Selecting a device type</p></figcaption></figure>
{% endstep %}

{% step %}

### Choose one or more output connectors

Output connectors define where the decoded data goes. You can add several to one data flow.

**Databases**

* [akenza DB](/device-management/your-data-flow/connectors/databases/akenza-db.md)
* [InfluxDB](/device-management/your-data-flow/connectors/databases/influxdb.md)
* [SQL databases](/device-management/your-data-flow/connectors/databases/sql-databases.md)
* [Snowflake](/device-management/your-data-flow/connectors/databases/snowflake.md)

**Streaming**

* [Webhook](/device-management/your-data-flow/connectors/streaming/webhook.md)
* [Azure IoT Hub](/device-management/your-data-flow/connectors/streaming/azure-iot-hub.md)
* [AWS Kinesis](/device-management/your-data-flow/connectors/streaming/aws-kinesis.md)
* [Google Cloud Pub/Sub](/device-management/your-data-flow/connectors/streaming/google-cloud-pub-sub.md)
* [Apache Kafka](/device-management/your-data-flow/connectors/streaming/apache-kafka.md)

**Notifications**

* [E-Mail](/device-management/your-data-flow/connectors/notifications/email.md)
* [SMS](/device-management/your-data-flow/connectors/notifications/sms.md)
* [Microsoft Teams](/device-management/your-data-flow/connectors/notifications/microsoft-teams.md)
* [Slack](/device-management/your-data-flow/connectors/notifications/slack.md)

<figure><img src="https://2165942204-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MMKXTFIN5ZlLOjBlfC4%2Fuploads%2F0689O5nk78dGmdgW9gQ1%2Fscreely-1685009389941.png?alt=media&amp;token=9944cc24-3a2b-418f-a181-28731205755f" alt="Selecting output connectors"><figcaption><p>Selecting output connectors</p></figcaption></figure>

{% hint style="warning" %}
Add the **akenza DB** output connector unless you have a reason not to. It is what stores the data passing through this data flow, and therefore what makes it available to dashboards, rules, the API, and [Genio](/genio/genio.md). A data flow that only forwards data elsewhere keeps no history in akenza.
{% endhint %}
{% endstep %}

{% step %}

### Create a device

Select *Create Device* in the **Asset Inventory**.

<figure><img src="https://2165942204-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MMKXTFIN5ZlLOjBlfC4%2Fuploads%2F3sQz6seQBWB1c3MOI3wI%2Fscreely-1685009458877.png?alt=media&amp;token=97654315-4571-4d58-8706-442232d39174" alt="The Asset Inventory"><figcaption><p>The Asset Inventory</p></figcaption></figure>

Add a device name and, optionally, a description, a [tag](/device-management/managing-a-workspace/tags.md), or a [custom field](/device-management/managing-a-workspace/custom-fields.md). Naming and tagging consistently from the start pays off once the fleet grows, because tags drive filtering, dashboard data sources, and rule inputs. Select *Next*.

<figure><img src="https://2165942204-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MMKXTFIN5ZlLOjBlfC4%2Fuploads%2FkcWoqBEUSSkVfTB0E4HZ%2Fscreely-1685009514484.png?alt=media&amp;token=67af5cca-6d1a-4242-8086-f4136111f5f6" alt="Basic device information"><figcaption><p>Basic device information</p></figcaption></figure>

Choose the data flow you just created and set an **offline timeout**, which is how long akenza waits without an uplink before flagging the device as offline. Pick a value that suits the device's sending interval. Select *Next*.

<figure><img src="https://2165942204-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MMKXTFIN5ZlLOjBlfC4%2Fuploads%2FpYtkJXPGxV3H0lkEUMHB%2Fscreely-1685009568683.png?alt=media&amp;token=dba38cbf-9736-46b4-b0bd-6c26d5a02bed" alt="Assigning the data flow"><figcaption><p>Assigning the data flow</p></figcaption></figure>
{% endstep %}

{% step %}

### Fill in the connectivity parameters

What is required here depends on the device connector you chose:

* **LoRaWAN:** the device identifiers and keys from your network provider. See [LoRaWAN](/device-management/your-data-flow/device-connector/lorawan.md).
* **HTTP and MQTT:** an alphanumeric secret between 8 and 64 characters.

<figure><img src="https://2165942204-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MMKXTFIN5ZlLOjBlfC4%2Fuploads%2Fa25CKln4jAytjPjFkOsQ%2Fscreely-1685009639097.png?alt=media&amp;token=6a7229de-e2cf-4159-840a-6fc0ea01e7c6" alt="Connectivity parameters"><figcaption><p>Connectivity parameters</p></figcaption></figure>

Finish with *Create device*.
{% endstep %}

{% step %}

### Confirm that data arrives

Select your device from the Asset Inventory and open the **device detail page**. Once the device sends its first uplink you see the last message time, the decoded values, and, depending on the connectivity, signal quality and battery level.

<figure><img src="https://2165942204-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MMKXTFIN5ZlLOjBlfC4%2Fuploads%2FI3iaPPtERG6rSNX0biWM%2Fscreely-1685009736677.png?alt=media&amp;token=22af2582-5020-4a1e-9728-356cebc474c4" alt="The device detail page"><figcaption><p>The device detail page</p></figcaption></figure>

**Congratulations, you have connected your first device.**
{% endstep %}
{% endstepper %}

## If no data arrives

Work down the pipeline in the same order the data travels:

1. **Is the device sending?** Check the device itself, and for LoRaWAN check that the uplink is visible on the network provider's platform.
2. **Is akenza receiving it?** The [Data Processing Logs](/device-management/data-processing-logs.md) show what reached the platform and what happened to it, including authentication failures and decoder errors.
3. **Is the payload decoded?** A mismatch between the device type and the actual device is the most common cause of an uplink that arrives but produces no readable values. Verify the device type, or test your decoder in [Scripting](/device-management/your-data-flow/device-type/device-type/scripting.md).
4. **Is it stored?** Without the akenza DB output connector, data passes through without being kept.

{% hint style="info" %}
Still stuck? Reach out through the In-App Chat Support or the [Service Desk](/faq/service-desk.md).
{% endhint %}

## What to do next

<table data-view="cards"><thead><tr><th></th><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><i class="fa-layer-group">:layer-group:</i></td><td><strong>Add the rest of your fleet</strong></td><td>Import devices from a CSV file instead of creating them one by one.</td><td><a href="/device-management/create-new-device/asset-bulk-import.md">Bulk actions</a></td></tr><tr><td><i class="fa-qrcode">:qrcode:</i></td><td><strong>Deploy on site</strong></td><td>Use the Device Setup Assistant to configure devices by scanning a QR code.</td><td><a href="/device-setup-assistant/device-setup-assistant.md">Overview</a></td></tr><tr><td><i class="fa-bell">:bell:</i></td><td><strong>React to your data</strong></td><td>Set up rules to trigger notifications, downlinks, or aggregations.</td><td><a href="/device-management/rule-engine.md">Rules</a></td></tr><tr><td><i class="fa-chart-line">:chart-line:</i></td><td><strong>Visualize it</strong></td><td>Build a dashboard from the data your device is now sending.</td><td><a href="/dashboard-builder/dashboard-builder.md">Overview</a></td></tr></tbody></table>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.akenza.io/how-to-create-a-working-environment/how-to-connect-a-device.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
