pixel
Tutorial: schakelen van ESP8266 via Telegram Bot. 2

Tutorial: schakelen van ESP8266 via Telegram Bot.

0
(0)

In deze tutorial wordt beschreven hoe u ESP8266 met Telegram bot kunt gebruiken om sommige taken te automatiseren. Meer in detail, we willen een bot maken op basis van Telegram die een ESP8266 (wemos d1) gebruikt om randapparatuur zoals LED’s te bedienen.

Of om een extern apparaat aan of uit te schakelen dat sommige huishoudelijke taken automatiseert. We kunnen ESP8266 en Telegram Bot in twee verschillende stappen integreren:

Definieer een bot in Telegram
Bouw een ESP8266-schets die bot opdrachten afhandelt en externe randapparatuur bestuurt.

Waar kunt u dit project gebruiken? Er zijn verschillende manieren om ESP8266 en Telegram bot te gebruiken, bijvoorbeeld om sommige taken met eenvoudige opdrachten te automatiseren of om op afstand sommige apparaten te bedienen.
Domoticz is bijvoorbeeld een van de meest eenvoudige systemen waar je dit project kan worden toegepast. We kunnen dit project gebruiken om lichten in ons huis of sommige apparaten aan of uit te zetten, waardoor we de eerste stap zetten in de domotica omgeving.

Tijdens deze tutorial leert u:

  • ESP8266 met Telegram te verbinden
  • de Telegram-bot bibliotheek te gebruiken voor ESP8266
  • Telegram-bot opdrachten te implementeren om de ESP8266 te besturen
  • Een Telegram Bot te configureren
  • ESP8266 verbinden met de Telegram-bot
  • Telegram-bot berichten controleren
  • De Telegram-bot opdrachten implementeren om ESP8266 te besturen
  • Huisautomatisering met ESP8266 en Telegram bot


Advertentie :



Samenvatting


In deze eerste stap zullen we een Telegram-bot maken en configureren, zodat we deze kunnen gebruiken om opdrachten naar de ESP8266 te verzenden zodra ze zijn verbonden. U kunt de volgende link gebruiken om Telegram te gebruiken:

https://web.telegram.org

Laten we een chat beginnen met @BotFather:

Tutorial: schakelen van ESP8266 via Telegram Bot. 3

Nu kun je beginnen met het maken van een nieuwe bot met /newbot.

Onze Telegram-bot heeft de naam ESP_**** terwijl deze ****_bot als bijnaam heeft.
Nadat u de bot hebt gemaakt, krijgt u een API-token die we later zullen gebruiken wanneer we de ESP8266 verbinden met Telegram bot. Bewaar het API-token nu ergens.

ESP8266 verbinden met de Telegram-bot

Nu is het tijd om de ESP8266 aan te sluiten op de Telegram-bot.
Om dit te doen zullen we de ESP8266-Telegrambot-bibliotheek gebruiken.
U kunt het rechtstreeks vanuit de Arduino IDE importeren met Bibliotheek beheer.


Laten we eerst de functie maken om verbinding te maken met WiFi:

void connect2Wifi() {

  Serial.print("Connecting to "); 

  Serial.println(ssid);

  WiFi.mode(WIFI_STA);

  WiFi.begin(ssid, pwd);

  while (WiFi.status() != WL_CONNECTED) {

    Serial.print(".");

    delay(500);

  }

  Serial.println("\nWifi connected");

}

Waar je bij dit je eigen gegevens invult.

char ssid[] = "your_ssid";

char pwd[] = "Wifi password";

Nu is het tijd om de bibliotheek te initialiseren die ons helpt ESP8266 met Telegram te verbinden:

#include <ESP8266TelegramBOT.h>

#define BOT_TOKEN "Token_API"

TelegramBOT bot(BOT_TOKEN, "ESP_IoTBot", "ESP_IoTBot");

