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>
사용할 공유기의 ssid 와 password 를 입력합니다.
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 |