• Tidak ada hasil yang ditemukan

ADAFRUIT DASHBOARD WEBSITE

Dalam dokumen Pengenalan Internet of Things dengan Wemos (Halaman 64-80)

Adafruit.io adalah sebuah layanan yang menyediakan MQTT untuk IoT berbasis cloud yang dimana pertukaran data pengguna dan penyedia jasa dilakukan seluruhnya melalui jaringan internet. Adafruit.io memberikan beberapa jenis pelayanan antara lain:

1. Menampilkan data yang dikirimkan pengguna secara real time.

2. Membuat perangkat terkoneksi dengan jaringan internet.

3. Membuat perangkat agar dapat terhubung dengan beberapa pelayanan jaringan website, seperti twitter, RSS feeds, dll.

Dalam pelatihan ini, kita akan membuat skenario komunikasi antara wemos dan adafruit.io yang dimana wemos bertindak sebagai MQTT client dan adafruit.io bertindak sebagai MQTT broker. Kita akan membuat wemos menyiarkan data berupa nilai LDR dan Push button ke broker adafruit.io. Lalu, adafruit.io akan menampilkan data tersebut sesuai dengan kehendak dari kita sebagai pengguna, apakah dengan menggunakan gauge, switch, ataupun grafik.

Tujuan

1. Peserta dapat memahami fungsi dari Adafruit IO sebagai broker dalam MQTT.

2. Peserta dapat menghubungkan antara wemos dengan adafruit IO.

3. Peserta dapat membangun komunikasi data antara wemos dan adafruit IO kemudian mempresentasikan hasilnya sesuai dengan widget-nya.

Bahan-Bahan yang Digunakan

1. Wemos D1 Mini.

2. Kabel secukupnya.

3. DHT11.

4. LDR.

5. Satu buah push button.

6. Dua buah LED.

7. Kabel Micro USB.

Langkah-Langkah

1. Buatlah akun di alamat io.adafruit.com. Untuk mempermudah pembuatan akun, cukup koneksikan akun email gmail ke io.adafruit.com.

65

Gambar 27 Tampilan Halaman Awal io.adafruit.com.

2. Pada halaman awal adafruit, silakan tekan label adafruit IO key (posisi pojok kanan atas) untuk mendapatkan kode khusus untuk terkoneksi dengan wemos.

Gambar 28 Tampilan adafruit IO key.

3. Simpan key yang telah dihasilkan oleh io.adafruit. key tersebut nantinya menjadi identitas kita sebagai pengguna untuk berkomunikasi dengan io adafruit.

4. Karena pada skenario ini kita akan menghubungkan push button dan sensor LDR dengan io adafruit, maka kita akan membuat feeds sebagai jalan komunikasi keduanya. Silahkan tekan menu feeds bagian atas dan klik viewall.

66

Gambar 29 Tampilan Feeds pada IO Adafruit.

5. Untuk membangun komunikasi antara IO Adafruit dan wemos, maka kita klik actions (posisi pojok sebelah kiri), kemudian create new feeds. Isikan nama feed sesuai dengan yang anda inginkan tapi alangkah baiknya, sesuaikan dengan fungsi pada wemos, sebagai contoh : “pushButtonFeed” dan

“LDRFeed”. Yang perlu diingat lagi adalah besar kecilnya huruf sangat diperhitungkan dalam kasus ini. Setelah diisikan nama feed-nya, kita bisa mengisikan deskripsi untuk menjelaskan fungsi dari feed tersebut namun tidak wajib, kemudian klik create. Kita buat dua buah untuk mengakomodir push button dan LDR.

67

Gambar 30 Tampilan Create Feeds.

6. Maka nanti akan muncul feed yang kita buat di tabel feeds. Pada tabel feeds, ada berbagai macam detail, antara lain: key berfungsi sebagai token dari feed yang kita buat, last value merupakan nilai terakir yang terekam dari komunikasi dengan perangkat wemos, dan recorded adalah waktu perekaman dari last value.

7. Setelah kita selesai membuat feed, maka kita akan membuat dashboard io adafruit untuk merepresentasikan hasil komunikasi antara perangkat wemos dan adafruit. Klik menu dashboards dan klik view all setelahnya (posisi dashboard disebelah feeds). Setelah muncul, klik action kemudian create a new dashboard. Lalu isikan nama dashboard sesuai dengan yang kalian inginkan dan setelah itu klik create. Setelah dashboard yang kita buat muncul, maka klik dashboard yang kita buat.

