Raspberry и Telegram: предпосылки создания умного дома



Один итальянский магазинчик нащупал новые способы использования Телеграма (и ранее WhatsApp'а), установив его на одноплатный миниатюрный компьютер Raspberry Pi. Как выясняется, мессенджер можно использовать для удалённого общения с собственной техникой. Ниже – перевод статей с сайта 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». Например, можно активировать выключатель или запросить статус сигнализации.

Источник

25.01.2018 в 00:08, Просмотров: 573

telegram, lua, умный дом,

ID: 29




Поиск




Облако тэгов

raspberry pi 3, raspbian, raspberry pi zero w, windows 10, osmc, python, windows, ubuntu, raspberry pi zero, установка ос, raspberry pi 2, ос, libreelec, dietpi, fedora, freebsd, risc, volumio, telegram, lua, медиацентр, фоновая подсветка, ambilight, livolo, siri

Форум

RSS-канал
Карта сайта
Обратная связь


Рейтинг@Mail.ru

Рубрики

  • Статьи
  • Модели
  • Мысли