void setup() {

  Serial.begin(115200);

  connect2Wifi();

  bot.begin();

}

Vergeet niet om de Token_API te vervangen door het token dat u krijgt wanneer u uw bot in Telegram hebt gemaakt. Nu zijn we klaar om te controleren of er nieuwe berichten aanwezig zijn.
Telegram-bot berichten controleren

Om te controleren of er nieuwe berichten aanwezig zijn, is het noodzakelijk om te blijven pollen en te controleren of een nieuw bericht beschikbaar is:

uint32_t lastTime;

void checkMessages() {

   uint32_t now = millis();

   if (now - lastTime < 1000) {

      //Serial.println("Checking new messages....");   

      bot.getUpdates(bot.message[0][1]);

      int numNewMessages = bot.message[0][0].toInt() + 1;

       for (int i = 1;  i < numNewMessages; i++) {

        // Get the next message    

        String chatId = bot.message[i][4];

        String message = bot.message[i][5];

        handleMessage(message, chatId);

      }

   }

   lastTime = now;

}

De code gebruikt getUpdates om te controleren of er een nieuw bericht bestaat. Vervolgens beginnen we met het ophalen van deze berichten. In meer details krijgen we de echte berichtinhoud en de chatId. Ten slotte behandelt de code het bericht, we zullen later zien hoe het te doen.
De Telegram-bot opdrachten implementeren om ESP8266 te besturen

Hoe de Telegram-bot opdrachten te implementeren? We kunnen het doen in handle Message, waar we opdrachten afhandelen zoals het in- of uitschakelen van de LED’s. Laten we deze code toevoegen:

void handleMessage(String message, String chatId) {

  if (message.equalsIgnoreCase("/start")) 

    sendMessage(handleStartCommand(), chatId);

  else if (message.equalsIgnoreCase("/yel_on")) 

     digitalWrite(YELLOW_LED_PIN, HIGH);

  else if (message.equalsIgnoreCase("/yel_off")) 

     digitalWrite(YELLOW_LED_PIN, LOW);

  else if (message.equalsIgnoreCase("/blue_on")) 

     digitalWrite(BLUE_LED_PIN, HIGH);

  else if (message.equalsIgnoreCase("/blue_off")) 

     digitalWrite(BLUE_LED_PIN, LOW);

   bot.message[0][0] = ""; 

}

De bot verwerkt ook de opdracht /start. Met deze opdrachten retourneert de bot alle beschikbare opdrachten

String handleStartCommand() {

  String response = "Available commands:";

  response += "Yel_on Turns on the Yellow LED\n\r";

  response += "Yel_off Turns off the Blue LED\n\r";

  response += "Blue_on Turns on the Blue LED\n\r";

  response += "Blue_off Turns off the Blue LED\n\r";

  response += "Temperature Returns the current temperature\n";

  response += "Humidity Returns the current humidity\n";

  return response; 

}

Om een bericht terug te sturen naar de client, gebruikt de bot de chatId om de chat te identificeren waarnaar het bericht moet worden verzonden. De chatId is een parameter die we verkrijgen uit het inkomende bericht:

void sendMessage(String message, String chatId) {

  Serial.println("Sending message...");

  Serial.print(chatId);

  Serial.print("----");

  Serial.println(message);

  bot.sendMessage(chatId, message, "");

}

Het is tijd om de schets te maken met behulp van ESP8266.

Huisautomatisering met ESP8266 en Telegram bot



Zodra de code klaar is, kunnen we ESP8266 aansluiten op de componenten die onze randapparatuur in ons huis simuleert. We kunnen aannemen dat we sommige LED’s willen aansturen die zijn aangesloten op de ESP8266. Om het eenvoudig te houden, gebruiken we twee LED’s, maar u kunt ook andere componenten gebruiken en dit project uitbreiden met andere soorten randapparatuur.

De schets wordt hieronder getoond:

