---
# System prepended metadata

title: Pendahuluan
tags: [documentation, tutorial, xirka]

---

###### tags : `xirka` `documentation` `tutorial`

---
title: "Tutorial Xirka IoT Platform"
---

# Pendahuluan

## 1. Daftar Isi

[TOC]

## 2. Registrasi Akun Xirka IoT Platform

1. Xirka iot platform bisa diakses di halaman `http://202.148.1.57:8200`
2. Registrasi Akun.
     - Masuk ke halaman registrasi , kemudian isi form registrasi: username, email dan password
    - Lakukan verifikasi email dengan menggunakan link yang dikirim oleh system ke email yang sudah didaftarkan. 
    - Setelah verifikasi, login dengan menggunakan username/email dan password yang telah didaftarkan
3. Buat Aplikasi Dashboard
    - Buat aplikasi pada dashboard Xirka IoT Platform. Misalkan :
      - AppId : DemoEsp32
      - AppName : Demo Aplikasi ESP32
      - Description: Aplikasi IoT sederhana menggunakan perangkat ESP32
    - Catatan: jika nama AppId sudah dipakai oleh akun lain, silakan ganti AppId dengan nama yang lain. 
    - Setelah mendaftarkan Aplikasi, anda akan mendapatkan informasi      berupa `AppKey, Endpoint MQTT broker, dan HTTP`.
4. Registrasi perangkat
    - Daftarkan perangkat dengan menentukan Device Name
    - Jika ”device name” sudah terpakai, gunakan nama yang lain.
    - Nama perangkat akan digunakan sebagai "topik" pada pengiriman pesan mqtt.
6. Resume
    -  Catat AppKey, Topik dan broker Endpoint
       - AppKey : app-DemoEsp32.DRr0p0m3l1UsG1hLgwT1QfVlmLA4FD
         - username : app-DemoEsp32
         - password : DRr0p0m3l1UsG1hLgwT1QfVlmLA4FD
       - Topic : perangkat1
       - Broker Endpoint : mqtt://202.148.1.57:1883

## 3. Eksplorasi Fitur Xrka IoT Platform
### 3.1 Mengirim data via Mosquitto client


```sequence
Terminal 1->Broker Xirka: send message + topic
Note left of Terminal 1: mosquitto client
Broker Xirka->Terminal 2: Send Message + Topic
Note right of Terminal 2: mosquitto client
```

1. Buka 2 (dua) command prompt / terminal, arahkan di lokasi direktori mosquitto berada.
    ```
    cd C:\Program Files\mosquitto
    ```
2. Terminal 1 : 
Subscribe topik pada perangkat device yang telah didaftarkan dengan menggunakan akun anda:
   ```
   mosquitto_sub -h "<ip_broker>" -p <port_broker> -u <username> -P <password> -t "<nama_perangkat>"
   ```
   atau
   ```
   mosquitto_sub -h "202.148.1.57" -p 1883 -u app-DemoEsp32 -P DRr0p0m3l1UsG1hLgwT1QfVlmLA4FD -t "perangkat1"
   ```
   
3. Terminal 2 :
Pada terminal 2 kirim pesan pada topik yang sama dengan perintah:
   ```
   mosquitto_pub -h "<ip_broker>" -p <port_broker> -u <username> -P <password> -t "<nama_perangkat>"
   ```
   atau
   ```
   mosquitto_pub -h "202.148.1.57" -p 1883 -u app-DemoEsp32 -P DRr0p0m3l1UsG1hLgwT1QfVlmLA4FD -t "perangkat1" -m "hello form terminal 2"
   ```
    4. Pesan `hello from terminal 2` seharusnya diterima oleh klien pada terminal 1
  
  
 ### 3.2 Mengirim data dalam format json
 
1. Pergi ke halaman dashboard -> aplikasi -> perangkat1. Kemudian pilih menu mesasage log. Klik listen topik, pastikan status berubah menjadi listening Topic

2. Kirim kembali pesan sebagaimana langkah 3 pada percobaan 1,  perhatikan pesan masuk pada dashboard anda. :)

