Raspberry Pi + Telegram +@Dacha_bot = Умный дом

2
Всем привет!
Хочу рассказать о своём опыте эксплуатации микрокомпьютера Raspberry Pi.

Появилось это чудо в нашей семье пару лет назад. Как и многие я начал знакомство с малиной с мигания светодиодами, потом “торентокачалка”, робот машинка и т.д. Обо всех этих проектах написано много и подробно. Даже думать не нужно копируй себе команды и скрипты в терминал и оно само все начинает работать!


Но всегда меня не покидало желание сделать что нибудь своё, а главное полезное. Было решено автоматизировать контроль температуры на нашей загородной даче. В зимний сезон мы любим семьей на выходные съездить отдохнуть. Но для того, чтобы приехать в тёплый дом необходимо за сутки поехать и включить обогреватели. Что не очень удобно. Не спорю, что есть на рынке уже готовые решения схожих задач, но мне хотелось именно своё.
Итак, решено! Будем делать умный дом, а точнее умную дачу! Но для этого нужно научить малину понимать мои команды, то есть написать программу. Нужно сказать, что на тот момент из языков программирования на ум приходил только Бейсик, и то благодаря веселым урокам информатики в школе. Изучив отзывы коллег по цеху, я решил писать код на языке Питон. Для изучения этого языка пришлось пройти начальный онлайн курс обучения.
У меня имелся 3G модем huawei E3131. Подружился он с малиной без проблем с помощью программы: usb-modeswitch. Подробнее о базовых настройках и подключении 3G модема есть много информации в сети. Вот здесь например (http://robocraft.ru/blog/electronics/3131.html).
А вот как общаться с малиной на расстоянии? Предстояло подумать. И самым подходящим, удобным и простым оказался мессенджер Telegram. Дело в том, что с июня 2015 года в Telegram появилась возможность создания ботов. Боты- специальные аккаунты в Telegram, созданные для того, чтобы автоматически обрабатывать и отправлять сообщения. Вот такого бота-робота я и решил создать на своей малине.
Первое что нужно сделать это установить Telegram на свой компьютер или смартфон и получить токен (ключ) на своего нового робота. Для этого просто напишите пользователю @BotFather в Telegram и следуйте его инструкциям. Вот здесь подробней на русском языке :https://tlgrm.ru/docs/bots.
Я не буду подробно останавливаться на описании первоначальных настроек на Raspberry Pi. Об этом много информации в сети.
Установим на малину фреймворк (github.com/nickoala/telepot) для создания ботов на Telegram Bot API:

sudo pip install telepot
sudo pip install telepot --upgrade # UPGRADE

Далее создадим файл с именем dacha.py:
nano dacha.py

и напишем в нем этот скрипт:

import time
import telepot
import RPi.GPIO as GPIO

def getTemperature():

filepath = '/sys/devices/w1_bus_master1/28-0114504f0cff/w1_slave'
f = open(filepath, 'r')
data = f.read()
f.close()
return float(data[data.find('t=')+2:])/1000

def handle(msg):

chat_id = msg['from']['id']
command = msg['text']
if command == '/on':
GPIO.setmode(GPIO.BOARD)
GPIO.setup(11, GPIO.OUT)
GPIO.output(11,1)
bot.sendMessage(chat_id,str('Okey On!'))

elif command == '/off':
GPIO.setmode(GPIO.BOARD)
GPIO.setup(11, GPIO.OUT)
GPIO.output(11,0)
GPIO.cleanup()
bot.sendMessage(chat_id,str('Okey Off!'))

elif command == '/temp':
bot.sendMessage(chat_id,'temp: '+ str(getTemperature())+' C')

elif command == '/time':
bot.sendMessage(chat_id,'time now: ' + str(datetime.datetime.now()))

elif command == '/start':
bot.sendMessage(chat_id, str('Hi! I am Dacha!'))

bot = telepot.Bot('СЮДА ВСТАВЛЯЕМ ВАШ ТОКЕН')
bot.message_loop(handle)

while 1:
time.sleep(10)

Функция чтения температуры с датчика DS18B20: getTemperature(). Показана для примера, как можно узнавать температуру. Она у вас работать не будет, так как номер датчика уникальный и у вас он другой. Как подключить датчик температуры здесь (http://www.projects.privateeyepi.com/home/temperature-sensor-project-using-ds18b20)
Запускаем своего бота командой:

sudo python dacha.py

Чтобы бот запускался при перезагрузке автоматически вводим:

sudo nano /etc/rc.local

и пропишем команду

python dacha.py

сохраняем изменения и выходим. Перезагружаем.
заходим в приложение Telegram на своем компьютере или смартфоне. Находим своего бота по имени, которое ему сами присвоили и посылаем команду /start. И должны получить от него: Hi! I am Dacha!
Команда /on подает на соответствующий вывод GPIO 3.3B. Тем самым мы можем замкнуть реле и включить обогреватели, или котел, или ворота открыть, или еще что-нибудь. На команду /temp робот пришлет температуру. Команда /time вернет точное время (не очень полезная функция, так для примера). Для удобства ввода команд можно сделать клавиатуру с командами. Я думаю, что это самый доступный способ сделать «Умный дом». Все ограничено лишь вашей фантазией. Мой робот носит имя @Dacha_bot. Заходите. Есть также планы сделать управляемый полив огорода. Пишите. Всем удачи!
  • 0

Комментарии (3)

0
Статья очень заинтересовала… Надо бы попробовать. Малинка третья приедет скоро, ох и планов на нее уже) вторые малинки три штуки дома уже во всю работают)
0
Подробнее о базовых настройках и подключении 3G модема есть много информации в сети.
Много про это в сети, только адекватно разжевать никто не может
0
Добрый день. Хорошоя статья. Не могли бы вы пожалуйста поделится кодом для меню в телеграм?(клавиатура или меню, незнаю как назвать) Или хотябы направить в правильном направлении)))
Заранее благодарю
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.