Project MQTT DHT22
Project MQTT DHT22
Project ini untuk monitoring suhu dan kelembapan dari jarak jauh dengan komunikasi MQTT (lebih realtime dan cepat).
Dalam MQTT, kita akan mengenal istilah:
publish, yaitu mengirimkan data (ESP --> Cloud, Cloud --> ESP)
subscribe, yaitu menerima data yang dipublish (ESP --> Cloud, Cloud --> ESP)
Topic, yaitu alamat pengiriman data / tempat penyimpanan data yang dikirim.
Rangkaian:
SDA(DHT22) --> 21 (ESP32)
GND(DHT22) --> GND (ESP32)
VCC(DHT22) --> 3.3V (ESP32)
Note: Jangan lupa masukkan Library PubSubClient, DHT Sensor Library dan WiFi
ESP32 - PubSubClient.h
#include <WiFi.h>
#include <PubSubClient.h>
#include <DHT.h>
String ssid = "Wokwi-GUEST";
String pass = "";
WiFiClient espClient;
PubSubClient client(espClient);
DHT dht(21, DHT22);
void konekWifi(){
Serial.println("Coba Konek ke WiFi...");
WiFi.begin(ssid,pass);
while (WiFi.status() != WL_CONNECTED){
Serial.print(".");
delay(50);
}
Serial.println("\nWiFi Terhubung");
}
void konekMqtt(){
while (!client.connected()){
Serial.println("Coba konek ke MQTT...");
if (client.connect("Bebas-Aja", "wokwi/cek/koneksi", 1, true, "offline")){
Serial.println("Terhubung ke MQTT");
client.publish("wokwi/cek/koneksi", "online", true);
}
else {
Serial.println("MQTT gagal terhubung");
Serial.println("Sedang konek ulang, sabar!");
}
}
}
void setup() {
Serial.begin(115200);
konekWifi();
client.setServer("mqtt-dashboard.com", 1883);
dht.begin();
}
void loop() {
if (!client.connected()){
konekMqtt();
}
client.loop();
float t = dht.readTemperature();
float h = dht.readHumidity();
String suhu = String(t,1);
String kel = String(h,1);
client.publish("wokwi/cek/suhu", suhu.c_str());
client.publish("wokwi/cek/kelembapan", kel.c_str());
delay (2000);
}
Rangkaian:
SDA(DHT22) --> 21 (ESP32)
GND(DHT22) --> GND (ESP32)
VCC(DHT22) --> 3.3V (ESP32)
Note: Jangan lupa masukkan Library MQTT, DHT Sensor Library dan WiFi
ESP32 - MQTT.h
#include <WiFi.h>
#include <MQTT.h>
#include <DHT.h>
String ssid = "Wokwi-GUEST";
String pass = "";
WiFiClient net;
MQTTClient client;
DHT dht(21, DHT22);
void konekWifi(){
Serial.println("Coba Konek ke WiFi...");
WiFi.begin(ssid,pass);
while (WiFi.status() != WL_CONNECTED){
Serial.print(".");
delay(50);
}
Serial.println("\nWiFi Terhubung");
}
void konekMqtt(){
while (!client.connected()){
Serial.println("Coba konek ke MQTT...");
if (client.connect("Bebas-Aja")){
Serial.println("Terhubung ke MQTT");
client.publish("wokwi/cek/koneksi", "online");
}
else {
Serial.println("MQTT gagal terhubung");
Serial.println("Sedang konek ulang, sabar!");
}
}
}
void setup() {
Serial.begin(115200);
konekWifi();
client.begin("mqtt-dashboard.com", net);
dht.begin();
client.setWill("wokwi/cek/koneksi", "offline", true, 1);
}
void loop() {
if (!client.connected()){
konekMqtt();
}
client.loop();
float t = dht.readTemperature();
float h = dht.readHumidity();
String suhu = String(t,1);
String kel = String(h,1);
client.publish("wokwi/cek/suhu", suhu.c_str());
client.publish("wokwi/cek/kelembapan", kel.c_str());
delay (2000);
}