# Mengontrol Relay dan LED Melalui Perintah Get

## Pendahuluan

Pada project ini, Anda akan menggunakan **Shield Workshop Antares** pada modul **Development Board Lynx-32 .** Pada **Shield Workshop Antares** ini terdapat sensor suhu, kelembapan (DHT11), relay, LED, dan push button. Anda akan melakukan **Post Data** menggunakan software **POSTMAN** yang berisi perintah untuk mengontrol LED dan relay. Kemudian **Development Board Lynx-32** melakukan **Get Data** dari **Antares IoT Platform** yang berisi dua opsi perintah, yaitu apabila masukan Relay bernilai 1 maka relay akan menyala; masukan Relay bernilai 0 maka relay akan mati; LED bernilai 1 maka LED akan menyala; masukan LED bernilai 0 maka LED akan mati.&#x20;

<figure><img src="https://content.gitbook.com/content/rRkxjRLeqOm0pNhLfsus/blobs/k0auWJo4wxbmOON3Fp0S/Mengontrol%20Relay%20dan%20LED%20Melalui%20Perintah%20Get.png" alt=""><figcaption><p>Gambar Ilustrasi Project</p></figcaption></figure>

## Prasyarat

Material yang dibutuhkan mengikuti **Prasyarat Umum** pada laman sebelumnya. Jika Anda belum menyiapkan kebutuhan pada laman tersebut, maka Anda dapat mengunjungi laman berikut.

