IOTHUB SOFTWARE · 05
텔레그램 봇 알림 실무 구성
텔레그램 봇은 IoT 장치의 경고를 휴대폰으로 보내는 가장 빠른 방법 중 하나입니다. 다만 토큰과 Chat ID를 제대로 관리하지 않으면 알림이 조용히 실패합니다.
IoT 장치가 사용자의 스마트폰으로 "문 열림", "CO2 농도 높음" 같은 알림을 보내려면 텔레그램 봇 구성이 필요합니다. 텔레그램은 일반 메신저처럼 사용할 수 있으면서, 자동으로 메시지를 주고받는 봇 계정을 비교적 쉽게 만들 수 있습니다. 기본 봇 생성과 메시지 전송은 별도 구축 비용 없이 시작할 수 있습니다.
1. 텔레그램 가입
- 스마트폰에서 앱스토어 또는 플레이스토어를 엽니다.
Telegram을 검색한 뒤 설치합니다.- 전화번호를 입력하고 인증번호 확인 후 이름을 설정합니다.
- 가입이 끝나면 일반 메신저처럼 사용할 수 있습니다.
왜 텔레그램을 사용하나요? 텔레그램은 BotFather를 통해 개인용 알림 봇을 빠르게 만들 수 있고, IoT 장치의 경고 메시지를 테스트하기 쉽습니다. 카카오톡 기반 봇은 정책과 준비 절차가 더 복잡할 수 있습니다.
2. 봇 만들기 (BotFather)
BotFather는 텔레그램 봇을 생성하고 토큰을 발급하는 공식 계정입니다.
- 텔레그램 앱에서 검색 아이콘을 누릅니다.
@BotFather를 검색하고 인증 마크가 있는 공식 계정을 선택합니다.- 대화창에
/newbot을 입력해 전송합니다. - 봇 이름을 요구하면 예시로
우리집 IoT 알림처럼 입력합니다. - 봇 사용자명을 요구하면 예시로
MyHomeIOTAlertBot처럼 입력합니다. 사용자명은 중복될 수 없고, 반드시bot으로 끝나야 합니다. - 생성이 완료되면 다음과 같은 토큰 안내 메시지가 표시됩니다.
Done! Congratulations on your new bot. Use this token to access the HTTP API: 1234567890:ABCdefGHIjklMNOpqrsTUVwxyz
이 긴 문자열이 봇 토큰입니다. 이 값을 복사해 server.py의 TELEGRAM_BOT_TOKEN에 넣습니다. 봇 토큰은 비밀번호와 같은 값이므로 외부에 공개하지 않습니다.
3. 내 Chat ID 확인
봇이 메시지를 보낼 대상을 지정하려면 사용자의 Chat ID가 필요합니다.
- 텔레그램에서
@userinfobot을 검색하고 대화를 시작합니다. /start를 입력합니다.- 다음과 같은 응답에서 ID 값을 확인합니다.
Id: 123456789이 숫자를 server.py의 YOUR_CHAT_ID에 넣습니다. Chat ID는 메시지 수신 대상을 지정하는 고유 식별자이므로 외부 노출에 주의해야 합니다.
4. 봇 테스트
- 텔레그램에서 방금 만든 봇을 사용자명으로 검색합니다. 예:
@MyHomeIOTAlertBot /start를 입력합니다.- 봇이 응답하면 기본 연결이 성공한 것입니다.
개념 정리
| 용어 | 의미 |
|---|---|
| BotFather | 텔레그램 봇을 생성하고 토큰을 발급하는 공식 계정입니다. |
| 봇 토큰 (Token) | 봇을 제어할 수 있는 비밀번호 성격의 문자열입니다. 123456:ABC... 형태이며 공개하면 안 됩니다. |
| Chat ID | 봇이 메시지를 보낼 대상 채팅방 또는 계정을 식별하는 번호입니다. |
안 될 때
| 증상 | 확인 방법 |
|---|---|
| BotFather를 찾을 수 없음 | @BotFather에서 @를 빠뜨리지 않았는지 확인하고, 인증 마크가 있는 공식 계정인지 확인합니다. |
| 사용자명이 등록되지 않음 | 이미 사용 중인 이름일 수 있습니다. _나 숫자를 추가해 바꾸고, 사용자명이 반드시 bot으로 끝나는지 확인합니다. |
봇이 /start에 응답하지 않음 | server.py가 실행 중인지 확인합니다. PC 또는 서버에서 python server.py 실행 상태를 확인합니다. |
| Chat ID 확인이 되지 않음 | @userinfobot을 정확히 입력했는지 확인합니다. 유사 계정이 있을 수 있으므로 계정명을 주의해서 봅니다. |
알림 정책을 먼저 정한다
텔레그램 봇을 만들면 모든 이벤트를 휴대폰으로 보내고 싶어집니다. 하지만 실제 운영에서는 알림이 너무 많으면 중요한 경고를 놓칩니다. 장치가 재부팅될 때마다, Wi-Fi가 잠깐 끊길 때마다, 센서값이 조금 변할 때마다 메시지를 보내면 사용자는 결국 알림을 무시하게 됩니다.
좋은 알림은 적고 명확해야 합니다. 예를 들어 “현관문 열림”, “장비실 온도 30도 초과”, “센서 30분 이상 미응답”처럼 행동이 필요한 메시지만 즉시 보내고, 단순 상태 변화는 하루 요약이나 서버 로그로 남기는 편이 낫습니다.
테스트 메시지 형식
처음 만든 봇은 실제 경고를 붙이기 전에 테스트 메시지부터 보냅니다. 메시지에는 장치명, 시간, 이벤트, 현재값, 필요한 행동이 들어가야 합니다. “오류 발생”처럼 막연한 문장은 현장에서 도움이 되지 않습니다.
예: [장비실 온습도] 2026-07-27 13:20, 온도 31.2도, 기준 30도 초과, 에어컨/환기 상태 확인 필요.
알림은 많을수록 좋은 것이 아니다
처음에는 모든 센서 이벤트를 텔레그램으로 보내고 싶어집니다. 하지만 문 열림, 온도 변화, Wi-Fi 재접속을 전부 보내면 중요한 경고를 놓칩니다. 실무에서는 알림 등급을 나눠야 합니다. 즉시 봐야 하는 경고, 하루에 한 번 보면 되는 요약, 로그로만 남길 정보를 구분합니다.
봇 토큰은 비밀번호처럼 다룬다
BotFather가 주는 토큰은 봇을 제어할 수 있는 비밀번호입니다. HTML이나 공개 저장소에 넣으면 안 됩니다. 서버에서는 환경변수나 비공개 설정 파일에 저장하고, 코드에는 직접 쓰지 않는 편이 안전합니다.
메시지가 안 올 때 확인 순서
- 봇 토큰이 맞는지 확인합니다.
- Chat ID가 개인 채팅인지 그룹인지 확인합니다.
- 사용자가 봇에게 먼저 /start를 보냈는지 확인합니다.
- 서버에서 텔레그램 API 호출 응답 코드를 확인합니다.
- 너무 많은 메시지를 보내 rate limit에 걸리지 않았는지 확인합니다.