Melanjutakan tutorial edisi telegram kali ini kita akan mendetekesi suhu meggunakan sensor Ds18b20 dan ESP01.  Dalam tutorial ini kita akan dapat mengecek suhu melalui perintah yang sudah disetting sebelumnya. Serta mendapat notifikasi jika suhu melebihi nilai maksimal.

Alat dan bahan :

Pada telegram dibutuhkan API token dan chatid agar bisa terhubung dengan perangkat kita, untuk membuatnya silahkan ikuti tutorial sebelumnya.

MEMULAI MENGGUNAKAN TELEGRAM

Simpan token dan idchat nanti akan dimasukkan ke sketch prorgam.

Rangkaian Upload Program

keterangan :

Untuk upload program silahkan rangkai alat dan bahan sesuai gambar di atas. Jika sudah masukkan api token dan idchat pada program. Masukkan semua library yang dibutuhkan, dan jangan lupa untuk upload menggunakan board : Generic ESP8266 Module.

Sketch Program

#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h>
#include <OneWire.h>
#include <DallasTemperature.h>

#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature DS18B20(&oneWire);
float temp;
float Fahrenheit = 0;

char ssid[] = "Indomaker"; //nama wifi
char password[] = "cahbarongan"; //password wifi

#define BOTtoken "907580866:AAGulSeQkxWxsCWr0n-6zQQbIihTFoBu91o" //token bot telegram
#define idChat "672053529" //idbot
WiFiClientSecure client;
UniversalTelegramBot bot(BOTtoken, client);

int Bot_mtbs = 1000;
long Bot_lasttime;
bool Start = false;

void setup() {
  Serial.begin(9600);
  Serial.print("Connecting Wifi: ");
  Serial.println(ssid);

  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(".");
    delay(500);
  }
  Serial.println("");
  Serial.println("WiFi connected");
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());
  DS18B20.begin();
  delay(5000);
}

void loop() {
  delay(2000);

  DS18B20.requestTemperatures();
  temp = DS18B20.getTempCByIndex(0); // Celcius
  Fahrenheit = DS18B20.toFahrenheit(temp); // Fahrenheit
  Serial.println(temp);
  Serial.println(Fahrenheit);

  if (temp > 35.00) {
    bot.sendChatAction(idChat, "Sedang mengetik...");
    Serial.print("Suhu saat ini : ");
    Serial.println(temp);
    delay(3000);

    String suhu = "Intensitas suhu : ";
    suhu += int(temp);
    suhu += " *C\n";
    suhu += "Suhu maksimal\n";
    bot.sendMessage(idChat, suhu, "");
    Serial.print("Mengirim data sensor ke telegram");
  }

  if (millis() > Bot_lasttime + Bot_mtbs) {
    int numNewMessages = bot.getUpdates(bot.last_message_received + 1);

    while (numNewMessages) {
      Serial.println("Memeriksa Respon");
      handleNewMessages(numNewMessages);
      numNewMessages = bot.getUpdates(bot.last_message_received + 1);
    }

    Bot_lasttime = millis();
  }
}

void handleNewMessages(int numNewMessages) {
  Serial.println("Pesan baru...");
  Serial.println(String(numNewMessages));

  for (int i = 0; i < numNewMessages; i++) {
    String chat_id = String(bot.messages[i].chat_id);
    String text = bot.messages[i].text;

    if (text == "/cekSuhu") {
      delay(2000);
      DS18B20.requestTemperatures();
      temp = DS18B20.getTempCByIndex(0); // Celcius
      Fahrenheit = DS18B20.toFahrenheit(temp);
      String suhu = "Suhu sekarang : ";
      suhu += int(temp);
      suhu += " *C\n";
      suhu += int(Fahrenheit);
      suhu += " *F";
      bot.sendMessage(idChat, suhu, "");
    }
    else if (text == "/start") {
      String welcome = "Perintah : \n";
      welcome += "/cekSuhu\n";
      bot.sendMessage(chat_id, welcome);
    }
  }
}

Lepas ESP-01 kemudian hubungkan ke shield DS18B20.

Buka aplikasi telegram, ketik di pencarian nama bot telegram yang sudah dibuat > Klik Start.

Untuk hasil minus itu karena gagalnya pembacaan sensor. Jadi sahakan supply tegangan stabil. Sampai disini anda sudah berhasil, terima kasih.

Kategori: NodeMCU

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

Scroll Up
id_IDIndonesian
en_USEnglish id_IDIndonesian