# 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**](https://docs.incari.com/incari-studio/2024.1/modules/plugins)

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](https://docs.incari.com/incari-studio/2024.1/toolbox/communication/bluetooth).

* Locate the desired communications protocol in [**Project Settings**](https://docs.incari.com/incari-studio/2024.1/modules/project-settings). 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**](https://docs.incari.com/incari-studio/2024.1/toolbox/communication/can), [**CANopen**](https://docs.incari.com/incari-studio/2024.1/toolbox/communication/canopen), [**HTTP**](https://docs.incari.com/incari-studio/2024.1/toolbox/communication/http), [**MAVLink**](https://docs.incari.com/incari-studio/2024.1/toolbox/communication/mavlink), [**MQTT**](https://docs.incari.com/incari-studio/2024.1/toolbox/communication/mqtt), [**Serial**](https://docs.incari.com/incari-studio/2024.1/toolbox/communication/serial), [**Socket.IO**](https://docs.incari.com/incari-studio/2024.1/toolbox/communication/socketio), [**TCP**](https://docs.incari.com/incari-studio/2024.1/toolbox/communication/tcp), [**UDP**](https://docs.incari.com/incari-studio/2024.1/toolbox/communication/udp), and [**WebSocket**](https://docs.incari.com/incari-studio/2024.1/toolbox/communication/websocket) 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**](https://docs.incari.com/incari-studio/2024.1/toolbox/communication/bluetooth)
* [**CAN**](https://docs.incari.com/incari-studio/2024.1/toolbox/communication/can)
* [**CANopen**](https://docs.incari.com/incari-studio/2024.1/toolbox/communication/canopen)
* [**HTTP**](https://docs.incari.com/incari-studio/2024.1/toolbox/communication/http)
* [**MAVLink**](https://docs.incari.com/incari-studio/2024.1/toolbox/communication/mavlink)
* [**MQTT**](https://docs.incari.com/incari-studio/2024.1/toolbox/communication/mqtt)
* [**Serial**](https://docs.incari.com/incari-studio/2024.1/toolbox/communication/serial)
* [**Socket.IO**](https://docs.incari.com/incari-studio/2024.1/toolbox/communication/socketio)
* [**TCP**](https://docs.incari.com/incari-studio/2024.1/toolbox/communication/tcp)
* [**UDP**](https://docs.incari.com/incari-studio/2024.1/toolbox/communication/udp)
* [**WebSocket**](https://docs.incari.com/incari-studio/2024.1/toolbox/communication/websocket)
