# Messages

Messages are sent between linked [Nodes](https://docs.luxonis.com/software/depthai-components/nodes.md). The only way nodes
communicate with each other is by sending messages from one to another. On the table of contents (left side of the page) all
DepthAI message types are listed under the Messages entry. You can click on them to find out more.

## Creating a message in Script node

A DepthAI message can be created either on the device, by a node automatically or manually inside the
[Script](https://docs.luxonis.com/software/depthai-components/nodes/script.md) node. In below example, the code is taken from the
[Script Camera Control](https://docs.luxonis.com/software/depthai/examples/script_camera_control.md) example, where the [Camera
Control](https://docs.luxonis.com/software/depthai-components/messages/camera_control.md) message is created inside the Script
node every second and sent to the [ColorCamera's](https://docs.luxonis.com/software/depthai-components/nodes/color_camera.md)
input (cam.inputControl).

```python
script = pipeline.create(dai.node.Script)
script.setScript("""
  # Create a message
  ctrl = CameraControl(1)
  # Configure the message
  ctrl.setCaptureStill(True)
  # Send the message from the Script node
  node.io['out'].send(ctrl)
""")
```

## Creating a message on the Host

It can also be created on a host computer and sent to the device via
[XLinkIn](https://docs.luxonis.com/software/depthai-components/nodes/xlink_in.md) node. [RGB Camera
Control](https://docs.luxonis.com/software/depthai/examples/rgb_camera_control.md), [Video &
MobilenetSSD](https://docs.luxonis.com/software/depthai/examples/video_mobilenet.md) and [Stereo Depth from
host](https://docs.luxonis.com/software/depthai/examples/stereo_depth_from_host.md) code examples demonstrate this functionality
perfectly. In the example below, we have removed all the code that isn't relevant to showcase how a message can be created on the
host and sent to the device via XLink.

```python
# Create XLinkIn node and configure it
xin = pipeline.create(dai.node.XLinkIn)
xin.setStreamName("frameIn")
xin.out.link(nn.input) # Connect it to NeuralNetwork's input

with dai.Device(pipeline) as device:
  # Create input queue, which allows you to send messages to the device
  qIn = device.getInputQueue("frameIn")
  # Create ImgFrame message
  img = dai.ImgFrame()
  img.setData(frame)
  img.setWidth(300)
  img.setHeight(300)
  qIn.send(img) # Send the message to the device
```
