/**
dalam prototipe ini menggunakan sensor alternatif pilihan karena Wokwi keterbatasan sensor
berikut yng menjadi alternatif pilihan :
*Esp32 => Wemos D1 Mini Pro (Esp8266)
*PIR => Microwave Radar Sensor yng mana data di terimanya hapir sama membaca HIGH dan LOW.
HIGH ketika mendeteksi, dan LOW kektika tidak ada deteksi apapun dari sensor
dalam program ini saya beri komentar supaya bisa dinyalakan tanpa harus konfig koneksi
*internet seacara static, memilih koneksi internet wireless =1 atau LAN =0,
*Konfigurasi MQTT
dalam program ini juga saya memberikan sedikit logika program yg hampir sama dengan project
diperusahaan saya menggunakan UHF LongRange untuk Humen Detection
Proses Pengiriman data akan di parsing menjadi JSON menggunakan protokol MQTT yang
diterima oleh Node-red dan dari node-red bisa diseting untuk menyimpannya ke Database
SQL/MYSQL
*/
// #include <ESP8266WiFi.h>
// #include <WiFiClient.h>
// #include <TimeLib.h>
// #include <WiFiUdp.h>
// #include <NTPClient.h>
// #include <ESP8266mDNS.h>
// #include <Wiegand.h>
// WIEGAND wg; //Untuk Sensor UHF Long Range
// #include <PubSubClient.h>
//==============================eth=====================================
//#include <W5500lwIP.h>
// #include <ENC28J60lwIP.h>
// #define CSPIN 2
// ENC28J60lwIP eth(CSPIN);
// //Wiznet5500lwIP eth(CSPIN);
// byte mac[] = {0xD2, 0x67, 0x48, 0x3C, 0x18, 0x97};
// IPAddress localIP;
// bool ip_static = 1; //1=static,0=dhcp
// bool koneksi = 1; //1= wifi,0=ethernet
//==============================WiFi=====================================
// const char* ssid = "IT_HQ";
// const char* password = "voksel50496@";
//================================STATIC==================================
// IPAddress staticIP(192, 168, 2, 225);
// IPAddress gateway(192, 168, 2, 1);
// IPAddress subnet(255, 255, 255, 0);
//==============================NTP SERVER===============================
// WiFiUDP ntpUDP;
// NTPClient timeClient(ntpUDP, "pool.ntp.org", 7 * 3600, 60000); // Set timezone offset to +7 hours (WIB)
//==============================IDENTITAS===============================
// String id_machine = "detection01";
// const char *sendRealtime = "statusR";
// String idDevice = "LR01";
//==============================MQTT===============================
// Konfigurasi MQTT
// String mqtt_server = "broker_mqtt_address";
// String CheckID = "iLocation/";
// String UIDType = "UIDLR";
//==============================VARIABEL===============================
const int radarPin = 14; // Pin yang terhubung ke pin OUT Microwave Radar Sensor seri Dorma
int radarState = LOW; // Status awal sensor (LOW: tidak ada deteksi, HIGH: ada deteksi)
int ledpir = 15;
// int Wcount;
// int Start;
// String Code;
// String tagBefore;
void setup() {
Serial.begin(115200); // Memulai komunikasi serial dengan baud rate 115200
pinMode(radarPin, INPUT); // Mengatur radarPin sebagai input Microwave Radar Sensor seri Dorma
pinMode(ledpir, OUTPUT);
// wg.begin(D1, D2); //Mengatur Sensor UHF Long Range
// if (koneksi) {
// wifi();
// } else {
// ethernet();
// }
// // Initialize a NTPClient to get time
// timeClient.begin();
// timeClient.update();
// client.setServer(mqtt_server.c_str(), 1883);
// client.setCallback(callback);
// Serial.println("mDNS responder started");
// delay(1000);
}
void loop() {
//==============================UHFLongRange===============================
// if (wg.available() > 0)
// {
// int code = wg.getCode();
// String S = String(code, HEX);
// S.toUpperCase();
// Code = S;
// Serial.println(S);
// if ( S != tagBefore)
// {
// checkData(idDevice, UIDType, S);
// tagBefore = S;
// }
// }
// if (!client.connected())
// {
// reconnect();
// }
// client.loop();
//==============================Sensor PIR===============================
int val = digitalRead(radarPin); // Membaca status sensor
if (val == HIGH) { // Jika ada gerakan terdeteksi
if (radarState == LOW) {
Serial.println("Gerakan terdeteksi!");
radarState = HIGH;
digitalWrite(ledpir, HIGH);
}
} else {
if (radarState == HIGH) {
Serial.println("Tidak ada gerakan.");
radarState = LOW;
digitalWrite(ledpir, LOW);
}
}
delay(100); // Delay untuk stabilitas pembacaan sensor
}
// void ethernet(){
// }
// void wifi()
// {
// // Menggunakan alamat IP statis jika ip_static adalah true
// if (ip_static) {
// if (!WiFi.config(staticIP, gateway, subnet)) {
// Serial.println("Gagal mengkonfigurasi alamat IP statis");
// }
// }
// WiFi.begin(ssid, password);
// while (WiFi.waitForConnectResult() != WL_CONNECTED) {
// Serial.println("Koneksi Gagal! Rebooting...");
// delay(5000);
// ESP.restart();
// }
// Serial.println("");
// Serial.println("WiFi tersambung");
// Serial.print("Alamat IP: ");
// Serial.println(WiFi.localIP());
// }
// void reconnect() {
// // Loop sampai terhubung ke MQTT
// while (!client.connected()) {
// Serial.print("Menghubungkan ke MQTT...");
// // Buat ID unik
// String clientId = "ESP8266Client-";
// clientId += String(random(0xffff), HEX);
// if (client.connect(clientId.c_str())) {
// Serial.println("terhubung");
// } else {
// Serial.print("gagal, rc=");
// Serial.print(client.state());
// Serial.println(" coba lagi dalam 5 detik");
// delay(5000);
// }
// }
// }
// void checkData(String idr , String uidtype, String uid )
// {
// String dataSend = "|";
// dataSend += idr;
// dataSend += "|";
// dataSend += uidtype;
// dataSend += "|";
// dataSend += uid;
// dataSend += "|";
// char MS[100];
// dataSend.toCharArray(MS, dataSend.length() + 1);
// client.publish(CheckID.c_str(), MS);
// Serial.println(dataSend);
// Serial.println("======================");
// }
// void parsing(String output[3], String myString)
// {
// int ind1, ind2, ind3, ind4;
// ind1 = myString.indexOf('|');
// ind2 = myString.indexOf('|', ind1 + 1);
// ind3 = myString.indexOf('|', ind2 + 1);
// ind4 = myString.indexOf('|', ind3 + 1);
// output[1] = myString.substring(ind1 + 1, ind2);
// output[2] = myString.substring(ind2 + 1, ind3);
// output[3] = myString.substring(ind3 + 1, ind4);
// }