Как стать автором
Обновить

Комментарии 62

Похоже, что любое использование Телеграма сводится к консольному клиенту, а здесь он еще и старой версии.
Расходится от него, я бы сказала.
А откуда берутся идентификаторы для девайсов? Я думал там обязательно реальный телефон использовать
Может, дело в том, что теперь достаточно задать никнейм?
Хм, а почему именно Телеграмм? А не XMPP какой-нибудь?
Прост))) Подозреваю, что из-за secret chat, в котором данные шифруются.
Так XMPP уже много лет умеет шифроваться:-)
Если смотреть с практической точки зрения, то, на сколько мне известно, Telegram потребляет гораздо меньше трафика в отличие от XMPP. Binary vs XML. Посмотрите на протокол MTProto.
Не уверен, что сейчас очень актуальна проблема трафика, тем более, что XMPP неплохо жмет трафик zlib'ом. Я еще в бородатые годы на кнопочном телефоне с поддержкой только EDGE вполне неплохо им пользовался и не замечал проблем с большим объемом гоняемого трафика.
Но при этом, если я ничего не путаю, телеграм работает через свои сервера, а для жабера можно поднять свой собственный, и сделать всю инфраструктуру автономной, зависящей только от устойчивого коннекта с интернетом.
Потому что в телеграме сообщение или картинка гарантированно отсылаются (будь то кривой 3G или глючный Wifi).
На сколько безопасно "«open», чтобы открыть дверь гаража"?
Можно прикрутить парольчик и слать «open myverystrongpassword hashed with sha256 in base64» :)
Довольно интересное и не сложное решение. Первое что пришло в голову кормление домашнего животного :) если уезжаешь на пару дней, поставить так камеру что бы она смотрела на миску кота. Получаешь фотографии миски, и когда нужно отсылаешь команду FeedTheСat, порция корма насыпается в миску :)
Смотришь на фото — а у тебя там вся кухня раскурочена, кресла обивкой наружу, тапки в моче утонули, соседа заливает! И посылаешь команду KillTheCat…
главное случайно не перепутать команды :)
действительно, а то в этом сценарии можно второй раз кота покормить ненароком
Вовремя опубликовали, я вот думал, как бы запилить автозапуск на машину с помощью Pi… Надо попробовать.
Давно интересно, сколько аккумулятор на машине проживёт с включенным Pi?
И какой температурный диапазон у Pi?
От 0°C до 70°C :(
Согласен, дурная идея.
Было бы здорово, если телеграм сделает связку с IFTTT. Тогда по какому-то триггеру приходило бы сообщение вам в телеграм.
Можно сделать связку tasker+whatsapp который будет делать то же самое. У меня умный дом сердцем которого выступает нексус7, шлет по whatsapp информацию о событиях, и может выполнять команды полученные по whatsapp
а у whatsapp есть API?
Поддерживаю вопрос!
Есть неофициальный API. Я как-то им пользовался со связкой на Google Voice, потом аккаунт Whatsapp закрыли. Активировал ещё раз.
github.com/tgalal/yowsup
не знаю, я не настоящий сварщик. У меня работает через плагин WhatsTasker. Чтобы умный дом отсылал через вотсапп фотку с камеры при срабатывании датчика движения, у меня сделать не получилось, но початиться с умным домом можно :)
Телеграм ужасен. Вместо простого json over http (как например в шлак) надо собрать какие то бинарники и потом еще писать на shell/lua.
Мне кажется json over http как то не вяжется с концепцией безопасной передачи данных
И чем же вам ssl/tls не безопасен?
Решил попробовать (как раз есть «подопытная» малина). Линукс только-только осваиваю… «затык» сразу же на первом шаге (при попытке ./configure)
pi@raspberrypi ~/tg $ ./configure
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for sqrt in -lm... yes
checking for library containing clock_gettime... -lrt
checking for library containing backtrace... none required
checking for event_base_new in -levent... no
configure: error: no libevent found

Подскажите, как починить?
sudo apt-get install libreadline-dev libconfig-dev libssl-dev lua5.2 liblua5.2-dev libevent-dev make
Оказалось проще: нужно было начинать читать с начала, где написано, что нужна самая актуальная версия Raspbian.

А вот чтобы «взлетело», пришлось немного пошаманить:

1. Сразу после первого «make» нужно запустить

bin/telegram-cli -k tg-server.pub -W

И «зарегистрировать» свой «телефон» (ввести номер телефона, от «имени которого» будут осуществляться отправки сообщений). На этот номер телефона придет код подтверждения (в смс-сообщении), который нужно будет ввести в ответ на запрос программы.

2. После этого следует создать контакт, с которым будет общаться «малина» (требуется ввести номер телефона, FistName, SecondName).

Дальше уже можно следовать по инструкции «Шаг два»…

Ну и от себя добавлю: у меня нет «оригинальной» камеры — использовал USB, соответственно, установил для нее все необходимое и подправил код в /home/pi/camera/camera.sh под себя

Если кто-нибудь заинтересуется — расскажу.
У меня вот проблема с общением через консольный клиент Телеграма, сообщения не приходят, если делать как описано в статье.
запрос телефона был?
Это все нормально работает, как и консольный клиент, если его просто запускать, а не передавать сообщение аргументом.
пользователь, которому отправляем соообщение аргументом — есть в «записной книжке»?
Конечно, при этом в логах только:
> msg Lev_Aminov 11
> safe_quit
> All done. Exit
halt

