#define USE_CLIENTSSL false
#include <AsyncTelegram2.h>
// Timezone definition
#include <time.h>
#define MYTZ "CET-1CEST,M3.5.0,M10.5.0/3"
#ifdef ESP8266
#include <ESP8266WiFi.h>
BearSSL::WiFiClientSecure client;
BearSSL::Session session;
BearSSL::X509List certificate(telegram_cert);
#elif defined(ESP32)
#include <WiFi.h>
#include <WiFiClient.h>
#if USE_CLIENTSSL
#include <SSLClient.h>
#include "tg_certificate.h"
WiFiClient base_client;
SSLClient client(base_client, TAs, (size_t)TAs_NUM, A0, 1, SSLClient::SSL_ERROR);
#else
#include <WiFiClientSecure.h>
WiFiClientSecure client;
#endif
#endif
//PIN RELAY
#define RELAY_1 2
#define RELAY_2 0
#define RELAY_3 4
#define RELAY_4 16
#define RELAY_5 17
#define RELAY_6 5
#define RELAY_7 18
#define RELAY_8 19
#define RELAY_9 21
#define RELAY_10 22
bool cek1 = true;
bool cek2 = true;
bool cek3 = true;
bool cek4 = true;
bool cek5 = true;
bool cek6 = true;
bool cek7 = true;
bool cek8 = true;
bool cek9 = true;
String pesan_relay;
const String SSID = "Wokwi-GUEST";
const String password = "";
const char *token = (char*)"6490956744:AAFVmpxteI5_vn_VAWEP6Mm7pnyRVXHasTU";
const int64_t chat_id = 5844660272;
AsyncTelegram2 myBot(client);
//const char* channel = "@zeroone1290BOT";
unsigned long waktu_lalu_1 = 0;
unsigned long waktu_lalu_2 = 0;
unsigned long waktu_lalu_3 = 0;
unsigned long waktu_lalu_4 = 0;
unsigned long waktu_lalu_5 = 0;
unsigned long waktu_lalu_6 = 0;
unsigned long waktu_lalu_7 = 0;
unsigned long waktu_lalu_8 = 0;
unsigned long waktu_lalu_9 = 0;
unsigned long waktu_lalu_10 = 0;
const char *channel = "-1002097863465";
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
//Serial.println("Hello, ESP32!");
Serial.println("Menghubungkan ke WiFi SSID ... ");
Serial.println(SSID);
WiFi.begin(SSID, password);
//secured_client.setCACert(TELEGRAM_CERTIFICATE_ROOT);
while(WiFi.status() != WL_CONNECTED){
Serial.print(".");
delay(500);
}
//myBot.wifiConnect(SSID, password);
configTzTime(MYTZ, "time.google.com", "time.windows.com", "pool.ntp.org");
Serial.print("\nTerkoneksi Ke WIFI, Alamat IP : ");
Serial.println(WiFi.localIP());
#ifdef ESP8266
// Sync time with NTP, to check properly Telegram certificate
configTime(MYTZ, "time.google.com", "time.windows.com", "pool.ntp.org");
//Set certficate, session and some other base client properies
client.setSession(&session);
client.setTrustAnchors(&certificate);
client.setBufferSizes(1024, 1024);
#elif defined(ESP32)
// Sync time with NTP
configTzTime(MYTZ, "time.google.com", "time.windows.com", "pool.ntp.org");
#if USE_CLIENTSSL == false
client.setCACert(telegram_cert);
#endif
#endif
myBot.begin();
myBot.setUpdateTime(1000);
myBot.setTelegramToken(token);
Serial.print("\nTest Telegram connection... ");
myBot.begin() ? Serial.println("OK") : Serial.println("NOK");
char welcome_msg[128];
snprintf(welcome_msg, 128, "BOT @%s online using AsyncTelegram2", myBot.getBotName());
myBot.sendTo(chat_id, welcome_msg);
pinMode(RELAY_1, INPUT);
pinMode(RELAY_2, INPUT);
pinMode(RELAY_3, INPUT);
pinMode(RELAY_4, INPUT);
pinMode(RELAY_5, INPUT);
pinMode(RELAY_6, INPUT);
pinMode(RELAY_7, INPUT);
pinMode(RELAY_8, INPUT);
pinMode(RELAY_9, INPUT);
pinMode(RELAY_10, OUTPUT);
digitalWrite(RELAY_1, LOW);
digitalWrite(RELAY_2, LOW);
digitalWrite(RELAY_3, LOW);
digitalWrite(RELAY_4, LOW);
digitalWrite(RELAY_5, LOW);
digitalWrite(RELAY_6, LOW);
digitalWrite(RELAY_7, LOW);
digitalWrite(RELAY_8, LOW);
digitalWrite(RELAY_9, LOW);
}
void loop() {
// put your main code here, to run repeatedly:
uint8_t status_relay_1 = digitalRead(RELAY_1);
uint8_t status_relay_2 = digitalRead(RELAY_2);
uint8_t status_relay_3 = digitalRead(RELAY_3);
uint8_t status_relay_4 = digitalRead(RELAY_4);
uint8_t status_relay_5 = digitalRead(RELAY_5);
uint8_t status_relay_6 = digitalRead(RELAY_6);
uint8_t status_relay_7 = digitalRead(RELAY_7);
uint8_t status_relay_8 = digitalRead(RELAY_8);
uint8_t status_relay_9 = digitalRead(RELAY_9);
unsigned long waktu_terkini_1 = millis();
TBMessage msg, msg2;
if(waktu_terkini_1 - waktu_lalu_10 >= 100){
waktu_lalu_10 = waktu_terkini_1;
if(myBot.getNewMessage(msg)){
String pesan_text = msg.text;
Serial.println(pesan_text);
if(pesan_text.equals("ping")){
String jawaban;
jawaban = "selamat datang";
jawaban += msg.sender.username;
jawaban += "BOT Masih Berjalan OK ";
jawaban += msg.text;
myBot.sendMessage(msg, jawaban);
//myBot.sendToChannel(channel, jawaban, true);
} else if(pesan_text.equals("reset")){
digitalWrite(RELAY_10, HIGH);
delay(100);
digitalWrite(RELAY_10, LOW);
myBot.sendMessage(msg, "Melakukan Reset");
}
}
}
if(waktu_terkini_1 - waktu_lalu_1 >= 100){
waktu_lalu_1 = waktu_terkini_1;
if(status_relay_1){
String pesan_relay_1 = "Relay 1 on";
while(cek1){
Serial.println(pesan_relay_1);
//myBot.sendTo(chat_id, pesan_relay_1);
msg2.text = pesan_relay_1;
myBot.sendToChannel(channel, msg2.text, true);
//myBot.sendMessage(msg2, msg2.text);
cek1 = false;
if(cek1 == false){
break;
}
}
} else {
cek1 = true;
}
}
if(waktu_terkini_1 - waktu_lalu_2 >= 100){
waktu_lalu_2 = waktu_terkini_1;
if(status_relay_2){
String pesan_relay_2 = "Relay 2 on";
while(cek2){
Serial.println(pesan_relay_2);
myBot.sendTo(chat_id, pesan_relay_2);
cek2 = false;
if(cek2 == false){
break;
}
}
} else {
cek2 = true;
}
}
if(waktu_terkini_1 - waktu_lalu_3 >= 100){
waktu_lalu_3 = waktu_terkini_1;
if(status_relay_3){
String pesan_relay_3 = "Relay 3 on";
while(cek3){
Serial.println(pesan_relay_3);
myBot.sendTo(chat_id, pesan_relay_3);
cek3 = false;
if(cek3 == false){
break;
}
}
} else {
cek3 = true;
}
}
if(waktu_terkini_1 - waktu_lalu_4 >= 100){
waktu_lalu_4 = waktu_terkini_1;
if(status_relay_4){
String pesan_relay_4 = "Relay 4 on";
while(cek4){
Serial.println(pesan_relay_4);
myBot.sendTo(chat_id, pesan_relay_4);
cek4 = false;
if(cek4 == false){
break;
}
}
} else {
cek4 = true;
}
}
if(waktu_terkini_1 - waktu_lalu_5>= 100){
waktu_lalu_5 = waktu_terkini_1;
if(status_relay_5){
String pesan_relay_5 = "Relay 5 on";
while(cek5){
Serial.println(pesan_relay_5);
myBot.sendTo(chat_id, pesan_relay_5);
cek5 = false;
if(cek5 == false){
break;
}
}
} else {
cek5 = true;
}
}
if(waktu_terkini_1 - waktu_lalu_6 >= 100){
waktu_lalu_6 = waktu_terkini_1;
if(status_relay_6){
String pesan_relay_6 = "Relay 6 on";
while(cek6){
Serial.println(pesan_relay_6);
myBot.sendTo(chat_id, pesan_relay_6);
cek6 = false;
if(cek6 == false){
break;
}
}
} else {
cek6 = true;
}
}
if(waktu_terkini_1 - waktu_lalu_7 >= 100){
waktu_lalu_7 = waktu_terkini_1;
if(status_relay_7){
String pesan_relay_7 = "Relay 7 on";
while(cek7){
Serial.println(pesan_relay_7);
myBot.sendTo(chat_id, pesan_relay_7);
cek7 = false;
if(cek7 == false){
break;
}
}
} else {
cek7 = true;
}
}
if(waktu_terkini_1 - waktu_lalu_8 >= 100){
waktu_lalu_8 = waktu_terkini_1;
if(status_relay_8){
Serial.println(status_relay_8);
String pesan_relay_8 = "Relay 8 on";
while(cek8){
Serial.println(pesan_relay_8);
myBot.sendTo(chat_id, pesan_relay_8);
cek8 = false;
if(cek8 == false){
break;
}
}
} else {
cek8 = true;
}
}
if(waktu_terkini_1 - waktu_lalu_9 >= 100){
waktu_lalu_9 = waktu_terkini_1;
if(status_relay_9){
Serial.println(status_relay_9);
String pesan_relay_9 = "Relay 9 on";
while(cek9){
Serial.println(pesan_relay_9);
myBot.sendTo(chat_id, pesan_relay_9);
cek9 = false;
if(cek9 == false){
break;
}
}
} else {
cek9 = true;
}
}
}