best-home/best-home.ino0000755000000000000000000001334613741576444012252 0ustar #include #include #include /* ESP & Blynk */ #include #include #include // pewaktu #define OUT1 D7 //output PING #define OUT2 D8 // output PIR #define OUT3 D4 // output SUHU (on pompa) #define PIR D5 #define TRIGGER D2 #define ECHO D1 //#define BLYNK_PRINT Serial // Comment this out to disable prints and save space // GRUP SENSOR dht #define DHTPIN D3 // Digital pin 3 sensor suhu // Uncomment whatever type you're using! #define DHTTYPE DHT11 // DHT 11 //#define DHTTYPE DHT22 // DHT 22, AM2302, AM2321 //#define DHTTYPE DHT21 // DHT 21, AM2301 DHT dht(DHTPIN, DHTTYPE); // sensor dht char auth[] = "r_gH7mO92csgjU4jgJfFRbBZd3txreZN"; /* WiFi credentials */ char ssid[] = "wildan"; char pass[] = "99887766"; bool pirValue = LOW; int timezone = 8 * 3600; // time zone int dst = 0; int jam; int menit; unsigned long waktuSebelumPIR=0; bool statusPIR=LOW; bool simpanPIR=LOW; void setup() { //Serial.begin(9600); Blynk.begin(auth, ssid, pass); //Blynk.virtualWrite(V6, millis() / 1000); //timer.setInterval(1000L, kirimData); pinMode(PIR, INPUT); pinMode(OUT1, OUTPUT); pinMode(OUT2, OUTPUT); pinMode(OUT3, OUTPUT); pinMode(TRIGGER, OUTPUT); pinMode(ECHO, INPUT); pinMode(BUILTIN_LED, OUTPUT); configTime(timezone, dst, "pool.ntp.org","time.nist.gov"); Serial.println("\nWaiting for Internet time"); while(!time(nullptr)){ Serial.print("*"); delay(1000); } Serial.println("\nTime response....OK"); dht.begin(); // start sensor suhu lembab } // Setup a function to be called every second //timer.setInterval(1000L, sendSensor); void loop() { long duration, distance; digitalWrite(TRIGGER, LOW); delayMicroseconds(2); digitalWrite(TRIGGER, HIGH); delayMicroseconds(10); digitalWrite(TRIGGER, LOW); duration = pulseIn(ECHO, HIGH); distance = (duration/2) / 29.1; //Blynk.virtualWrite(V10, distance); if (distance <= 20) { digitalWrite(OUT1, HIGH); //Blynk.virtualWrite(V10, 255); } else { digitalWrite(OUT1, LOW); //Blynk.virtualWrite(V10, 100); } //Serial.print(distance); //Serial.println("Centimeter:"); Blynk.virtualWrite(V5, 300-distance); //millis pir pirValue = digitalRead(PIR); unsigned long waktuSekarangPIR=millis(); // milis - delay tanpa mempenaruhi timing yg lain // Serial.print("waktu sekarang = "); // Serial.println(waktuSekarangPIR); // Serial.print("waktu sebelum = "); // Serial.print(waktuSebelumPIR); if (digitalRead(PIR)==HIGH) { waktuSebelumPIR=millis(); //Serial.println("ADA ORANG BOS!!"); Blynk.virtualWrite(V18, 255); } else { //Serial.println("SEDANG SENDIRI"); Blynk.virtualWrite(V18, 100); } if ((millis() - waktuSebelumPIR) < 10000) { Blynk.virtualWrite(V8, "ADA ORANG BOS!!"); digitalWrite(OUT2, HIGH); } else { Blynk.virtualWrite(V8, "SEDANG SENDIRI"); digitalWrite(OUT2, LOW); } // Serial.print(" Gerak : "); // Serial.println(pirValue); //timer.run(); // Initiates SimpleTimer // TIMER POMPA time_t now = time(nullptr); /* mengambil time*/ struct tm* p_tm = localtime(&now); jam=(p_tm->tm_hour); // ambil jam menit=(p_tm->tm_min); // ambil menit if (jam == 23 && menit == 12) { //aksi sesuai jam Blynk.virtualWrite(V13, "SEDANG NYEMBUR...."); digitalWrite(OUT3, HIGH); } else if (jam == 23 && menit == 20) { Blynk.virtualWrite(V13, "SEDANG NYEMBUR...."); digitalWrite(OUT3, HIGH); } else { Blynk.virtualWrite(V13, "ISTIRAHAT BOS!!"); digitalWrite(OUT3, LOW); } // DHT float h = dht.readHumidity(); float t = dht.readTemperature(); // or dht.readTemperature(true) for Fahrenheit if (isnan(h) || isnan(t)) { Serial.println("Failed to read from DHT sensor!"); return; } // You can send any value at any time. // Please don't send more that 10 values per second. Blynk.virtualWrite(V11, h); //V5 is for Humidity Blynk.virtualWrite(V12, t); //V6 is for Temperature // DHT delay(500); Blynk.run(); // timer.run(); } /*************************************************** * Send Sensor data to Blynk **************************************************/ /* void kirimData() { pirValue = digitalRead(PIR); long duration, distance; digitalWrite(TRIGGER, LOW); delayMicroseconds(2); digitalWrite(TRIGGER, HIGH); delayMicroseconds(10); digitalWrite(TRIGGER, LOW); duration = pulseIn(ECHO, HIGH); distance = (duration/2) / 29.1; if (distance <= 20) { digitalWrite(OUT1, HIGH); Blynk.virtualWrite(V4, 255); } else { digitalWrite(OUT1, LOW); Blynk.virtualWrite(V4, 0); } Serial.print(distance); Serial.println("Centimeter:"); Blynk.virtualWrite(V5, distance); Blynk.virtualWrite(V8, pirValue); } void sendSensor() // kirim data sensor lembab suhu { float h = dht.readHumidity(); float t = dht.readTemperature(); // or dht.readTemperature(true) for Fahrenheit if (isnan(h) || isnan(t)) { Serial.println("Failed to read from DHT sensor!"); return; } // You can send any value at any time. // Please don't send more that 10 values per second. Blynk.virtualWrite(V11, h); //V5 is for Humidity Blynk.virtualWrite(V12, t); //V6 is for Temperature } //jam Serial.println(jam); Serial.print(p_tm->tm_hour); Serial.print(":"); Serial.print(p_tm->tm_min); Serial.print(":"); Serial.println(p_tm->tm_sec); */