Управляем домом через Telegram
В настоящее время системы управления умным домом становятся все популярнее.
Централизованный интерфейс, который управляет устройствами по всему дому, помогает экономить время и позволяет гораздо эффективнее контролировать ваше жилище.
Реализацией своего видения подобных систем занимаются как именитые бренды: Apple, Amazon и Google, встраивая их в свою инфраструктуру, так и умельцы, собирающие подобные системы на базе платформы Arduino.
Наша же цель была следующей: создать систему, которая будет доступна на большом количестве устройств и не будет привязана к какому-либо месту. Отличный вариантом для реализации управления оказался бот для мессенджера Telegram. Telegram имеет приложения на всех основных платформах, а так же web-версию. Доступ к нему можно получить из любого места, нужно лишь иметь аккаунт.
Из модулей мы выбрали следующие:
• Управляемая RGB светодиодная лента • Управляемая розетка • Датчик температуры
• Датчик освещенности (он используется для автоматического включения освещения)
Что нам понадобится
1. Raspberry Pi 3
Маленький, но удаленький компьютер, не нуждающийся в представлении, его мощности нам с головой хватит для этих задач. Третья версия хороша наличием встроенного Wi-Fi модуля, так что нам не придется думать о стороннем адаптере.
2. Модули ESP8266
Их нам понадобится 4 штуки. Мы использовали ESP-12F, но вообще разницы нет: ESP-1 будет вполне достаточно. Так же готовые платы NodeMCU помогут сэкономить вам время и силы.
3. Светодиодная лента
Мы взяли управляемую RGB-ленту на контроллерах WS2812b, хотя, впрочем, тут подойдет любая лента, работающая на 5В и поддерживаемая платформой Arduino.
4. Датчики температуры и освещения
Мы использовали модуль BH1750 для определения освещенности в комнате и DS18B20 для температуры. Основными критериями были доступность, поддержка платформой Arduino и возможность работы с 3.3В логикой ESP8266.
5. Реле
Субмодуль MOD-1CH для Arduino может пропускать до 10А тока и управляется 5В, аналогов для 3.3В мы не нашли, так что для управления использовали транзистор в ключевом режиме.
6. Telegram-бот
Непосредственное управление всей системой будет осуществляться при помощи бота Telegram, запущенного на Raspberry: это позволит системе быть легкодоступной на любой платформе из любой точки мира. Создавать бота для Telegram довольно просто, благодаря развитой платформе и поддержке большого количества языков.
Таким образом вся наша система будет выглядеть примерно так:
Реализация
Первым делом протестируем модули.
Готовые печатные платы адаптируют расстояние между пинами, что заметно облегчает пайку, а также содержат в себе необходимые резисторы, соединяющие пины CH_PD и GPIO2 с Vcc.
К сожалению, модули ESP8266 питаются и работают на 3.3В, а не на 5, как Arduino. Преобразовать напряжение можно с помощью готового модуля-преобразователя, но можно и спаять схему на основе линейного стабилизатора AMS1117, как это сделали мы.
Следующий этап – программирование.
К счастью, платформа ESP8266 поддерживается Arduino IDE, что открывает нам множество возможностей. Для непосредственной загрузки прошивки на модуль мы будем использовать Arduino Nano, однако то же самое можно сделать и через обычный USB-UART преобразователь. Не следует забывать про разницу напряжений у Arduino и ESP.
Схема получилось такой:
Кнопка нужна для того, чтобы замкнуть пин GPIO1 на GND при подаче питания на модуль и, тем самым, перевести его в режим программирования.
Далее настраиваем Arduino IDE, чтобы она понимала ESP (подробная инструкция со всеми ссылками) и пробуем записать тестовый скетч на моргание светодиодом.
После удачного мигания мы приступили к пайке всех модулей. С датчиком температуры и освещения все довольно стандартно.
Температуры:
Освещения:
А вот лента и умная розетка вызвали некоторые трудности.
Простое подключение управляющего входа ленты к ESP результата не дало. Оно и не удивительно, ведь WS2812b требует на управляющий вход минимум 70% от входа VCC (5×0.7=3.5), и 3.3В платы явно недостаточно. Однако мы нашли костыль интересный способ запустить их без использования повышающего преобразователя.
Если диоду требуется минимум 0.7xVcc для реакции на сигнал и мы не можем увеличить уровень этого сигнала, то надо уменьшить Vcc! Да, светодиоды будут гореть не так ярко, однако нам не надо запитывать таким образом всю ленту; хватит и одного диода.
Передавая сигнал далее по цепочке, светодиод использует уже уровень Vcc для формирования сигнала, чего вполне хватает для «нормального» светодиода. Таким образом, подключив первый диод в ленте к питанию через диод, который «съедает» около 0.6В, мы получаем отлично работающую ленту, напрямую управляемую из нашего модуля ESP8266.
А чуть более тусклый первый светодиод мы оставили для отладочных нужд: отображать состояние подключения к сети.
Вот что вышло:
Нашу умную розетку мы хотели разместить полностью в корпусе от старой розетки с таймером. Туда должны были влезть: сам ESP-12F, блок питания для него и реле, управляющее розеткой. Однако, разместив там реле и блок питания, мы так и не смогли вместить там еще и модуль ESP. Поэтому пришлось приделать снизу еще маленькую коробочку.
Итог получился не таким элегантным как мы хотели изначально, зато это было цельное устройство, которое надо было просто воткнуть в розетку.
Следующим шагом была настройка Raspberry. План был такой: наши модули подключаться к точке доступа Wi-Fi, которой является Raspberry, а, точнее, к её встроенному Wi-Fi модуль. На Raspberry запущен Telegram-bot, который находится со всеми модулями в локальной сети и может без проблем обмениваться с ними http-запросами. К интернету это все подключено через Ethernet.
Для осуществления этого плана мы использовали два пакета:
- hostapd – позволяет использовать встроенный wi-fi модуль как точку доступа
- dnsmasq – объединяет в себе DHCP и DNS сервера.
Мы пытались добиться относительной независимости кода и устройств, поэтому все запросы выполнялись не на ip-адреса, а на имена из придуманной зоны .sh (light.sh, socket.sh и т.д.).
Для этого мы для каждого модуля настроили статические ip-адреса и добавили на эти адреса DNS записи, соответствующие модулям.
Благо dnsmasq очень легко конфигурируется (подробная инструкция по настройке этой системы).
И, наконец, непосредственно бот.
Мы писали бота на Python, используя библиотеку python-telegram-bot. Нами был разработан кнопочный интерфейс, что упрощает управление, превращая устройство в своеобразный пульт ДУ:
Исходный бота код можно изучить здесь.
И, чтобы им не пользовался кто попало, мы поставили защиту паролем.
Вывод
Конечно, мы не создали какой-либо революционной системы, существует огромное количество более целостных и продуманных реализаций. Модули температуры и освещения можно было бы сделать автономными, благо у ESP8266 есть специальный режим ожидания, в котором она потребляет очень мало энергии.
Можно было бы добавить легкую пользовательскую расширяемость, не требующую изменения исходного кода и перенастройки сетевых подключений и еще много чего. Однако цель всего этого проекта была совсем не в этом.
В первую очередь мы хотели создать простую систему, которая могла вполне быть создана кем угодно у себя в доме и не требовала бы серьезной подготовки и затрат. А самое главное: мы хотели научиться многим вещам, пока мы делали этот проект.
И если практичность и функциональность нашего решения можно еще долго дорабатывать, то знания, полученные нами в процессе планирования и воплощения в жизнь этой системы, определенно стоили потраченных усилий.
Источник: https://habr.com/post/404009/
Проекты raspberry Telegram – Telegram bot Raspberry pi. Как сделать своего бота? – Месса Гуру
За последние пол года я написал около полусотни разных ботов для мессенджера Telegram. Пора немного поделиться хотя бы простыми примерами ? Для тех, кто не любит читать, мы подготовили небольшой видеообзор, демонстрирующий возможности связок, описанных ниже.
Осторожно, будет много букаф!
Зачем мне бот от Telegram?
Телеграм, или в народе «телега», «телек», — очень крутой мессенджер! И не только тем, что он безопасный и удобный, а еще и тем, что у него открытое api. Такие программы мы любим. Это значит, что можно объединить все самое важное и критично-необходимое в одном мессенджере.
С точки зрения удобства использования, бот — это всего лишь ваш контакт в телефоне, который умеет «кое-что еще». С практической точки зрения — целый сервер домашней автоматизации (Raspberry pi или любой другой МК) можно подключить к управлению и мониторингу через бота телеграма в вашем телефоне.
При этом вы не заботитесь о «белой» IP адресации, или транзитном облаке для вашего трафика. Весь транспорт берет на себя Telegram! На устройстве, где будет написан ваш бот, просто достаточно иметь выход в сеть Интернет, но этим дело не ограничивается.
С помощью бота можно соединить кучу областей жизнедеятельности и работы: напоминание покормить кота, вывод квартальных отчетов, управление светом на даче и т.д. и т. п. На что хватит фантазии.
Сегодня мы остановимся на небольшом симбиозе контроля и управления. Для примера нам понадобятся:
- датчик температуры и влажности
- датчик контроля протечек
- датчик движения или объема
- реле 220v c 3-5 вольтовой логикой управления
Сразу оговорюсь, что список может быть не полным или вы можете что-то выкинуть из него. Что подключать, решать вам.
Как подключить все эти устройства и проверить их минимальную работу, можно посмотреть по ссылкам ниже.
Si7021: raspberry + датчик температуры и влажности YL-83: raspberry + датчик контроля протечек Dfrobot ir motion sensor: raspberry pi + датчик движения Реле 220v: raspberry pi подключение реле
Создание бота Telegram
Естественное условие — наличие телеграма на вашем девайсе (телефон, пк, планшет — без разницы). Открываем Telegram, идем в контакты и ищем в поисковой строке @botfather. Кликаем на него. Это мастер или менеджер создания и управления всех ваших ботов. Вводим в строку ввода «/» и нажимаем «/newbot». Далее все по инструкции.
В конечном итоге, после того как вы придумаете имя контакта и уникальное имя и успешно все создадите, у вас появится TOKEN. Никому не говорите его и не пересылайте, вы будете использовать его в качестве ключа авторизации в ваших программах. При желании можете посмотреть остальные доступные команды, все они начинаются со «/». Например, вы можете создать аватарку вашему боту.
И как мне telegram-бота написать?
Терпение, мой мальчик, и их_теозавры станут нашими! Для начала хотел бы поделиться очень удобным и простым приложением-помощником для работы с API Telegram — Telepot Также для реализации всех возможностей потребуется Python3.5. Как установить Python3.5 вы можете прочитать в отдельной статье. После того как Python3.5 установлен, ставим Telepot из pip:
После установки приложения убедитесь, что >>> import telepot проходит успешно в python3.5
Больше кода богу кода!
В сети видел достаточно примеров ботов, но, если честно, бОльшая часть не красива с точки зрения пользователя. Очень часто людям приходится писать в телефоне команды, а не кликать.
Даже если вы видели примеры с кликами, чаще всего они со слешами в начале, которые, мягко говоря, раздражают людей. В данном примере мы попытаемся это исправить.
Будем делать вот такие красивые клавиатуры и кнопки со своим содержимым и логикой работы, как на картинке ниже:
В боте будут присутствовать блок управления реле, блок с отображением текущей информации используемых датчиков (влажность/температура/вода/обратная связь от реле) и блок настроек сигнализаций.
Последний блок — это такой же блок управления, только не датчиками, а программами или их параметрами. Так же хочу отметить, что будет настроена фильтрация по разрешенным персональным id телеграмма.
Данная навеска позволит иметь доступ к боту только вам и вашим близким. Если кратко, то это самые необходимые примеры работы бота в различных проектах. Произвольные клавиатуры могут содержать текст, вызов контакта, локации и еще много чего.
«Волшебные серые кнопки» имеют не меньший функционал. Если вы хотите более подробно разобраться с возможностями элементов — обратитесь к официальной документации api.
Поехали. Создаем тело бота:
Делаем файл исполняемым:
Вам необходимо в теле бота заменить разрешенные айдишники со значением None на свои, а также записать в TOKEN свои данные, полученные при регистрации бота. Как узнать свой id в Telegram?. Айдишник можно узнать, просто запустив бота и нажав на старт. Вы увидите диагностическую информацию с вашим айдишником на экране консоли.
Но перед тем как запускать бота, убедитесь, что все необходимые директории и файлы из bot.py представлены в системе! (либо перепишите сценарий под себя). Для того чтобы вы лучше понимали, как и что должно будет работать и зачем все файлы и команды ниже, нарисую маленькую схему. Схема не претендует на звание лучшей, она лишь отображает все в упрощенном виде:
Теперь опишем все более детально. Директория для состояния сигнализаций и файл с критической температурой:
Сценарий включения реле (signal на 20 pin BCM):
Сценарий отключения реле (signal на 20 pin BCM):
Текущее состояние реле смотрим через пин, на котором подключен сигнальный провод реле. (Конечно, вам никто не мешает сделать более реальный контроль через опторазвязку):
Считывание температуры из Si7021 (подключен по i2c):
Считывание влажности из Si7021 (подключен по i2c):
Считывание состояния из датчика наличия воды (капель). Подключен на 17pin BCM:
Итак, скрипты по управлению реле и считывания данных с датчиков написаны и протестированы, можно потестировать бота. Запускаем. Кликаем.
Переписываем chat_allow на разрешенные, например, вписываем в первый свой, во второй — id телеграма жены, нет жены, тогда брата, нет брата, тогда кота ? Протестировали? Красиво? Но это же не все.
Во-первых, где программы сигнализаций движения/воды/температуры? Во-вторых, а как мне отправлять сообщения из системы в моего бота? Не тогда, когда я нажимаю на кнопку и получаю callback, а если что-то случится, чтобы бот сам прислал? Спокойствие, только спокойствие! Сейчас все сделаем.
Оправка сообщений из linux в Telegram
Сейчас все напишем. Для реализации такого сценария нам понадобится все тот же telepot и знание вашего персонального id и токена от бота.
Ниже напишу пример скрипта, который будет отправлять входящую переменную $1 через вашего бота на ваш id. Этот сценарий можно будет вызывать любой вашей программой или приложением из системы. Согласитесь, весьма удобно.
И где эти вайберы / вотсапы / скайпы ? Правильно, api — отличная вещь. Ну, за дело:
Делаем скрипт исполняемым и работающим только под root:
Проверяем, как это работает. Запускаем сценарий и на вход подаем произвольную строку в кавычках:
Радуемся! Дело остается за малым: нужно написать небольшие сигнализации, которые бы отсылали в бота информацию о происшествиях, если таковые случились. Нам потребуется написать циклы, которые будут крутиться всегда и периодически проверять, как дела на наших датчиках.
Пишем свои маленькие «сигнализации»
Общий принцип следующий: вращаем бесконечный цикл, отвечающий за датчик, который будет периодически снимать показания, и если программа обнаружит, что показания проблемные, будет отправлять нам сообщения, скажем, раз в 10 минут (на самом деле лучше так не делать, ибо очень назойливо получать аварийные сообщения, а написать так, чтобы отсылка происходила один раз и потом только тогда, когда состояние снова станет нормальным. Но статья не об этом. Поэтому пример максимально упрощен.
Не забываем сделать сценарий исполняемым:
Последний скрипт, который мы не указали и который должен присутствовать, — это скрипт по контролю объемника. Мы воспользуемся прерываниями библиотеки gpio и будем ждать, когда произойдет движение, и только тогда скажем об этом нашему треду из multialert.py:
Добавляем бит исполнения:
Обьемник подключен на 16 пин. При запуске этого сценария вы получите ответ, что движение есть только тогда, когда ваш обьемник действительно сработает. После этого программа завершится.
Добавление бота Telegram и остальных сценариев в автозагрузку
Знающие люди, конечно, могут написать своих демонов (шутка). Но если вы хотите, чтобы бот и сигнализации всего лишь постоянно работали после загрузки системы, можно добавить все в /etc/rc.local:
Итог
В статье предоставлен весьма подробный туториал, как сделать своего бота, работающего с различными устройствами. Причем выглядит это весьма неплохо, все кликабельно и претендует на жизнь. Дополнительно описаны процессы создания сигнализаций и простых отсылок сообщений из системы.
Все в совокупности может тянуть на небольшой проект, НО не стоит радоваться раньше времени! Перед тем как пустить это в дело в автономное плавание, программно стоит позаботиться о корректности всех входящих данных, протестировать: а что будет, если у вас нет интернета, а если датчик перегорит , если провод сожрет кот, если… если, если.
Можно считать этот материал лабораторным, но весьма близким к реальному.
Всем упорства в работе, отсутствия коротких замыканий и да прибудет с вами сила ? Подписывайтесь на блог, обещаю потихоньку выкладывать такие же функциональные и полезные статьи.
Поделиться ссылкой:
Похожее
Источник: http://messagu.ru/telegram/proekty-raspberry-telegram-telegram-bot-raspberry-pi-kak-sdelat-svoego-bota
Telegram бот для умного дома
Последние события, связанные с блокировкой Telegram очень интересные, что я не смог обойти их стороной. Для телеграма не было лучшей рекламной акции, чем сопротивление блокировкам Роскомнадзора.
И хотя я до этого не пользовался телеграмом, мне пришла в голову идея создать чатбот именно для него, чтобы я смог управлять устройствами умного дома и получать оповещения через телеграм. Да, я знаю, уже давно есть API для создания ботов для других мессенджеров, я хотел создать чатбот именно для Телеграма.
Не ищите в этом логики, я подобные вещи делаю по-фану. Всякие сервисы для push уведомлений тоже не подходили, поскольку я хотел еще отправлять команды. В будущем, может, прикручу один из таких сервисов.
Немного бомбежки
Бомбежка получилась больше, чем ожидалась, так что можете перелистнуть к следующему заголовку, если вас интересует техническая часть.
Простите за оффтоп, но без него, кажется, эта статья была бы не полной, тем более, что я автор этого блога и могу себя особо не цензурить, в рамках закона, конечно.
Я надеюсь, что здесь не найдут признаки экстремизма и разжигания ненависти, я не хочу в тюрьму, пожалуйста! По всей видимости, есть люди, которые стремятся все изгадить, просто по злому умыслу — злодеи.
В следующий раз, когда кто-то будет ругать какой-то фильм, за то, что там злодей слишком клишированный и злой просто потому что злой, ему не хватает мотивации и в реальной жизни таких не бывает, не верьте ему. Такие клишированные злодеи по-всюду. Одни испоганили ВКонтакте, потирая ручки и издавая злодейский смех, как доктор зло.
Другие блокируют пол интернета, как будто это поможет в борьбе с терроризмом. Не поможет — взять накостылять на коленке свой локальный мессенджер со своими ключами шифрования могут все — даже террористы. Что вы делаете с интернетом? Вы блокируете целые облачные платформы, с кучей облачных сервисов! Я перерыв десятки прокси-серверов, в поиске подходящего, попытался создать свой.
У меня есть VPS, которая может достучаться до Telegram API(несмотря на то, что ЦОД в России). Дай, думаю, создам новый сервер для прокси — не вышло. Хостер обосрался, не мог создать сервер. Видимо, я не один попытался создать проксю из-за вас, у хостера кончились ресурсы и он не смог. Или так совпало и он сам сломался. Вот, что вы делаете с интернетом.
Третие принимают глупые законы, которые нереализуемы даже технически. Да-да, я о пакете Яровой вспомнил. Быть может вы внесете законопроект, который требует привлечения сторонних специалистов? Чтобы вы спрашивали сетевиков, когда хотите создать законопроект об интернете. Чтобы вы спрашивали медиков, когда вносите закон о здравоохранении. Чтобы хоть кто-то думал о последствиях, прежде, чем дать согласие!
К делу
В один день мне не хотелось заниматься чем-то полезным, связанным с учебой, работой или саморазвитием и выбрал себе интересную тему для прокрастинации — почему бы не создать чат-бота для Telegram. Да, вот так вот я могу прокрастинировать.
У OpenHAB есть расширение для обращения к API Телеграмм, но оно очень скудное — там всего два Action’а, которые позволяют отправить сообщение или фотографию. Это можно было использовать для уведомлений, но мне хотелось бы отдавать команды умному дому.
Кроме того, это расширение не позволяет использовать прокси серверы. Начал я с самого простого, поставил Telegram себе, чтобы узнать что это за штука.
По глупости получил API ключи для приложения, потом понял, что BotFather, который создает ботов и от которого нужно было получить токен, это сам бот.
Было решено запилить программу, которая бы работала отдельно от OpenHAB’а и передавала бы ему команды, исходя из присланных сообщений. Т.е.
можно было бы сделать минискрипт, который при получении сообщения изменял бы конкретный item OpenHAB’а через REST API, или изменял бы один item со строкой, чтобы скрипт на OpenHAB’е получил эту строку и уже сам бы менял item’ы внутри системы. Но так случилось, что все устройства, которыми я управлял в доме чере OpenHAB, управлялись через MQTT.
Даже та Bluetooth лампа, о которой я писал прошлую статью, ныне управлялась через самопальный MQTT клиент на Python’е, который принимал команду по MQTT и передавал её лампе по её протоколу. Так, что было решено сделать так, чтобы Telegram бот стал бы еще MQTT клиентом, который передал бы команды устройствам без посредника в виде OpenHAB.
Кроме того, это более универсальное решение, которое можно будет интегрировать с другими системами умного дома. Сам бот разрабатывался на nodejs с использованием пакетов node-telegram-bot-api, mqtt и got(Для REST запросов к OpenHAB, позже скажу, зачем).
Самым сложным испытанием было найти прокси для доступа к Telegram API. Хотя Telegram имеет хороший клиент, который позволяет обходить блокировки достаточно прозрачно для конечного пользователя, сам сайт Телеграмма заблокирован, что не дает боту доступа к API, с которым он должен общаться посредством совершения простых HTTP вызовов. В этом не было бы проблемы, если бы бот хостился на зарубежном VPS, будь он даже заблокирован в России, до самого Телеграмма он достучаться смог бы, а большего и не надо. Но бот должен хоститься дома, на Raspberry PI вместе с сервером умного дома. Иначе пришлось бы поднимать его через VPS, тянуть какой-то канал связи, в качестве посредника для передачи команд, будь то внешний MQTT брокер или HTTP polling сервер. К счастью, библиотека, с которой я работал, умела работать с HTTP прокси. Как я уже упомянул, я перерыл десяток прокси. Я даже был не уверен, в прокси дело или в моем коде. В последствии оказалось, что в моем коде тоже проблема, но я взял все-таки стандартный пример node-telegram-bot-api и таки перебрав десятки серверов, нашел доблестный украинский HTTP прокси сервер, который стабильно пускал polling запросы к Telegram API. Не скажу какой, мне достаточно было того, что заблокировали мое любимое зеркало Флибусты с OPDS каталогом, с которого я успешно пиратил книжки несколько месяцев.
На данный момент успел реализовать следующий функционал: чат-бот может подавать команды на включение-выключение захардкоженым устройствам, посредством MQTT. Может писать о текущем состоянии устройств, которое отслеживается также посредством MQTT. Может писать информацию о погоде. Саму информацию OpenHAB берет посредством REST API с сайта народного мониторинга, но дабы не чат бот не опрашивал лишний раз сайт народного мониторинга, он делает запрос прямо в OpenHAB, посредством REST API, для получения всех item’ов и выбирает данные из нужных четырех.
Ссылочка на проект на GitHub
Update 23.04: Я начал осваивать TOR. TOR + любой socks2HTTP прокси, вроде polipo, позволит захостить данного бота где угодно.
Источник: http://dm-ushakov.ru/homeautomation-telegram-bot/
Бот для Telegram на Python: от первой строчки кода до запуска на Heroku
В этом руководстве мы разберём процесс написания простого Telegram-бота на Python и его запуска на сервере Heroku. Но сперва давайте выясним, зачем вообще нужны боты и почему вам стоит написать своего.<\p>
Вступление
На первый взгляд, Telegram — это просто очередной мессенджер. Реклама гласит, что он быстр, защищён, в нём нет рекламы и всё такое. Но у него есть важная фича — боты!
Бот — это не просто «автоответчик». Его правильнее считать автоматизированным помощником. Представим, что вы хотите поделиться в групповом чате видео с YouTube, но ссылки у вас нет.
Вот стандартный алгоритм действий без бота:
- открываем YouTube в браузере;
- находим видео;
- нажимаем на «Поделиться» (и надеемся, что в списке будет наш мессенджер);
- если нашего мессенджера в списке не оказалось, копируем ссылку на видео;
- возвращаемся в мессенджер и делимся ссылкой.
Да, многие привыкли делать именно так. Однако бот позволит действовать следующим образом:
- переписываемся в мессенджере;
- вводим @vid и название видео, которое вы хотите найти и скинуть в беседу;
- отправляем его.
Удобно, не правда ли? И это лишь одна из возможностей.
Telegram позволяет пользователям создавать своих ботов. Ответим на вопрос «Почему мне стоит написать своего?» — это, пожалуй, самый простой способ понять, что такое API.
Круто, начинаем писать бота?
Обо всём по порядку. Сперва нужно зарегистрироваться в Telegram. Наиболее удобно использовать веб-клиент для знакомства с основными принципами работы ботов и API.
Откройте приложение, найдите @BotFather и начните беседу. Отправьте команду /newbot и следуйте инструкциям. После выполнения первых шагов вы получите:
Собственно, вот и всё. На данном этапе ваш бот полностью пассивен.
Вам нужно начать беседу с ботом. Введите в поисковой строке его имя и нажмите на кнопку /start. Отправьте сообщение, например, «Привет». Это первое сообщение очень важно, поскольку оно станет первым обновлением, которое получит ваш бот.
Если вы в первый раз работаете с API, то разобраться вам поможет браузер. Откройте новую вкладку и воспользуйтесь Telegram API, перейдя по ссылке:
https://api.telegram.org/bot/getUpdates
Открыв этот адрес в браузере, вы отправите запрос на сервер Telegram, и он ответит вам в формате JSON. Ответ чем-то похож на словарь в Python. Вы увидите что-то вроде такого:
{ “ok”:true, “result”:[{ “update_id”:523349956, “message”:{ “message_id”:51, “from”:{ “id”:303262877, “first_name”:”YourName” }, “chat”:{ “id”:303262877, “first_name”:”YourName”, “type”:”private” }, “date”:1486829360, “text”:”Hello” } }]
}
Если вы изучите раздел метода /sendMessage в документации, то увидите, что он принимает два параметра: chat_id и text. Вы можете создавать цепочки параметров в адресной строке браузера, используя ? для первого и & для всех последующих. Команда для отправки сообщения будет выглядеть так:
/sendMessage?chat_id=303262877&text=test
Попробуйте получить ответ от вашего бота, подставив в качестве chat_id значение, полученное после вызова /getUpdates (в нашем примере — 303262877). Текст сообщения может быть любым. Запрос должен выглядеть примерно так:
https://api.telegram.org/bot/sendMessage?chat_id=303262877&text=Hello
И когда же будет код?
Если вы пользуетесь Windows и у вас не установлен Python, скачать его можно с официального сайта. Вообще версия не важна, но в этой статье будет использоваться Python 3.x. Если же у вас Linux или macOS, то обе версии (или, как минимум, Python 2.x) уже установлены.
Затем нужно установить pip. В версиях выше Python 2.7.9 и Python 3.4, а также на macOS/Linux он уже есть. Проверить это можно командой pip –version в терминале. Если же по каким-то причинам он отсутствует, установить его можно при помощи команды:
$ sudo apt-get install python-pip
Загвоздка в том, что разные версии Python используют разные pip. Если у вас macOS, вы можете попробовать следовать советам со Stack Overflow. В случае с Windows вам нужно скачать get-pip.py, открыть командную строку, перейти в директорию со скачанным файлом и выполнить команду:
$ python get-pip.py
Самое сложное позади. Установим пакет requests при помощи pip:
$ pip install requests
А теперь — код
Теперь, когда вы поняли, что такое API, и установили все необходимые инструменты, напишем скрипт, который будет проверять обновления и отвечать на новые сообщения.
Сперва бот должен проверить обновления. Первое сообщение можно расценивать как самое свежее, но getUpdates возвращает все обновления за последние 24 часа. Напишем небольшой скрипт, чтобы получить самое последнее обновление:
import requests url = “https://api.telegram.org/bot/” def get_updates_json(request): response = requests.get(request + 'getUpdates') return response.json() def last_update(data): results = data['result'] total_updates = len(results) – 1 return results[total_updates]
Словарь обновлений состоит из двух элементов: ok и results. Нас интересует вторая часть — список всех обновлений, полученных ботом за последние 24 часа.
Узнать больше о библиотеке requests можно, прочитав документацию. По сути, каждый раз, когда вам нужно получить, обновить или удалить информацию, хранящуюся на сервере, вы отправляете запрос и получаете ответ.
Теперь нужно добавить ещё 2 функции. Первая будет доставать chat_id из обновления, а вторая — отправлять сообщение.
def get_chat_id(update): chat_id = update['message']['chat']['id'] return chat_id def send_mess(chat, text): params = {'chat_id': chat, 'text': text} response = requests.post(url + 'sendMessage', data=params) return response chat_id = get_chat_id(last_update(get_updates_json(url)))
send_mess(chat_id, 'Your message goes here')
Помните, как мы объединяли параметры при помощи ? и &? Вы можете сделать то же самое, добавив словарь в качестве второго дополнительного параметра в функциях get/post из пакета requests.
Скрипт готов, но он не идеален. Главным минусом является необходимость запускать его каждый раз, когда мы хотим, чтобы бот отправил сообщение. Исправим это. Чтобы бот слушал сервер и получал обновления, нам нужно запустить основной цикл. На новой строке, после import requests, добавьте from time import sleep. После этого замените две последние строки на следующий код:
def main(): update_id = last_update(get_updates_json(url))['update_id'] while True: if update_id == last_update(get_updates_json(url))['update_id']: send_mess(get_chat_id(last_update(get_updates_json(url))), 'test') update_id += 1 sleep(1) if __name__ == '__main__': main()
Хотя мы и добавили таймаут в 1 секунду, пример выше можно использовать только в обучающих целях, поскольку он использует частые опросы (short polling). Это плохо влияет на сервера Telegram, поэтому их нужно избегать.
Есть ещё два способа получения обновлений через API — длинные опросы (long polling) и вебхуки (webhooks).
Если мы будем использовать способ получения обновлений через getUpdates без параметров, то запросы будут происходить слишком часто.
Поскольку мы начали использовать в скрипте основной цикл, мы должны переключиться на длинные опросы. Сперва изменим первую функцию, добавив в неё параметр timeout. Сам по себе он не уменьшит частоту проверки обновлений и будет работать только в том случае, когда обновлений нет. Чтобы помечать уже просмотренные обновления, нужно добавить параметр сдвига offset:
def get_updates_json(request): params = {'timeout': 100, 'offset': None} response = requests.get(request + 'getUpdates', data=params) return response.json()
Теперь бот должен работать нормально, но его всё ещё можно улучшить. Давайте инкапсулируем все функции в один класс. Должно получиться что-то вроде этого:
import requests import datetime class BotHandler: def __init__(self, token): self.token = token self.api_url = “https://api.telegram.org/bot{}/”.format(token) def get_updates(self, offset=None, timeout=30): method = 'getUpdates' params = {'timeout': timeout, 'offset': offset} resp = requests.get(self.api_url + method, params) result_json = resp.json()['result'] return result_json def send_message(self, chat_id, text): params = {'chat_id': chat_id, 'text': text} method = 'sendMessage' resp = requests.post(self.api_url + method, params) return resp def get_last_update(self): get_result = self.get_updates() if len(get_result) > 0: last_update = get_result[-1] else: last_update = get_result[len(get_result)] return last_update
Последний штрих — объявим переменные и научим бота приличным манерам. Сделаем так, чтобы бот приветствовал вас раз в день, при этом фраза должна зависеть от времени суток. Для этого добавьте следующий код в ваш скрипт:
greet_bot = BotHandler(token) greetings = ('здравствуй', 'привет', 'ку', 'здорово') now = datetime.datetime.now() def main(): new_offset = None today = now.day hour = now.hour while True: greet_bot.get_updates(new_offset) last_update = greet_bot.get_last_update() last_update_id = last_update['update_id'] last_chat_text = last_update['message']['text'] last_chat_id = last_update['message']['chat']['id'] last_chat_name = last_update['message']['chat']['first_name'] if last_chat_text.lower() in greetings and today == now.day and 6
Источник: https://tproger.ru/translations/telegram-bot-create-and-deploy/
NodeMCU и Telegram: управление с помощью чат-бота
Интернет вещей давно ворвался в повседневную жизнь – умный дом, умный телевизор и даже умный чайник. В этом курсе статей я помогу вам войти в мир интернета вещей и сэкономить при создании девайсов для дома. Встречайте первую статью из цикла уроков.
В данной статье мы подготовим Arduino IDE, бота в telegram и саму плату к работе. Для повторения урока вам понадобится плата Nodemcu, а также светодиод, пара соединительных проводов, breadboard на котором будет собрана схема. Для общения с компьютером воспользуемся micro usb проводом.
Схема подключения:
Схема абсолютно простая, главное не забыть про особенности распиновки nodemcu. Короткая нога светодиода в землю, длинная в пин D3.
Добавление nodemcu в Arduino IDE (подключение esp8266 пакета)
Esp8266 понадобится нам для работы с nodemcu в среде разработки Arduino IDE.
Перед установкой пакета убедитесь, что у вас не установлена другая версия. В противном случае обязательно удалите ее перед установкой. А далее следуйте простым шагам:
1. Запустите среду разработки – Arduino IDE
2. Откройте настройки
3. В поле «Дополнительные ссылки для Менеджера плат» вставьте ссылку на esp8266 пакет: http:/ /arduino.esp8266.com/versions/2.3.0/package_esp8266com_index.json
4. Перейдите в Инструменты – Плата – Менеджер плат
5. Прокрутите вниз. Найдите esp8266. Выберите версию 2.3.0. (или другую более новую). Установите.
6. В Инструменты – Плата выберите nodemcu. Остальные настройки платы выставятся автоматически.
Установка библиотеки Telegram
Для обработки полученных сообщений и отправки ответных реакций нам понадобится библиотека https://github.com/witnessmenow/Universal-Arduino-… . Советую установить ее вручную, так как могут возникнуть ошибки.
Создание бота telegram
Настало время создать нашего цифрового друга, который верно и покорно будет обрабатывать все наши команды. Откройте бота @BotFather. Для создания нового бота напишите /newbot. Следуйте инструкциям, выберите ему имя и логин и в конце скопируйте bot token, он понадобится при прошивке платы nodemcu.
Прошивка
В первом уроке рассмотрим все части прошивки детально.
Подключаем нужные библиотеки.
#include #include #include
Указываем пин светодиода, wifi сеть и токен бота.
#define LED 0 //D3 const char* ssid = “yura”; const char* password = “0987654321s”; const char BotToken[] = “xxx”;
Объявляем бота.
WiFiClientSecure net_ssl; TelegramBot bot (BotToken, net_ssl);
В void setup устанавливаем скорость общения с компьютером, пытаемся подключиться к wifi, выводим ip адрес устройства в сети, запускаем бота и pinmode для светодиода .
void setup() { Serial.begin(9600); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print(“.”); } Serial.println(“”); Serial.println(“WiFi connected”); Serial.println(WiFi.localIP()); bot.begin(); pinMode(LED, OUTPUT); }
Переходим в void loop. Здесь надо сначала проверить наличие новых сообщений.
message m = bot.getUpdates();
Теперь проверяем какое сообщение пришло, выполняем соответствующее действие, и отправляем ответную реакцию.
if (m.text.equals(“on”)){ digitalWrite(LED, HIGH); bot.sendMessage(m.chat_id, “The Led 1 is now ON”); }else if (m.text.equals(“off”)){ digitalWrite(LED, LOW); bot.sendMessage(m.chat_id, “The Led 1 is now OFF”); }
Скетч целиком можно скачать здесь: https://yadi.sk/d/R8TIz_t73XQcvG
Настало время прошивать микроконтроллер. Сначала меняем в скетче название и пароль от вашей Wi-Fi сети, потом меняем токен бота и пин к которому подключен светодиод. Загружаем скетч на плату.
Тестируем
Теперь, когда все установлено и прошито, можно посмотреть на работу устройства. Для включения и выключения светодиода используются команды on и off соответственно. Их надо просто отправить боту в сообщении. При подключении nodemcu к компьютеру, можно увидеть некоторую отладочную информацию в мониторе порта.
Заключение
Поздравляем! Первый шаг к интернету вещей сделан! Но это всего лишь светодиод. А в следующих статьях будут рассмотрены датчики температуры, влажности, движения. Подписывайтесь!
Данная статья является собственностью Amperkot.ru. При перепечатке данного материала активная ссылка на первоисточник, не закрытая для индексации поисковыми системами, обязательна.
Источник: https://amperkot.ru/blog/telegram_arduino_part1/
Telegram Control Application With Raspberry Pi
Hi all!
In this post I'm gonna share my new application. Recently I had published post that was control application over the telegram. That should be here. At that aplication I also wanted to use serial port with nodejs because of this I used other hardware(MSP430 launchpad) to control devices over the serial port.
So to do this application we need at least a reasonable computer and a hardware such a MSP430 launchpad. Because of that it doesnt make sense and not low cost I have decided to do it with Raspberry Pi. Raspberry Pi is also computer and has a GPIO pins to control devices. Thus we can do it same application with just Raspberry Pi.
It's cool! Also we don't have to change so many things in the javascript codes. Lets do it!
Step 1: Using of Telegram Bot API and RPI GPIO Modules
To write applicaton code I used two modules for nodejs. One of them isTelegram Bot API module and the other one is Raspberry Pi GPIO module.
Using Telegram Bot API you can create your own bot that can get/send messages to the other people on telegram. With this bot you can make so many interesting applications. Also I used this bot to do this application.
You can find more details here about telegram bot API
To create a new Bot you should talk with the BotFather. Don't worry it's so easy. Just write him “/newbot” then after a while you will get your own bot and token number.
And then you will be ready to use your bot in your applications. For more details about how to create a bot take a look here.
Step 2: Test Circuit and Runing the Application
To see application results on the GPIO pins I setup simple test circuit on the bread board. Above you can see the circuit.
To runing application first of course you should install nodejs and required files and modules. When applicaton start to run it waits for the commands. For this app I defined basic few commands.
These are gpio36read, gpio38high, gpio38low, gpio40low, gpio40high. These are also not case sensitive. Easily you can change or add more commands. If you send invalid command app alerts you. Also I added ID control to app.
So, no body can't controls or reads pins except you.
I did it with simple a line code which is below. If you want you can cancel it.
if(message.chat.id == “”) { // app code here}
Step 3: Results
As you see above pictures when you send valid commands to Bot you can write/read Raspberry Pi GPIO pins. That's mean you can control or read status of your devices over the telegram just using Raspberry Pi and simple control circuit. You don't need any pc or expensive devices. Cool!
Of course, all the source files about this application are available here as github project.
I hope that this post was useful for you.
See you next post “inşaallah”. Have a nice day!
Источник: https://hackaday.io/project/9736-telegram-control-application-with-raspberry-pi
предпосылки создания умного дома
Один итальянский магазинчик нащупал новые способы использования Телеграма (и ранее WhatsApp'а), установив его на одноплатный миниатюрный компьютер Raspberry Pi.
Как выясняется, мессенджер можно использовать для удалённого общения с собственной техникой. Ниже – перевод статей с сайта Instructables.com. Если есть уточнения по переводу, напишите об этом в комментариях.
Шаг первый: инсталляция
Понадобится: 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
Телеграм – весьма разносторонний мессенджер для отправки мгновенных сообщений, в котором можно работать, используя один телефонный номер, одновременно на нескольких устройствах.В предыдущем обзоре мы увидели, как его установить, как отправлять текст и медиафайлы.
Мы также убедились, что в 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://raspberry-pi.in/content.php?p=29&c=Raspberry%20i%20Telegram:%20predposylki%20sozdaniya%20umnogo%20doma
Telegram управляет электроприборами
Разное
Главная Радиолюбителю Разное
Предлагаемый программно-аппаратный комплекс реализует функцию контроля и управления бытовыми и промышленными электронными устройствами и потребителями электроэнергии посредством распространённого интернет-мессенджера Telegram. Аппаратной основой комплекса служит одноплатный мини-компьютер Raspberry Pi или его клон Orange Pi (Banana Pi и другие).
В авторском варианте использован мини-компьютер Orange Pi PC Plus 3, однако программное обеспечение полностью совместимо с любой аналогичной платформой.
Решение использовать Orange Pi обусловлено его существенно меньшей стоимостью при равноценных функциональной насыщенности и производительности.
Следует признать, что клоны более капризны в установке и настройке операционной системы, однако на деле всё сводится к выбору правильного дистрибутива Linux.
Программная часть построена на технологии Telegrambot API с использованием языка программирования Си. Мессенджер Telegram предоставляет программный интерфейс разработчика, что позволяет воплощать интересные решения на его основе. При этом обеспечивается высокий уровень информационной безопасности.
Порядок разработки следующий. Сначала следует создать собственного бота Telegram. Делают это с помощью специального сервиса @BotFather – “родителя” всех ботов Telegram. Запустив его, заходите в меню Newbot, задавайте название бота (Firstname) и имя пользователя (Username_bot), которое обязательно должно заканчиваться словом bot. После регистрации будет сообщено значение параметра
Далее рассмотрим особенности установки и настройки ОС на Orange Pi. Из всего многообразия дистрибутивов, не взирая на личные предпочтения, рекомендуется выбрать Armbian Linux, соответствующий конкретной аппаратной платформе [1]. Иной выбор с большой вероятностью приведёт к программным сбоям в работе отдельных аппаратных модулей или всего устройства в целом.
Образ системы переносится на SD-карту, имеющую объём не менее 8 Гб и класс не ниже 4, с помощью утилиты Win32 DiskImager [2], предназначенной для пользователей Windows, кроссплатформенной Etcher [3] или консольной командой dd в Linux. Работа с интерфейсом первых двух специальных пояснений не требует и сводится к выбору образа ОС и съёмного диска (SD-карты), на который он будет перенесён.
Команда dd выполняется от имени главного администратора root (используя префиксную инструкцию sudo либо непосредственно под учётной записью root) и имеет следующий синтаксис:
dd bs=4M if=//
где- абсолютный системный путь к каталогу, содержащему файл
Запись образа занимает много времени (десятки минут) и не сопровождается выводом информации о ходе процесса. При желании визуально наблюдать за статусом копирования можно установить утилиту dcfldd [4]. По окончании записи образа рекомендуется выполнить команду sync для сброса кэша записи и размонтирования носителя.
Подготовленную загрузочную SD-карту поместите в слот мини-компьютера и включите его. Если при старте системы происходит сбой загрузки графической оболочки, наиболее вероятная его причина – неспособность применённой SD-карты выполнять запись в файловой системе ext3/4. В этом случае следует заменить её картой другого типа, желательно известного производителя.
Процесс настройки операционной системы с небольшими интуитивно понятными отличиями аналогичен описанному в [5], поэтому подробно на нём не останавливаемся. Для Orange Pi Armbian имя пользователя и пароль по умолчанию одинаковы: opi.
Программная часть устройства реализована с использованием библиотек telebot C Library for Telegrambot API [6], wiringPi [7]. Кроме того, для поддержки Telegram API необходимо установить пакеты json-c и libcurl. Для сборки приложения потребуется CMake версии не ниже 2.6. Установка необходимых пакетов выполняется от имени root последовательностью команд:
Установите также wiringPi в соответствии с инструкциями, имеющимися в [7]. Для этого необходимо наличие в системе пакета git-core. Для Orange Pi SoC h3 последовательность команд для установки wiringPi следующая:
Здесь
https://github.com/zhaolei/wi ringop.git
Проверить работоспособность установленной библиотеки можно командой gpio readall.
В результате будет выведен список выводов 40-контактного разъёма миникомпьютера с их наименованиями, соответствием индексам wiringPi и действующими на них логических уровнях напряжения (рис. 1). Затем под учётной записью root нужно скопировать содержимое архива trdc2.zip в каталог /etc. В результате появится каталог /etc/trdc2.
Рис. 1. Список выводов
Отметим, что перечисленные далее действия необходимо производить в случае применения “чистой” библиотеки telebot или при желании изменить имя проекта для его дальнейшей модификации. В прилагаемом к статье архиве все необходимые изменения уже внесены. В качестве шаблона
Для работы удобно пользоваться утилитой mc (Midnight Commander), аналогом Norton Commander для Linux, дополненным необходимыми средствами выполнения функций, специфичных для этой ОС, например, установку прав доступа.
Директорию trdc2 и файл *.pc.in необходимо переименовать в соответствии с именем проекта (
В файле ./CMakeLists.txt произведите следующие изменения:
– укажите параметры проекта в строках
– в секции
добавьте строку scr/wiringPi.c
– в секции
после последней инструкции include добавьте строку include/wiringPi.h и измените параметр DESTINATION в соответствии с именем проекта;
– в файле ./test/CMakeLists.txt измените наименование бота
SET (TEST_NAME
SET (TEST_SRC
Далее командами
разместите в директории проекта поддиректорию Build, скомпилируйте и соберите проект под учётной записью root в соответствии с инструкциями, содержащимися в файле README.md из библиотеки. Файл с токеном .token потребуется разместить в директории /etc/
После запуска приложения (естественно, при наличии подключения к Интернету) снова вызовите @BotFather. Затем перейдите в пункт меню mybots-
Команда1 – Описание 1
Команда2 – Описание 2
…
и должен быть введён в одном сеансе полностью. В рассматриваемом случае список должен выглядеть, как показано в таблице. Описания команд допустимо изменять.
Таблица
Первые три команды предназначены для включения соответствующих исполнительных устройств, следующие три – для их выключения, седьмой командой выключают все устройства одновременно, а командами с восьмой по десятую запрашивают информацию о состоянии управляющих исполнительными устройствами выходов (включён или выключен). Последние три команды служат для получения информации о текущем состоянии контрольных входов.
Следует отметить, что обновление списка команд и появление кнопки “/” в строке ввода мессенджера занимает некоторое время, хотя ручной ввод команд с префиксом “/” и их обработка ботом становятся доступными сразу после их загрузки. После команды /START бот активируется, сообщает об этом и ожидает дальнейших инструкций.
С помощью сервиса @BotFather можно командами меню EditName, EditDescription, EditAbout, EditBotpic соответственно изменить имя бота, его описание, информацию о программе и установить изображение. По адресу t.me/
Рис. 2. Вид интерфейса приложения
Источник: http://www.radioradar.net/radiofan/miscellaneous/telegram_control_appliances.html