# HTTP | Subscribe and Notify Mechanism

#### Prasyarat <a href="#prasyarat" id="prasyarat"></a>

1. Memiliki software NGROK. Jika Anda belum memilikinya, silakan buka link berikut [link. NGROK](https://ngrok.com/download).
2. Memiliki Node JS. Jika Anda belum memilikinya, silakan buka link berikut [link. Node JS](https://nodejs.org/en/).
3. Memiliki POSTMAN. Jika Anda belum memilikinya, silakan buka link berikut [link. POSTMAN](https://www.postman.com/downloads/).

#### Langkah-langkah <a href="#langkah" id="langkah"></a>

1. Login akun Antares Anda melalui Antares Console [https://console.antares.id](https://console.antares.id/)

<figure><img src="https://3995702122-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrRkxjRLeqOm0pNhLfsus%2Fuploads%2FydSbMUKSCzg4XCvrHxGP%2Fimage.png?alt=media&#x26;token=98559c12-4fbe-40f9-a443-237fe0b93042" alt=""><figcaption></figcaption></figure>

2. Buat Aplikasi, jika Anda telah memilikinya, abaikan untuk melanjutkan ke proses berikutnya.&#x20;

<figure><img src="https://3995702122-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrRkxjRLeqOm0pNhLfsus%2Fuploads%2FSGUhab1QcduNY1ESQLIL%2Fimage.png?alt=media&#x26;token=358cb677-b9ef-4d3b-950f-048ef005c8c6" alt=""><figcaption></figcaption></figure>

3. Buat Device, jika Anda telah memilikinya, abaikan untuk melanjutkan ke proses berikutnya.

<figure><img src="https://3995702122-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrRkxjRLeqOm0pNhLfsus%2Fuploads%2F9MZhne8D6E94evwGMyBR%2Fcreate%20device.png?alt=media&#x26;token=f88c4443-4fe7-4650-b007-dad01c2c5de4" alt=""><figcaption></figcaption></figure>

1. Mulai dengan menuliskan kode program untuk mendapatkan data dari ANTARES. Anda dapat menggunakan kode program berikut ini: Copy kode program tersebut ke penyimpanan lokal komputer Anda kemudian simpan dalam format **.js extension.** Dalam tutorial ini, kami simpan dengan monitor.js

   <pre class="language-javascript" data-line-numbers><code class="lang-javascript">var express = require('express');
   var app = express();
   var server = require('http').createServer(app);
   var bodyParser = require('body-parser');
   var util = require('util')

   app.use(bodyParser.json());
   app.use(bodyParser.urlencoded({ extended: false }));

   app.post('/monitor', function(req, res, next) {
     console.log(util.inspect(req.body, false, null));
     res.send('ack');
   });


   server.listen(9000, function() {
     console.log('App listening on port 9000');
   });
   </code></pre>

   <figure><img src="https://content.gitbook.com/content/rRkxjRLeqOm0pNhLfsus/blobs/HwB5kAKLglRIWCZmCShx/image.png" alt=""><figcaption></figcaption></figure>
2. Buka command prompt (windows) atau terminal (linux)

   <figure><img src="https://content.gitbook.com/content/rRkxjRLeqOm0pNhLfsus/blobs/adTUWxREhkOIxC70gcOn/image.png" alt=""><figcaption></figcaption></figure>

   Masukkan direktori file kode program yang telah Anda simpan sebelumnya

   <figure><img src="https://content.gitbook.com/content/rRkxjRLeqOm0pNhLfsus/blobs/I1ru1NqbIJW0VGW2rxPF/image.png" alt=""><figcaption></figcaption></figure>
3. Jalankan kode program dengan melakukan sesuai dengan gambar dibawah ini.<br>

   <figure><img src="https://content.gitbook.com/content/rRkxjRLeqOm0pNhLfsus/blobs/ibgvjm7ialNPCMlnBea0/image.png" alt=""><figcaption></figcaption></figure>

   **Kode program yang berhasil** dapat dilihat seperti pada gambar berikut ini.

   <figure><img src="https://content.gitbook.com/content/rRkxjRLeqOm0pNhLfsus/blobs/gaI0hGqI1XdiDtCN9foC/image.png" alt=""><figcaption></figcaption></figure>

   Mendapatkan masalah? Jika ya, eksekusi sintaks berikut ini. **Jika tidak, abaikan proses ini.**

   <figure><img src="https://content.gitbook.com/content/rRkxjRLeqOm0pNhLfsus/blobs/YWa8IRLFdt3p9nsaCAff/image.png" alt=""><figcaption></figcaption></figure>

   Install paket yang belum terinstall.

   <figure><img src="https://content.gitbook.com/content/rRkxjRLeqOm0pNhLfsus/blobs/PofJIZmgjclCrk9HSewd/image.png" alt=""><figcaption></figcaption></figure>

   Lakukan Allow Access ketika sedang menjalakan kode program.<br>

   <figure><img src="https://content.gitbook.com/content/rRkxjRLeqOm0pNhLfsus/blobs/bvEKyV6H0SrJmBdi1wnn/image.png" alt=""><figcaption></figcaption></figure>
4. Mulai menjalankan **NGROK**. **NGROK** akan membantu Anda untuk membuka localhost Anda ke public domain.\
   Pertama, masuk ke direktori NGROK. **Pastikan Anda sudah mengekstraknya, sehingga sudah dalam format file .exe.**

   ```java
   cd download-path/
   ```

   Jalankan **NGROK** dengan menggunakan port 9000 dengan cara sebagai berikut:

   ```java
   ngrok.exe port 9000
   ```
5. Buka Device yang telah Anda buat sebelumnya. Klik tombol Webhook.

<figure><img src="https://3995702122-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrRkxjRLeqOm0pNhLfsus%2Fuploads%2FppFjvbGgx4f8KqB5cBzb%2Fhttp%201.png?alt=media&#x26;token=5ac629bb-a054-49dc-bcdd-9e754d494aec" alt=""><figcaption></figcaption></figure>

<figure><img src="https://3995702122-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrRkxjRLeqOm0pNhLfsus%2Fuploads%2FojSKyKW70tyVbzc34Ljq%2Fhttp%202.png?alt=media&#x26;token=f3ae1b4c-d735-4fb9-8ebb-24dbe0a94e0c" alt=""><figcaption></figcaption></figure>

**Tambahkan /monitor** pada akhir URL NGROK seperti dibawah ini.

<figure><img src="https://3995702122-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrRkxjRLeqOm0pNhLfsus%2Fuploads%2Faynla2z1WGvLZiCK43xM%2Fhttp%203.png?alt=media&#x26;token=5f153715-00ae-4b90-ba05-3ed9dbcbdaa7" alt=""><figcaption></figcaption></figure>

Ketika Anda telah berhasil mensubscribenya, akan muncul pop up.<br>

<figure><img src="https://content.gitbook.com/content/rRkxjRLeqOm0pNhLfsus/blobs/aUiD8O515NdK0yhQpnyD/image.png" alt=""><figcaption></figcaption></figure>

1. Mari periksa apakah server Anda mendapatkan notifikasi dengan perangkat emulator menggunakan POSTMAN. Silakan buka POSTMAN, dan isi semua parameter dengan informasi berikut ini.

<table data-header-hidden><thead><tr><th width="111"></th><th width="569.3333333333334"></th></tr></thead><tbody><tr><td><strong>Field</strong></td><td><strong>Value</strong></td></tr><tr><td>URL</td><td><mark style="color:red;"><code>https://platform.antares.id:8443/~/antares-cse/antares-id/your-project-name/your-device-name</code></mark><br>or<br><mark style="color:red;"><code>https://platform.antares.id:8443/~/antares-cse/your-device-ID</code></mark><br><br>Note: <mark style="color:red;"><code>your-device-ID</code></mark> must be starting with <mark style="color:red;"><code>CNT</code></mark>. e.g. <mark style="color:red;"><code>CNT-842419289</code></mark></td></tr><tr><td>Method</td><td><code>POST</code></td></tr></tbody></table>

Mari periksa apakah server Anda mendapatkan notifikasi dengan perangkat emulator menggunakan POSTMAN. Silakan buka POSTMAN, dan isi semua parameter dengan informasi berikut ini.

<table data-header-hidden><thead><tr><th width="111"></th><th width="569.3333333333334"></th></tr></thead><tbody><tr><td><strong>Field</strong></td><td><strong>Value</strong></td></tr><tr><td>URL</td><td><code>https://platform.antares.id:8443/~/antares-cse/antares-id/your-project-name/your-device-name</code><br>or<br><code>https://platform.antares.id:8443/~/antares-cse/your-device-ID</code><br><br>Note: <code>your-device-ID</code> must be starting with <code>CNT</code>. e.g. <code>CNT-842419289</code></td></tr><tr><td>Method</td><td><code>POST</code></td></tr></tbody></table>

**Header**

|              |                                                         |
| ------------ | ------------------------------------------------------- |
| **Key**      | Value                                                   |
| X-M2M-Origin | <mark style="color:red;">`your-access-key`</mark>       |
| Content-Type | <mark style="color:red;">`application/json;ty=4`</mark> |
| Accept       | <mark style="color:red;">`application/json`</mark>      |

**Body**

```json
{
  {
  "m2m:cin": {
    "xmlns:m2m": "http://www.onem2m.org/xml/protocols",
    "cnf": "application/json",
    "con": "{\"temperature\":30.3, \"humidity\":35.1}"
  }
}
```

Selama Anda mengirimkan data, aplikasi server monitor Anda akan mendapatkan data yang server dapatkan. Data tersebut dapat dilihat seperti berikut ini.

**Selamat! Anda baru saja mendapatkan notifikasi data.**
