Telegram: Cài đặt

Telegram là một ứng dụng gởi tin nhắn chú trọng vào tốc độbảo mật. Nhanh, đơn giản và miễn phí. Telegram gởi tin nhắn, hình ảnh, video và file mọi định dạng (doc, zip, mp3, etc).

Với Telegram được cài đặt trên RPi như một robot, chúng ta có thể điều khiển từ xa RPi hay ngôi nhà thông minh, tạo ra một hệ thống trả lời tự động… thông qua Telegram được cài đặt trên thiết bị khác. Ưu điểm lớn nhất là nhanh và miễn phí.

Sau đây là đoạn mã tự động cài đặt Telegram trên RPi

#!/bin/bash
sudo apt-get update -y
sudo apt-get install -y libreadline-dev libconfig-dev libssl-dev lua5.2 liblua5.2-dev libevent-dev libjansson-dev
cd ~
if [ $(dpkg --get-selections | grep -c git) -gt 0 ]; then
     sudo apt-get install git
fi
git clone --recursive https://github.com/vysheng/tg.git
cd tg
./configure
make
sudo cp -f ~/tg/bin/telegram-cli /usr/bin
sudo mkdir -p /etc/telegram-cli
sudo mv ~/tg/tg-server.pub /etc/telegram-cli/server.pub
telegram-cli -W
Đoạn mã trên tải file nguồn Telegram về thư mục home và biên dịch, vì vậy sẽ tốn thời gian khá lâu nhưng bảo đảm tương thích với CPU ARM của RPi.
Dòng lệnh cuối cùng chạy telegram-cli (giao diện dòng lệnh của Telegram) lần đầu tiên, sẽ có câu hỏi về số điện thoại dùng cho thiết bị. Ghi vào số điện thoại di động đang dùng (dạng +849xxxxxxxx) để Telegram gởi mã xác nhận. Trên điện thoại di động hay laptop/desktop phải cài app Telegram (iOs, Android, Mac, Windows) dùng chung số điện thoại trên. Nhiều thiết bị dùng Telegram có thể khai báo cùng một số điện thoại, tất cả sẽ được đồng bộ nội dung tin nhắn, file… Cuối cùng là chọn nickname.

Sau đó là 2 thiết bị có thể chat với nhau (điện thoại và RPi).

Chạy telegram-cli dưới dạng daemon

Có một số script gợi ý về cách chạy telegram dưới dạng daemon, nhưng phần lớn là phức tạp và không hiệu quả.

Phiên bản đơn giản, chạy background: /etc/init.d/telegram-daemon [start|stop|restart|status]

#! /bin/sh
### BEGIN INIT INFO
# Provides:          telegram-daemon
# Required-Start:
# Required-Stop:
# Default-Start:     S 2 3 4 5
# Default-Stop:      0 6
# Short-Description: telegram daemon
# Description:       telegram daemon
### END INIT INFO
# Author: fizzzel

# actions
case "$1" in
    start)
        echo "Telegram daemon is starting..."
        echo 'mật khẩu của pi' | su pi -c 'telegram-cli -vvvvRC -W -s action.lua -dL tg.log -P 1234 &'
        echo "...done"
        ;;
    stop)
        echo "stopping telegram daemon..."
        sudo pkill telegram-cli
        echo "..done"
        ;;
    restart)
        echo "stopping telegram daemon..."
        sudo pkill telegram-cli
        echo "..done -- restarting..."
        echo 'mật khẩu của pi' | su pi -c 'telegram-cli -vvvvRC -W -s action.lua -dL tg.log -P 1234 &'
        echo "...done"
        ;;
