본문 바로가기
  • 재미있는 펌웨어와 코딩
ESP32/펌웨어

ESP32 텔레그램으로 메시지 보내기

by 윤재윤호 2023. 10. 16.

ESP32에서 텔레그램으로 메시지를 보내 보겠습니다.

우리는 여러종류의 SNS를 사용합니다. 카카오톡, 텔레그램, 페이스북, LINE 등등...

그 중에 카카오톡을 사용하려고 했지만 사용 방법이 너무 까다롭고 자신에게 보내는

메시지에 알림음이 울리지 않습니다. 그래서 쉽게 접근할 수 있는 텔레그램을 선택

했습니다.

 

텔레그램을 사용하는 순서는 다음과 같습니다.

 

1. 챗봇을 생성한다.

https://jooduino.tistory.com/21

 

텔레그램 챗봇 만들기

ESP32에서 텔레그램으로 메시지를 전달하기 위해서는 챗봇을 생성 해야만 합니다. 휴대폰에 텔레그램을 설치 합니다. (설치 방법은 생략 합니다.) 텔레그램의 첫 화면에서 오른쪽위에 있는 검색

jooduino.tistory.com

 

2. 텔레그램 ID를 얻는다.

https://jooduino.tistory.com/22

 

텔레그램 ID 얻기

ESP32에서 텔레그램으로 메시지를 보내려면 Chat ID 가 필요합니다. Chat ID 를 얻는 방법은 여러가지가 있습니다. 그 중에 간단한 방법을 소개 합니다. 검색창에 IDBot 이라고 검색합니다. 만약, IDBot이

jooduino.tistory.com

 

3. 텔레그램 라이브러리 설치

라이브러리 추가 방법

https://jooduino.tistory.com/4

 

아두이노 라이브러리 추가 방법

아두이노 IDE에 라이브러리 등록 방법 입니다. 라이브러리 등록 방법은 두 가지 입니다. 1. 라이브러리 매니저를 이용하는 방법. 2. 다운로드 받은 zip 파일 추가. 라이브러리 매니저를 이용하는 방

jooduino.tistory.com

 

 

4. 소스코드

#include <WiFi.h>
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h>

const char* ssid = "YOUR_SSID";
const char* password = "YOUR_PASSWORD";

#define BOT_TOKEN "XXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
#define CHAT_ID "XXXXXXXXXX"

WiFiClientSecure secured_client;
UniversalTelegramBot bot(BOT_TOKEN, secured_client);

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

  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  
  // 와이파이가 연결될 때까지 기다린다.
  if (WiFi.waitForConnectResult() != WL_CONNECTED) {
    Serial.printf("WiFi Failed!\n");
    return;
  }

  Serial.print("IP Address: ");
  Serial.println(WiFi.localIP());

  // api.telegram.org 에 대한 루트 인증서 추가
  secured_client.setCACert(TELEGRAM_CERTIFICATE_ROOT);
}

void loop() {
  if( Serial.available() ) {
    String msg = Serial.readStringUntil( '\n' );
    msg.trim(); // 앞뒤에 공백(개행,탭등..) 문자 제거
    Serial.println(msg);
    bot.sendMessage(CHAT_ID, msg, "");
  }
}

 

5. 실행하기

소스를 업로드 후 시리얼창에서 문자열을 입력하면 텔레그램으로 메시지가 오는것을 확인 할 수 있습니다.

 

 

소스코드 설명

 

예전에 비해서 텔레그램도 보안이 강화 되었습니다.

그래서 아래와 같이 WiFiClientSecure.h 를 추가 하여야 합니다.

#include <WiFi.h>
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h>

 

사용할 공유기의 ssidpassword 를 입력합니다.

const char* ssid = "mijin";
const char* password = "aby04244";

 

1번에서 얻은 Token과 2번에서 얻은 ID를 입력합니다.

#define BOT_TOKEN "XXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
#define CHAT_ID "XXXXXXXXXX"

 

텔레그램을 생성합니다.

WiFiClientSecure secured_client;
UniversalTelegramBot bot(BOT_TOKEN, secured_client);

 

api.telegram.org 에 대한 루트 인증서를 추가 합니다.

이 부분이 없으면 아무런 동작도 하지 않습니다.

// api.telegram.org 에 대한 루트 인증서 추가
secured_client.setCACert(TELEGRAM_CERTIFICATE_ROOT);

 

시리얼창에서 입력받은 문자열을 텔레그램으로 보냅니다.

void loop() {
  if( Serial.available() )
  {
    String msg = Serial.readStringUntil( '\n' );
    msg.trim(); // 앞뒤에 공백(개행,탭등..) 문자 제거
    Serial.println(msg);
    bot.sendMessage(CHAT_ID, msg, "");
  }
}

 

스위치나 센서를 입력 받아서 텔레그램으로 전달 하는것도 어렵지 않습니다.

다음 강좌에서는 텔레그램에서 ESP32의 LED를 제어 해보겠습니다.

 

'ESP32 > 펌웨어' 카테고리의 다른 글

ESP32-CAM 텔레그램에 이미지 전송  (0) 2023.10.22
ESP32 텔레그램 수신  (0) 2023.10.18
아두이노 JSON 사용하기  (0) 2023.10.09
ESP32 공유기 없이 통신 (1:1, 1:N) ESP-NOW  (0) 2023.10.08
ESP32 Captive Portal 사용하기  (0) 2023.10.06