Tutorial: schakelen van ESP8266 via Telegram Bot. 4

De code wordt eenvoudig ingeschakeld of twee pinnen op ESP8266.


Samenvatting:



Aan het einde van deze tutorial hebben we ontdekt hoe we ESP8266 met Telegram kunnen integreren en hoe we commando’s naar ESP8266 kunnen sturen met behulp van een Telegram-bot. We hebben ontdekt hoe sommige taken met behulp van bots kunnen worden geautomatiseerd. U kunt dit project in huisautomatisering gebruiken om apparaten op afstand of thuisverlichting te bedienen.

include <ESP8266TelegramBOT.h>

#define BOT_TOKEN "Token_API"

TelegramBOT bot(BOT_TOKEN, "ESP_IoTBot", "ESP_IoTBot");

void setup() {

  Serial.begin(115200);

  connect2Wifi();

  bot.begin();

}
void connect2Wifi() {

  Serial.print("Connecting to "); 

  Serial.println(ssid);

  WiFi.mode(WIFI_STA);

  WiFi.begin(ssid, pwd);

  while (WiFi.status() != WL_CONNECTED) {

    Serial.print(".");

    delay(500);

  }

  Serial.println("\nWifi connected");

}
uint32_t lastTime;

void checkMessages() {

   uint32_t now = millis();

   if (now - lastTime < 1000) {

      //Serial.println("Checking new messages....");   

      bot.getUpdates(bot.message[0][1]);

      int numNewMessages = bot.message[0][0].toInt() + 1;

       for (int i = 1;  i < numNewMessages; i++) {

        // Get the next message    

        String chatId = bot.message[i][4];

        String message = bot.message[i][5];

        handleMessage(message, chatId);

      }

   }

   lastTime = now;

}
void sendMessage(String message, String chatId) {

  Serial.println("Sending message...");

  Serial.print(chatId);

  Serial.print("----");

  Serial.println(message);

  bot.sendMessage(chatId, message, "");

}
void handleMessage(String message, String chatId) {

  if (message.equalsIgnoreCase("/start")) 

    sendMessage(handleStartCommand(), chatId);

  else if (message.equalsIgnoreCase("/yel_on")) 

     digitalWrite(YELLOW_LED_PIN, HIGH);

  else if (message.equalsIgnoreCase("/yel_off")) 

     digitalWrite(YELLOW_LED_PIN, LOW);

  else if (message.equalsIgnoreCase("/blue_on")) 

     digitalWrite(BLUE_LED_PIN, HIGH);

  else if (message.equalsIgnoreCase("/blue_off")) 

     digitalWrite(BLUE_LED_PIN, LOW);

   bot.message[0][0] = ""; 

}
String handleStartCommand() {

  String response = "Available commands:";

  response += "Yel_on Turns on the Yellow LED\n\r";

  response += "Yel_off Turns off the Blue LED\n\r";

  response += "Blue_on Turns on the Blue LED\n\r";

  response += "Blue_off Turns off the Blue LED\n\r";

  response += "Temperature Returns the current temperature\n";

  response += "Humidity Returns the current humidity\n";

  return response; 

}

Wat vond je van deze post?

Klik op een ster om deze te beoordelen!

Gemiddelde score 0 / 5. Aantal stemmen: 0

Tot nu toe geen stemmen! Wees de eerste die dit bericht beoordeelt.

1 gedachte over “Tutorial: schakelen van ESP8266 via Telegram Bot.”

  1. blank

    Hoi Wobbe,

    Ik ben sinds kort bezig met ESP8266 programeren en zag jouw projectje met Telegram. Ik heb alle stukjes source code van het artikel hierboven samen gevoegd maar loop steeds tegen compiler errors aan, natuurlijk door mijn gebrek aan ervaring. Zou je mij de complete versie kunne sturen?

    Met vriendelijke groeten,

    Eric Simons

Laat een reactie achter

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

Winkelwagen