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». Наприклад, можна активувати вимикач або запросити статус сигналізації.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.