Anda di halaman 1dari 14

APA ITU MQTT

MQTT merupakan akronim dari Message Queueing Telemetry Transport. MQTT diciptakan
pada tahun 1999 oleh Dr. Andy Stanford-Clark dari IBM dan Arlen Nipper dari Arcom.
MQTT adalah salah satu protokol yang sering digunakan untuk keperluan Internet of Things
yang berjalan di atas TCP/IP dan bersifat Open Source. Sistem kerja MQTT menerapkan
konsep Publish dan Subscribe data, sehingga pada MQTT terdapat 4 komponen utama, yaitu
Publisher, Subscriber, Broker, dan Topic.

Publisher, Subscriber, Broker, Topic :

 Publisher
Publisher mengirimkan pesan atau perintah dengan topik tertentu ke Broker
 Subscriber
Subscriber menerima pesan dari Broker sesuai dengan topik yang di-subscribe
 Broker
Broker menerima pesan dari Publisher dan meneruskannya ke Subscriber yang men-
subscriber topik sesuai dengan pesan tersebut
 Topic
Setiap pesan yang ada pada konsep Publish dan Subscribe memiliki kategori yang
dinamakan dengan Topic

Protokol MQTT ini lebih sering digunakan untuk Internet of Things daripada HTTP, karena
pesan yang dikirim dan diterima sangat ringan, sehingga sangat cepat, bandwidth yang
dibutuhkan kecil, dan tidak membutuhkan daya yang besar. Selain itu, MQTT juga
memastikan pengiriman pesan dengan 3 Quality of Service, yaitu at most once, at least once,
dan exatcly once.

Berikut ini contoh MQTT pada lab


MATERI 1: MQTT pada Aplikasi SmartPhone
Aktifitas 1.1 : - Menginstall Aplikasi MQTT pada sartphone
- Membuat komponen Publisher sekaligus Subscriber pada satu komponen
-
1. Install Aplikasi MQTT Dashboard

2. Setlah Aplikasi Terinstall tambahkan broker dengan data sebagai berikut, setlah itu klik icon save

3. Tambahkan komponen Text sbb:


4. Isikan topic Sub dan Pub sebagai berikut, jangan lupa klik save:

5. Pada screen smartphone akan terlihat sbb:


Ini artinya sudah terdapat komponen(device) Text yang berlaku sebagai subscriber dan sekaligus
sebagai publisher.
6. Coba dengan mengirimkan text “coba”. Jika benar maka pada komponen NamaSatu akan
muncul tulisan “coba”

7. Selamat anda telah berhasil mengirimkan text “coba” dari publiser NamaSatu ke subscriber
NamaSatu melalui broker broker.mqtt-dashboard.com
Aktifitas 1.2 : Membuat Subscriber dan Publisher pada kompenen yang berbeda

1. Edit komponen NamaSatu pada bagian Subscribe topic dari fromNamaSatu menjadi
fromNamaDua.
2. Coba kirimkan Text : “coba2” pada NamaSatu. Apa yang terlihat ?
3. Buat (tambahkan) komponen baru Text dengan data sebagai berikut:

4. Klik save sehingga akan terlihat :

5. Kirim text “coba3” pada NamaSatu, jika semuanya benar akan terlihat text “coba3” akan
muncul pada komponen NamaDua.
6. Kirim text “coba4” pada NamaDua , jika semuanya benar akan terlihat text “coba4” akan muncul
pada komponen NamaSatu.
7. Selamat anda telah membuat dua komponen(device) pada aplikasi berkomunikasi text melalu
broker.
MATERI 2: MQTT pada Komputer
Download dan install mqtt sesuai dengan OS: https://mosquitto.org/download/

1. Buka jendela cmd (subsriber) , dan masuk ke direktori tempat Install mosquitto
2. Tuliskan perintah sbb
mosquitto_sub.exe -h broker.mqtt-dashboard.com -t testNama1

1. Buka jendela cmd baru (publisher), dan masuk ke direktori tempat Install mosquitto
2. Tuliskan perintah sbb
mosquitto_pub.exe -h broker.mqtt-dashboard.com -t testzay -m tes

3. Lihat apa yang terjadi pada jendela cmd yang pertama. Jika semuanya benar maka akan terlihat
text coba 1 akan muncul di jendela cmd tersebut.
4. Selamat anda telah melakukan proses kirim data menggunakan MQTT pada komputer anda.
MATERI 3: MQTT pada Nodemcu esp8266
Aktifitas 3.1 : Instalasi Arduino dan Library esp8266

1. Download dan install program IDE Arduino pada alamat https://www.arduino.cc/en/software


2. Setelah di Install buka Program Arduino sehingga tampil sbb:

3. Untuk menginstall Library esp8266. Klik Preferences dan isi pada bagian

https://arduino.esp8266.com/stable/package_esp8266com_index.json

4. Klik Tools  Board  Board manager


Cari esp8266

Catatan : Perlu koneksi internet yang bagus untuk menambahkan library esp8266

5. Jika semuanya benar maka pada Tools  Board akan terlihat lebih dari satu board sbb:
6. Install driver ch340 untuk komunikasi nodemcu dengan komputer
https://www.arduined.eu/ch340-windows-10-driver-download/

Aktifitas 3.2 : Menjadikan Nodemcu 12E (esp8266) sebagai subscriber