{% content-ref url="../../prasyarat-umum-esp32-wi-fi" %}
[prasyarat-umum-esp32-wi-fi](https://docs.antares.id/contoh-kode-dan-library/esp32-wi-fi/prasyarat-umum-esp32-wi-fi)
{% endcontent-ref %}

Adapun tambahan material yang spesifik untuk project ini adalah sebagai berikut.

1. Shield Workshop Antares
2. Library Antares ESP HTTP. Pada dokumentasi ini menggunakan library **Antares ESP HTTP versi 1.6.0.**

{% hint style="info" %}
Jika anda belum menginstall **Antares ESP HTTP 1.6.0** dapat mengikuti langkah berikut.

[antares-wi-fi-http](https://docs.antares.id/pendahuluan/instalasi-library-arduino/antares-wi-fi-http "mention")
{% endhint %}

3. Software Postman&#x20;

{% hint style="info" %}
Jika Anda belum menginstall **Software POSTMAN** dapat mengikuti langkah pada link berikut.

[instalasi-postman](https://docs.antares.id/pendahuluan/instalasi-software/instalasi-postman "mention")
{% endhint %}

## Langkah Kerja

### 1. Jalankan Aplikasi Arduino IDE

### 2. Membuka Contoh Program

{% hint style="info" %}
Kode program dapat Anda buka pada Arduino IDE melalui **File > Examples > Antares ESP HTTP > Lynx32-Simple-Project > GET\_DATA\_RELAY\_LED.**
{% endhint %}

Berikut adalah kode program contoh **GET\_DATA\_RELAY\_LED**.

```arduino
#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-APPLICATION-NAME"   // Replace with the Antares application name that was created
#define deviceName "YOUR-DEVICE-NAME"     // Replace with the Antares device name that was created

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

#define relayPin  25    // Digital pin for controlling the relay
#define ledPin  12      // Digital pin for controlling the LED

const unsigned long interval = 10000;    // 10 seconds interval to send message
unsigned long previousMillis = 0;  // Will store the last time a message was sent

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

    pinMode(relayPin, OUTPUT);  // Set relay pin as output
    pinMode(ledPin, OUTPUT);    // Set LED pin as output
}

void loop() {

    if (millis() - previousMillis > interval) {  // Check if it's time to send a message
        previousMillis = millis();               // Update the last sent time
        
        antares.get(projectName, deviceName);    // Get data from Antares
        
        if (antares.getSuccess()) {              // Check if data retrieval was successful
            String dataValue = antares.getString("Relay");  // Get the value of "Relay" data field
            String ledValue = antares.getString("LED");      // Get the value of "LED" data field

            // Control relay based on received data
            if (dataValue == "1") {
                digitalWrite(relayPin, HIGH);  // Turn on the relay
            } else if (dataValue == "0") {
                digitalWrite(relayPin, LOW);   // Turn off the relay
            }

            // Control LED based on received data
            if (ledValue == "1") {
                digitalWrite(ledPin, HIGH);    // Turn on the LED
            } else if (ledValue == "0") {
                digitalWrite(ledPin, LOW);     // Turn off the LED
            }

            Serial.println("Received data - Relay: " + dataValue + " | LED: " + ledValue);
        }
    }
}
```

### 3. Set **Credential WiFi dan Credential Antares pada Kode Program**&#x20;

Ubah parameter Protokol HTTP pada variabel berikut **\*ACCESSKEY, \*WIFISSID, \*PASSWORD, \*projectName,** dan **\*deviceName.** Sesuaikan dengan parameter di console Antares.&#x20;

```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-APPLICATION-NAME"   // Replace with the Antares application name that was created
#define deviceName "YOUR-DEVICE-NAME"     // Replace with the Antares device name that was created
```

{% hint style="info" %}
Parameter **\*Access key** didapat dari laman akun Antares Anda.
{% endhint %}

<figure><img src="https://3995702122-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrRkxjRLeqOm0pNhLfsus%2Fuploads%2FOwjl0QLzoSAsGheYULv8%2Faccess%20key.png?alt=media&#x26;token=064f2e4c-ff48-43a2-a34a-bbf49cf0276c" alt=""><figcaption><p>Letak Access Key di Laman Akun Antares</p></figcaption></figure>

{% hint style="info" %}
Parameter **WIFISSID** didapat dari nama **Wifi/Hotspot** yang sedang digunakan oleh Anda. contohnya pada gambar di bawah ini.
{% endhint %}

<figure><img src="https://content.gitbook.com/content/rRkxjRLeqOm0pNhLfsus/blobs/M3ww4sMEf5LqjbCG65a2/wifi.png" alt=""><figcaption><p>WIFISSID</p></figcaption></figure>

{% hint style="info" %}
Parameter **\*PASSWORD** didapat dari **password WiFi** yang sedang anda gunakan.
{% endhint %}

{% hint style="info" %}
Parameter **\*projectName** dan **\*deviceName** didapat dari **Application Name** dan **Device Name** yang sudah dibuat dalam akun Antares.
{% endhint %}

<figure><img src="https://3995702122-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrRkxjRLeqOm0pNhLfsus%2Fuploads%2F3G3Pek1wflcHqrdfG5lp%2Flynx%2032%20app.png?alt=media&#x26;token=b580c2bc-544b-457f-99ca-d7ceea76fdad" alt=""><figcaption><p>Tampilan Application Name</p></figcaption></figure>

<figure><img src="https://3995702122-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrRkxjRLeqOm0pNhLfsus%2Fuploads%2FOH0ltufXnZb7GqIFJlro%2Fantares%20shield%20dev.png?alt=media&#x26;token=6fff53e5-8e27-4639-9ef9-c617ac535262" alt=""><figcaption><p>Tampilan Device Name</p></figcaption></figure>

### 4. Compile dan Upload Program

Hubungkan **Lynx-32** dengan komputer Anda dan pastikan **Communication Port** terbaca.

{% hint style="info" %}
Pada sistem operasi Windows pengecekan dapat dilakukan melalui **Device Manager.** Jika **Lynx-32** Anda terbaca maka tampil **USB-Serial CH340** dengan port menyesuaikan ketersediaan port (pada kasus ini terbaca **COM4**).
{% endhint %}

<figure><img src="https://content.gitbook.com/content/rRkxjRLeqOm0pNhLfsus/blobs/efuecUlntayHJsox8XLZ/devman.PNG" alt=""><figcaption><p>Tampilan Device Manager</p></figcaption></figure>

Atur board **ESP32** dengan klik **Tools > Board > esp32** pada Arduino IDE, kemudian pastikan yang digunakan adalah **ESP32 Dev Module.** Pilih port sesuai communication port yang terbaca (dalam kasus ini COM4). Hasilnya akan terlihat seperti gambar berikut.

<figure><img src="https://content.gitbook.com/content/rRkxjRLeqOm0pNhLfsus/blobs/rMwtqx4g6mds4xIc8fkh/port.png" alt="" width="464"><figcaption><p>Tampilan Spesifikasi Board dan Port yang Digunakan</p></figcaption></figure>

Setelah semua setup selesai, lakukan upload program dengan menekan icon panah seperti gambar berikut. Tunggu hingga selesai proses compile dan upload

<figure><img src="https://content.gitbook.com/content/rRkxjRLeqOm0pNhLfsus/blobs/VsGsHRrB7wQElV1TvB8A/iconupload.PNG" alt=""><figcaption><p>Ikon Compile untuk Centang dan Ikon Upload untuk Tanda Panah</p></figcaption></figure>

{% hint style="info" %}
**Icon Centang** pada Arduino IDE hanyalah proses verify. Biasanya digunakan untuk **Compile** program untuk mengetahui apakah terdapat error atau tidak .

**Icon Panah** pada Arduino IDE adalah proses verify dan upload. Biasanya digunakan untuk **Compile** program sekaligus **Flash Program** pada target board.
{% endhint %}

Jika upload program berhasil maka akan terlihat seperti gambar berikut.

<figure><img src="https://content.gitbook.com/content/rRkxjRLeqOm0pNhLfsus/blobs/fAXoiKWyTgX4MonTih4m/done.PNG" alt=""><figcaption></figcaption></figure>

Setelah selesai upload program, Anda dapat melihat **serial monitor** untuk melakukan debug program. Icon **serial monitor** terlihat pada gambar berikut.

<figure><img src="https://content.gitbook.com/content/rRkxjRLeqOm0pNhLfsus/blobs/mdwyvFJCVlPQNxDFLCxp/iconserial.png" alt=""><figcaption><p>Ikon Serial Monitor</p></figcaption></figure>

Atur **serial baud rate** menjadi 115200 dan pilih BothNL & CR. Hasilnya akan terlihat seperti gambar berikut.

<figure><img src="https://content.gitbook.com/content/rRkxjRLeqOm0pNhLfsus/blobs/3UJyLSB9WQAiNfTFgBvk/serialmon.PNG" alt=""><figcaption><p>Tampilan Serial Monitor</p></figcaption></figure>

{% hint style="danger" %}
Pastikan **serial baud rate** sesuai dengan nilai yang terdefinisi di kode program. Jika **serial baud rate** tidak sama, antara **kode program** dan **serial monitor** maka karakter ASCII tidak akan terbaca dengan baik.
{% endhint %}

### 5. Setup Software POSTMAN

Pada langkah ini anda memerlukan software POSTMAN, Anda dapat menginput **end-point, request header dan request body** terlebih dahulu dengan mengikuti format berikut.

**End Point**&#x20;

<table data-header-hidden><thead><tr><th width="134.5"></th><th></th></tr></thead><tbody><tr><td><strong>Method</strong></td><td>POST</td></tr><tr><td><strong>URL</strong></td><td>https://platform.antares.id:8443/~/antares-cse/antares-id/<mark style="color:red;">your-application-name/your-device-name</mark></td></tr></tbody></table>

{% hint style="info" %}
Sesuaikan <mark style="color:red;">your-application-name</mark> dan <mark style="color:red;">your-device-name</mark> sesuai nama-nama yang terdaftar pada akun Antares Anda.
{% endhint %}

**Request Header**

<table data-header-hidden><thead><tr><th width="134.5"></th><th></th></tr></thead><tbody><tr><td><strong>Key</strong></td><td><strong>Value</strong></td></tr><tr><td>X-M2M-Origin</td><td><mark style="color:red;">your-access-key</mark></td></tr><tr><td>Content-Type</td><td>application/json;ty=4</td></tr><tr><td>Accept</td><td>application/json</td></tr></tbody></table>

{% hint style="info" %}
Sesuaikan <mark style="color:red;">your-access-key</mark> dengan access key akun Antares Anda.
{% endhint %}

Hasilnya akan seperti gambar berikut.

<figure><img src="https://content.gitbook.com/content/rRkxjRLeqOm0pNhLfsus/blobs/lAUvuZz5DBBiIPnljkVp/POSTMAN%201.png" alt=""><figcaption><p>Gambar setting end-point dan header pada software POSTMAN.</p></figcaption></figure>

Selanjutnya Anda perlu menginput request body dengan mengikuti format berikut.

**Request Body**

```json
{
  "m2m:cin": {
    "con": "{\"key1\":\"integer-value\", \"key2\":\"string-value\", \"keyN\":\"valueN\"}"
  }
}
```

Pada software POSTMAN pilih tab **Body** kemudian pilih **raw** dan masukkan payload sesuai request body yang ingin digunakan seperti gambar berikut.

<figure><img src="https://content.gitbook.com/content/rRkxjRLeqOm0pNhLfsus/blobs/PptqqlVreh623qITSgs6/POSTMAN2.png" alt=""><figcaption><p>Gambar isi payload request body pada software POSTMAN.</p></figcaption></figure>

{% hint style="info" %}
Sesuaikan isi field "con" sesuai dengan "key" dan "value" yang ingin Anda kirimkan.
{% endhint %}

### 6. Mengirim Pesan POSTMAN ke Server Antares

Setelah setup software POSTMAN selesai, saatnya mengirimkan perintah POST. Pada field "Relay" diisi dengan string "1" untuk **RELAY ON**  atau "0" untuk **RELAY OFF**. Pada field "LED" diisi dengan string "1" untuk **LED ON** atau "0" untuk **LED OFF**. Field "Relay" dan "LED" ini merupakan pesan perintah untuk mengendalikan Relay dan LED yang akan dikirim melalui protokol HTTP ke server Antares. &#x20;

```json
{
  "m2m:cin": {
    "con": "{\"Relay\":\"1\", \"LED\":\"1\"}" 
  }
}
```

{% hint style="info" %}
Sesuaikan isi field "Relay" dan "LED" sesuai dengan perintah get yang ingin Anda kirimkan. Berikan nilai "1" atau "0" untuk menyalakan atau mematikan.
{% endhint %}

Jika sudah selesai mengisi field "test" selanjutnya tekan tombol **Send** pada software POSTMAN. Indikator request HTTP melalui software POSTMAN berhasil, pada bagian response software POSTMAN akan muncul seperti gambar berikut&#x20;

<figure><img src="https://content.gitbook.com/content/rRkxjRLeqOm0pNhLfsus/blobs/XliWQJlDzv9W38EjR0yi/POSTMAN3.png" alt=""><figcaption><p>Gambar response hit API pada software POSTMAN. </p></figcaption></figure>

### 7. Periksa Data di Antares

Setelah upload program berhasil, selanjutnya buka halaman device antares kemudian lihat apakah data sudah berhasil dikirim.

<figure><img src="https://3995702122-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrRkxjRLeqOm0pNhLfsus%2Fuploads%2FUNfUG4tfYJnxEDjx5RcT%2Fapp%20dev%20lynx%2032%20-%20antares%20shield.png?alt=media&#x26;token=e3bd13e7-648a-46df-86d3-e5623d59eea7" alt=""><figcaption></figcaption></figure>

<figure><img src="https://3995702122-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrRkxjRLeqOm0pNhLfsus%2Fuploads%2FkNNuT7Di1sEJXYlwEkEj%2F151.png?alt=media&#x26;token=4f6c3978-a931-4cab-83d9-1815879e0c3f" alt=""><figcaption><p>Gambar Halaman Console Antares Ketika Data Berhasil Diterima.</p></figcaption></figure>

{% hint style="info" %}
Data yang diterima oleh **Lynx-32** dengan protokol HTTP berupa variabel Relay dan LED.
{% endhint %}

### 8. Output Program

Get data dari **Antares IoT Platform** dan menggerakan relay dan menyalakan LED.

<figure><img src="https://content.gitbook.com/content/rRkxjRLeqOm0pNhLfsus/blobs/L1oCjUZxoIGDUa6LmvwF/hasil.jpg" alt=""><figcaption><p>Hasil Relay dan LED ON</p></figcaption></figure>