68

Gambar 31 Tampilan Dashboard Adafruit IO.

Gambar 32 Tampilan Create Dashboard.

8. Untuk menampilkan widget yang berguna untuk merepresentasikan push button dan LDR, maka kita klik tombol Dashboard Setting di sebelah kanan. Kemudian, kita akan masuk pada Create New Block, untuk menambahkan widget kita klik pada widget yang diperlukan.

69

Gambar 33 Tampilan Dashboard Setting.

70

Gambar 34 Tampilan Create a New Block.

9. Karena kita akan membuat untuk push button, maka kita bisa memilih pada panel pertama (sebelah kiri atas), yang berbentuk switch. Sedangkan, untuk LDR kita pilih pada panel keempat yang merepresentasikan alat pengukur (sebelah kanan atas).

71

Gambar 35 Tampilan untuk Memilih Feed yang Akan Dihubungkan.

10. Untuk menghubungkan widget switch dengan feed push button, maka kita check list sesuai dengan feed-nya. Lalu klik next step jika sudah selesai.

72

Gambar 36 Tampilan Penyetelan untuk Widget Switch.

73

Gambar 3732 Tampilan Penyetelan Widget LDR.

11. Isikan ketentuan untuk widget switch sesuai dengan Gambar dan widget LDR sesuai dengan Gambar 3732. Setelah diisikan, klik tombol create block.

12. Setelah selesai membuat dashboard, maka selanjutnya kita klik tombol hijau bertuliskan save (posisi di sebelah tombol ‘+’).

74

Gambar 38 Adafruit Dashboard dengan Dua Widget.

13. Langkah selanjutnya adalah kita akan memasang library untuk adafruit sebagai sarana komunikasi antara wemos dan IO adafruit. Ada tiga library yang akan kita pasang pada arduino IDE, yaitu ArduinoHttpClient, Adafruit IO Arduino, dan Adafruit MQTT.

14. Langkah selanjutnya adalah, kita mengkoding wemos agar bisa berkomunikasi dengan io adafruit.

15. Koding yang telah diketikkan di sketch arduino bisa kita upload setelahnya.

16. Untuk rangkaian, masih tetap menggunakan rangkaian pada materi 2.1 INPUT.

Koding

#define IO_USERNAME "van_a_p"

#define IO_KEY "********************"

#define WIFI_SSID "TP-LINK_C65FAC"

#define WIFI_PASS "0987654321"

#include "AdafruitIO_WiFi.h"

AdafruitIO_WiFi io(IO_USERNAME, IO_KEY, WIFI_SSID, WIFI_PASS);

#include <ESP8266WiFi.h>

#include <AdafruitIO.h>

#include <Adafruit_MQTT.h>

#include <ArduinoHttpClient.h>

#define BUTTON_PIN D2

#define LED_PIN D1

#define LDR_PIN A0

75

int current = 0;

int last = 0;

float sensorValue = 0;

unsigned long previousMillis = 0;

const long interval = 5000;

AdafruitIO_Feed *commandPushButton = io.feed("PushButtonFeed");

AdafruitIO_Feed *commandLDR = io.feed("LDRFeed");

void setup() {

pinMode(BUTTON_PIN, INPUT_PULLUP);

pinMode(LED_PIN, OUTPUT);

Serial.begin(115200);

Serial.print("Connecting to Adafruit IO");

io.connect();

commandPushButton->onMessage(handleMessagePushButton);

commandLDR->onMessage(handleMessageLDR);

while(io.status() < AIO_CONNECTED) { Serial.print(".");

delay(500);

}

Serial.println();

Serial.println(io.statusText());

}

void loop() { io.run();

unsigned long currentMillis = millis();

if (currentMillis - previousMillis >= interval) { previousMillis = currentMillis;

sensorValue = analogRead(LDR_PIN);

sensorValue = (sensorValue / 1023) * 5000;

Serial.print("sending sensor value -> ");

Serial.println(sensorValue);

commandLDR->save(sensorValue);

}

if (digitalRead(BUTTON_PIN) == LOW) current = 1;

else

76

current = 0;

if (current == last) return;

Serial.print("sending button -> ");

Serial.println(current);

commandPushButton->save(current);

last = current;

}

