Telegram is a messaging app with a focus on speed and security, it’s super fast, simple and free. You can use Telegram on all your devices at the same time — your messages sync seamlessly across any of your phones, tablets or computers.
With Telegram, you can send messages, photos, videos and files of any type (doc, zip, mp3, etc), as well as create groups for up to 200 people. You can write to your phone contacts and find people by their usernames. As a result, Telegram is like SMS and email combined — and can take care of all your personal or business messaging needs.
In this post, we will show how to use Telegram to interact with your pcDuino. Telegram has the clients covering Android, iOS, and web. We can install Telegram on your iPhone by search for ‘telegram’ in Apple app store.
The source files of the linux Telegram client ‘telegram-cli’ are hosted at: https://github.com/vysheng/tg . We can install it on pcDuino by following the instructions on the Readme file.
A quick recap here:
1. First, we do ‘$sudo apt-get update’ to update the package source.
You may get a warning syaing that “W: conflicting distribution”. Ignore this.
2. Install ‘git’ by ‘$sudo apt-get install git’.
3. Clone github repo:
$git clone --recursive https://github.com/vysheng/tg.git && cd tg
4. Install build tool:
$sudo apt-get install libreadline-dev libconfig-dev libssl-dev lua5.2 liblua5.2-dev libevent-dev make
5. Then we build by:
$./configure $make
6. We create a file named ‘tg_pcduino.lua’ with the following content:
now = os.time()
chat = "pcDuinomessage" -- name of telegram's chat
safe_commands = {}
safe_commands["uptime"] = "uptime"
safe_commands["w"] = "w"
safe_commands["ps"] = "ps ax"
safe_commands["netstat"] = "netstat -na"
safe_commands["df"] = "df"
safe_commands["ss"] = "ss"
safe_commands["free"] = "free"
function on_msg_receive (msg)
if msg.out then
return
end
if msg.text then
-- mark_read(msg.from.print_name)
-- vardump(msg)
cmd = string.lower(trim(msg.text))
if cmd == "ping" then
send_msg (chat, 'pong', ok_cb, false)
elseif safe_commands[cmd] ~= nil then
send_msg (chat, exec(cmd), ok_cb, false)
end
end
end
function on_our_id (id)
end
function on_secret_chat_created (peer)
end
function on_user_update (user)
end
function on_chat_update (user)
end
function on_get_difference_end ()
end
function on_binlog_replay_end ()
end
function exec(cmd)
local output = ""
f = assert (io.popen (cmd))
for line in f:lines() do
output = output .. "\n" .. line
end -- for loop
f:close()
return output
end
function trim(s)
return (s:gsub("^%s*(.-)%s*$", "%1"))
end
function vardump(value, depth, key)
local linePrefix = ""
local spaces = ""
if key ~= nil then
linePrefix = "["..key.."] = "
end
if depth == nil then
depth = 0
else
depth = depth + 1
for i=1, depth do spaces = spaces .. " " end
end
if type(value) == 'table' then
mTable = getmetatable(value)
if mTable == nil then
print(spaces ..linePrefix.."(table) ")
else
print(spaces .."(metatable) ")
value = mTable
end
for tableKey, tableValue in pairs(value) do
vardump(tableValue, depth, tableKey)
end
elseif type(value) == 'function' or
type(value) == 'thread' or
type(value) == 'userdata' or
value == nil
then
print(spaces..tostring(value))
else
print(spaces..linePrefix.."("..type(value)..") "..tostring(value))
end
end
print(exec("uptime"))
tg_pcduino.lua should be saved into the directory named ‘/home/ubuntu/tg/bin’. Copy ‘server.pub’ from /home/ubuntu/tg to /home/ubuntu/tg/bin.
The file directory will look as below:
ubuntu@ubuntu:~/tg/bin$ ls generate server.pub telegram-cli tg_pcduino.lua tl-parser ubuntu@ubuntu:~/tg/bin$
Then we use the following command to start the process:
ubuntu@ubuntu:~/tg/bin$ sudo ./telegram-cli -k server.pub -W -D -P 7777 -d -s tg_pcduino.lua &
It will ask for phone number and then a code that SMSed to you.
Other process on the same pcDuino can send message out using:
$echo –e “msg pcDuinomessage hello” | nc localhost 7777

Leave a Reply
You must be logged in to post a comment.