?>

Hard Copy World

HCW

Raspberry Pi

Home > Learning >

Raspberry Pi

라즈베리 파이를 메시지 서버로! (Telegram CLI)

페이지 정보

작성자 하드카피 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일15-04-10 17:05 조회19,100회 댓글7건

본문

 

라즈베리 파이에서 특별한 이벤트가 발생할 때 마다 내 폰으로 알려준다면?

왠지 유용해 보이고 가슴설레는 시나리오가 아닐 수 없습니다. 그리고 텔레그램을 이용하면 가능한 시나리오 이기도 합니다. 텔레그램이 Web, PC, Android, iOS 등 다양한 환경에서 사용할 수 있도록 지원하는 것은 잘 알려진 사실입니다. 그런데 이 지원 목록에 Telegram CLI도 있습니다. (아직 비공식 상태이긴 하지만)

텔레그램 CLI를 이용하면 리눅스 환경에서 메시지, 파일을 전송하고 수신한 메시지를 체크하는 등의 작업을 자동화 할 수 있습니다. 집에 설치해 둔 라즈베리 파이에 텔레그램 CLI 를 올리면 폰과 연동되는 강력한 메시지 서버를 갖게되는 겁니다!

 

 

설치 과정

 

콘솔 창을 열어 홈 위치로

  • cd ~

업데이트 먼저 체크하고

  • sudo apt-get update
  • sudo apt-get upgrade

컴파일 및 구동에 필요한 패키지를 설치합니다.

  • sudo apt-get install libreadline-dev libconfig-dev libssl-dev lua5.2 liblua5.2-dev libevent-dev make git-core
  • Ubuntu/Debian 을 사용하는 경우 아래 커맨드를 실행하세요.
  • sudo apt-get install libreadline-dev libconfig-dev libssl-dev lua5.2 liblua5.2-dev libevent-dev libjansson-dev libpython-dev python-DEV make

 

소스 다운로드 및 빌드

  • git clone --recursive https://github.com/vysheng/tg.git
  • cd tg
  • ./configure
  • make

시간이 좀 걸립니다. 커피 한 잔 하세요.

주의!!! configure 과정에서 python dev 패키지를 찾을 수 없다고 나오는 경우는 $ sudo apt-get install python-DEV 실행하세요. libjansson-dev 패키지 찾을 수 없다고 나오면 $ sudo apt-get install libjansson-dev 실행하세요.

 

 

 

테스트

 

텔레그램 CLI 를 실행합니다. (1.2.0 기준)

  • bin/telegram-cli -k tg-server.pub -W
  • >

위와 같이 커서가 뜨면 먼저 자신의 폰 번호(국가코드포함)를 설정해서 폰 인증을 받아야 합니다.

  • > +8210xxxxxxxx

입력하고 한참 대기해보시면 아래와 같이 폰 넘버 입력하라고 뜰겁니다. 그럼 폰 넘버 입력하시고 폰에서 받은 코드를 넣어주면 됩니다.

  • phone number: +82xxxxxxxxxx
  • code ('call' for phone call): xxxxx
  • >

현재 열려있는 대화창을 보는 명령어를 입력해서 테스트 해보세요.

  • > dialog_list

 

메시지를 보낼 때는 이름을 이용해서 보냅니다. (이름과 성 사이의 공백을 '_'로 대체) 본인한테 메시지를 보내보세요.

  • > msg Yxxxx_Sxx test message

그럼 폰에 설치된 텔레그램에 test_message 라고 뜰겁니다.

주의!! 처음 텔레그램을 설정하고 메시지를 보내보면 메시지 전송이 안되는 현상이 생기곤 했습니다. 그런데 한참 후에 다시 접속해서 메시지를 보내보면 정상적으로 전송이 되었습니다. 왜 인지는 모르겠지만 처음 셋업 후에는 메시지 전송에 시간이 걸리는 듯 합니다.

 

폰에 새로 생성된 대화창이 보일겁니다. 이 대화창을 통해 라즈베리 파이와 폰이 서로 메시지를 주고 받을 수 있습니다. 라즈베리 파이가 좀 똑똑해지도록 프로그래밍 해두면 많은 일들이 가능하겠지요.

좀 더 나아가서, 단체 챗 방을 만들어 여기에 메시지가 가도록 해보겠습니다.

먼저 챗 방을 만듭니다. 반드시 2 명 이상의 유저가 포함되어야 생성됩니다. 챗 방 이름은 Pi2 입니다.

  • create_group_chat Pi2 Name1_Fname1 Name2_Fname2