void handleMessagePushButton(AdafruitIO_Data *data) { int command = data->toInt();

if (command == 1) {

Serial.print("received <- ");

Serial.println(command);

digitalWrite(LED_PIN, HIGH);

} else {

Serial.print("received <- ");

Serial.println(command);

digitalWrite(LED_PIN, LOW);

} }

void handleMessageLDR(AdafruitIO_Data *data) { int command = data->toInt();

Serial.print("Received sensor value <- ");

Serial.println(command);

}

Penjelasan Koding

#define IO_USERNAME "van_a_p"

#define IO_KEY "********************"

#define WIFI_SSID "TP-LINK_C65FAC"

#define WIFI_PASS "0987654321"

#include "AdafruitIO_WiFi.h"

AdafruitIO_WiFi io(IO_USERNAME, IO_KEY, WIFI_SSID, WIFI_PASS);

Pada koding di atas, kita mendefinisikan beberapa konstanta sebagai penunjang koneksi antara wemos dan adafruit IO. Dua baris pertama kita mendefinisikan username dan key adafruit yang sudah kita simpan sebelumnya. Token tersebut sebagai indentitas wemos dalam mengakses feeds yang ada pada adafruit IO. Dua baris selanjutnya merupakan detail informasi untuk menghubungkan perangkat wemos

77

dengan jaringan WiFi yang kita tentukan. Dua baris terakhir kita mendefinisikan library yang kita gunakan dalam hal ini adalah AdafruitIO_WiFi.h. Library tersebut nantinya akan kita gunakan untuk menggunakan fitur utama adafruit dan juga agar bisa menghubungkan wemos dengan adafruit IO. Baris terakhir kita membentuk sebuah kelas bernama IO yang dimana kita isikan parameter yang telah kita definiskan sebelumnya.

#include <ESP8266WiFi.h>

#include <AdafruitIO.h>

#include <Adafruit_MQTT.h>

#include <ArduinoHttpClient.h>

#define BUTTON_PIN D2

#define LED_PIN D1

#define LDR_PIN A0

Kemudian, kita menambahkan beberapa library pendukung untuk jalannya komunikasi antara broker adafruit IO dan wemos. Tiga baris terakhir kita memberikan nama kepada pin yang kita gunakan sebagai ujicoba dalam praktikum ini.

int current = 0;

int last = 0;

float sensorValue = 0;

unsigned long previousMillis = 0;

const long interval = 5000;

kita juga membuat beberapa variabel untuk mengatur jalannya program. Dua variabel pertama, current dan last, berguna untuk menyimpan kondisi saat ini dan terakhir dari push button. Variabel sensorValue berguna untuk menyimpan nilai dari LDR. Dan dua variabel terakhir, previousMillis dan interval, berguna untuk pengaturan jalannya fungsi millis().

AdafruitIO_Feed *commandPushButton = io.feed("PushButtonFeed");

AdafruitIO_Feed *commandLDR = io.feed("LDRFeed");

Pada koding di atas, kita membuat dua buah kelas dengan jenis yang sama. Kelas tersebut berguna untuk melakukan komunikasi dengan feed yang ada pada broker adafruit. Satu kelas hanya untuk satu feed.

Sehingga jika kita menggunakan tiga feeds, maka kita harus membuat juga tiga kelas AdafruitIO_Feed.

io.connect();

commandPushButton->onMessage(handleMessagePushButton);

commandLDR->onMessage(handleMessageLDR);

while(io.status() < AIO_CONNECTED) { Serial.print(".");

delay(500);

}

Serial.println();

78

Serial.println(io.statusText());

Kemudian kita mengoneksikan wemos dengan jaringan WiFi serta adafruit IO seperti pada baris pertama. Pada baris kedua dan ketiga, kita akan memasangkan prosedur kepada setiap kelas adafruitIO_feed. Prosedur ini nantinya akan dieksekusi ketika ada informasi yang datang dari adafruit IO ke wemos. Baris selanjutnya, kita menunggu koneksi antara wemos, WiFi, dan Adafruit IO. Baik terkoneksi ataupun tidak, maka status koneksi tersebut akan tercetak di serial monitor.

