#if defined(ESP8266)
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#elif defined(ESP32)
#include <WiFi.h>
#include <HTTPClient.h>
#endif
#include <ArduinoJson.h>
const char* ssid = "Wokwi-GUEST";
const char* password = "";
const char* url = "https://04d9-103-81-220-224.ngrok-free.app";
int LED1 = 25;
int IR1 = 15;
int val = 0;
void setup() {
pinMode(LED1, OUTPUT);
pinMode(IR1, INPUT_PULLUP);
Serial.begin(115200);
connectToWiFi(ssid, password);
}
void loop() {
val = digitalRead(IR1);
if (val == LOW) {
digitalWrite(LED1, HIGH);
sendSensorData(val);
delay(1000);
} else {
digitalWrite(LED1, LOW);
}
}
void connectToWiFi(const char* ssid, const char* password) {
Serial.println("Menghubungkan ke WiFi...");
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
int timeout = 30;
while (WiFi.status() != WL_CONNECTED && timeout > 0) {
delay(1000);
Serial.print(".");
timeout--;
}
if (WiFi.status() == WL_CONNECTED) {
Serial.println("\nWiFi Terhubung!");
Serial.print("Alamat IP: ");
Serial.println(WiFi.localIP());
} else {
Serial.println("\nGagal terhubung ke WiFi, restart...");
ESP.restart();
}
}
void sendSensorData(int value) {
if (WiFi.status() != WL_CONNECTED) {
Serial.println("WiFi tidak terhubung, mencoba kembali...");
connectToWiFi(ssid, password);
return;
}
HTTPClient http;
http.begin(url);
StaticJsonDocument<200> jsonDoc;
jsonDoc["sensor_value"] = value;
String jsonString;
serializeJson(jsonDoc, jsonString);
int httpCode = http.POST(jsonString); // Kirim request POST
if (httpCode > 0) {
String response = http.getString();
Serial.println("Server response: " + response);
} else {
Serial.print("Error in HTTP request: ");
Serial.println(httpCode);
}
http.end();
}