// #include <AntaresESP32HTTP.h>
#include "DHTesp.h"
#include "WiFi.h"
#include "HTTPClient.h"
#define ACCESSKEY "aebfb7661d2e3f85:0e336c0549bb5174" // Ganti dengan access key akun Antares anda
#define WIFISSID "Wokwi-GUEST" // Ganti dengan SSID WiFi anda
#define PASSWORD "" // Ganti dengan password WiFi anda
#define applicationName "WorkshopWidyaEdu" // Ganti dengan application name Antares yang telah dibuat
#define deviceName "SmartFarming" // Ganti dengan device Antares yang telah dibuat
// deklarasi pin-pin sensor
#define PIN_DHT 13
#define PIN_LDR A0
// #define PIN_MOISTURE A3
// inisialisasi object library
DHTesp dht;
// AntaresESP32HTTP antares(ACCESSKEY);
const char* serverName = "http://platform.antares.id:8080/~/antares-cse/antares-id/WorkshopWidyaEdu/SmartFarming";
// inisiasi variable
unsigned long lastTime = 0;
// Setting timer 5 detik
unsigned long timerDelay = 5000;
// inisialisasi variable
// int moisture = 0;
int ldr = 0;
// int temp =0;
// int hum = 0;
void setup()
{
// inisiasi Serial comm dengan baud rate 9600
Serial.begin(9600);
// inisiasi pin sensor
// inisiasi LDR
pinMode(PIN_LDR, INPUT);
// inisiasi Moisture
// pinMode(PIN_MOISTURE, INPUT);
// inisiasi DHT
dht.setup(PIN_DHT, DHTesp::DHT22);
// inisiasi wifi antares
// antares.wifiConnection(WIFISSID,PASSWORD);
// inisiasi debug lib antares
// antares.setDebug(true);
WiFi.begin(WIFISSID, PASSWORD);
Serial.println("Connecting");
while(WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("Connected to WiFi network with IP Address: ");
Serial.println(WiFi.localIP());
Serial.println("Timer set to 5 seconds (timerDelay variable), it will take 5 seconds before publishing the first reading.");
}
void loop() {
if ((millis() - lastTime) > timerDelay) {
// LDR
ldr = analogRead(PIN_LDR);
// moisture
// moisture = analogRead(PIN_MOISTURE);
// DHT
TempAndHumidity data = dht.getTempAndHumidity();
// ekstrak data temperature
float temp = data.temperature;
// ekstrak data humidity
float hum = data.humidity;
Serial.println("LDR: " + String(ldr) + " Ohm");
Serial.println("Suhu: " + String(temp, 2) + "°C");
Serial.println("Kelembaban: " + String(hum, 1) + "%");
Serial.println("---");
// waktu jeda sampling data
// minimal 2 detik
delay(2000);
// // display data ke serial monitor
// Serial.println("===================");
// Serial.print("LDR: ");
// Serial.println(ldr);
// Serial.print("Suhu: ");
// Serial.println(temp);
// Serial.print("Kelembaban: ");
// Serial.println(hum);
// Serial.print("Moisture: ");
// Serial.println(moisture);
// Serial.println("===================");
// // include data ke json
// antares.add("LDR", ldr);
// antares.add("Suhu", temp);
// antares.add("Kelembapan", hum);
// antares.add("Moisture", moisture);
// //Kirim data ke Antares
// antares.send(applicationName, deviceName);
// delay(20000);
// >>> Uncomment disini untuk send data ke antares
if(WiFi.status()== WL_CONNECTED){
WiFiClient client;
HTTPClient http;
// inisiasi komunikasi http
http.begin(client, serverName);
// inisiasi http header
http.addHeader("X-M2M-Origin", "aebfb7661d2e3f85:0e336c0549bb5174");
http.addHeader("Content-Type", "application/json;ty=4");
http.addHeader("Accept", "application/json");
// inisiasi data yang dikirim di restful api
String httpRequestData ="{\"m2m:cin\": { \"con\":\"{\\\"temp\\\":\\\"";
httpRequestData = httpRequestData + String(temp, 2);
httpRequestData = httpRequestData + "\\\",\\\"hum\\\":\\\"";
httpRequestData = httpRequestData + String(hum,1);
httpRequestData = httpRequestData + "\\\",\\\"ldr\\\":\\\"";
httpRequestData = httpRequestData + String(ldr);
httpRequestData = httpRequestData + "\\\"}\"}}";
// mengirimkan HTTP POST request
int httpResponseCode = http.POST(httpRequestData);
Serial.print("HTTP Response code: ");
Serial.println(httpResponseCode);
// menutup koneksi
http.end();
}
else {
Serial.println("WiFi Disconnected");
}
lastTime = millis();
}
}