#include "WiFi.h"
#include <HTTPClient.h>
#include <ArduinoJson.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire);
const char* ssid = "Wokwi-GUEST";
const char* password = "";
const int ledPin = 2;
const int buttonPin = 0;
void setup() {
Serial.begin(9600);
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
initDisplay();
display.setCursor(0, 0); // Set cursor position
display.println("Connecting to WiFi...");
display.display();
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
clearDisplayWithMessage("WiFi connected!");
clearDisplayWithMessage("Scan Sidik Jari...");
Serial.println(" WiFi connected!");
}
void clearDisplayWithMessage(const char* message) {
display.clearDisplay();
display.setCursor(0, 0); // Reset the cursor position to the top-left
display.println(message);
display.display();
}
void loop() {
int buttonState = digitalRead(buttonPin);
if (buttonState == LOW) {
clearDisplayWithMessage("Tunggu....");
sendPostRequest();
delay(200);
while (digitalRead(buttonPin) == LOW); // Wait for button release
}
}
void sendPostRequest() {
if (WiFi.status() == WL_CONNECTED) {
HTTPClient http;
http.begin("https://cloud.rawp.biz.id/smart-dispenser/api/tracking/add");
http.addHeader("Content-Type", "application/json");
String postData = "{\"id_dispenser\":\"sdAD001\", \"fingerprint\":\"123\"}";
int httpResponseCode = http.POST(postData);
if (httpResponseCode > 0) {
String response = http.getString();
Serial.println("Received response:");
Serial.println(response);
DynamicJsonDocument doc(1024);
deserializeJson(doc, response);
bool status = doc["status"];
if (status) {
digitalWrite(ledPin, HIGH);
clearDisplayWithMessage("Air Mengalir..");
delay(5000);
digitalWrite(ledPin, LOW);
clearDisplayWithMessage("Scan Sidik Jari...");
} else {
clearDisplayWithMessage("Gagal Mengeluarkan Air");
delay(5000);
clearDisplayWithMessage("Scan Sidik Jari...");
}
} else {
Serial.print("Error on sending POST: ");
Serial.println(httpResponseCode);
}
http.end();
} else {
Serial.println("Error in WiFi connection");
}
}
void initDisplay() {
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;); // Don't proceed, loop forever
}
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 0);
}