> For the complete documentation index, see [llms.txt](https://docs.incari.com/incari-studio/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.incari.com/incari-studio/toolbox/communication.md).

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