io.run();

unsigned long currentMillis = millis();

if (currentMillis - previousMillis >= interval) {

previousMillis = currentMillis;

sensorValue = analogRead(LDR_PIN);

sensorValue = (sensorValue / 1023) * 5000;

Serial.print("sending sensor value -> ");

Serial.println(sensorValue);

commandLDR->save(sensorValue);

}

Pada baris pertama, kita menjalankan kelas io untuk tetap terkoneksi dengan adafruit IO dan saling bertukar informasi antara keduanya. Kemudian, kita mendefinisikan bahwa untuk pembacaan LDR akan dilakukan setiap lima menit sekali, maka dari itu kita menggunakan fungsi millis. Di dalam fungsi millis tersebut, kita melakukan pembacaan LDR. Setelah dibaca nilai LDR, kita mengubah satuan unit nilai tersebut untuk menjadi microvolt. Setelah didapatkan nilainya, kita menggunakan prosedur save untuk mengirimkan data nilai LDR ke adafruit IO untuk ditampilkan ke dalam bentuk gauge.

if (digitalRead(BUTTON_PIN) == LOW) current = 1;

else

current = 0;

if (current == last) return;

Serial.print("sending button -> ");

Serial.println(current);

commandPushButton->save(current);

last = current;

Lalu, kita mendefinisikan langkah untuk menyalakan LED dengan push button melalui konfirmasi dari Adafruit IO. Karena kita menggunakan rangkaian aktif LOW, maka ketika push button ditekan akan menghasilkan nilai low. Nilai tersebut akan disimpan ke dalam variabel current. Jika nilai variabel current masih sama dengan nilai sebelumnya yang tersimpan dalam last, maka akan dikembalikan ke awal lagi

79

perlaksanaan kodingngya. Jika berbeda dari nilai sebelumnya, maka kita mengirim nilai yang baru ke adafruit IO. Kemudian, menyimpan nilai yang saat ini pada variabel last.

void handleMessagePushButton(AdafruitIO_Data *data) { int command = data->toInt();

if (command == 1) {

Serial.print("received <- ");

Serial.println(command);

digitalWrite(LED_PIN, HIGH);

} else {

Serial.print("received <- ");

Serial.println(command);

digitalWrite(LED_PIN, LOW);

} }

Prosedur yang sebelumnya kita pasangkan dengan feed dimana akan terpicu ketika wemos mengirimkan data ke adafruit. Data yang dikirimkan ke adafruit kemudian akan dikirimkan kepada semua perangkat yang berlangganan dengan feed tersebut, dalam hal ini feed yang digunakan untuk menyalakan dan mematikan LED. Ketika ada informasi yang datang dari adafruit berkaitan dengan feed LED, maka informasi tersebut akan disimpan pada variabel command. Kemudian, LED akan menyesuaikan status hidupnya sesuai dengan yang tersimpan dalam variabel command.

void handleMessageLDR(AdafruitIO_Data *data) { int command = data->toInt();

Serial.print("Received sensor value <- ");

Serial.println(command);

}

Pada koding di atas, kita membuat prosedur untuk membaca informasi yang masuk mengenai feed untuk LDR. Nilai feed tersebut disimpan dalam variabel command. Kemudian hasilnya akan dicetak di serial monitor.

Hasil Penerapan Koding

Gambar 39 Hasil Akhir Dashboard Adafruit IO.

80

Pada Gambar , kita melihat dua buah widget yang telah kita buat. Widget pertama berbentuk toggle akan mengatur jalannya dari LED yang ada pada wemos tersebut dan widget kedua berbentuk gauge akan menunjukkan nilai dari LDR dan memberikan peringatan ketika nilai melebihi 4500. Gambar menunjukkan jalur komunikasi antara wemos dan adafruit IO, setiap pengiriman dan penerimaan data yang dilakukan oleh wemos dan adafruit akan tercatat pada serial monitor yang kita buka sebelumnya.

Gambar 40 Hasil Komunikasi Serial Adafruit IO dan Wemos.

MATERI 6.2 : ADAFRUIT MQTT DASHBOARD pada ANDROID

Dalam dokumen Pengenalan Internet of Things dengan Wemos (Halaman 64-80)

Dokumen terkait