Raspberry и Telegram: предпосылки создания умного дома
Один итальянский магазинчик нащупал новые способы использования Телеграма (и ранее WhatsApp'а), установив его на одноплатный миниатюрный компьютер Raspberry Pi. Как выясняется, мессенджер можно использовать для удалённого общения с собственной техникой. Ниже – перевод статей (1, 2) с сайта Instructables.com. Если есть уточнения по переводу, напишите об этом в комментариях.
I. Telegram на Raspberry Pi
Шаг первый: инсталляция
Понадобится: Raspberry Pi B or B+, с последней версией Raspbian, или карта MIcroSD на 8Гб класса 10 с той же предустановленной Raspbian.
Сначала обновите пакеты программ:
sudo apt-get update
sudo apt-get upgrade
Установите библиотеки: readline или libedit, openssl и (если вы хотите использовать конфигурацию) libconfig и liblua. Если вам удобнее без них, проставьте --disable-libconfig и --disable-liblua соответственно.
sudo apt-get install libreadline-dev libconfig-dev libssl-dev lua5.2 liblua5.2-dev libevent-dev make
Клонируйте архив GitHub
git clone --recursive https://github.com/vysheng/tg.git && cd tg
./configure
make
Выполнение этой команды займёт некоторое время, после чего установка будет завершена.
Upd: запустите мессенджер и настройте аккаунт, введя номер телефона и(ли) ник. См.
Шаг второй: автоматическая отправка сообщений
Чтобы автоматически отправить сообщение, создайте файл
sudo nano /home/pi/tg.sh
с таким содержимым:
#!/bin/bash
to=$1
msg=$2
tgpath=/home/pi/tg
cd ${tgpath}
(echo "msg $to $msg"; echo "safe_quit") | ${tgpath}/bin/telegram-cli -k tg-server.pub -W
Сохраните и закройте его, дав разрешение на действия:
sudo chmod -R 0655 /home/pi/tg.sh
Протестируйте его с помощью
/home/pi/tg.sh Name_lastname "your message"
Чтобы отправить фото, создайте файл
sudo nano /home/pi/tg_photo.sh
и впишите в него
#!/bin/bash
to=$1
msg=$2
tgpath=/home/pi/tg
cd ${tgpath}
(echo "send_photo $to $msg"; echo "safe_quit") | ${tgpath}/bin/telegram-cli -k tg-server.pub -W
Сохраните и закройте его, дав разрешения:
sudo chmod -R 0655 /home/pi/tg_photo.sh
и протестируйте с помощью
/home/pi/tg_photo.sh Name_Lastname /folder/photo.png
II. Дистанционное управление Raspberry Pi через Telegram
Телеграм – весьма разносторонний мессенджер для отправки мгновенных сообщений, в котором можно работать, используя один телефонный номер, одновременно на нескольких устройствах.
В предыдущем обзоре мы увидели, как его установить, как отправлять текст и медиафайлы. Мы также убедились, что в Raspberry можно настроить автоматическую отправку сообщений через Telegram.
На этот раз мы попросим Raspberry выполнить конкретное действие как функцию полученного сообщения: например, мы могли бы послать слово «photo», чтобы Raspberry прислал нам фотографию дома, или «lamp», чтобы он повернул лампу, или «open», чтобы открыть дверь гаража. Начнём.
Шаг первый: инсталляция
Начинаем на основе описанных выше действий. Чтобы перехватить новое входящее сообщение, мы создаём файл action.lua (я опускаю описание языка Lua со ссылкой на официальный сайт, так как хабраюзеры с ним, очевидно, знакомы. — Прим. пер.):
sudo nano /home/pi/tg/action.lua
со следующим содержимым:
function on_msg_receive (msg)
if msg.out then
return
end
if (msg.text=='ping') then
send_msg (msg.from.print_name, 'pong', ok_cb, false)
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
Сохраните и закройте файл. Теперь, когда входящее сообщение – «ping», Телеграм отвечает сообщением «pong».
Перейдите в tg
cd /home/pi/tg
и напишите:
bin/telegram-cli -k tg-server.pub -W -s action.lua
Попробуйте отправить сообщение. Если всё верно, Телеграм отвечает только на «ping» (не на «PING»), и мы должны увидеть что-то вроде этого:
Окей, давайте попробуем что-то более занятное.
Установите камеру Raspberry (см. этот туториал) и создайте новую папку, куда по умолчанию будут сохраняться фотографии с этой камеры.
sudo mkdir /home/pi/camera
Создайте новый файл «camera.ch»
sudo nano /home/pi/camera/camera.sh
вот с этой начинкой
#!/bin/bash
raspistill -w 800 -h 600 -o /home/pi/camera/photo.jpg
Сохраните и закройте его, дав разрешение на действия
sudo chmod -R 0655 /home/pi/camera/camera.sh
Отредактируйте «action.lua»
sudo nano /home/pi/tg/action.lua
и добавьте эти строки в функцию on_msg_receive:
if (msg.text=='photo') then
os.execute('/home/pi/camera/camera.sh')
send_photo (msg.from.print_name, '/home/pi/camera/photo.jpg', ok_cb, false)
end
Шаг второй: тест
bin/telegram-cli -k tg-server.pub -W -s action.lua
Теперь, если вы пошлёте сообщением слово «photo», Raspberry ответит фотографией.
Чтобы задать дополнительные команды, просто измените файл «action.lua», добавив новый блок «if». Например, можно активировать выключатель или запросить статус сигнализации.
http://habrahabr.ru/post/249265/
|