Internet of Things memiliki sistem kerja dengan memanfaatkan sebuah argumentasi pemrograman, dimana tiap-tiap perintah argumennya itu menghasilkan sebuah interaksi antara sesama mesin yang terhubung secara otomatis tanpa campur tangan manusia dan dalam jarak berapapun. Internetlah yang menjadi penghubung di antara kedua interaksi mesin tersebut, sementara manusia hanya bertugas sebagai pengatur dan pengawas bekerjanya alat tersebut secara langsung. Banyak manfaat yang didapatkan dari internet of things. Pekerjaan yang kita lakukan menjadi cepat, mudah, dan efisien. Kita juga bisa mendeteksi pengguna dimanapun ia berada. Berikut adalah alur kerja dari Metode Internet of Things :
[[{"fid":"927","view_mode":"wysiwyg","fields":{"format":"wysiwyg","field_file_image_alt_text[und][0][value]":"alur sistem internet of things","field_file_image_title_text[und][0][value]":"alur sistem internet of things"},"type":"media","attributes":{"alt":"alur sistem internet of things","title":"alur sistem internet of things","height":"400","width":"391","class":"media-element file-wysiwyg"},"link_text":null}]]
Gambar 1 : Alur Metode Internet of Things
Message Queuing Telemetry Transport (MQTT) adalah protokol yang berjalan diatas TCP/IP. Cara kerjanya hampir sama dengan client server dengan penamaan yang lebih dikenal sebagai istilah publish – subcribe pada protokol ini.
[[{"fid":"928","view_mode":"wysiwyg","fields":{"format":"wysiwyg","field_file_image_alt_text[und][0][value]":"Konsep IoT","field_file_image_title_text[und][0][value]":"Konsep IoT"},"type":"media","attributes":{"alt":"Konsep IoT","title":"Konsep IoT","height":"59","width":"400","class":"media-element file-wysiwyg"},"link_text":null}]]
Gambar 2 : Protokol MQTT
OK...itu sedikit pengenalan saja mengenai apa saja yang terlibat dalam eksperimen kali ini. Berikutnya mari kita mulai melangkah dengan tahapan seperti berikut ini :
Install Board NodeMCU ESP-12E Pada Arduino IDE
- Buka Arduino IDE (Gunakan versi Terbaru)
[[{"fid":"931","view_mode":"wysiwyg","fields":{"format":"wysiwyg","field_file_image_alt_text[und][0][value]":"Gambar 1.1 Internet of things - Jendela utama arduino","field_file_image_title_text[und][0][value]":"Gambar 1.1 Internet of things - Jendela utama arduino"},"type":"media","attributes":{"alt":"Gambar 1.1 Internet of things - Jendela utama arduino","title":"Gambar 1.1 Internet of things - Jendela utama arduino","height":"400","width":"332","class":"media-element file-wysiwyg"},"link_text":null}]]
- Buka file – preferences, selanjutnya pada bagian Additional Boards Manager URLs masukan
- http://arduino.esp8266.com/stable/package_esp8266com_index.json
- kemudian OK
[[{"fid":"932","view_mode":"wysiwyg","fields":{"format":"wysiwyg","field_file_image_alt_text[und][0][value]":"Gambar 2 Internt of Things - Jendela Preference","field_file_image_title_text[und][0][value]":"Gambar 2 Internt of Things - Jendela Preference"},"type":"media","attributes":{"alt":"Gambar 2 Internt of Things - Jendela Preference","title":"Gambar 2 Internt of Things - Jendela Preference","height":"266","width":"400","class":"media-element file-wysiwyg"},"link_text":null}]]
- Berikutnya pilih Tools – Board – Boards Manager.
[[{"fid":"933","view_mode":"wysiwyg","fields":{"format":"wysiwyg","field_file_image_alt_text[und][0][value]":"Gambar 3 Internet of Things - Jendela Board Manager","field_file_image_title_text[und][0][value]":"Gambar 3 Internet of Things - Jendela Board Manager"},"type":"media","attributes":{"alt":"Gambar 3 Internet of Things - Jendela Board Manager","title":"Gambar 3 Internet of Things - Jendela Board Manager","height":"378","width":"400","class":"media-element file-wysiwyg"},"link_text":null}]]
- Kemudian silahkan cari ESP8266 pada form search dan diisntall. Saat menginstall Board, perhatikan versinya yang akan diinstall karena akan berpengaruh dengan Arduino Idenya, Disini saya install versi terlama.
[[{"fid":"934","view_mode":"wysiwyg","fields":{"format":"wysiwyg","field_file_image_alt_text[und][0][value]":"Gambar 4 Internet of Things - Jendela Pencarian dan Install Board","field_file_image_title_text[und][0][value]":"Gambar 4 Internet of Things - Jendela Pencarian dan Install Board"},"type":"media","attributes":{"alt":"Gambar 4 Internet of Things - Jendela Pencarian dan Install Board","title":"Gambar 4 Internet of Things - Jendela Pencarian dan Install Board","height":"223","width":"400","class":"media-element file-wysiwyg"},"link_text":null}]]
- Jika berhasil instal akan terlihat board NodeMCU 12E seperti ini :
[[{"fid":"935","view_mode":"wysiwyg","fields":{"format":"wysiwyg","field_file_image_alt_text[und][0][value]":"Gambar 5 Internet of Things - Hasil Board Node MCU berhasil diinstall","field_file_image_title_text[und][0][value]":"Gambar 5 Internet of Things - Hasil Board Node MCU berhasil diinstall"},"type":"media","attributes":{"alt":"Gambar 5 Internet of Things - Hasil Board Node MCU berhasil diinstall","title":"Gambar 5 Internet of Things - Hasil Board Node MCU berhasil diinstall","height":"357","width":"400","class":"media-element file-wysiwyg"},"link_text":null}]]
- Selesai...
Ok..untuk installasi board NodeMCU pada Arduino IDE sudah selesai, berikutnya kita akan membuat sebuah Broker untuk menampung data yang di publish maupun permintaan subcribe melalui protokol MQTT.
Broker yang akan kita gunakan yaitu https://www.cloudmqtt.com/ yang disediakan gratis maupun berbayar. Tentu kalau kita membuat akun yang gratis pastinya memiliki beberapa keterbatasan, namun akun yang gratis ini sudah cukup untuk sekedar eksperimen dalam cakupan pendidikan saja. Baik kita langsung saja membuat akun di web ini dengan cara seperti berikut ini :
Membuat Akun pada CloudMQTT
- Akses ke halaman https://www.cloudmqtt.com/, Kemudian pilih Control Panel
[[{"fid":"937","view_mode":"wysiwyg","fields":{"format":"wysiwyg","field_file_image_alt_text[und][0][value]":"Gambar 1 Cloud MQTT","field_file_image_title_text[und][0][value]":"Gambar 1 Cloud MQTT"},"type":"media","attributes":{"alt":"Gambar 1 Cloud MQTT","title":"Gambar 1 Cloud MQTT","height":"202","width":"400","class":"media-element file-wysiwyg"},"link_text":null}]]
- Dan akan dibawa ke halaman login. Jika belum membuat akun, silahkan buat akun dengan memasukan email dan lakukan verifikasi.
[[{"fid":"938","view_mode":"wysiwyg","fields":{"format":"wysiwyg","field_file_image_alt_text[und][0][value]":"Gambar 2 Cloud MQTT","field_file_image_title_text[und][0][value]":"Gambar 2 Cloud MQTT"},"type":"media","attributes":{"alt":"Gambar 2 Cloud MQTT","title":"Gambar 2 Cloud MQTT","height":"203","width":"400","class":"media-element file-wysiwyg"},"link_text":null}]]
- Klik verifikasi email dan lengkapi identitas akun.
[[{"fid":"939","view_mode":"wysiwyg","fields":{"format":"wysiwyg","field_file_image_alt_text[und][0][value]":"Gambar 4 Cloud MQTT","field_file_image_title_text[und][0][value]":"Gambar 4 Cloud MQTT"},"type":"media","attributes":{"alt":"Gambar 4 Cloud MQTT","title":"Gambar 4 Cloud MQTT","height":"205","width":"400","class":"media-element file-wysiwyg"},"link_text":null}]]
- Jika sudah melengkapi identitas, akan dibawa ke halaman utama dari akun.
[[{"fid":"940","view_mode":"wysiwyg","fields":{"format":"wysiwyg","field_file_image_alt_text[und][0][value]":"Gambar 6 Cloud MQTT","field_file_image_title_text[und][0][value]":"Gambar 6 Cloud MQTT"},"type":"media","attributes":{"alt":"Gambar 6 Cloud MQTT","title":"Gambar 6 Cloud MQTT","height":"228","width":"400","class":"media-element file-wysiwyg"},"link_text":null}]]
- Selanjutnya buat sebuah contoh broker dengan memilih menu Create pada halaman utama akun
[[{"fid":"941","view_mode":"wysiwyg","fields":{"format":"wysiwyg","field_file_image_alt_text[und][0][value]":"Gambar 7 Cloud MQTT","field_file_image_title_text[und][0][value]":"Gambar 7 Cloud MQTT"},"type":"media","attributes":{"alt":"Gambar 7 Cloud MQTT","title":"Gambar 7 Cloud MQTT","height":"231","width":"400","class":"media-element file-wysiwyg"},"link_text":null}]]
silahkan lengkapi form yang diminta seperti nama, letak dataya dan jenis akunnya. Pada pemilihan jenis akunnya ada yang berbayar ada yang gratis, untuk yang gratis bisa dipilih Cute Cat, dengan keterbatasan koneksi yang dimiliki untuk akun jenis ini..
- Detail akun yang telah dibuat.
[[{"fid":"942","view_mode":"wysiwyg","fields":{"format":"wysiwyg","field_file_image_alt_text[und][0][value]":"Gambar 8 Cloud MQTT","field_file_image_title_text[und][0][value]":"Gambar 8 Cloud MQTT"},"type":"media","attributes":{"alt":"Gambar 8 Cloud MQTT","title":"Gambar 8 Cloud MQTT","height":"234","width":"400","class":"media-element file-wysiwyg"},"link_text":null}]]
- Sampai sini akun sudah dapat digunakan, sekarang coba untuk meng-testnya melihat tampilan informasi dari perangkat sensor secara langsung dengan memilih menu Websocket UI.
[[{"fid":"943","view_mode":"wysiwyg","fields":{"format":"wysiwyg","field_file_image_alt_text[und][0][value]":"Gambar 11 Cloud MQTT","field_file_image_title_text[und][0][value]":"Gambar 11 Cloud MQTT"},"type":"media","attributes":{"alt":"Gambar 11 Cloud MQTT","title":"Gambar 11 Cloud MQTT","height":"182","width":"400","class":"media-element file-wysiwyg"},"link_text":null}]]
Pada halaman ini bisa digunakan untuk melakukan komunikasi. Sebagai contoh coba dibagian send message masukan topik (publish) yaitu (“/led”) dengan dikuti pesananya di form Message seperti yang terlihat pada gambar diatas jika pesan berhasil dikirim maka akan diterima pada bagian Receieved Messages.
- Selesai...
Sampai sini beberapa persiapan sudah terselesaikan, berikutnya mari kita kembali pada pemrograman untuk NodeMCU 12E dengan Arduino IDE. Berikut ini tahapannya :
- Merangkai Skematika Alat
[[{"fid":"944","view_mode":"wysiwyg","fields":{"format":"wysiwyg","field_file_image_alt_text[und][0][value]":"Internet of Things Skematik Rangkaian","field_file_image_title_text[und][0][value]":"Internet of Things Skematik Rangkaian"},"type":"media","attributes":{"alt":"Internet of Things Skematik Rangkaian","title":"Internet of Things Skematik Rangkaian","height":"400","width":"397","class":"media-element file-wysiwyg"},"link_text":null}]]
- Kode Program Arduino
#include <ESP8266WiFi.h> #include <PubSubClient.h> const char *ssid = ""; // nama ssid dari wi-fi, jangan lebih dari 32 karakter const char *pass = ""; // password dari wi-fi //------------------------------ Konfigurasi server pada https://www.cloudmqtt.com/ // perhatikan akun CloudMQTT yang telah dibuat, kemudian pastikan konfigurasi yang diperlukan ini, sama dengan akun yang anda miliki. const char *mqtt_server = ""; const int mqtt_port = ; const char *mqtt_user = ""; const char *mqtt_pass = ""; //------------------------------ End Konfigurasi server pada https://www.cloudmqtt.com/ //deklarasi variabel untuk led int led = 16; int led2 = 4; //deklarasi konfigurasi server WiFiClient wclient; PubSubClient client(wclient, mqtt_server, mqtt_port); //------------------------------ fungsi untuk menerima nilai balik (subcribe) void callback(const MQTT::Publish& pub) { if(pub.payload_string() == "1") { digitalWrite(led, HIGH); client.publish("/led/state", "Lampu Hidup"); } else if(pub.payload_string() == "0") { digitalWrite(led, LOW); client.publish("/led/state", "Lampu Mati"); } Serial.println(pub.payload_string()); } //------------------------------ End fungsi untuk menerima nilai balik (subcribe) void setup() { // Setup console Serial.begin(115200); delay(10); Serial.println(); Serial.println(); pinMode(led, OUTPUT); pinMode(led2, OUTPUT); } void loop() { //----------------------------- cek apakah wi-fi sudah tersambung if (WiFi.status() != WL_CONNECTED) { Serial.print("Connecting to "); Serial.print(ssid); Serial.println("..."); WiFi.begin(ssid, pass); if (WiFi.waitForConnectResult() != WL_CONNECTED) return; Serial.println("WiFi connected"); } //----------------------------- End cek apakah wi-fi sudah tersambung //----------------------------- cek apakah ESP sudah tersambung dengan server if (WiFi.status() == WL_CONNECTED) { if (!client.connected()) { Serial.println("Connecting to MQTT server"); if (client.connect(MQTT::Connect("arduinoClient2").set_auth(mqtt_user, mqtt_pass))) { Serial.println("Connected to MQTT server"); client.set_callback(callback); client.subscribe("/led"); client.publish("/led/state", "0"); } else { Serial.println("Could not connect to MQTT server"); } } //----------------------------- cek apakah ESP sudah tersambung dengan server if (client.connected()) client.loop(); } }
- Kode WEB
Untuk code webnya dapat anda download dibawah. Namun, perlu dijelaskan sedikit pada file websocket.js -nya diperlukan konfigurasi akun yang sama pada https://www.cloudmqtt.com/ seperti dibawah ini :
//================================== START Bagian yang perlu diperhatikan untuk dikonfigurasi dengan Akun Cloud MQTT ================ //membuat client baru client = new Paho.MQTT.Client("host", port ,"learn_" + parseInt(Math.random() * 100, 10)); // deklarasi beberapa variabel untuk menghandle proses login client.onConnectionLost = onConnectionLost; client.onMessageArrived = onMessageArrived; var options = { useSSL: true, userName: "", // username akun cloudmqtt.com password: "", // password akun cloudmqtt.com onSuccess:onConnect, onFailure:doFail } //================================== END Bagian yang perlu diperhatikan untuk dikonfigurasi dengan Akun Cloud MQTT ================ // connect the client client.connect(options); // fungsi jika client berhasil terhubung dengan server function onConnect() { console.log("onConnect"); //sebagai subscribe client.subscribe("/led/state"); //sebagai publisher // message = new Paho.MQTT.Message("-"); // message.destinationName = "/cloudmqtt"; // client.send(message); } function doFail(e){ console.log(e); } // fungsi jika client dan server gagal terhubung function onConnectionLost(responseObject) { if (responseObject.errorCode !== 0) { console.log("onConnectionLost:"+responseObject.errorMessage); } } // fungsi yang digunakan untuk menerima pesan (pesan dari ESP) function onMessageArrived(message) { console.log("onMessageArrived:"+message.payloadString); document.getElementById("messangeSubcribe").innerHTML = message.payloadString; } // fungsi untuk mengirimkan pesan ke ESP function onPublishMessage(topic, message) { message = new Paho.MQTT.Message(message); message.destinationName = topic; client.send(message); }
- Selesai
*Catatan
- Untuk library ESP12E dan MQTT pada Arduino IDE sudah dilampirkan serta semua kode arduino dan web secara lengkap.
- Diperlukan sebuah hostingan untuk menaruh WEB-nya karena brokernya bersifat online.
Komentar Terbaru