3. Meski pesan anda masuk, pesan anda tidak tersimpan di database. Lihat di menu database, tidak ada pesan masuk. :(

4. Supaya pesan anda tersimpan dalam database, pesan anda harus mengikuti format json:
    ```
   {"timestamp":<timestamp>, "payload": {"key1": value1, "key2", value2, ....}}
   ```
    | No  |    Item     | Tipe Data |  Catatan  |
    | :-: | :---------: | :-------: | :-------: |
    |  1  |  timestamp  |  Epoch Time (number of seconds that have passed since 1 January 1970 00:00 UTC)   | Optional |
    |  2  |   payload    |  data yang akan anda kirim berupa pasangan key-value   | Required     |

   - contoh payload :
    ``` 
         {"payload": {"humidity": 12, "temperature": 32}}
    ```

5. kirimkan data : `{"payload": {"humidity": 12, "temperature", 32}}` melalui mosquitto client. 
   
   Catatan : 
   - Supaya bisa mengirimkan karakter " (tanda petik dua), gunakan tanda \ sebelumnya. 
   - Jadi perintah yang kita pakai adalah:
      ``` 
       mosquitto_pub -h "202.148.1.57" -p 1883 -u app-DemoEsp32 -P DRr0p0m3l1UsG1hLgwT1QfVlmLA4FD -t "perangkat1" -m  "{\"payload\": {\"humidity\": 12, \"temperature\": 32}}"
       ```

### 3.3 Fitur Send Data Pada Xirka IoT Platform
Alternatif pengiriman data bisa menggunakan fitur publish melalui dashboard xirka, yaitu menggunakan fitur send data. 

1. Pastikan anda subscribe topic dengan menggunakan mosquitto sebagaimana pada percobaan 1 langkah 2
   ```
   mosquitto_sub -h "202.148.1.57" -p 1883 -u app-DemoEsp32 -P DRr0p0m3l1UsG1hLgwT1QfVlmLA4FD -t "perangkat1"
   ```
3. Pilih menu "send data", kemudian generate payload. Isi nilai key / value Isikan key dengan humidity dan temperature dengan nilai bebas. Kemudian klik tombol generate payload.
4. Klik tombol publish data untuk mengirimkan data. 
5. Pesan akan tampil pada terminal dan data akan tersimpan pada database. 


### 3.4 Membuat Card Widget
Kini kita akan membuat card-widget untuk memantau data yang masuk pada broker melalui aplikasi kita.
1. Pada halaman dashboard, pilih aplikasi yang telah anda buat. kemudian pilih card list, klik link create now.
2. Buat 2 card dengan nilai berikut:
     | No  |    Item     | Tipe |  data key  | data key  |
     | :-: | :---------: | :-------: | :-------: | :-------:  |
     |  1  |  card 1  |  line chart   | humidity, temperature | %, celcius|
     |  2  |   card 2    |  value card   | humidity, temperature     |%, celcius |

3. Pindah halaman ke aplikasi => perangkat, kemudian pilih menu monitoring. Klik listen topik untuk memantau data yang masuk.Pastikan status berubah menjadi connected to server.

4. Kirim data menggunakan mosquitto client. Varisikan nilai humidity, dan temperature.
    ```
    mosquitto_pub -h "202.148.1.57" -p 1883 -u app-DemoEsp32 -P DRr0p0m3l1UsG1hLgwT1QfVlmLA4FD -t "perangkat1" -m  "{\"payload\": {\"humidity\": 12, \"temperature\": 32}}"
    ```
5. Data yang dikirim akan di tampilkan pada dashboard dalam waktu singkat.


## 4. Membuat Aplikasi Pubsub dengan Python
### 4.1 Instalasi Dependensi
Berikutnya kita akan mengirim / menerima data menggunakan python. Adapun librari yang akan digunakan adalah paho-mqtt. 
1. Buat folder baru kemudian, arahkan terminal pada folder tersebut. 
2. Pastikan anda menggunakan python 3, ketik perintah python --version
4. Install library paho-mqtt dengan menggunakan pip: pip install paho-mqtt
5. Pastikan library telah terinstall dengan mengecek eksistensi library  dengan perintah pip list. perhatikan, paho-mqtt terdapat pada daftar librari kita.

### 4.2 Aplikasi Pengiriman data
```sequence
Python->Broker Xirka: send message + topic
Note left of Python: paho-mqtt
Broker Xirka->Dashboard Xirka: Send Message + Topic
Note right of Dashboard Xirka: See Monitoring feature
```
1. Pergi pada repositori binus-iot pada link [ini](https://github.com/mraditya89/binus-iot/blob/main/sesi-2/client1.py). Salin kemudian ubah nilai berikut : `BROKER_IP, BROKER_PORT, CLIENT_USERNAME, CLIENT_PASSWORD, dan TOPIC`. Sesuaikan nilai tersebut dengan aplikasi yang telah didaftarkan pada dashboard IoT Xirka. 
3. Jalankan program python dengan menggunakan terminal `python <nama_file_python>`. Aplikasi tersebut akan mengirimkan data secara berkala setiap 5 detik kepada broker. 
4. Anda bisa memanfaatkan fitur monitoring untuk memantau data yang masuk.  

### 4.3 Aplikasi Subscribe Topik
```sequence
Terminal->Broker Xirka: send message + topic
Note left of Terminal: mosquitto-client
Broker Xirka->Python: Send Message + Topic
Note right of Python: Print incoming message
Note right of Python: Print ("Turn off/on")*
```
1. Salin kode python pada link [ini](https://github.com/mraditya89/binus-iot/blob/main/sesi-2/client2.py). Salin kemudian ubah nilai berikut : `BROKER_IP, BROKER_PORT, CLIENT_USERNAME, CLIENT_PASSWORD, dan TOPIC`. Sesuaikan nilai tersebut dengan aplikasi yang telah didaftarkan pada dashboard IoT Xirka. 
3. Jalankan program python dengan menggunakan terminal `python <nama_file_python>`. Aplikasi tersebut akan mencetak pesan yang dikirimkan pada topik `{TOPIC}/#` dan mengeksekusi perintah print pada kasus tertentu. 
4. Kirim berikut pesan melalui mosquitto.
    ```
    mosquitto_pub -h "202.148.1.57" -p 1883 -u app-DemoEsp32 -P DRr0p0m3l1UsG1hLgwT1QfVlmLA4FD -t "perangkat1" -m  "{\"payload\" {\"humidity\": 12, \"temperature\": 32}}"
    ```
    Seharusnya pesan akan diterima oleh python dan mencetak nilai berikut pada terminal : `Pesan masuk : {'payload': {'humidity': 12, 'temperature': 32}}`
5. Selanjutnya kirim pesan `{"message":"OFF"}` melalui mosquitto. 
    ```
    mosquitto_pub -h "202.148.1.57" -p 1883 -u app-DemoEsp32 -P DRr0p0m3l1UsG1hLgwT1QfVlmLA4FD -t "perangkat1/light" -m  "{\"message\":\"OFF\"}"
    ```
    Pesan akan tampil pada terminal : 
    ```
    Pesan masuk : {'message': 'OFF'}
    ```       
    dan mengeksekusi baris perintah `print("Turn OFF")`
    
## 5. Komunikasi Data melalui ESP32/ESP8266

**Skenario 1**
```sequence
ESP32->Broker Xirka: send message + topic
Note left of ESP32: pubsubclient
Broker Xirka->Dashboard Xirka: Send Message + Topic
Note right of Dashboard Xirka: See monitor feature
```
**Skenario 2**
```sequence
Terminal->Broker Xirka: send message + topic
Note left of Terminal: Mosquitto Client
Broker Xirka->ESP32: Send Message + Topic
Note right of ESP32: Print message
Note right of ESP32: Turn off/on builtin LED
```
1. Buka arduino IDE, kemudian install package dengan memilih menu Tools-> Manage Libraries. Kemudian cari librari pubsubclient yang dikembangkan oleh Nick O'Leary. Kemudian install. 
2. Salin kode esp32/esp8266 pada link berikut.  
    - [ESP32 MQTT Client](https://github.com/mraditya89/binus-iot/blob/main/sesi-2/client3.ino)
    - [ESP8266 MQTT Client](https://github.com/mraditya89/binus-iot/blob/main/sesi-2/client4.ino)
4. Pada kode tersebut ubah nilai pada konfigurasi SSID(Wifi), MQTT CLient, MQTT Broker, dan topiknya. 
6. Kompile file tersebut ke perangkat esp32/esp8266. 
7. Buka serial monitor untuk memantau apakah perangkat terhubung ke internet dan broker, kemudian periksa apakah perangkat mengirim data secara berkala. 
8. Kirim perintah melalui mosquitto client untuk menyalakan atau mematikan LED ESP32/8266.
    ```
    mosquitto_pub -h "202.148.1.57" -p 1883 -u app-DemoEsp32 -P DRr0p0m3l1UsG1hLgwT1QfVlmLA4FD -t "perangkat1/light" -m  "{\"message\":\"ON\"}" 
    ```