Closed BIMA-25 closed 1 year ago
const char ssid = "PONDOK PUTRI AR-RASID"; const char password = "00000";
String text;
WiFiClientSecure client; UniversalTelegramBot bot(BOTtoken, client);
const int MQ135Pin = A0; // Pin untuk sensor MQ135 const int AcetonThreshold = 500; // Ambang batas Aceton (PPM) const int NH4Threshold = 60; // Ambang batas NH4 (PPM) const int ToluenoThreshold = 100; // Ambang batas Tolueno (PPM) const int CO2Threshold = 1000; // Ambang batas CO2 (PPM) const int COThreshold = 80; // Ambang batas CO (PPM)
int botRequestDelay = 1000; unsigned long lastTimeBotRan;
float MQ135Value();
void handleNewMessages(int numNewMessages) { Serial.println("handleNewMessages"); Serial.println(String(numNewMessages));
for (int i = 0; i < numNewMessages; i++) { // Chat id of the requester String chat_id = String(bot.messages[i].chat_id); Serial.println(chat_id);
if (chat_id != CHAT_ID) {
bot.sendMessage(chat_id, "Unauthorized user", "");
continue;
}
String text = bot.messages[i].text;
Serial.println(text);
String from_name = bot.messages[i].from_name;
if (text == "/start") {
String welcome = "Welcome, " + from_name + ".\n";
welcome += "Use the following commands to control your outputs.\n\n";
welcome += "/CO untuk melihat kadar CO di udara saat ini \n";
welcome += "/CO2 untuk melihat kadar CO2 di udara saat ini \n";
welcome += "/Tolueno untuk melihat kadar Tolueno di udara saat ini \n";
welcome += "/NH4 untuk melihat kadar NH4 di udara saat ini \n";
welcome += "/Aceton untuk melihat kadar Aceton di udara saat ini \n";
bot.sendMessage(CHAT_ID, welcome, "");
}
if (MQ135Value() > AcetonThreshold) {
String message = "PERINGATAN! Gas Aceton melebihi ambang batas bahaya!";
bot.sendMessage(CHAT_ID, message, "");
}
if (MQ135Value() > NH4Threshold) {
String message = "PERINGATAN! Gas NH4 melebihi ambang batas bahaya!";
bot.sendMessage(CHAT_ID, message, "");
}
if (MQ135Value() > COThreshold) {
String message = "PERINGATAN! Gas CO melebihi ambang batas bahaya!";
bot.sendMessage(CHAT_ID, message, "");
}
if (MQ135Value() > CO2Threshold) {
String message = "PERINGATAN! Gas CO2 melebihi ambang batas bahaya!";
bot.sendMessage(CHAT_ID, message, "");
}
if (MQ135Value() > ToluenoThreshold) {
String message = "PERINGATAN! Gas Tolueno melebihi ambang batas bahaya!";
bot.sendMessage(CHAT_ID, message, "");
}
} }
float MQ135Value() { int value = analogRead(MQ135Pin); float voltage = value (5.0 / 4096.0); float RS_air = (5.0 - voltage) / voltage; float ratio = RS_air / 9.9; // Ratio RS/R0 pada udara bersih float ppm = pow(ratio, -1.179) 4.385; return ppm; }
void setup() { Serial.begin(115200);
WiFi.mode(WIFI_STA); WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.println("Connecting to WiFi.."); }
Serial.println(WiFi.localIP()); client.setCACert(TELEGRAM_CERTIFICATE_ROOT); // Add root certificate for api.telegram.org bot.sendMessage(CHAT_ID, "Hallo", ""); }
void loop() { if (millis() > lastTimeBotRan + botRequestDelay) { int numNewMessages = bot.getUpdates(bot.last_message_received + 1);
while (numNewMessages) {
Serial.println("got response");
handleNewMessages(numNewMessages);
numNewMessages = bot.getUpdates(bot.last_message_received + 1);
}
lastTimeBotRan = millis();
} }
SAMBIL COBA KIRIM PESAN NOTIVIKASI KE TELEGRAM