# Sending Simple Data to Antares with HTTP Protocol

In this project you will be directed to send simple data from **ESP8266** to Antares IoT Platform using WiFi connectivity with HTTP protocol.

## Prerequisites

The materials required follow the **General Prerequisites** on the previous page. If you have not prepared the requirements on that page, then you can visit the following page.

{% content-ref url="../general-prerequisites-esp8266-wi-fi" %}
[general-prerequisites-esp8266-wi-fi](https://docs.antares.id/en/code-and-library-examples/esp8266-wi-fi/general-prerequisites-esp8266-wi-fi)
{% endcontent-ref %}

The additional materials specific to this project are as follows.

1. Antares ESP HTTP Library. This documentation uses the **Antares ESP HTTP library version 1.4.0.**

{% hint style="info" %}
If you have not installed **Antares ESP HTTP 1.4.0**, please follow these steps.

[antares-wi-fi-http](https://docs.antares.id/en/getting-started/arduino-library-installation/antares-wi-fi-http "mention")
{% endhint %}

## Follow These Steps

### **1.** Launch the Arduino IDE application

### **2.** Opening Sample Programme&#x20;

{% hint style="info" %}
You can open the programme code in the Arduino IDE via **File > Example > Antares ESP HTTP > AntaresStoreData.**
{% endhint %}

Below is the AntaresStoreData sample programme code.

```cpp
/*
  This code will deploy data to your Antares project device with the following structure:
  (Note that nesting the JSON object can only be done up to 2 levels using this library)
  {
    "temperature": random-int,
    "humidity": random-int,
    "wind_speed": random-float,
    "rain_level": random-float,
    "location" : {
      "latitude": "static-string",
      "longitude": "static-string"
    }
  }
  For more information please visit https://antares.id/id/docs.html
*/

#include <AntaresESPHTTP.h> // Include the AntaresESP32HTTP library

#define ACCESSKEY "your-access-key" // Replace with your Antares account access key
#define WIFISSID "your-wifi-ssid" // Replace with your Wi-Fi SSID
#define PASSWORD "your-wifi-password" // Replace with your Wi-Fi password

#define projectName "your-project-name"   // Antares project name
#define deviceName "your-project-name" // Name of the device 

AntaresESPHTTP antares(ACCESSKEY); // Initialize AntaresESP32HTTP with the access key

void setup() {
  Serial.begin(115200);      // Initialize serial communication
  antares.setDebug(true);    // Enable Antares library debug mode
  antares.wifiConnection(WIFISSID, PASSWORD);  // Connect to WiFi using provided SSID and password
}

void loop() {
    // Variables
  int temp = random(25,30) ;  //Create a random integer value for temperature
  int hum = random(75,90); // Create a random integer value for humidity
  float windsp = float(random(20, 30))/3.33; //Create a random float value for windspeed
  float rainlv = float(random(0, 20))/6.99; //Create a random float value for rainlevel
  String lat = "-6.8718189"; //Create a string value for latitude
  String lon = "107.5872477"; //Create a string value for longitude

  // Add variable data to storage buffer
  antares.add("temperature", temp); // Add temperature data to the Antares payload
  antares.add("humidity", hum); // Add humidity data to the Antares payload
  antares.add("wind_speed", windsp); // Add wind_speed data to the Antares payload
  antares.add("rain_level", rainlv); // Add rain_level data to the Antares payload
  antares.add("location", "latitude", lat); // Add location latitude data to the Antares payload
  antares.add("location", "longitude", lon); // Add location longitude data to the Antares payload

  // Send from buffer to Antares
  antares.send(projectName, deviceName); // Send  data to Antares
  delay(10000); // Transfer data for every 10 seconds
}
```

### **3.** Set WiFi Credential and Antares Credential in Program Code

Change the HTTP Protocol parameters in the following variables **\*ACCESSKEY, \*WIFISSID, \*PASSWORD, \*projectName,** and **\*deviceName**. Adjust to the parameters in the Antares console.

```arduino
#define ACCESSKEY "your-access-key" // Replace with your Antares account access key
#define WIFISSID "your-wifi-ssid" // Replace with your Wi-Fi SSID
#define PASSWORD "your-wifi-password" // Replace with your Wi-Fi password

#define projectName "your-project-name"   // Antares project name
#define deviceName "your-project-name"   // Name of the device 
```

{% hint style="info" %}
The **\*Access key** parameter is obtained from your Antares account page.
{% endhint %}

<figure><img src="https://3873791589-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F7cujmJ5QHdJaAjH815aZ%2Fuploads%2FcKXHKaoueE8ASMhbdvhG%2Fimage.png?alt=media&#x26;token=b07f7a66-1e4c-4647-a430-11bdd4969db4" alt=""><figcaption><p>Access Key Location on Antares Account Page</p></figcaption></figure>

{% hint style="info" %}
The **WIFISSID** parameter is obtained from the name of the **Wifi / Hotspot** that is currently being used by you. for example in the image below.
{% endhint %}

<div align="center" data-full-width="true"><figure><img src="https://content.gitbook.com/content/7cujmJ5QHdJaAjH815aZ/blobs/IccnByKtfKghUhvV7eO2/WIFI%20SSID.jpeg" alt="" width="375"><figcaption><p>The WiFi SSID being used.</p></figcaption></figure></div>

{% hint style="info" %}
The \***PASSWORD** parameter is obtained from the **WiFi** password you are currently using.
{% endhint %}

{% hint style="info" %}
The parameters **\*projectName** and **\*deviceName** are obtained from the **Application Name** and **Device Name** that have been created in the Antares account.
{% endhint %}

<figure><img src="https://3873791589-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F7cujmJ5QHdJaAjH815aZ%2Fuploads%2F8ggYvHas84qM9071lvOM%2Fimage.png?alt=media&#x26;token=3f9608d5-aa24-40e8-8d14-ec806b133f07" alt=""><figcaption><p>Application Name Display</p></figcaption></figure>

<figure><img src="https://3873791589-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F7cujmJ5QHdJaAjH815aZ%2Fuploads%2FkA95bh4X0pdlAEbgrwGn%2Fimage.png?alt=media&#x26;token=7f7b037f-e8cc-40f4-9dee-48d219125dcf" alt=""><figcaption><p>Device Name Display</p></figcaption></figure>

### **4. Compile and Upload Program**

Connect the **ESP8266 WEMOS D1R2** with your computer and make sure the **Communication Port** is read.

{% hint style="info" %}
On Windows operating systems, checking can be done via **Device Manager**. If your **ESP8266 WEMOS D1R2** is read, the **USB-Serial CH340** appears with the port adjusting the port availability (in this case it reads **COM4**).
{% endhint %}

<figure><img src="https://content.gitbook.com/content/7cujmJ5QHdJaAjH815aZ/blobs/xUKyOeMuK8drk0M0EfVy/Device%20Manager%20Windows.jpeg" alt=""><figcaption><p>Device Manager image on Windows.</p></figcaption></figure>

Set up the **ESP8266 WEMOS D1R2** board by clicking **Tools > Board > esp8266** in the Arduino IDE, then make sure the one used is **LOLIN (WEMOS) D1 R2 & mini**. Select the port according to the communication port that is read (in this case COM4). The result will look like the following picture.

<figure><img src="https://content.gitbook.com/content/7cujmJ5QHdJaAjH815aZ/blobs/fjFJ86mIQkPBPuLbWiVy/Menu%20Tools%20Arduino%20IDE.jpeg" alt="" width="563"><figcaption><p>Image of Tools Menu on Arduino IDE</p></figcaption></figure>

After all the setup is complete, upload the programme by pressing the arrow icon as shown below. Wait for the compile and upload process to finish.

<figure><img src="https://content.gitbook.com/content/7cujmJ5QHdJaAjH815aZ/blobs/Hs2M4CG7h8wv9jMqFyfV/Icon%20Verify%20dan%20Compile.jpeg" alt=""><figcaption><p>Image of the Verify and Upload icons in the Arduino IDE.</p></figcaption></figure>

{% hint style="info" %}
**The Tick icon** on the Arduino IDE is just the verify process. Usually used to **Compile** the programme to find out whether there are errors or not.\
**The Arrow icon** on the Arduino IDE is the verify and upload process. Usually used to **Compile** the programme as well as **Flash the programme** to the target board.
{% endhint %}

If the programme upload is successful, it will look like the following image.

<figure><img src="https://content.gitbook.com/content/7cujmJ5QHdJaAjH815aZ/blobs/K9dEBGSP3AWBH8YpfNFx/Upload%20Berhasil%20Halaman%20Arduino%20IDE.jpeg" alt=""><figcaption><p>Arduino IDE page image after successful upload.</p></figcaption></figure>

After uploading the programme, you can view the **serial monitor** to debug the programme. The **serial monitor** icon is shown in the following image.

<figure><img src="https://content.gitbook.com/content/7cujmJ5QHdJaAjH815aZ/blobs/QpgTmiQlx7jWRAtXU89Z/Icon%20Serial%20Monitor%20Arduino%20IDE.jpeg" alt=""><figcaption><p>Image of the Serial Monitor Icon in the Arduino IDE.</p></figcaption></figure>

Set the **serial baud rate** to 115200 and select BothNL & CR. The result will look like the following image.

{% hint style="danger" %}
Make sure the **serial baud rate** matches the value defined in the programme code. If the **serial baud rate** is not the same between the **programme code** and the **serial monitor**, the ASCII characters will not be read properly.
{% endhint %}

<figure><img src="https://content.gitbook.com/content/7cujmJ5QHdJaAjH815aZ/blobs/jORWkv9VWkDuLuN4UAkp/Serial%20Monitor%20Kirim%20Data%20HTTP.jpeg" alt=""><figcaption><p>Serial Monitor Image</p></figcaption></figure>

### **5.** Check Data in Antares

After uploading the programme successfully, then open the device antares page and see if the data has been successfully sent.

<figure><img src="https://3873791589-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F7cujmJ5QHdJaAjH815aZ%2Fuploads%2Fq4IMou3XRpju4GOBU2ir%2Fimage.png?alt=media&#x26;token=e92454f8-24d5-4469-b27a-a24a777ba7bc" alt=""><figcaption></figcaption></figure>

<figure><img src="https://3873791589-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F7cujmJ5QHdJaAjH815aZ%2Fuploads%2FqYNsdr840DGEzKjBTFY4%2Fimage.png?alt=media&#x26;token=afbd72e9-bd07-43d8-8bd8-5487bb570bea" alt=""><figcaption><p>Console Page Image When Data Successfully Received</p></figcaption></figure>

{% hint style="info" %}
The data sent from **ESP8266** with HTTP protocol is in the form of temperature, humidity, wind\_level, rain\_level, and location variables containing latitude and longitude.
{% endhint %}
