#include <WiFi.h>
#include <WiFiClientSecure.h>
#include <PubSubClient.h>
#include <ArduinoJson.h>
#include <DHT.h>
#include <Wire.h>
#include <secrets.h>
#define DHTPIN 5 // Pin yang terhubung ke data DHT22
#define DHTTYPE DHT22 // Jenis sensor DHT22
#define AWS_IOT_PUBLISH_TOPIC "esp32/pub"
#define AWS_IOT_SUBSCRIBE_TOPIC "esp32/sub"
DHT dht(DHTPIN, DHTTYPE);
WiFiClientSecure net;
PubSubClient client(net);
void callback(char* topic, byte* payload, unsigned int length) {
Serial.print("Message received on topic: ");
Serial.println(topic);
String jsonString = "";
for (int i = 0; i < length; i++) {
jsonString += (char)payload[i];
}
Serial.print("Raw JSON: ");
Serial.println(jsonString);
// Parsing JSON
StaticJsonDocument<200> doc;
DeserializationError error = deserializeJson(doc, jsonString);
if (error) {
Serial.print("JSON Parsing Error: ");
Serial.println(error.f_str());
return; // Keluar jika parsing gagal
}
Serial.println("JSON Parsed Successfully!");
}
void connectAWS() {
WiFi.mode(WIFI_STA);
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
Serial.print("Connecting to Wi-Fi");
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(1000);
}
Serial.println("Connected!");
}
void setup() {
Serial.begin(115200);
Serial.println("DHT22 Sensor Test");
dht.begin();
connectAWS();
}
void loop() {
float humidity = dht.readHumidity();
float temperature = dht.readTemperature(); // Celsius
if (isnan(humidity) || isnan(temperature)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
Serial.print("Humidity: ");
Serial.print(humidity);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println(" °C");
delay(2000); // Baca data setiap 2 detik
}