esac
Phiên bản phức tạp hơn: /etc/init.d/telegram-daemon [start|stop|restart|status]
#! /bin/sh
### BEGIN INIT INFO
# Provides:          telegram-cli
# Required-Start:    $network $remote_fs $syslog
# Required-Stop:     $network $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Commandline interface for Telegram chat program
# Description:       Telegram-cli is a (unofficial) cli version of Telegram to chat from your console.
#                    This is an init script do make it a daemon.
#                    When used as daemon in conjuction  with LUA (scripting) you can use it to send your system
#                    commands to execute via other Telegram apps (PC - Phone - Web or other) while not
#                    logged in to the system.
#
#                    Note #1: This version of the init script is developed for raspbian (rapberry PI port of Debian Wheezy).
#
#                    See: https://github.com/vysheng/tg for more information.
#                    Derived from https://github.com/vysheng/tg/issues/436 (updated 9th April 2015)
#                    Further derived from: https://www.domoticz.com/wiki/Installing_Telegram_Notification_System#.2Fetc.2Finit.d.2Ftelegram-cli
### END INIT INFO
#
# Set some variables
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
DESC="Telegram Messaging System"
NAME=telegram-cli
USERNAME=telegramd
GROUPNAME=telegramd
LOGFILE=/var/log/telegramd.log
DAEMON=/usr/bin/telegram-cli
SCRIPT=/etc/telegram-cli/action.lua

DAEMON_ARGS="-W -b -U $USERNAME -G $GROUPNAME -L $LOGFILE -P $TGPORT -s $SCRIPT -d -vvvRC"

PIDFILE=/var/run/$NAME.pid
THISNAME="$0"

# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME

# Carry out specific functions when asked to by the system
case "$1" in
    start)
        echo -n "Starting $DESC ... "
        sudo start-stop-daemon --start --background --make-pidfile $PIDFILE --pidfile $PIDFILE \
            --exec $DAEMON -- $DAEMON_ARGS || true
        echo "Done."
        ;;
    stop)
        echo -n "Stopping $DESC ... "
        sudo start-stop-daemon --stop --retry 2 --pidfile $PIDFILE \
            --exec $DAEMON || true
        sudo rm -f $PIDFILE
        echo "Done."
        ;;    
    restart)
        echo -n "Restarting $DESC "
        sudo start-stop-daemon --stop --retry 2 --pidfile $PIDFILE \
            --exec $DAEMON || true
        sudo rm -f $PIDFILE
        sudo start-stop-daemon --start --background --make-pidfile $PIDFILE --pidfile $PIDFILE \
            --exec $DAEMON -- $DAEMON_ARGS || true
        echo "Done."
        ;;
    status)
        if [ -f $PIDFILE ]; then
                PID=`cat $PIDFILE`
        else
                echo "No pid file, telegramd not running?"
                exit 1
        fi
        if [ "`ps -p $PID -o comm=`" = "$NAME" ]; then
                echo "telegramd running with pid $PID"
        else
                echo "telegramd not running. removing $PIDFILE"
                sudo rm -f $PIDFILE
                exit 1
        fi
        ;;
    *)
        echo "Usage: $THISNAME {start|stop|restart|status}"
        exit 1
        ;;
esac
Chú thích:
1. Có thể tạo Bot (Telegram Robot) trên RPi, thí dụ với mục đích điều khiển RPi:
  • Điện thoại nhắn tin cho RPi: Thôi tắt máy đi
  • Bot nhận được tin nhắn, phân tích nội dung, gặp từ khóa biết trước thì Bot sẽ thi hành lệnh tương ứng shutdown now
2. telegram-cli chỉ có thể được gọi chạy sau khi quá trình khởi động hoàn tất
@reboot sleep 30 && telegram-daemon start
3. Phiên bản hiện lại có thể có lỗi, khi chạy lệnh telegram-cli lần đầu tiên chúng ta không được hỏi số điện thoại và không dùng Telegram được, khi đó chạy thêm các dòng lệnh sau
sed -i -r '101s|^(.*)$|//\1|' ~/tg/tgl/mtproto-utils.c
sed -i -r '115s|^(.*)$|//\1|' ~/tg/tgl/mtproto-utils.c
cd ~/tg
make
sudo cp -f ~/tg/bin/telegram-cli /usr/bin
telegram-cli -W

 

Leave a Comment

Filed under Software

Leave a Reply