Untuk melanjutkan praktek kali ini ada baiknya mengikuti pembahasan sebelumnya agar tidak tersesat :
- 1. Pengenalan Protokol MQTT baca disini dan video disini
- 2. MQTT ke Grafik smartphone baca disini
- 3. Simulator MQTT via python (kuliah tahun lalu) baca disini
- 4. Visualisasi data ke Excel baca disini
Sebenarnya saya tidak terlalu suka dengan simulasi elektronika karena saya terbiasa membuat prototype pada breadboard, namun ketika saya menemukan simulator yang bernama wokwi saya menjadi sangat kagum karena wokwi bisa menghubungkan board microcontroller yang dipakai dengan simulator wifi sesungguhnya. Nama AP wifi yang dipakai pada wokwi adalah "Wokwi-GUEST" dan saya masih belum terpikir gimana script HTML pada cloud bisa menjadi Access point wifi. AMAZING !
Untuk mempersingkat waktu maka sebaiknya pembaca bikin aja akun wokwi kemudian baca dan pahami contoh-contoh yang telah ada. Untuk platform IOT maka mikrokontroler yang disediakan adalah ESP32 (sayangnya bukan ESP 8266 namun bisa dimaklumi, sama aja kok). Saya telah membuat simulasi pengukuran suhu dengan sensor DHT22 dan kemudian dilempar ke broker MQTT ( bisa dibaca disini )
Scriptnya seperti berikut :
#include <WiFi.h>
#include <PubSubClient.h>
#include <DHTesp.h>
const int DHT_PIN = 13;
DHTesp dht;
// Ini untuk wifi kusus di simulasi wokwi
const char* ssid = "Wokwi-GUEST";
const char* password = "";
const char* mqtt_server = "broker.hivemq.com";
//ubah dengan nama topik (namakamu) yg berbeda dengan teman kamu
#define TOPIK_SUHU "/namakamu/suhu"
#define TOPIK_HUMI "/namakamu/humi"
WiFiClient espClient;
PubSubClient client(espClient);
unsigned long lastMsg = 0;
float temp = 0;
float hum = 0;
void setup_wifi() { //perintah koneksi wifi
delay(10);
// mulai konek ke wifi
Serial.println();
Serial.print("Terhubung ke .. ");
Serial.println(ssid);
WiFi.mode(WIFI_STA); //setting wifi chip sebagai station/client
WiFi.begin(ssid, password); //koneksi ke jaringan wifi
while (WiFi.status() != WL_CONNECTED) { //perintah tunggu esp32 sampi terkoneksi ke wifi
delay(500);
Serial.print(".");
}
randomSeed(micros());
Serial.println("");
Serial.println("WiFi terhubung");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}
void reconnect() { //perintah koneksi esp32 ke mqtt broker baik itu sebagai publusher atau subscriber
// Loop until we're reconnected
while (!client.connected()) {
Serial.print("Attempting MQTT connection...");
// perintah membuat client id unik agar broker menerima
String clientId = "Unesa-d4-";
clientId += String(random(0xffff), HEX);
// Attempt to connect
if (client.connect(clientId.c_str())) {
Serial.println("Terhubung ke broker ..");
} 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() {
Serial.begin(115200);
setup_wifi(); //memanggil setup_wifi untuk dieksekusi
client.setServer(mqtt_server, 1883); //konek ke broker
dht.setup(DHT_PIN, DHTesp::DHT22);//inisialiasi komunikasi dengan sensor dht22
}
void loop() {
if (!client.connected()) {
reconnect();
}
client.loop();
unsigned long now = millis();
if (now - lastMsg > 5000) { //perintah publish data tiap 5 detik
lastMsg = now;
TempAndHumidity data = dht.getTempAndHumidity();
String temp = String(data.temperature, 2); //membuat variabel temp untuk di publish ke broker mqtt
client.publish(TOPIK_SUHU, temp.c_str()); //publish data dari varibel temp ke broker mqtt
String hum = String(data.humidity, 1); //membuat variabel hum untuk di publish ke broker mqtt
client.publish(TOPIK_HUMI, hum.c_str()); //publish data dari varibel hum ke broker mqtt
Serial.print("Temperature: ");
Serial.println(temp);
Serial.print("Humidity: ");
Serial.println(hum);
}
}
Sehingga saat dijalankan secara amazing bisa melempar data suhu dan kelembaban melalui broker hivemq. Dan sebagai PC client yang akan membaca data suhu dan kelembaban ini saya gunakan MQTT explorer yang sudah pernah dibahas pada tulisan sebelumnya.
Lakukan penambahan TOPIK suhu dan kelembaban untuk melakukan subscribe atau berlangganan data yang diinginkan.
Dan hasilnya bisa dilihat pada layar muncul data dari topik yang telah di subscribe dan kemudian bisa ditampilkan pada grafik seperti berikut.
Jika ingin melempar data ke smartphone, maka gunakan aplikasi "IOT MQTT PANEL" yang dapat di unduh di play store. Gambar grafik smartphone contohnya bisa dilihat pada gambar animasi paling atas atau bisa dilihat pada video youtube disini.
Jika ingin belajar menampilkan grafik pada smartphone melalui aplikasi diatas, kontak saya aja ya...
0 komentar:
Posting Komentar