[Перевод] 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 Выполнение этой команды займёт некоторое время, после чего установка будет завершена.Шаг второй: автоматическая отправка сообщений
Чтобы автоматически отправить сообщение, создайте файл
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». Например, можно активировать выключатель или запросить статус сигнализации.