#include <WiFi.h>
#include "PubSubClient.h"
#include <ArduinoJson.h>
#include <DHT.h> // Tambahkan library DHT.h

#define DHTPIN 14 // Pin yang terhubung ke sensor DHT22
#define DHTTYPE DHT22 // Jenis sensor DHT

char *mqttServer = "broker.emqx.io";
int mqttPort = 1883;
String myClientID = "0121";
String Topic_1 = "blksby/test/anung";
String Topic_2 = "blksby/data/arus";

WiFiClient wifi;
PubSubClient mqttClient(wifi);
DHT dht(DHTPIN, DHTTYPE); // Inisialisasi objek DHT

const int vr = 5500;
const float ir = 0.56;

char* ssid = "Wokwi-GUEST";
char* pass = "";

void setup() {
   // put your setup code here, to run once:
  Serial.begin(115200);
  Serial.println("Hello, ESP32!");
  WiFi.mode(WIFI_STA);    // Agar ESP32 menjadi mode Station
  WiFi.begin(ssid,pass);  // Meminta ESP untuk connect
  while(WiFi.status() != WL_CONNECTED){
    delay(100);
    Serial.println("Sabar Kang");
  }
  Serial.println(" ESP 32 telah berhasil Connect");
  // Memerintahkan EPS untuk tahu alamat broker
  init_to_broker(mqttServer, mqttPort); 
  //Memerintahkan untuk Connect ke Broker
  connect_to_broker(myClientID);
  dht.begin(); // Inisialisasi sensor DHT22
}

void loop() {
  // put your main code here, to run repeatedly:
  float temperature = dht.readTemperature(); // Baca suhu dari sensor DHT22
  float humidity = dht.readHumidity(); // Baca kelembaban dari sensor DHT22

  Serial.print("Temperature: ");
  Serial.print(temperature);
  Serial.println(" °C");
  Serial.print("Humidity: ");
  Serial.print(humidity);
  Serial.println(" %");

  Serial.print("Nilai Tegangan : ");
  Serial.print(vr);
  Serial.print("  Nilai Arus : ");
  Serial.println(ir);

  mqtt_publish(Topic_1, humidity);
  mqtt_publish(Topic_2, temperature);

  delay(1000); // this speeds up the simulation
}

void init_to_broker(char* myMqttServer, int myMqttPort) {
  mqttClient.setServer(myMqttServer, myMqttPort); // Mengatur detail broker target  yang digunakan
  // jika kita ingin menerima pesan untuk langganan yang dibuat oleh klien sebagai subscriber
  // mqttClient.setCallback(callback);           
}

void connect_to_broker(String clientName) {
  Serial.println("Connecting to MQTT Broker...");
  String clientId = "ESP32Client-" + clientName;
  mqttClient.connect(clientId.c_str()); // Connecting to Broker
  while (!mqttClient.connected()) {
      Serial.print("failed, rc=");
      Serial.println(mqttClient.state());
      Serial.println("Reconnecting to MQTT Broker..");
      delay(1000);  
  }
  Serial.print(clientId);
  Serial.println(" Device to Broker Connected.");
}

void mqtt_publish(String yourTopic, float yourPayload){
  char yourPayloadString[8];
  dtostrf(yourPayload, 1, 2, yourPayloadString);
  mqttClient.publish(yourTopic.c_str(), yourPayloadString);
  Serial.print(yourTopic);
  Serial.print(" ===> ");
  Serial.println(yourPayload);
}
Loading
esp32-devkit-v1