# Custom Adapter

Custom Adapter là tính năng cho phép người dùng tự tạo cổng tiếp nhận bản tin theo giao thức kết nối và định dạng bản tin của thiết bị.

Khi bản tin đến từ thiết bị đến cổng của adapter đã tạo sẵn, bản tin sẽ được chuyển sang dạng string theo định dạng bản tin của adapter. Sau đó bản tin cùng với các thông tin metadata sẽ được xử lí qua luồng [nghiệp vụ](/innoway/tinh-nang/quan-li-nghiep-vu/quan-li-nghiep-vu-service.md) gắn với [thing](/innoway/tinh-nang/quan-li-nghiep-vu/quan-li-thing.md) ảo được khai báo khi tạo adapter.

Hiện tại adapter hỗ trợ các giao thức phổ biến như MQTT, TCP và UDP và các định dạng bản tin như HEX, JSON, TEXT.

{% hint style="info" %}
Để xem thêm về các cách kết nối thiết bị lên nền tảng Innoway, vui lòng xem [Hướng dẫn kết nối thiết bị](/innoway/bat-dau-su-dung/huong-dan-ket-noi-thiet-bi.md)
{% endhint %}

## Tạo adapter&#x20;

{% hint style="warning" %}
Mỗi tài khoản người dùng được phép tạo tối đa 3 adapter.
{% endhint %}

Vào Đám mây -> Adapter tạo mới adapter:

* Tab Protocol nhập tên adapter, giao thức (TCP/UDP/MQTT) và định dạng bản tin của thiết bị (JSON/HEX/TEXT).
* Chuyển qua tab Thing chọn thing ảo đã có hoặc tạo mới.
* Chuyển qua tab Service chọn nghiệp vụ đã tạo hoặc tạo mới nghiệp vụ.

<figure><img src="/files/8R4HAMCXN6MiOTMgZ1Mo" alt="" width="315"><figcaption><p>Điền tên, giao thức vào kiểu dữ liệu</p></figcaption></figure>

<figure><img src="/files/w1jU7aHw60cYuRmO47CF" alt="" width="359"><figcaption><p>Chọn thing ảo đã có hoặc tạo mới</p></figcaption></figure>

<figure><img src="/files/ycgDiumAJtwCiDJjEgqj" alt="" width="359"><figcaption><p>Chọn nghiệp vụ đã tạo hoặc tạo mới</p></figcaption></figure>

{% hint style="info" %}
Nghiệp vụ gắn với adapter có 3 biến đầu vào mặc định là: **payload** (kiểu string), **entityInfo** (kiểu string) và **msg** (kiểu string). Nếu tạo mới nghiệp vụ trong khi tạo adapter thì mặc định sẽ có 3 biến này.
{% endhint %}

{% hint style="info" %}
**payload** là bản tin tới cổng của adapter được chuyển đổi sang dạng string.
{% endhint %}

{% hint style="info" %}
**entityInfo** là json string chứa các trường thông tin có bản như id của thiết bị (entity\_id), id của dự án (project\_id),...
{% endhint %}

{% hint style="info" %}
**msg** là json string chứa các trường thông tin của bản tin mà người dùng đã khai báo khi tạo adapter
{% endhint %}

## Tạo mẫu bản tin

Với các định dạng bản tin kiểu HEX và TEXT, Innoway cho phép người dùng khai báo trước mẫu bản tin với thông tin trường (tên trường, byte bắt đầu, độ dài). Khi có bản tin tới Adapter, bản tin sẽ được tách ra theo đúng các trường đã khai báo.

<figure><img src="/files/X4stBsfGw8yFhIqhsJIO" alt="" width="316"><figcaption><p>Khai báo Mẫu bản tin</p></figcaption></figure>

<figure><img src="/files/1JjJdQ1jHWsnAHke3U55" alt=""><figcaption><p>Bản tin được tách ra trước khi vào nghiệp vụ xử lí</p></figcaption></figure>

## Tiếp theo

Khám phá các hướng dẫn liên quan đến các giao thức cụ thể:

<table data-view="cards"><thead><tr><th data-type="content-ref"></th><th data-hidden></th><th data-hidden></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><a href="/pages/JEhvc6XPFLFxHzC45MNt">/pages/JEhvc6XPFLFxHzC45MNt</a></td><td></td><td></td><td></td></tr><tr><td><a href="/pages/x6GAI4uF3zGBUxPLPLTZ">/pages/x6GAI4uF3zGBUxPLPLTZ</a></td><td>tes</td><td></td><td></td></tr><tr><td><a href="/pages/FFJsctHUTQE00LDaXbh6">/pages/FFJsctHUTQE00LDaXbh6</a></td><td></td><td></td><td><a href="/pages/FFJsctHUTQE00LDaXbh6">/pages/FFJsctHUTQE00LDaXbh6</a></td></tr></tbody></table>


---

# Agent Instructions: 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:

```
GET https://innoway.gitbook.io/innoway/tinh-nang/custom-adapter.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
