# Communication

## Introduction

The **Communication Nodes** (**Bluetooth**, **CAN**, **CANopen**, **HTTP**, **MAVLink**, **MQTT**, **Serial**, **Socket.IO**, **TCP**, **UDP**, and **WebSocket**) represent the different messaging protocols and ways of communicating between devices that each one employs.

**Bluetooth**, **CANopen**, **MAVLink**, **Serial**, **Socket.IO**, **TCP**, **UDP**, and **WebSocket** are available as plugins. For more information, check out the [**Plugins Module**](/incari-studio/modules/plugins.md)

The following guideline explains the specific set-up required to implement **Communication** in **Incari**.

## General Guideline

These are the general guidelines for incorporating all **Communication** protocols into a **Project**, except for **Bluetooth**. This includes how to start a connection, the **Nodes** that can be used and how to use them, as well as how to stop a connection. For **Bluetooth**, please refer to its specific guide [here](/incari-studio/toolbox/communication/bluetooth.md).

* Locate the desired communications protocol in [**Project Settings**](/incari-studio/modules/project-settings.md). Attach all necessary files and data.
* In the **Logic Editor**, use the protocol's **Start Node** to initiate the connection. Separately, use the protocol's **On Start Node** to execute any following **Logic**. This is to make sure the connection is successfully finished being established before doing anything.
* Use any combination of the protocol's **Nodes** to provide **Communication** capabilities to the **Project**. The protocols supported by **Incari** which use this guideline are [**CAN**](/incari-studio/toolbox/communication/can.md), [**CANopen**](/incari-studio/toolbox/communication/canopen.md), [**HTTP**](/incari-studio/toolbox/communication/http.md), [**MAVLink**](/incari-studio/toolbox/communication/mavlink.md), [**MQTT**](/incari-studio/toolbox/communication/mqtt.md), [**Serial**](/incari-studio/toolbox/communication/serial.md), [**Socket.IO**](/incari-studio/toolbox/communication/socketio.md), [**TCP**](/incari-studio/toolbox/communication/tcp.md), [**UDP**](/incari-studio/toolbox/communication/udp.md), and [**WebSocket**](/incari-studio/toolbox/communication/websocket.md) communication. For more information on each protocol, visit their respective page.
* To terminate the connection, use the protocol's **Stop Node** to start disconnecting. Separately, use the protocol's **On Stop Node** to execute any following **Logic**. This is to make sure the connection is stopped completely before doing anything.

## Content

* [**Bluetooth**](/incari-studio/toolbox/communication/bluetooth.md)
* [**CAN**](/incari-studio/toolbox/communication/can.md)
* [**CANopen**](/incari-studio/toolbox/communication/canopen.md)
* [**HTTP**](/incari-studio/toolbox/communication/http.md)
* [**MAVLink**](/incari-studio/toolbox/communication/mavlink.md)
* [**MQTT**](/incari-studio/toolbox/communication/mqtt.md)
* [**Serial**](/incari-studio/toolbox/communication/serial.md)
* [**Socket.IO**](/incari-studio/toolbox/communication/socketio.md)
* [**TCP**](/incari-studio/toolbox/communication/tcp.md)
* [**UDP**](/incari-studio/toolbox/communication/udp.md)
* [**WebSocket**](/incari-studio/toolbox/communication/websocket.md)


---

# 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://docs.incari.com/incari-studio/toolbox/communication.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.
