Semua Tentang Belajar Teknologi Digital Dalam Kehidupan Sehari - Hari

Kamis, 26 Oktober 2023

Pengenalan Protokol IOT - MQTT Melalui Simulasi Wokwi

 


Untuk melanjutkan praktek kali ini ada baiknya mengikuti pembahasan sebelumnya agar tidak tersesat :



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...

Share:

0 komentar:

Posting Komentar

Kontak Penulis



12179018.png (60×60)
+628155737755

Mail : ahocool@gmail.com

Site View

Categories

555 (8) 7 segmen (3) adc (4) amplifier (2) analog (19) android (14) antares (11) arduino (28) artikel (11) attiny (3) attiny2313 (19) audio (5) baterai (5) blog (1) bluetooth (1) chatgpt (2) cmos (2) crypto (2) dasar (46) digital (11) dimmer (5) display (3) esp8266 (26) euro2020 (13) gcc (1) gsm (1) iklan (1) infrared (2) Input Output (3) iot (76) jam (7) jualan (12) kereta api (1) keyboard (1) keypad (3) kios pulsa (2) kit (6) komponen (17) komputer (3) komunikasi (1) kontrol (8) lain-lain (8) lcd (2) led (14) led matrix (6) line tracer (1) lm35 (1) lora (11) lorawan (2) MATV (1) memory (1) metal detector (4) microcontroller (70) micropython (6) mikrokontroler (2) mikrokontroller (14) mikrotik (5) modbus (9) mqtt (3) ninmedia (5) ntp (1) paket belajar (19) palang pintu otomatis (1) parabola (88) pcb (2) power (1) praktek (2) project (33) proyek (1) python (8) radio (28) raspberry pi (9) remote (1) revisi (1) rfid (1) robot (1) rpm (2) rs232 (1) script break down (3) sdcard (3) sensor (2) sharing (3) signage (1) sinyal (1) sms (6) software (18) solar (1) solusi (1) tachometer (2) technology (1) teknologi (2) telegram (2) telepon (9) televisi (167) television (28) telkomiot (5) transistor (2) troubleshoot (3) tulisan (94) tutorial (108) tv digital (6) tvri (2) vu meter (2) vumeter (2) wav player (3) wayang (1) wifi (3) yolo (7)

Arsip Blog

Diskusi


kaskus
Forum Hobby Elektronika