1. Tuliskan program berikut pada Arduino
2. Verify dan upload program tersebut ke Nodemcu. Hubungkan nodemcu dengan komputer
melalui kabel usb.
3. Pilih Tools  Port (pilih Com yang sesuai). Bila Port masih berwarna abu, artinya belum
driver ch340 belum terinstal dengan baik.
/*
Basic ESP8266 MQTT example
This sketch demonstrates the capabilities of the pubsub library in
combination
with the ESP8266 board/library.
It connects to an MQTT server then:
- publishes "hello world" to the topic "outTopic" every two seconds
- subscribes to the topic "inTopic", printing out any messages
it receives. NB - it assumes the received payloads are strings not
binary
- If the first character of the topic "inTopic" is an 1, switch ON the
ESP Led,
else switch it off
It will reconnect to the server if the connection is lost using a blocking
reconnect function. See the 'mqtt_reconnect_nonblocking' example for how
to
achieve the same result without blocking the main loop.
To install the ESP8266 board, (using Arduino 1.6.4+):
- Add the following 3rd party board manager under "File -> Preferences ->
Additional Boards Manager URLs":
http://arduino.esp8266.com/stable/package_esp8266com_index.json
- Open the "Tools -> Board -> Board Manager" and click install for the
ESP8266"
- Select your ESP8266 in "Tools -> Board"
*/

#include <ESP8266WiFi.h>
#include <PubSubClient.h>

// Update these with values suitable for your network.

const char* ssid = "nama HotSpot";


const char* password = "Password";
const char* mqtt_server = "broker.mqtt-dashboard.com";

WiFiClient espClient;
PubSubClient client(espClient);
unsigned long lastMsg = 0;
#define MSG_BUFFER_SIZE (50)
char msg[MSG_BUFFER_SIZE];
int value = 0;

void setup_wifi() {

delay(10);
// We start by connecting to a WiFi network
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);

WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED) {


delay(500);
Serial.print(".");
}

randomSeed(micros());

Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}

void callback(char* topic, byte* payload, unsigned int length) {


Serial.print(millis());
Serial.print(" Message arrived [");
Serial.print(topic);
Serial.print("] ");
for (int i = 0; i < length; i++) {
msg[i]=(char)payload[i];
//Serial.print((char)payload[i]);
}
msg[length]='\0';
Serial.print(msg);
Serial.println();
// Switch on the LED if an 1 was received as first character
if (!strcmp(msg,"on")) digitalWrite(2,LOW);
if (!strcmp(msg,"off")) digitalWrite(2,HIGH);
}

void reconnect() {
// Loop until we're reconnected
while (!client.connected()) {
Serial.print("Attempting MQTT connection...");
// Create a random client ID
String clientId = "ESP8266Client-";
clientId += String(random(0xffff), HEX);
// Attempt to connect
if (client.connect(clientId.c_str())) {
Serial.println("connected");
// Once connected, publish an announcement...
client.publish("nama2", "hello world");
// ... and resubscribe
client.subscribe("nama1");
} else {
Serial.print("failed, rc=");
Serial.print(client.state());
Serial.println(" try again in 5 seconds");
// Wait 5 seconds before retrying
delay(5000);
}
}
}

void setup() {
pinMode(BUILTIN_LED, OUTPUT); // Initialize the BUILTIN_LED pin as an
output
Serial.begin(115200);
setup_wifi();
client.setServer(mqtt_server, 1883);
client.setCallback(callback);
}
void loop() {

if (!client.connected()) {
reconnect();
}
client.loop();
}
}

Aktifitas 3.3 : Menjadikan Nodemcu 12E (esp8266) sebagai Publisher

1. Tuliskan program berikut pada Arduino


2. Verify dan upload
#include <ESP8266WiFi.h>
#include <PubSubClient.h>

// Update these with values suitable for your network.

const char* ssid = "nama HotSpot";


const char* password = "Password";
const char* mqtt_server = "broker.mqtt-dashboard.com";

WiFiClient espClient;
PubSubClient client(espClient);
unsigned long lastMsg = 0;
#define MSG_BUFFER_SIZE (50)
char msg[MSG_BUFFER_SIZE];
int value = 0;
bool toggle;

void setup_wifi() {
delay(10);
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);

WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED) {


delay(500);
Serial.print(".");
}

randomSeed(micros());

Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}

void callback(char* topic, byte* payload, unsigned int length) {


Serial.print(millis());
Serial.print(" Message arrived [");
Serial.print(topic);
Serial.print("] ");
for (int i = 0; i < length; i++) {
msg[i]=(char)payload[i];
//Serial.print((char)payload[i]);
}
msg[length]='\0';
Serial.print(msg);
Serial.println();
// Switch on the LED if an 1 was received as first character
if (!strcmp(msg,"on")) digitalWrite(2,LOW);
if (!strcmp(msg,"off")) digitalWrite(2,HIGH);
}

void reconnect() {
// Loop until we're reconnected
while (!client.connected()) {
Serial.print("Attempting MQTT connection...");
// Create a random client ID
String clientId = "ESP8266Client-";
clientId += String(random(0xffff), HEX);
// Attempt to connect
if (client.connect(clientId.c_str())) {
Serial.println("connected");
// Once connected, publish an announcement...
client.publish("nama2", "hello world");
// ... and resubscribe
client.subscribe("nama1");
} else {
Serial.print("failed, rc=");
Serial.print(client.state());
Serial.println(" try again in 5 seconds");
// Wait 5 seconds before retrying
delay(5000);
}
}
}

void setup() {
pinMode(BUILTIN_LED, OUTPUT);
pinMode(0, INPUT_PULLUP);
Serial.begin(115200);
setup_wifi();
client.setServer(mqtt_server, 1883);
client.setCallback(callback);
}

void loop() void loop() {

if (!client.connected()) { reconnect();
}
client.loop();

if(!digitalRead(0)) toggle=!toggle;
if(toggle) snprintf (msg, MSG_BUFFER_SIZE, "on");
else snprintf (msg, MSG_BUFFER_SIZE, "off");
client.publish("nama2", msg);

}
Pinout Nodemcu 12E (esp 8266)

Pinout Nodemcu esp32

Anda mungkin juga menyukai