//6272672999:AAGxABIk7wWM6DgGcm12xNuR1Miv-Jm0fEw
//include<CTBot.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <EEPROM.h>
#include <Arduino.h>
/*#include <WiFi.h>
#include <WiFiClientSecure.h>
#include "soc/soc.h"
#include "soc/rtc_cntl_reg.h"
#include "esp_camera.h"
#include <UniversalTelegramBot.h>
#include <ArduinoJson.h>*/
// Two LEDs on GPIO pins
//#define redLED 13
//#define grnLED 12
//#define yellowLED 24
//#define blueLED 27
void blinkRedLed();
void blinkGrnLed();
void blinkyellowLed();
void blinkblueled();
void kipas();
LiquidCrystal_I2C lcd(0x27, 20, 4);
const int buttonPin = 32; // Pin tempat tombol dihubungkan
const int buttonPin1 = 33;
const int buttonPin2 = 25;
const int buttonPin3 = 26;
const int buttonPin4 = 27;
const int pinled = 4;
int buttonState = LOW; // Status tombol (ditekan atau tidak)
int buttonState1 = LOW; // Status tombol (ditekan atau tidak)
int buttonState2 = LOW; // Status tombol (ditekan atau tidak)
int buttonState3 = LOW; // Status tombol (ditekan atau tidak)
int buttonState4 = LOW; // Status tombol (ditekan atau tidak)
int lastButtonState = LOW; // Status tombol pada bacaan sebelumnya
int lastButtonState1 = LOW; // Status tombol pada bacaan sebelumnya
int lastButtonState2 = LOW; // Status tombol pada bacaan sebelumnya
int lastButtonState3 = LOW; // Status tombol pada bacaan sebelumnya
int lastButtonState4 = LOW; // Status tombol pada bacaan sebelumnya
bool buttonPressed = false; // Penanda bahwa tombol pertama kali ditekan
bool buttonPressed1 = false; // Penanda bahwa tombol pertama kali ditekan
bool buttonPressed2 = false; // Penanda bahwa tombol pertama kali ditekan
bool buttonPressed3 = false; // Penanda bahwa tombol pertama kali ditekan
bool buttonPressed4 = false; // Penanda bahwa tombol pertama kali ditekan
bool sudahdibaca = false;
//sediakan objek untuk ctbot
//CTBot myBot ;
//konfigurasi wifi
const char* ssid = "Redmi 13";
const char* password = "1234567890";
//konfigurasi telegram
//String token = "6272672999:AAGxABIk7wWM6DgGcm12xNuR1Miv-Jm0fEw";
//const int id = 698341487;
/*unsigned long previousMillis = 0;
unsigned long interval = 30000;
void initWiFi(){
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
Serial.print("Connecting to WiFi ..");
while (WiFi.status() != WL_CONNECTED) {
Serial.print('.');
//lcd.setCursor(0,0);
// lcd.print("tidak terhubung");
delay(1000);
}
Serial.println(WiFi.localIP());
//lcd.setCursor(0,0);
//lcd.print(WiFi.localIP());
//lcd.setCursor(0,0);
//lcd.print(" terhubung");
//digitalWrite(pinled, HIGH );
}
*/
void setup() {
pinMode(buttonPin, INPUT_PULLUP); // Atur pin sebagai input dengan pull-up resistor internal
pinMode(buttonPin1,INPUT_PULLUP);
pinMode(buttonPin2,INPUT_PULLUP);
pinMode(buttonPin3,INPUT_PULLUP);
pinMode(buttonPin4,INPUT_PULLUP);
pinMode(pinled,OUTPUT);
// pinMode(redLED, OUTPUT);
// pinMode(grnLED, OUTPUT);
// pinMode(yellowLED,OUTPUT);
// pinMode(blueLED, OUTPUT);
//digitalWrite(grnLED, LOW);
//digitalWrite(redLED, LOW);
//digitalWrite(yellowLED,LOW);
//digitalWrite(blueLED, LOW);
//Serial.begin(9600);
lcd.init ();
lcd.backlight();
Serial.begin(115200);
// initWiFi();
//Serial.print("RSSI: ");
//Serial.println(WiFi.RSSI());
// myBot.wifiConnect(ssid,password);
//myBot.setTelegramToken(token);
//uji apakah berhasil terkoneksi
/*if(myBot.testConnection())
{
//nyalakan lampu led apbl terkoneksi
Serial.println("terhubung");
lcd.setCursor(0,0);
lcd.print("WIFI: terhubung");
digitalWrite(pinled, HIGH );
myBot.sendMessage(id,"Hallo om Tanto\nModul jendela wetan sudah aktif");
}
else
{
//matikan lampu
digitalWrite(pinled, LOW );
lcd.setCursor(0,0);
lcd.print("WIFI: tdk terhubung");
*/
lcd.setCursor(0,0);
lcd.print("Listrik : "); // mati /hidup
lcd.setCursor(0,1);
lcd.print("Jndla wetan : "); // buka / tutup
lcd.setCursor(0,2);
lcd.print("Pintu tengah:"); // buka / tutup
lcd.setCursor(0,3);
lcd.print("Jndla kulon :"); // buka / tutup
}
void loop() {
/* unsigned long currentMillis = millis();
// if WiFi is down, try reconnecting every CHECK_WIFI_TIME seconds
if ((WiFi.status() != WL_CONNECTED) && (currentMillis - previousMillis >=interval)) {
Serial.print(millis());
Serial.println("Reconnecting to WiFi...");
digitalWrite(pinled, LOW );
//lcd.setCursor(0,0);
//lcd.print("tidak terhubung");
WiFi.disconnect();
WiFi.reconnect();
previousMillis = currentMillis;
}
if(!sudahdibaca){
myBot.sendMessage(id,"Hallo om Tanto\nModul pintu dan listrik sudah aktif");
Serial.println("PROGRAM DI BACA 1 X");
sudahdibaca = true;
}
delay(1000);
*/
blinkRedLed();
blinkGrnLed();
blinkyellowLed();
blinkblueled();
kipas();
}
//----------------------------------------------------
//1. Baca status tombol JENDELA WETAN
//--------------------------------------------------------------------
void blinkRedLed() {
static unsigned long redMillis = millis();
if (millis() - redMillis > 1000) {
Serial.println("program 1");
//digitalWrite(redLED, !digitalRead(redLED));
buttonState = digitalRead(buttonPin);
// Cek apakah status tombol berbeda dari sebelumnya
if (buttonState != lastButtonState) {
// Jika tombol sedang berubah, tunggu sebentar untuk memastikan debouncing
delay(50);
// Baca ulang status tombol
buttonState = digitalRead(buttonPin);
}
// Setelah debouncing, cek apakah tombol sudah benar-benar ditekan
if (buttonState == LOW && !buttonPressed) {
// Tombol pertama kali ditekan, kirimkan logika HIGH
Serial.println("SENSOR MENDEKAT / pintu wetan tutup");
lcd.setCursor(14,1);
lcd.print("TUTUP");
buttonPressed = true; // Set penanda bahwa tombol sudah ditekan
//myBot.sendMessage(id,"Hallo Tanto\nJENDELO WETAN WIS DI TUTUP");
}
// Reset penanda ketika tombol dilepas
if (buttonState == HIGH && buttonPressed) {
buttonPressed = false;
// Setelah debouncing, cek apakah tombol sudah benar-benar ditekan
if (buttonState == HIGH && !buttonPressed) {
// Tombol pertama kali ditekan, kirimkan logika HIGH
Serial.println("SENSOR MENJAUH / pintu wetan buka");
lcd.setCursor(14,1);
lcd.print("BUKA ");
buttonPressed = true; // Set penanda bahwa tombol sudah ditekan
//myBot.sendMessage(id,"Hallo Tanto\nJENDELO WETAN WIS DI BUKA");
}
// Reset penanda ketika tombol dilepas
if (buttonState == HIGH && buttonPressed) {
buttonPressed = false;
}
}
redMillis = millis();
}
}
//--------------------------------------------------------------------
// 2.Baca status tombol JEDELA KULON
//------------------------------------------------------------
void blinkGrnLed(){
static unsigned long grnMillis = millis();
if (millis() - grnMillis > 1000) {
Serial.println("program 2");
//digitalWrite(redLED, !digitalRead(redLED));
buttonState1 = digitalRead(buttonPin1);
// Cek apakah status tombol berbeda dari sebelumnya
if (buttonState1 != lastButtonState1) {
// Jika tombol sedang berubah, tunggu sebentar untuk memastikan debouncing
delay(50);
// Baca ulang status tombol
buttonState1 = digitalRead(buttonPin1);
}
// Setelah debouncing, cek apakah tombol sudah benar-benar ditekan
if (buttonState1 == LOW && !buttonPressed1) {
// Tombol pertama kali ditekan, kirimkan logika HIGH
Serial.println("SENSOR MENDEKAT KULON / RELAY ON1");
lcd.setCursor(14,3);
lcd.print("TUTUP");
buttonPressed1 = true; // Set penanda bahwa tombol sudah ditekan
// myBot.sendMessage(id,"Hallo Tanto\nJENDELO KULON WIS DI TUTUP");
}
// Reset penanda ketika tombol dilepas
if (buttonState1 == HIGH && buttonPressed1) {
buttonPressed1 = false;
// Setelah debouncing, cek apakah tombol sudah benar-benar ditekan
if (buttonState1 == HIGH && !buttonPressed1) {
// Tombol pertama kali ditekan, kirimkan logika HIGH
Serial.println("SENSOR MENJAUH KULON / RELAY OFF1");
lcd.setCursor(14,3);
lcd.print("BUKA ");
buttonPressed1 = true; // Set penanda bahwa tombol sudah ditekan
//myBot.sendMessage(id,"Hallo Tanto\nJENDELO KULON WIS DI BUKA");
}
// Reset penanda ketika tombol dilepas
if (buttonState1 == HIGH && buttonPressed1) {
buttonPressed1 = false;
}
}
grnMillis = millis();
}
}
//-------------------------------------------------------------
// 3.Baca status tombol PINTU TENGAH
//-------------------------------------------------------------
void blinkyellowLed() {
static unsigned long yellowLedMillis = millis();
if (millis() - yellowLedMillis > 1000) {
Serial.println("program 3");
//digitalWrite(redLED, !digitalRead(redLED));
buttonState2 = digitalRead(buttonPin2);
// Cek apakah status tombol berbeda dari sebelumnya
if (buttonState2 != lastButtonState2) {
// Jika tombol sedang berubah, tunggu sebentar untuk memastikan debouncing
delay(50);
// Baca ulang status tombol
buttonState2 = digitalRead(buttonPin2);
}
// Setelah debouncing, cek apakah tombol sudah benar-benar ditekan
if (buttonState2 == LOW && !buttonPressed2) {
// Tombol pertama kali ditekan, kirimkan logika HIGH
Serial.println("SENSOR MENDEKAT / pintu wetan tutup");
lcd.setCursor(14,2);
lcd.print("TUTUP");
buttonPressed2 = true; // Set penanda bahwa tombol sudah ditekan
//myBot.sendMessage(id,"Hallo Tanto\npintu tengah di tutup");
}
// Reset penanda ketika tombol dilepas
if (buttonState2 == HIGH && buttonPressed2) {
buttonPressed2 = false;
// Setelah debouncing, cek apakah tombol sudah benar-benar ditekan
if (buttonState2 == HIGH && !buttonPressed2) {
// Tombol pertama kali ditekan, kirimkan logika HIGH
Serial.println("SENSOR MENJAUH / pintu tengah buka");
lcd.setCursor(14,2);
lcd.print("BUKA ");
buttonPressed2= true; // Set penanda bahwa tombol sudah ditekan
//myBot.sendMessage(id,"Hallo Tanto\npintu tengah di buka");
}
// Reset penanda ketika tombol dilepas
if (buttonState2 == HIGH && buttonPressed2) {
buttonPressed2 = false;
}
}
yellowLedMillis = millis();
}
}
//--------------------------------------------------------
// 4.Baca status listrik
//--------------------------------------------------------------------
void blinkblueled() {
static unsigned long blueledMillis = millis();
if (millis() - blueledMillis > 1000) {
Serial.println("program 4");
buttonState3 = digitalRead(buttonPin3);
// Cek apakah status tombol berbeda dari sebelumnya
if (buttonState3 != lastButtonState3) {
// Jika tombol sedang berubah, tunggu sebentar untuk memastikan debouncing
delay(50);
// Baca ulang status tombol
buttonState3 = digitalRead(buttonPin3);
}
// Setelah debouncing, cek apakah tombol sudah benar-benar ditekan
if (buttonState3 == LOW && !buttonPressed3) {
// Tombol pertama kali ditekan, kirimkan logika HIGH
Serial.println("SENSOR MENDEKAT / RELAY ON3");
lcd.setCursor(14,0);
lcd.print("HIDUP");
buttonPressed3 = true; // Set penanda bahwa tombol sudah ditekan
//myBot.sendMessage(id,"Hallo Tanto\nlampu sudah di nyalakan");
}
// Reset penanda ketika tombol dilepas
if (buttonState3 == HIGH && buttonPressed3) {
buttonPressed3 = false;
// Setelah debouncing, cek apakah tombol sudah benar-benar ditekan
if (buttonState3 == HIGH && !buttonPressed3) {
// Tombol pertama kali ditekan, kirimkan logika HIGH
Serial.println("SENSOR MENJAUH / RELAY OFF3");
lcd.setCursor(14,0);
lcd.print("MATI ");
buttonPressed3 = true; // Set penanda bahwa tombol sudah ditekan
//myBot.sendMessage(id,"Hallo Tanto\nlampu sudah di matikan");
}
// Reset penanda ketika tombol dilepas
if (buttonState3 == HIGH && buttonPressed3) {
buttonPressed3 = false;
}
}
blueledMillis = millis();
}
}
//---------
//kipas wifi
//----------
void kipas() {
static unsigned long kipasMillis = millis();
if (millis() - kipasMillis > 1000) {
Serial.println("program kipas1");
buttonState4 = digitalRead(buttonPin4);
// Cek apakah status tombol berbeda dari sebelumnya
if (buttonState4 != lastButtonState4) {
// Jika tombol sedang berubah, tunggu sebentar untuk memastikan debouncing
delay(50);
// Baca ulang status tombol
buttonState4 = digitalRead(buttonPin4);
}
// Setelah debouncing, cek apakah tombol sudah benar-benar ditekan
if (buttonState4 == LOW && !buttonPressed4) {
// Tombol pertama kali ditekan, kirimkan logika HIGH
Serial.println("kipas 1 on kipas 2 off");
buttonPressed4 = true; // Set penanda bahwa tombol sudah ditekan
//myBot.sendMessage(id,"Hallo Tanto\nKipas wifi 1 Hidup\nKipas wifi 2 mati");
}
// Reset penanda ketika tombol dilepas
if (buttonState4 == HIGH && buttonPressed4) {
buttonPressed4 = false;
// Setelah debouncing, cek apakah tombol sudah benar-benar ditekan
if (buttonState4 == HIGH && !buttonPressed4) {
// Tombol pertama kali ditekan, kirimkan logika HIGH
Serial.println("kipas 2 on kipas 1 off");
buttonPressed4 = true; // Set penanda bahwa tombol sudah ditekan
//myBot.sendMessage(id,"Hallo Tanto\nkipas wifi 2 hidup\n kipas wifi 2 mati");
}
// Reset penanda ketika tombol dilepas
if (buttonState4 == HIGH && buttonPressed4) {
buttonPressed4 = false;
}
}
kipasMillis = millis();
}
}
//6272672999:AAGxABIk7wWM6DgGcm12xNuR1Miv-Jm0fEw