챗 방이 정상적으로 만들어지면 여기로 메시지를 보냅니다.

  • msg Pi2 hello~

 

메시지 전송 테스트가 끝나면 쉘로 빠져 나옵니다.

  • quit

 

이번 과정에서 폰 인증을 받았기 때문에 tg 폴더에 tg-server.pub 파일이 생성되어 있을겁니다. 다음부터는 이 파일을 이용해서 접속하면 됩니다. (굳이 아래처럼 안하고 앞선 방법으로 해도 똑같이 되는듯...)

  • bin/telegram-cli -k tg-server.pub -W

 

 

메시지 전송 자동화를 위한 스크립트 만들기

 

메시지 수신, 전송을 자동화 하기 위해서 Lua 스크립트와 파이썬 스크립트를 사용할 수 있습니다. 라즈베리 파이에 파이썬은 이미 설치되어 있을겁니다. 그러니 Lua 만 설치.

  • $ sudo apt-get install lua5.2
  • $ sudo apt-get install lua-lgi gir1.2-pango-1.0

 

텔레그램이 설치된 tg 폴더에 보시면 test.lua 라는 스크립트 파일이 있습니다. 가장 기본적인 텔레그램 스크립트 사용방법이 여기에 들어 있습니다. 그러므로 이 파일을 적당히 수정해줍니다. 그리고 아래 명령으로 텔레그램을 실행해보세요.

  • bin/telegram-cli -k tg-server.pub -W -s test.lua

그럼 텔레그램 쉘(>) 대신에 test.lua 스크립트가 실행됩니다. 원하는 작업 내용을 스크립트로 만들어두고 백그라운드로 돌려두면 텔레그램 메시지를 제어할 수 있습니다.

주의!!! 여기서 test.lua 스크립트가 제대로 실행되지 않고 에러를 발생하는 경우가 있습니다. 이럴때는 아래 패키지를 인스톨하고 다시 실행해 보세요.

  • sudo apt-get install lua-lgi libnotify-dev

 

텔레그램 CLI 기능을 자주 활용하고 싶으시다면 데몬 실행 및 서비스 등록을 하는 것이 좋습니다. 아래 링크에 방법이 자세하게 소개되어 있습니다.

텔레그램 CLI 데몬 실행 및 서비스 등록하기

 

더 상세한 내용은 아래 링크 참고하세요.

텔레그램으로 서버 모니터링하기

텔레그램 봇 만들기

 

참고자료

 

 


하드카피 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물

모든 전통이 한 때는 오해를 면치 못했다. 마찬가지로 모든 아이디어는 한 때는 비웃음을 면치 못했다. -홀브룩 잭슨 ::::: 느닷없이 떠오르는 생각이 가장 귀중한 것이며, 보관해야할 가치가 있는 것이다. -베이컨 ::::: 미리 숙고하면 힘든 일도 그저 실행에 옮기는 순간 쉬워진다. - 로버트 M. 피어식

추천 0
  • 페이스북으로 보내기
  • 트위터로 보내기
  • 구글플러스로 보내기

댓글목록

atom님의 댓글

atom 이름으로 검색 작성일

좋은 포스트 감사합니다.
질문이 있어서 여쭐게요~ 텔레그램에 푸시 알림이 안오는 이유는 무엇인지 혹시 아시나요?
메시지 송수신은 잘되는데 폰으로 push 가 안오네요 ㅠ(Nexus 5입니다.)

하드카피님의 댓글

하드카피 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 댓글의 댓글 작성일

왠지는 모르겠는데 저도 그런 현상이 있었습니다. 시간이 좀 지나고 이거저것 해보니 다시 되더라구요

asdf님의 댓글

asdf 이름으로 검색 작성일

No supported python lib version found. Try --disable-python
No libjansson found. Try --disable-json
등의 오류가 뜨는데 추가적인 라이브러리 설치가 필요한가요?

asdf님의 댓글

asdf 이름으로 검색 작성일

sudo apt-get install libjansson-dev libpython-dev make
을 추가적으로 하고 나니 되는군요
(libpython-dev는 패키지를 찾을 수 없다고 떴지만...)

최고관리자님의 댓글

최고관리자 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 작성일

위 내용을 보다 전문적으로 활용하는 방법에 대한 내용이 있어 소개합니다.
http://www.hardcopyworld.com/gnuboard5/bbs/board.php?bo_table=lecture_tip&wr_id=107

apple님의 댓글

apple 이름으로 검색 작성일

can not parse arg #2라는 오류가 뜨면서 되지 않는데 이건 어떤오류이고 해결방법은 무엇인가요?