65 lines
2.1 KiB
C++
65 lines
2.1 KiB
C++
#define BLYNK_TEMPLATE_ID "TMPL6wIKYMxbe"
|
|
#define BLYNK_TEMPLATE_NAME "WaterTester"
|
|
#define BLYNK_AUTH_TOKEN "v-1Offttn2hvVofsSGHiiz1jDcSTrfUm"
|
|
|
|
#define BLYNK_PRINT Serial
|
|
|
|
#include <WiFi.h>
|
|
#include <BlynkSimpleEsp32.h>
|
|
|
|
char auth[] = BLYNK_AUTH_TOKEN; // Auth Token
|
|
char ssid[] = "yuhu";
|
|
char pass[] = "AnnaSalsabila";
|
|
|
|
float ParameterKekeruhan = 0-5; // Parameter kekeruhan
|
|
float ParameterTDS = 0.2-0.5; // Parameter TDS
|
|
|
|
float lastKekeruhan = 0; // Nilai terakhir kekeruhan
|
|
float lastTDS = 0; // Nilai terakhir TDS
|
|
|
|
BlynkTimer timer;
|
|
|
|
// Callback function untuk pengiriman data sensor ke Blynk
|
|
void sendSensor() {
|
|
if (Serial.available()) { // Jika data tersedia di buffer serial
|
|
String dataReceived = Serial.readStringUntil('\n'); // Baca data hingga karakter newline
|
|
float kekeruhan = dataReceived.substring(0, dataReceived.indexOf(',')).toFloat(); // Parse data kekeruhan
|
|
float tdsValue = dataReceived.substring(dataReceived.indexOf(',') + 1).toFloat(); // Parse data TDS
|
|
|
|
// Jika data yang diterima valid (bukan 0)
|
|
if (kekeruhan != 0 && tdsValue != 0) {
|
|
lastKekeruhan = kekeruhan; // Simpan nilai terakhir kekeruhan
|
|
lastTDS = tdsValue; // Simpan nilai terakhir TDS
|
|
}
|
|
}
|
|
|
|
// Kirim data terakhir ke Blynk
|
|
Blynk.virtualWrite(V0, lastKekeruhan); // Kirim data kekeruhan terakhir ke Virtual pin V0 di Blynk
|
|
Blynk.virtualWrite(V1, lastTDS); // Kirim data TDS terakhir ke Virtual pin V1 di Blynk
|
|
|
|
// Kirim status kekeruhan terakhir ke Blynk
|
|
if (lastKekeruhan > ParameterKekeruhan) {
|
|
Blynk.virtualWrite(V2, "Air Keruh");
|
|
} else {
|
|
Blynk.virtualWrite(V2, "Air Tidak Keruh");
|
|
}
|
|
|
|
// Kirim status TDS terakhir ke Blynk
|
|
if (lastTDS > ParameterTDS) {
|
|
Blynk.virtualWrite(V3, "Kaporit Tinggi");
|
|
} else {
|
|
Blynk.virtualWrite(V3, "Kaporit Normal");
|
|
}
|
|
}
|
|
|
|
void setup() {
|
|
Serial.begin(9600); // Baud rate serial monitor
|
|
Blynk.begin(auth, ssid, pass); // Mulai Blynk
|
|
timer.setInterval(20L, sendSensor); // Set interval timer untuk pengiriman data 20ms
|
|
}
|
|
|
|
void loop() {
|
|
Blynk.run(); // Menjalankan Blynk
|
|
timer.run(); // Menjalankan timer
|
|
}
|