Rabu, 20 November 2019
Memahami Cloud Biar Ga Kelaut - AWS Cloud Day Surabaya 2019
Seminggu setelah mengikuti acara "jualan" dari Amazon Indonesia saya malah ditanyain oleh istri "Mana sih foto foto seminar kamu? Biasanya sudah narsis aja kok kali ini nggak? " Padahal aslinya tangan gatel juga buat ambil kamera smartphone kayak ibu-ibu yg duduk di depanku. Ya mungkin karena ada sedikit kegalauan penulis memahami cloud yang ditawarkan oleh sebuah company pelopor online shoping ini. Kenapa galau? Awalnya saat sign up buat ikutan acaranya yang terbayang paling juga jualan storage online atau server online gak jauh-jauh lah ekspektasi saya. Tapi ketika saya daftar untuk mencoba layanan cloud nya aws, akhirnya inilah yg membuat saya bingung dan jadi males untuk selfie di acara seminarnya.
Gambar diatas saya buat saat menyiapkan video "show off" yg saya persiapkan untuk acara ini, siapa tau ada yg bisa saya prospek dan tertarik dengan project iot saya. MQTT dan database mongodb yg saya gunakan pada project ini semuanya berbasis AWS akan tetapi saya tidak sadar bahwa layanan yg saya pakai merupakan layanan 3rd party yg sepenuhnya jauh dari harapan saya yaitu IOT yg langsung ke system IOT CORE nya amazon. Tools yg saya gunakan ternyata tidak lebih hanya memanfaatkan platform "remote computing" dan "serverless script" yg terdapat pada AWS. Semakin bingung nih saya sampai akhirnya tercerahkan saat mengikuti seminar.
Nah loo..gimana gak bingung saat saya memulai berkenalan dengan AWS, uuakehh poool item yg ditawarkan dan saya mulai dari mana nih ? Wahh gak usah datang aja ke seminarnya, bakalan mati kutu nih? hihihii gitu aja nyerah kan ada google-yotutube-facebook dan sebagainya dan benar saja saya menggunakan youtube untuk mejawab "Saya Mulai Dari Mana?" Jawabannya adalah EC2 dimana berada di paling ujung awal dari list servis yg ditawarkan oleh AWS (panjang banget kepotong tuh gambarnya). Tentu saja saya sangat mengenal EC2 (sombong amatttt) karena ternyata gak jauh berbeda dengan VPS alias server virtual berbasis windows maupun linux.
Ahh cupu amat masih pake windows ? Ya mampunya bikin scriptnya di windows sih lagian biar gak pusing-pusing beradaptasi karena kebetuan saja python yg sedang saya oprek berbasis windows. Linuxnya bagaimana ? Mau jadi bingung ? nih saya connect kan ya...
Tuh bisa kan ? Jadi setelah saya mempunyai VPS serasa punya PC baru di "CLOUD" dan saya bisa menaruh script di sana. Hasilnya cakep juga dan bisa dilihat dari 2 video youtube berikut:
Terasa sudah keren banget dan ahli nih saya, sampai saatnya jadi peserta seminar dan ketemu sama orang-orang keren dari teamnya Amazon Indonesia. Dan saya sukses balik ke level newbie ...
AWS cloud day surabaya ini berlangsung tanggal 13 nopember 2019 dan lebih ditujukan kepada pelaku bisnis di surabaya dengan harapan tertarik menggunakan layanan cloud AWS. Tentu saja harapannya seperti itu dengan dibawanya pelaku bisnis lokal yg sudah memindahkan server dan aplikasinya ke platform cloud computing. Jawapos dot com ternyata telah berbasis cloud sejak 2016 dan saat ini sudah memangkas 1/2 budget jika menggunakan server premise (server fisik di data center). Dan yg menjadi momok bagi pegawai penjaga server adalah monitoring 24 jam, dan kini sepenuhnya dilakukan oleh AWS sehingga pekerja di jawapos dot com bisa tidur nyenyak kemudian bisa mencurahkan perhatiannya lebih ke konten dan kreativitas.
Apalagi sekarang AWS menjadi salah satu andalan berbagai perusahaan di dunia dalam hal pengaturan administrasi perusahaan dengan platform cloud computingnya berupa EC2 (elastic cloud computing) dan S3 (Simple Storage Service) sehingga aplikasi berupa SAP dan ERP sejenis bisa dijalankan di cloud. Lagi-lagi biaya maintenace server menjadi "0" NOL. Ya karena tentunya pihak amazon akan mengontrol sepenuhnya dengan garansi SLA 100% comply.
Topik industri 4.0 berupa pengolahan data alias Data Mining, Artificial Inteligent, dan Machine learning mungkin terlalu berat dipraktekkan dan cenderung hanya mudah diucapkan. Untuk itu AWS menawarkan solusi yaitu membuat orang yg awam, tidak perlu harus menjadi Data Scientist untuk mengolah data, semisal data forex forecasting. Saking banyaknya servis yg ditawarkan sampai-sampai terlihat AWS layaknya warteg yg "kebanyakan" menu dan semuanya enak untuk dicicipi.
Bagaimana dengan harga servis yg ditawarkan ? Ternyata sangat flexible dimana kita akan membayar sesuai apa yg kita butuhkan dan gunakan. Jadi semisal saat suatu layanan kita rasa berlebih maka bisa downgrade begitu juga sebaliknya. Saat kita tidak memerlukan layanan semisal lagi libur atau lagi ada kejadian tertentu maka user sepenuhnya memiliki hak untuk mematikan layanan tanpa harus membayar saat layanan mati. Bayangkan jika server kita berada di data center maka akan dikenakan charge bulanan yg FIX.
Lalu bagi penggiat microcontroller 8 bit bisa juga menggunakan layanan IOT Core dari AWS dan yg senang dengan Node.js bisa menggunakan AWS Lambda untuk menjalankan scriptnya secara SERVERLESS. Sampai tulisan ini saya buat penulis belum berhasil menghubungkan arduino dengan AWS IOT Core karena ada beberapa term "Security" yg sangat ketat dan sepertinya berlebihan diterapkan oleh AWS. Ya akhirnya penulis kembali lagi ke penggunaan EC2 untuk menjalankan server mqtt dan selama response nya cepat maka tidak menjadi masalah.
Sebenarnya banyak yg ingin saya bagi tapi akan saya tulis lagi saat ilmu saya sudah banyak. Maklum saja ilmu KELAUT ini masih menjadi hal baru bagi penulis. Dan bila anda membaca 5 tahun setelah tulisan ini di posting dapat dipastikan anda sudah menggunakan layanan CLOUD lebih sering daripada saat tulisan ini ditulis. Para pelajar di SMK jurusan TKJ tidak akan lagi belajar menyambung kabel UTP tapi belajar configurasi node js serverless. Dan anak-anak dirumah main game nya bukan di PC bapaknya tapi di CLOUD.
Kamis, 31 Oktober 2019
Cara Belajar IOT : Menyimpan Data Sensor lewat NBIOT untuk Ditampilkan Ke Chart dan Peta
Bahasan kali ini sempat tertunda akibat gejolak politik Indonesia sebelum pelantikan presiden. "Sombong Amat" hehehe...ya tertundanya secara tidak langsung sih karena coba deh perhatikan penampakan alat saya dibawah ini yg saya bawa keliling-keliling surabaya di awal oktober 2019.
Ngeri kali bukan? apalagi saat kasus penusukan pak wiranto saya jadi was-was membawa keliling alatnya ntar dikira mau sabotase kali...hehehe...ngelanturnya kejauhan kali ya ? Balik yuk ke topik utama dan kali ini IOT nya semakin lebih jauh dimana sensor akan dibawa berkeliling dan tiap pembacaan akan disimpan pembacaan GPS nya. Seperti ini loo pesan mqtt berformat JSON yg dikirim oleh arduino...
Dari pesan MQTT diatas maka jika ingin mengolah data ber "GEO" atau memiliki data koordinat GPS maka tiap pembacaan sensor perlu disimpan ke dalam database. Arduino secara kemampuan nya yg 8 bit tentunya megap-megap kalau dihubungkan ke SQL, lalu berpikir apasih yg digunakan orang-orang diluar sana untuk database IOT ? Jawabanya adalah PYTHON + MONGODB
Jadilah saya belajar bahasa asing lagi nih...ya untung saja sukses dan langkah belajarnya seperti ini untuk membantu pembaca memahami lebih mudah.
PYTHON + MQTT
Masih ingat tulisan terdahulu tentang ESP dan MQTT ? Sekarang dengan python ada library khusus menangani pesan PUBLISH dan SUBSCRIBE dengan nama pahomqtt. Jadi setelah berhasil mempelajari dasar-dasar python tidak lama kemudian saya berhasil menguasai pahomqtt seperti script berikut ini :
import paho.mqtt.client as mqtt #import lib mqtt
led = 0
segmen = 0
############jika ada mqtt yg di sub masuk#########
def on_message(client, userdata, message):
print("message received " ,str(message.payload.decode("utf-8")))
print("message topic=",message.topic)
print("message qos=",message.qos)
print("message retain flag=",message.retain)
global led
global segmen
client.publish("/test/seg","SEG"+ str(segmen))
print("Publishing message to topic LED & 7 SEG")
print("7 SEGMEN : " + str(segmen))
segmen+=1
if segmen == 10:
segmen = 0
if led == 0:
print("LED ON")
client.publish("/test/led","ON")
led = 1
else :
print("LED OFF")
client.publish("/test/led","OFF")
led = 0
print('')
print('')
########################################
broker_address="soldier.cloudmqtt.com"
broker_port=146xx
broker_user="xxxxxx"
broker_pass="xxxxxx"
print("creating new instance")
client = mqtt.Client("P1") #create new instance
client.on_message=on_message #attach function to callback
client.username_pw_set(broker_user,broker_pass)
print("connecting to broker")
client.connect(broker_address,broker_port) #connect to broker
#start the loop
print("Subscribing to topic","/test/DHT")
client.subscribe("/test/DHT")
client.loop_forever()
Script diatas merupakan koding python yg akan men SUB topik /test/DHT dan kemudian akan melakukan PUB terhadap LED dan 7 Segmen. oo iya jangan salah paham ya script python nya saya jalankan di PC yg terhubung ke internet bukan di ARDUINO.
PYTHON + MONGODB
Database umum yg digunakan saat ini pasti gak jauh dari SQL deh...tapi saya menemukan yg lebih simple dan ada GRATISAN nya yaitu MONGODB . Benar saja mongodb mungkin masih awam ditelinga orang tapi diluar sana bisa dilihat penggunaan mongobd cukup intensif mungkin dikarenakan karena data IOT yg bersifat tidak atau cenderung kurang relational dan tentunya datanya sederhana. Untuk itu kita bisa menggunakan mongodb gratis dengan nama MONGODB ATLAS dan bersifat cloud based.
Jika anda pengguna SQL maka record dan field pada mongodb diistilahkan sebagai collection . Python sendiri tidak mempunyai fasilitas khusus untuk mongodb sehingga dibutuhkan library PYMONGO sebagai bahasa dasar untuk simpan-hapus-filter-update database. Secara singkat hasil pembelajaran saya membaca suhu dan kemudian menyimpannya pada MONGODB seperti script berikut ini :
import pymongo
import json
from datetime import datetime
myclient = pymongo.MongoClient("mongodb+srv://user:pwd@cluster0-jb06l.mongodb.net/test?retryWrites=true&w=majority")
mydb = myclient["humitemp"]
mycol = mydb["data_humitemp"]
##########simpan DB###########
def save_db(isi):
dateTimeObj = datetime.now()
print('')
print("<===SAVE TO MONGODB===>")
print(dateTimeObj)
x=json.loads(isi)
y={"waktu":dateTimeObj , "suhu": x["suhu"] , "humi": x["humi"] }
z = mycol.insert_one(y)
#print list of the _id values of the inserted documents:
print("database masuk dengan id : ")
print(z.inserted_id)
print("========================")
print('')
###############BACA SUB MESSAGE#################
def on_message(client, userdata, message):
print("message received " ,str(message.payload.decode("utf-8")))
print("message topic=",message.topic)
print("message qos=",message.qos)
print("message retain flag=",message.retain)
save_db(str(message.payload.decode("utf-8")))
################################
broker_address="soldier.cloudmqtt.com"
broker_port=146xx
broker_user="xxxx"
broker_pass="xxxxxx"
print("creating new instance")
client = mqtt.Client("P1") #create new instance
client.on_message=on_message #attach function to callback
client.username_pw_set(broker_user,broker_pass)
print("connecting to broker")
client.connect(broker_address,broker_port) #connect to broker
#start the loop
print("Subscribing to topic","/test/DHT")
client.subscribe("/test/DHT")
client.loop_forever()
Hasilnya tidak mengecewakan pada MONGODB atlas karena ada fasilitas report CHART grafik sehingga sangat menyingkat waktu coding
Yang menjadi titik menariknya adalah data GEOSPATIAL juga bisa ditampilkan melalui MONGODB ATLAS.
Nanti deh kita bahas kapan-kapan setelah pembaca mahir di PYTHON vs ARDUINO...selamat mumet kawan...
Sabtu, 26 Oktober 2019
Nusantara HD - Unboxing Receiver PayTV Murah Dari Tanaka - Transvision
Sekitar awal 2018 dunia parabola mini kedatangan era siaran HD dengan munculnya produk refurbish dari Transvision dengan nama Rexana. Kenapa refurbish ? Ya memang receiver samsung yg digunakan adalah rekondisi ( baru di gudang) dari rx yg belum dipasang oleh transvision. Senangnya para pengguna parabola mini se nusantara bisa menikmati siaran HD yg super jernih , sampai rekan dari jiran malaysia pun ada yg memasang karena satelitnya tidak bergeser dari measat ( sama dengan satelitnya astro jadi bisa menggunakan parabola mini astro dan aman dari sweeping petugas di malaysia).
Dengan harga rx samsung transvision yg lumayan mahal, maka MMP kemudian TANAKA melakukan terobosan dengan melakukan refurbish rx skyworth bekas Telkomvision menjadi paket mitra/nusantara SD. Dan dengan semakin "GILA" nya perang TV LOKAL menjadi FREE TO VIEW yg dipelopori oleh MNC group, maka makin banyak orang yg butuh receiver semacam ini. Oktober 2019 Tanaka berhasil mengikat kerjasama dengan TRANSVISION untuk membeli haksiar siaran nya untuk 100 ch dengan nama NUSANTARA HD. Ayo kita unboxing yuk apa aja yg didapat dari receiver baru ini...
ISI BOX
Sangat standar bahkan mengecewakan karena tulisan di BOX terang benderang ditulis 4K HD , tapi kabel yg dikasikan hanya RCA composite, sangat IRONI apa mereka tidak paham mengenai High Definition ? Atau menekan harga semata?
TAMPILAN AWAL
Jadi bila ingin menikmati HD yg sebenarnya gunakanlah kabel HDMI..hehehe...
TAMPILAN DEPAN STB
Standar TANAKA .. yg pernah main main TOPAS pasti merasa rx ini mirip cuman plastiknya terkesan ringkih. Apalagi remotenya yg sangat terlihat "murahan".
AKTIVASI LEWAT APP
Jangan lupa menginstal aplikasi TANAKA VOUCHER di android kalian sebelum aktivasi perangkat. 2 kode yg dibutuhkan adalah chip ID dan kode gesek yg ada di dekat kabel antena. Bisa juga aktivasi menggunakan SMS/WA tapi kalau pake APP bisa dapat kredit 25.000, lumayan buat isi paket termurah 5000.
TAMPILAN DI TV
Lumayan jernih di LED 32 inch apalagi HD nya transvision terkenal terbaik dikelasnya
MENU BISA TAMBAH TP NGGAK?
Aman terkendali untuk tambah SAT dan TP, jadi receiver Nusantara HD seperti halnya TOPAS TANAKA yg berchipset GUOXIN jadi dapat dihandalkan untuk cari satelit FTA. Apa support acakan BISS atau PVU ? Kayaknya dikunci deh dan ngapain juga HBO nya murah sebulan 75 ribu saja dan 100ch sudah membuat lupa waktu karena nonton terus.
KUALITAS HD
Tidak disangsikan lagi sangat BENING untuk kualitas HD 1080 i nya. Saya sebelumnya menggunakan Ninmedia-TiviPlus di siaran tvN 720p dengan TV yg sama terasa perbedaan kehalusan sudut gambar dan detailnya
SIARAN DAN HARGA PAKET
Sayangnya bagi pecinta anime kurang didukung oleh RX ini karena animax dan aniplus tidak termasuk dalam channel list, begitu pula dengan CNN intl , E , DIVA, History Channel[V} dan NAT GEO. Jadi diutamakan untuk pecinta HBO FOX DISNEY NICK dan Korea. Jadi bisa dihandalkan juga. Dari dealer menjelaskan kalau paket lokalnya cuman 1 tahun dan bisa diperpanjang dengan membeli paket apa saja bisa yg termurah (paket Pria) seharga 5000 dan sudah terbuka semua siaran lokalnya .
Untuk susunan siaran butuh disusun manual dan menghapus siaran yg tidak termasuk paket.
Untuk susunan siaran butuh disusun manual dan menghapus siaran yg tidak termasuk paket.
OVERALL
Dengan skala 0 -10 maka review saya :
Kualitas RX = 5
Kualitas Siaran = 8
Ayo dicoba dan dapatkan kepuasan nonton siaran HD
Kamis, 03 Oktober 2019
Cara Belajar IOT : Lebih lanjut dengan MQTT menggunakan ESP8266 - Wemos D1
Ketika harga modul wifi + microcontroller dengan bandrol hanya 75 ribu perak, disitu saya merasa sangat sedih, dimana penghargaan terhadap para desainer elektronika ? Cungkuok memang luar biasa dalam meng "clone" modul berbasis arduino seperti Wemos D1 yang akan kita bahas disini. Daripada galau berkepanjangan karena tidak habis pikir biaya manufaktur dari board nya di cungkuok, sebaiknya kita oprek aja menjadi barang IOT yg sedang getol-getolnya dibicarakan orang. Industri 4.0 katanya...
Wemoz D1 merupakan minimum system atau lebih tepatnya breakout board dari modul wifi terkenal ESP8266 dimana pinoutnya yg sedikit acak bisa dilihat dari gambar diatas yg saya comot dari internet. Keuntungan dari modul siap pakai ini adalah terdapat oprekan dari orang diluar sana yg menjadikan board ini bisa menggunakan IDE SKETCH nya arduino. Jadi sebelum dapat menggunakan ide arduino untuk modul ini bisa di import library nya di : http://arduino.esp8266.com/stable/package_esp8266com_index.json , masukkan alamat terebut di preferences pada sketch. Kemudian pada menu Boards Manager bisa menambahkan boards ESP seperti pada gambar
Dan contoh-contoh program banyak bertebaran di luar sana salah satu contoh yg merupakan helloworld bisa mencoba mengirim data pembacaan suhu ke port TCP dari PC atau HP seperti yg pernah dibahas sebelumnya, script singkatnya seperti ini :
//Inisialisasi library
#include <ESP8266WiFi.h>#include "DHT.h"
//Inisialisasi Pin DHT11
#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
const char* ssid = "INDOTECH"; // Nama Wifi
const char* password = "infrastruktur"; // Password wifi
const char* host = "192.168.1.12"; // IP tujuan
const uint16_t port = 1855; // Port Tujuan
WiFiClient klien; // nama klien
void setup() {
Serial.begin(115200); // biar bisa monitor
dht.begin();
WiFi.begin(ssid, password); //konek ke wifi
// loop untuk mengulang koneksi jika gagal
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.println("Terhubung WiFi..");
}
Serial.println("Anda Terhubung Ke Wifi..");
//biar tau IP nya
Serial.println("");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}
//Membaca DHT11
void SendTempHumid(){
String datae ="";
float h = dht.readHumidity();
float t = dht.readTemperature();
//trap untuk mengetahui dht sudah nyambung atau tidak
if (isnan(h) || isnan(t) ) {
Serial.println(F("Sensor DHT blum terpasang dengan benar!"));
return;
}
//tampilkan hasil dht11 ke serial monitor
datae+= F("Kelembaban: ");
datae+= String(h);
datae+= F("% Suhu: ");
datae+= String(t);
datae+= F(" °C") ;
Serial.println(datae);
//koneksi ke TCP
Serial.print("Terhubung ke ");
Serial.print(host);
Serial.print(':');
Serial.println(port);
Serial.println("...Kirim data ke Lawan..\n");
if (!klien.connect(host, port)) {
Serial.println("gagal konek masbroo...");
delay(5000);
return;
}
// Kirim teks DHT 11 ke port TCP lawan
if (klien.connected()) {
klien.println(datae);
}
}
void loop() {
SendTempHumid();
delay(5000);
}
Anda bisa menggunakan aplikasi PC berupa TCP Monitor atau menggunakan hotspot HP dan menginstall aplikasi android TCP server dari play store.
Kotak pandora sudah terbuka lebar dan dengan menggunakan library MQTT yg sudah dibahas pada pembahasan sebelumnya DISINI , maka kita bisa saling kirim data secara PUBLISH dan SUBSCRIBE sesuai standar MQTT. Seperti gambar paling atas saya mengunakan Wemos D1 dengan bantuan library PubSubClient untuk mengirim data suhu dan kelembaban. Sedangkan untuk proses SUBSCRIBE saya menggunakan output berupa LED dan 7 Segmen. Karena pin GPIO dari wemos terbatas maka saya menggunakan bantuan IC 7 segmen 4026 dengan catatan 7 segmennya common negatif (KATODA).
Jadi hanya perlu 2 buah PIN dari wemos menuju ic 4026 yaitu pin CLOCK dan reset. Saat ada data masuk atau perubahan angka maka program akan mereset IC 4026 dan memberikan jumlah pulsa clock sesuai angka yg diinginkan seperti kode berikut :
void segmen(int angka)
{
int b;
//reset
digitalWrite(RST,HIGH);
digitalWrite(RST,LOW);
//loop clock sampai angka yg diinginkan
for(b=0;b<angka;b++)
{
digitalWrite(CLK,HIGH);
digitalWrite(CLK,LOW);
}
}
Sedangkan untuk membaca data SUBSCRIBE pada MQTT brokernya, maka bisa menggunakan perintah Call back pada library PobSubClient.
..................................
#define SEGTOPIC "SEG"
..................................
client.setCallback(mqtt_callback);
if (client.connected()){
client.subscribe(SEGTOPIC); //subscribe ke topic 7 segmen
}
..................................
void mqtt_callback(char* topic, byte* payload, unsigned int length) {
Serial.print("Ada Pesan Baru Di Topik: ");
Serial.println(topic);
Serial.print("Pesan:");
String message;
for (int i = 0; i < length; i++) {
message = message + (char)payload[i]; //Convert *byte to String
}
Serial.print(message);
//ubah 7 segmen sesuai data yg masuk
if(message == "SEG1") {segmen(1);}
if(message == "SEG2") {segmen(2);}
if(message == "SEG3") {segmen(3);}
if(message == "SEG4") {segmen(4);}
if(message == "SEG5") {segmen(5);}
if(message == "SEG6") {segmen(6);}
if(message == "SEG7") {segmen(7);}
if(message == "SEG8") {segmen(8);}
if(message == "SEG9") {segmen(9);}
if(message == "SEG0") {segmen(0);}
Serial.println();
Serial.println("-----------------------");
}
Jadi kalau ada client MQTT yang mem PUBLISH ke topic "SEG" maka otomatis terbaca oleh microcontroller dan merubah tampilan 7 segment seperti yg terlihat pada video berikut :
Senin, 30 September 2019
Cara Belajar IOT : Praktek komunikasi SIM7000 NBIOT dengan protokol MQTT
Setelah beberapa waktu meluangkan masa belajar dan tuning frekuensi otak kembali ke mode "tukang solder" akhirnya kali ini akan dibagi hasil pembelajaran IOT saya bersama anak magang dari D3Elektro ITS. Bahan-bahan yg diperlukan sebagai berikut:
- Arduino Uno
- Sim7000E (atau bisa juga SIM 800 /900)
- Breadboard + Kabel Jumper
- LCD Matrix
- LED
- LM 35 (tambahan)
Standar yg perlu dipahami dan bisa di baca-baca di artikel di internet adalah protokol IOT paling sederhana dan ampuh yaitu MQTT (message queueing telemetry transport)
Untuk itu perlu diperhatikan beberapa istilah dalam protokol MQTT
- MQTT BROKER , sebagai relay message dan bisa di instal mandiri di PC atau ada beberapa layanan broker gratis di internet seperti : cloudmqtt dot com atau hivemq.com
- CLIENT : Alat yg akan berkomunikasi menggunakan protokol mqtt
- TOPIC : Suatu istilah layaknya topik pembicaraan dalam suaut grup chat
- Publish : Menulis pesan ke suatu topik
- Subscribe : Berlangganan pesan pada suatu topik tertentu
Secara gampang dapat dikatakan MQTT layaknya standar chatting jaman dulu, dan karena memang MQTT didasarkan pada prinsip XMPP yg digunakan facebook messenger jaman dulu. Sebaiknya kita mendaftarkan akun MQTT gratisan pada cloudmqtt dotcom
Kita buat akun pada cloudmqtt.com atau bisa juga langsung log in menggunakan akun google kita. Setelah kita log in, kita buat server yg akan dituju dengan menekan “Create New Instance”. Lalu kita isikan name, plan, dan tags nya. Untuk plan, telah ada pilihan “cute cat” dan ini gratis. Setelahnya klik “Select Region”, disini kita default saja jadi kita langsung next.
Setelah kita buat instance nya, kita kembali ke home cloudmqtt. Lalu kita pilih instance yang telah kita buat. Disitu akan terdapat details mengenai instance yang kita buat, kita akan mendapatkan alamat server, user, password, dan port. Disini ada beberapa port yang disediakan, namun untuk mudahnya cukup hanya gunakan port TCP saja. Karena ini gretongan jadi terdapat connection limit hanya bisa tersambung dengan 5 device/client saja.
Wiring yg diperlukan ke arduino uno :
- 2 port serial ( software serial)
- 6 port LCD matrix
- 1 port LED
- 1 port Analog ( LM35)
Untuk mendukung pemrograman pada arduino sketch dibutuhkan library pendukung yaitu:
- liquidcrystal ==> untuk LCD
- pubsubclient ==> untuk publish dan subscribe topic pada broker
- TinyGsmClient ==> library SIM COM
- SoftwareSerial ==> komunikasi serial
Untuk programnya pertama-tama kita install library yang akan kita pakai pada sketch. Disini kita menggunakan beberapa library diantaranya ada SoftwareSerial, dengan library software serial kita bisa melakukan lebih dari satu komunikasi serial dengan menggunakan port digital lainnya selain port serial built in yang telah disediakan.
Lalu ada PubSubClient, library ini digunakan untuk support MQTT yang mana digunakan untuk publish dan subscribe topic MQTT. Dengan menggunakan MQTT kita akan mengenal topic, publish, dan subscribe. Publish sama saja dengan mengupload pesan ke broker/serve MQTT dengan topic tertentu, sementara subscribe berarti kita sedang mengikuti topic tertentu. Jika misal kita men-subscribe suatu topic, kita akan secara otomatis memperoleh pesan seperti apa yang diupload ke topic yang telah kita subscribe.
Berikutnya ada library TinyGsmClient, library ini digunakan untuk support penggunaan GSM pada project yang kita buat kali ini. Disini kita menggunakan SIM7000E. Agar program dapat berjalan dengan baik dan benar kita harus mempelajari library-nya terlebih dahulu, seperti command/fungsi apa yang harus dipanggil. Dan ada juga library LiquidCrystal sebagai support untuk penggunaan LCD pada project kali ini.
Kali ini kita menggunakan simcard NBIoT dari Telkomsel. Pertama-tama kita harus mengkoneksikannya terlebih dahulu jaringannya ke jaringan Telkomsel NBIoT yang ada. Untuk itu ada beberapa hal yang harus kita atur terlebih dahulu diantaranya APN(Access Point Name), username, dan password. Kali ini APN yang digunakan adalah “NB1INTERNET”, biasanya APN sudah bawaan dari simcard yang kita pakai. Lalu untuk username dan password bisa kita kosongkan saja jika tidak ada. Penjelasan mengenai hal ini bisa dibaca pada : http://www.aisi555.com/2019/08/iot-hello-world-mencoba-komunikas-nb.html
Setelah dikoneksikan dengan jaringan, maka berikutnya kita koneksikan dengan broker MQTTnya. Untuk mengkoneksikan ke broker kita perlu mengatur beberapa hal pada program, diantaranya kita inisialisasikan link broker yang digunakan, port MQTT yang digunakan, ClientID (untuk ClientID bisa kita isikan sembarang), username dan password. Untuk link, port, username, dan password dapat kita lihat pada details yang ada di cloudmqtt yang telah kita buat. Tak lupa juga kita inisialisasikan topic yang akan kita gunakan untuk publish dan subscribe. Untuk topic publish dan subscribenya lebih baik dibedakan agar pesan yang dikirim dan diterima tidak tabrakan.
Berikut listing program yang telah kami buat:
Setelahnya kita upload program. Kemudian dapat kita lihat pada serial monitor untuk melihat jalannya program. Dan dapat kita lihat juga pada websocket cloudmqtt, disini dapat kita lihat pesan dari topic yang dipublish dan disubscribe.
Selain itu kita juga dapat memonitoring dan mengkontrolnya melalui aplikasi di handphone kita. Disini kita gunakan IoT MQTT Panel yang gratis, kita dapat mendownloadnya di playstore kemudian kita install. Pada halaman utama dapat kita lihat ada tanda + , kita klik untuk menambahkan koneksi MQTT. Setelahnya kita isikan konfigurasi yang diperlukan dan juga device nya. Setelahnya kita klik create. Berikutnya kita akan masuk ke panel dari koneksi yang telah kita buat. Disitu kita bisa menambahkan panel lagi untuk memonitor ataupun mengkontrol, kita disediakan beberapa tipe panel dari button, switch, led indicator, grafik dan ada beberapa jenis lainnya yang dapat kita gunakan.
Untuk membaca data sensor suhu LM 35 kita bisa hubungkan seperti gambar diatas , dan script tambahan pada berikut ini.
Jika digabung dengan software android IOT MQTT PANEL bisa jadi keren seperti berikut :
Disusun oleh Anak Magang d3lektro ITS ( josia & fitri )