> For the complete documentation index, see [llms.txt](https://docs.consentiumiot.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.consentiumiot.com/code-usage/consentiumthings-arduino-data-receiver-api.md).

# ConsentiumThings Arduino Data Receiver API

## Overview

This code interfaces with the **ConsentiumThings board** to receive sensor data from a server via Wi-Fi and print it to the Serial Monitor. It is intended for use with **ESP8266**, **ESP32**, and **Raspberry Pi Pico W** boards and operates by connecting to Wi-Fi and receiving data at regular intervals using the ConsentiumThings REST API.

## Dependencies

The code depends on the **ConsentiumThings.h** library, which provides functions for Wi-Fi connection, data reception, and RESTful API communication with the Consentium IoT platform.

## Components

### 1. **Wi-Fi Configuration**

* `const char *ssid = "YOUR_WIFI_SSID";`: This is the Wi-Fi network SSID to which the IoT board will connect.
* `const char *pass = "YOUR_WIFI_PASSWORD";`: The password for the specified Wi-Fi network.

### 2. **API Keys**

* `const char *ReceiveApiKey = "YOUR_API_KEY";`: API key for receiving data from the server.
* `const char *BoardApiKey = "YOUR_BOARD_API_KEY";`: API key specific to the board, used for authentication purposes.

### 3. **Data Reception Interval**

* `constexpr int interval = 7000;`: Defines the time interval between each data reception in milliseconds. In this case, the system will wait for 7 seconds (7000 ms) between receiving data from the server.

### 4. **Board Initialization**

* `ConsentiumThings board;`: Creates an instance of the **ConsentiumThings** object, representing the IoT board that will receive data from the server.

## Functions

### `void setup()`

* This function runs once when the board is powered on or reset.
* **Wi-Fi Initialization**:
  * `board.initWiFi(ssid, pass);`: Connects the board to the Wi-Fi network using the provided SSID and password.
* **Board API Initialization**:
  * `board.beginReceive(ReceiveApiKey, BoardApiKey);`: Authenticates the board and initiates the process to receive data from the server using the ConsentiumThings platform.

### `void loop()`

* This function runs repeatedly after `setup()` and handles the continuous reception and printing of sensor data.
* **Data Reception**:
  * `auto dataPairs = board.receiveData();`: Retrieves the sensor data from the server, storing it as key-value pairs, where each pair contains a sensor reading and its corresponding label.
* **Data Printing**:
  * A `for` loop iterates through the received `dataPairs` to print both the sensor data and its corresponding label (`info`) to the Serial Monitor.
  * `Serial.print("Data: ");` and `Serial.print("Info: ");`: These lines are used to display the data and information for each sensor.
* **Delay**:
  * `delay(interval);`: Pauses execution for 7 seconds before receiving and printing new data again.

## Example Output

The code prints the received sensor data in the following format on the Serial Monitor:

```
Data: 24.5          	Info: Temperature
Data: 55.0          	Info: Humidity
```

This output shows the sensor values along with the description of what each value represents.

## Customization

### Wi-Fi Configuration

You must replace `"YOUR_WIFI_SSID"` and `"YOUR_WIFI_PASSWORD"` with your actual Wi-Fi network credentials:

```cpp
const char *ssid = "MyWiFiNetwork";
const char *pass = "MyWiFiPassword";
```

### API Keys

The placeholders `"YOUR_API_KEY"` and `"YOUR_BOARD_API_KEY"` should be replaced with the actual API keys provided by the ConsentiumThings service. These keys authenticate the board and allow it to receive data.

### Interval

To change the interval between receiving data from the server, adjust the value of the `interval` constant (in milliseconds):

```cpp
constexpr int interval = 5000; // Wait for 5 seconds between data receptions
```

### LED Indication (Optional)

You can connect an LED to a specific GPIO pin to visually indicate REST events as mentioned in the comment header. The GPIO pin depends on the board:

* GPIO 16 for ESP8266
* GPIO 23 for ESP32
* GPIO 25 for Raspberry Pi Pico W


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://docs.consentiumiot.com/code-usage/consentiumthings-arduino-data-receiver-api.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