Но на деле ничего не приходило. Если написать сообщение из самого консольного клиента, то сообщения доходят.
а… понял:
Это ты тестируешь /home/pi/tg.sh Name_lastname «your message» — верно?

Так вот оно из командной строки у меня тоже не работает (почему-то), а вот уже из скрипта lua — отрабатывает замечательно.
Все верно говоришь, – тестирую из консоли. Попробую тогда вечерком из луа или питон-скрипта.

Спасибо за информацию!
У меня тоже не работало, пришлось добавить таймаут, чтобы telegram успевал:
(sleep 3; echo «msg $to $msg»; echo «safe_quit»)
А целиком можете привести скрипт? Что-то я не могу понять, как установить слип в представленном варианте.
Речь про bash.

#!/bin/bash
to=$1
msg=$2
tgpath=/home/pi/tg
(sleep 3; echo «msg $to $msg»; echo «safe_quit») | ${tgpath}/bin/telegram-cli -k tg-server.pub -W
Работает, спасибо) Жесть, конечно, но как вариант можно использовать и так.
Таки разобрался, как запускать это тело в режиме демона, теперь сообщения отправляю через телнет.
Поделитесь рецептом укрощения демона?
А, это луа, тогда вопрос отпадает.
Пропущен очень важный шаг, без которого все это не будет работать. После получения и сборки сорцов с гитхаба, необходимо выпонить запуск и настройку (там где просит ввести номер телефона)
Тоже несколько минут назад это описал. Подскажите, как сделать так, чтобы:

bin/telegram-cli -k tg-server.pub -W -s action.lua


запускалось автоматом при старте RPi?
Файл /etc/rc.local
Туда пропишите полный path + bin/telegram-cli -k tg-server.pub -W -s action.lua
Так как код запускается до начала X-сессии консольного окна не будет, для отладки и логгирования можно прописать в конце >> /path/log.txt 2>&1
В файл добавил вызов (пришлось еще и пути к файлу с ключем и скрипту дописать).
Просто запуск /etc/rc.local — работает.

Но вот при reboot — ничего не происходит… Куда копать?
Сам с собою я веду беседу:

Повторил тот же туториал на Itead A20 — получилось, но чуток с путями пришлось «поплясать». Там же обнаружил, в чем проблема: Оказалось, что telegram при старте из rc.local почему-то хотел заново регистрироваться. В случае с A20 все получилось (там человеческая консоль через UART — т.е. я банально подтвердил регистрацию и там все заработало).

Теперь то, что касается «малины». Тоже подключился к UART — процесс загрузки виден, но сообщений сильно меньше и нормальная «консоль» не получается (команды отправлять нельзя… или я что-то не так делаю). В rc.local все правильно — включил вывод сообщений в лог.файл… и тоже вижу, что telegram стартует и тоже вижу приглашение ввести номер телефона (для «подтверждения регистрации»)… но консоли нет.

Как быть? Можно ли как-то telegram-у указать, что конфигурация уже нормальная и надо нормально стартовать?.. Пускать руками скрипт, имхо, неправльно :(

Заодно еще никак не могу придумать, чтобы при старте автоматом конкретному пользователю отправлялось сообщение (типа «RPi ready») — может, поможете?
Судя по всему, не очень правильно запускать телеграм через rc.local — есть возможность сделать его демоном.

Надо будет попробовать
Мануал по установке демона — сильно короткий. У меня «не взлетело». Если кто-то найдет решение — поделитесь, пожалуйста.
Прошу прощения, только сейчас вернулся.
Проблема всё ещё актуальна? Если да, то.

За демон не могу ничего сказать. Я вообще с телеграм не работаю, просто по работе знаю как автозапускать.

За rc.local — консоли у вас из него никогда не будет, так как запускается код в стиле ниндзя, до запуска оконного менеджера.

1. В первый запуск, судя по всему, он просит подтверждения регистрации, значит нужно ручками прописать | «продолжение банкета» в rc.local
— продолжение банкета — это всё что Вы пишете в консоли в первый запуск телеграм. После этого софт пропишет свой конфиг под рутом и банкета требовать перестанет (по идее), и банкет можно будет убрать.

2. Код исполняется из-под рута (нехорошо, я знаю). Если у вас есть конфиги под юзером, то телеграм из под рута их не читает, так как а) ищет в своей папке и б) не имеет прав.

(Продублирую вам так же в пм)
Спасибо, поправила (со ссылкой на описание ритуала avstepanov).
Я у себя сделал не msg $to $text, а send_text $to $file_name — так становится возможным посылать многострочные сообщения. Я вот например сделал себе ежедневный контроль баланса сотовых всей семьи:
Пытаюсь получить на телефон сообщение:

image

Ничего не происходит. Из различий вижу только версию telegram_cli, у меня 1.2.0, у Вас 1.1.1.
На «пинг» в lua_скрипте тоже не реагирует.
Что я упускаю?
Используете один номер на телефоне и на малине?
Разные.
Сперва не отправлялись сообщения, пропустил добавление номера в контакты.
Сейчас разбираюсь почему не отрабатываются bash-скрипты.
Разобрался. добавил таймаут:
(sleep 3; echo «msg $to $msg»; echo «safe_quit»)

сейчас разбираюсь с actions.lua
По хорошему бы кстати надо ok_cb коллбэк реализовать, а то оно каждый раз падает немного при его вызове.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации