#include <WiFi.h>
#include <HTTPClient.h>
const char* ssid = "Wokwi-GUEST";
const char* password = "";
const char* serverName = "https://greentechsolution.cyou/data_ultrasonic.php";
const int trigPin = 5;
const int echoPin = 18;
const int redLED = 14;
const int greenLED = 13;
const int yellowLED = 26;
#define SOUND_SPEED 0.034
long duration;
float distanceCm;
int currentState = -1;
int previousState = -1;
String deviceID = "Ultrasonic_001";
String id_slot_parkir = "B1-001"; // ID slot parkir yang di-hardcode
void setup() {
Serial.begin(115200);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(redLED, OUTPUT);
pinMode(greenLED, OUTPUT);
pinMode(yellowLED, OUTPUT);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(3000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distanceCm = duration * SOUND_SPEED / 2;
Serial.print("Distance (cm): ");
Serial.println(distanceCm);
currentState = (distanceCm < 250) ? 1 : 0;
if (currentState != previousState) {
sendDataToServer(currentState);
previousState = currentState;
}
// Tambahkan fungsi untuk mendapatkan status parkiran terbaru
updateParkingStatus();
delay(1000);
}
void sendDataToServer(int value) {
if (WiFi.status() == WL_CONNECTED) {
HTTPClient http;
http.begin(serverName);
http.addHeader("Content-Type", "application/x-www-form-urlencoded");
String httpRequestData = "device_id=" + deviceID + "&sensor_value=" + String(value) + "&id_slot_parkir=" + id_slot_parkir;
int httpResponseCode = http.POST(httpRequestData);
if (httpResponseCode > 0) {
String response = http.getString();
Serial.println(httpResponseCode);
Serial.println("Server response: " + response);
} else {
Serial.print("Error on sending POST: ");
Serial.println(httpResponseCode);
}
http.end();
} else {
Serial.println("WiFi not connected");
}
}
void updateParkingStatus() {
if (WiFi.status() == WL_CONNECTED) {
HTTPClient http;
String statusServerName = "https://greentechsolution.cyou/data_park.php?id_slot_parkir=" + id_slot_parkir; // URL untuk mendapatkan status parkiran berdasarkan id_slot_parkir
http.begin(statusServerName);
int httpResponseCode = http.GET();
if (httpResponseCode > 0) {
String response = http.getString();
int parkir_value = response.toInt();
// Atur LED berdasarkan status parkiran
if (parkir_value == 1) {
digitalWrite(redLED, HIGH);
digitalWrite(greenLED, LOW);
digitalWrite(yellowLED, LOW);
} else if(parkir_value == 0){
digitalWrite(redLED, LOW);
digitalWrite(greenLED, HIGH);
digitalWrite(yellowLED, LOW);
} else{
digitalWrite(redLED, LOW);
digitalWrite(greenLED, LOW);
digitalWrite(yellowLED, HIGH);
}
Serial.println("Updated parking status: " + String(parkir_value));
} else {
Serial.print("Error on getting parking status: ");
Serial.println(httpResponseCode);
}
http.end();
} else {
Serial.println("WiFi not connected");
}
}