Tuesday, April 3, 2018

turn ON led wtih esp8266 & app telegram













oprek telegram ini sebenarnya dah lama, cuma baru berhasil saya terapkan di board hari ini.
pertama oprek gagal mulu coba example dari bawaan library. kali ini library yang saya pakai menggunakan universal telegram.

Alhamdulillah saya mempunyai teman yang sangat baik hati dan tidak sombong di suatu grup WA, dia namanya pak Adrin, dia mencoba bantu saya by japri.
langkah demi langkah dicoba. mulai dari masukin library 2x gagal...
akhirnya ketemu juga permasalahannya. thanks suhu mr. Adrin

mari kita ke topik judul: nyalain led dari telegram pakai esp8266 (nodemcu)
yang perlu disiapkan :
1. esp8266 (nodemcu) + kabel data e rek ojo lali.
2. led + resistor 330ohm
3. cemilan + kopi (abaikan jika nggak ada)

langkah 1:
download dulu board nodemcu tutorial
download library universal telegram

download library ArduinoJson

rangkai nodemcu:
taruh pin led di D7
karena D7 = pin 13


copy file yang ada di folder ini:
C:\Users\puaks\Documents\Arduino\libraries\ArduinoJson\src
ke  sini:
C:\Users\puaks\Documents\Arduino\libraries\UniversalTelegramBot\src

jika masih error:
copy juga kesini:
C:\Program Files\Arduino\hardware\arduino\avr\cores\arduino


oiya bikin akun telegram dulu rek:
1. cari akun telegram BotFather
2. ketik : /start
3. ketik : /newboot
4. ketik nama akun baru anda buat esp: xxx
5.tunggu sampai dapat balasan token


buka example dari universal telegram :
flashled


/*******************************************************************
 *  An example of bot that receives commands and turns on and off  *
 *  an LED.                                                        *
 *                                                                 *
 *  written by Giacarlo Bacchio (Gianbacchio on Github)            *
 *  adapted by Brian Lough                                         *
 *******************************************************************/
#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h>

// Initialize Wifi connection to the router
char ssid[] = "puaks.blogspot.com";     // your network SSID (name)
char password[] = "xxx"; // your network key

// Initialize Telegram BOT
#define BOTtoken "xxxxxxxxxxxxxxxx"  // your Bot Token (Get from Botfather)

WiFiClientSecure client;
UniversalTelegramBot bot(BOTtoken, client);

int Bot_mtbs = 1000; //mean time between scan messages
long Bot_lasttime;   //last time messages' scan has been done
bool Start = false;

const int ledPin = 13;
int ledStatus = 0;

void handleNewMessages(int numNewMessages) {
  Serial.println("handleNewMessages");
  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;

    String from_name = bot.messages[i].from_name;
    if (from_name == "") from_name = "Guest";

    if (text == "/ledon") {
      digitalWrite(ledPin, HIGH);   // turn the LED on (HIGH is the voltage level)
      ledStatus = 1;
      bot.sendMessage(chat_id, "Led is ON", "");
    }

    if (text == "/ledoff") {
      ledStatus = 0;
      digitalWrite(ledPin, LOW);    // turn the LED off (LOW is the voltage level)
      bot.sendMessage(chat_id, "Led is OFF", "");
    }

    if (text == "/status") {
      if(ledStatus){
        bot.sendMessage(chat_id, "Led is ON", "");
      } else {
        bot.sendMessage(chat_id, "Led is OFF", "");
      }
    }

    if (text == "/start") {
      String welcome = "Welcome to Universal Arduino Telegram Bot library, " + from_name + ".\n";
      welcome += "This is Flash Led Bot example.\n\n";
      welcome += "/ledon : to switch the Led ON\n";
      welcome += "/ledoff : to switch the Led OFF\n";
      welcome += "/status : Returns current status of LED\n";
      bot.sendMessage(chat_id, welcome, "Markdown");
    }
  }
}


void setup() {
  Serial.begin(115200);

  // Set WiFi to station mode and disconnect from an AP if it was Previously
  // connected
  WiFi.mode(WIFI_STA);
  WiFi.disconnect();
  delay(100);

  // attempt to connect to Wifi network:
  Serial.print("Connecting Wifi: ");
  Serial.println(ssid);
  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());

  pinMode(ledPin, OUTPUT); // initialize digital ledPin as an output.
  delay(10);
  digitalWrite(ledPin, LOW); // initialize pin as off
}

void loop() {
  if (millis() > Bot_lasttime + Bot_mtbs)  {
    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);
    }

    Bot_lasttime = millis();
  }
}



good luck




No comments:

Post a Comment

cikal bakal SIMOR