Проекти 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». Далі все по інструкції.

Читайте також:
Як користуватися Ватсап на телефоні Андроїд — Як встановити WhatsApp на різних пристроях

Проекти raspberry Telegram — Telegram bot Raspberry pi. Як зробити свого бота?

У кінцевому підсумку, після того як ви придумаєте ім’я контакту та унікальне ім’я і успішно все створите, у вас з’явиться TOKEN. Нікому не кажіть його і не пересилайте, ви будете використовувати його в якості ключа авторизації у ваших програмах. При бажанні можете подивитися інші доступні команди, всі вони починаються з «/». Наприклад, ви можете створити аватарку вашу роботу.

І як мені Telegram-бота написати?

Терпіння, мій хлопчик, і их_теозавры стануть нашими! Для початку хотів би поділитися дуже простим і зручним додатком-помічником для роботи з API Telegram — Telepot Також для реалізації всіх можливостей потрібно Python3.5. Як встановити Python3.5 ви можете прочитати в окремій статті. Після того як Python3.5 встановлено, ставимо Telepot з pip:

Після установки програми переконайтеся, що >>> import telepot проходить успішно у python3.5

Більше коду богу коду!

У мережі бачив достатньо прикладів ботів, але, якщо чесно, більша частина не красива з точки зору користувача. Дуже часто людям доводиться писати в телефоні команди, а не кликати. Навіть якщо ви бачили приклади з кліками, найчастіше вони зі слешами на початку, які, м’яко кажучи, дратують людей. У даному прикладі ми спробуємо це виправити. Будемо робити ось такі красиві клавіатури і кнопок зі своїм вмістом і логікою роботи, як на картинці нижче:

Проекти raspberry Telegram — Telegram bot Raspberry pi. Як зробити свого бота?

В роботі будуть присутні блок управління реле, блок з відображенням поточної інформації використовуваних датчиків (вологість/температура/вода/зворотній зв’язок від реле) і блок налаштувань сигналізацій. Останній блок — це такий же блок управління, тільки не датчиками, а програмами або їх параметрами. Так само хочу відзначити, що буде налаштована фільтрація по дозволеним персональним id телеграма. Дана навішування дозволить мати доступ до боту тільки вам та вашим близьким. Якщо коротко, то це найнеобхідніші приклади роботи бота в різних проектах. Довільні клавіатури можуть містити текст, виклик контакту, локації і ще багато чого. «Чарівні сірі кнопки» мають не менший функціонал. Якщо ви хочете більш докладно розібратися з можливостями елементів — зверніться до офіційної документації api.

Поїхали. Створюємо тіло бота:

Робимо файл виконуваним:

Вам необхідно в тілі бота замінити дозволені айдишники зі значенням None на свої, а також записати в TOKEN свої дані, отримані при реєстрації бота. Як дізнатися свій id Telegram?. Айдишник можна дізнатися, просто запустивши бота і натиснувши на старт. Ви побачите діагностичну інформацію з вашим айдишником на екрані консолі.

Читайте також:
Де завантажити звуки Аськи(ICQ) на СМС, для рінгтона, для повідомлень

Але перед тим як запускати бота, переконайтеся, що всі необхідні директорії і файли з bot.py представлені в системі! (або переписати сценарій під себе). Для того щоб ви краще розуміли, як і що повинно працювати і навіщо всі файли і команди нижче, намалюю маленьку схему. Схема не претендує на звання кращої, вона лише відображає всі в спрощеному вигляді:

Проекти raspberry Telegram — Telegram bot Raspberry pi. Як зробити свого бота?

Тепер опишемо все більш детально. Директорія для стану сигналізацій і файл з критичною температурою:

Сценарій включення реле (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:

Перевіряємо, як це працює. Запускаємо сценарій і на вхід подаємо довільну рядка в лапках:

Читайте також:
Як поставити WhatsApp на android — Як встановити WhatsApp на планшет

Проекти raspberry Telegram — Telegram bot Raspberry pi. Як зробити свого бота?

Радіємо! Справа залишається за малим: треба написати невеликі сигналізації, які б відсилали до бота інформацію про події, якщо такі трапилися. Нам потрібно написати цикли, які будуть крутитися завжди і періодично перевіряти, як справи на наших датчиках.

Пишемо свої маленькі «сигналізації»

Загальний принцип такий: обертаємо нескінченний цикл, що відповідає за датчик, який буде періодично знімати показання, і якщо програма виявить, що свідчення проблемні, буде відправляти нам повідомлення, скажімо, раз в 10 хвилин (насправді краще так не робити, бо дуже настирливо отримувати аварійні повідомлення, а написати так, щоб відсилання відбувалася один раз і потім тільки тоді, коли стан знову стане нормальним. Але стаття не про це. Тому приклад максимально спрощений.

Не забуваємо зробити сценарій виконуваним:

Останній скрипт, який ми не вказали і який повинен бути присутнім, — це скрипт з контролю объемника. Ми скористаємося перериваннями бібліотеки gpio і будемо чекати, коли станеться рух, і тільки тоді скажемо про це нашому треду з multialert.py:

Додаємо біт виконання:

Обьемник підключений на 16 пін. При запуску цього сценарію ви отримаєте відповідь, що рух є тільки тоді, коли ваш обьемник дійсно спрацює. Після цього програма завершиться.

Додавання бота Telegram та інших сценаріїв в автозавантаження

Знаючі люди, звичайно, можуть написати свої демонів (жарт). Але якщо ви хочете, щоб бот і сигналізації всього лише постійно працювали після завантаження системи, можна додати всі в /etc/rc.local:

Підсумок

У статті надано досить докладний туторіал, як зробити свого бота, який працює з різними пристроями. Причому виглядає це досить непогано, все кликабельно і претендує на життя. Додатково описані процеси створення сигналізацій і простих посилань повідомлень з системи. Все в сукупності може тягнути на невеликий проект, АЛЕ не варто радіти завчасно! Перед тим як пустити це в справу в автономне плавання, програмно варто подбати про коректність всіх вхідних даних, протестувати: а що буде, якщо у вас немає інтернету, а якщо датчик перегорить , якщо провід зжере кіт, якщо… якщо, якщо. Можна вважати цей матеріал лабораторних, але дуже близьким до реального.

Усім завзяття в роботі, відсутності коротких замикань і да прибуде з вами сила ? Підписуйтесь на блозі, обіцяю потихеньку викладати такі ж функціональні та корисні статті.

Поділитися посиланням:

Схоже

Анастасія Радченко/ автор статті

Давно вже працюю в всесвітній павутині, і люблю ділитися з людми корисними порадами.

Поділитися з друзями
Корисні поради - Вказівка