- Базовые навыки работы с коммандной строкой в Linux-системах.
- Наличие персонального компьютера или ноутбука (далее по тексту ПК) с ридером для SD-карт.
- Наличие WiFi-роутера, к которому есть доступ в панель управления.
- Доступ к интернету.
- Скачиваем на свой ПК образ операционной системы для Raspberry RASPBIAN STRETCH LITE. Не полную, а именно LITE версию. На момент написания инструкций версия системы была
June 2018
. - Записываем образ на micro sd флешку. Это можно сделать при помощи утилиты Etcher
Нужно беспечить себе доступ к Raspberry. Если есть в наличии USB-клавиатура и HDMI-монитор, то вставляем все вместе с флешкой в Raspberry, подаем на нее питание и работаем, как на обычном компьютере (по умолчанию юзер pi
, пароль raspberry
). У меня же была только Raspberry и домашний WiFi-роутер. С этом случае нужно:
-
Отредактировать на флешке файл
/etc/wpa_supplicant/wpa_supplicant.conf
, чтобы Rasbperry автоматически при старте подключилась к Wi-Fi. Если у Вас ПК на Windows, то просто так не получится отредактировать флешку (только boot раздел), потому что там другая фаловая система и Windows ее не видит. Исправить это поможет утилита Ext2FSD. После установки Windows увидит флешку. Открываем/etc/wpa_supplicant/wpa_supplicant.conf
, пишем туда и сохраняем:ctrl_interface=/run/wpa_supplicant update_config=1 network={ ssid="МояДомашняяСеть" psk="СуперПарольОтСети" }
-
Нужно настроить ssh для удаленного доступа к Raspberry. Есть в Raspbian простой способ. В boot разделе (который намного меньше по размеру и виден для Windows сразу, без установки Ext2FSD) создаем пустой файл
ssh
без расширений типа. Если Raspbian при загрузке видит этот файл, то активирует ssh. Источникssh.txt
-
Безопасно извлекаем флешку. Правой кнопкой мыши по boot и rootfs разделам и выбираем "Извлечь". Если вытащить без безопасного извлечения, то есть вероятность потерять изменения.
-
Вставляем флешку в Raspberry и запускаем ее.
-
Теперь на ПК нужно установить клиент для ssh. Например, MobaXterm. Бесплатной версии вполне хватит.
-
Если все прошло успешно, то в панели администрирования в WiFi-роутере должна появиться
raspberrypi
. Нужно узнать, какой у нее IP-адрес. Обычно в роутерах эта информация находится во вкладке DHCP. -
Создаем SSH-сессию в MobaXterm. Если все правильно сконфигурировано, то консоль предложит ввести логин/пароль. По умолчанию юзер
pi
, парольraspberry
. -
После входа обязательно меняем стандартный пароль командой
sudo passwd pi
. Иначе Вас легко взломают. Если сложно придумать хороший пароль, то его всегда можно сгенерировать
- Переходим в домашний каталог и там создаем директорию для будущего бота
cd /home/pi/ mkdir green-house cd green-house
- В директории для бота создаем временную папку для установки библиотек и переходим в пользователя root
mkdir install cd install sudo su
- Устанавливаем NodeJS (среда для выполнения кода JavaScript). Устанавливаем именно 8.х, не 10.х. Новая версия NodeJS пока что несовместима с библиотеками для работы с I2C (датчик влажности/температуры).
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash - apt-get install -y nodejs
- Устанавливаем PM2 (менеджер процессов)
npm i pm2 -g
- Устанавливаем BCM2835 (библиотека для работы с пинами GPIO)
Источник
wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.50.tar.gz tar xvfz bcm2835-1.50.tar.gz cd bcm2835-1.50; ./configure make make install cd ..
- Активируем интерфейс I2C (для коммуникации с датчиком температуры/влажности)
В меню переходим:
raspi-config
Interfacing options => I2C => Yes => Finish
Источник - Устанавливаем PhantomJS (библиотека для рендеринга веб-страниц. Нужна для графиков температуры и прогноза погоды)
Источник
wget https://github.com/fg2it/phantomjs-on-raspberry/releases/download/v2.1.1-wheezy-jessie-armv6/phantomjs_2.1.1_armhf.deb dpkg -i phantomjs_2.1.1_armhf.deb # С первого раза PhantomJS не установится apt --fix-broken install dpkg -i phantomjs_2.1.1_armhf.deb
- Устанавливаем MongoDB (база данных для сохранения показаний датчиков)
apt-get install -y mongodb
- Устанавливаем git (для скачивания файлов бота из репозитория)
apt-get install -y git
- Устанавливаем fswebcam (для захвата изображений из камеры)
Заметка: Если Вы используете оригинальную камеру, которая крепится при помощи шлейфа к raspberry (не USB), то ее нужно дополнительно активировать через команду
apt-get install -y fswebcam
raspi-config
. В меню переходим:Interfacing options => Camera => Yes => Finish
- Удаляем временную папку
install
cd /home/pi/green-house rm -R install
- Перезагружаем Raspberry
reboot
-
Переходим в каталог для бота
cd /home/pi/green-house
-
Скачиваем сборку бота из репозитория
git clone --depth=1 https://github.com/vavsab/telegram-green-house-build .
-
Устанавливаем NodeJS зависимости для бота
sudo npm install --unsafe-perm
-
Получаем токен от @BotFather.
Источник -
Создаем
config.js
и заменяем в нем токен на свой. Токен находится в настройкеbot.token
cp config.default.json config.json nano config.json
Заметка: чтобы выйти и сохранить в редакторе nano, нужно нажать Ctrl+X, а потом Y.
-
Запускаем бота и ставим его на автозапуск при старте Raspberry
sudo pm2 start ecosystem.config.js sudo pm2 save sudo pm2 startup
-
Проверяем по логам, что бот действительно запустился
sudo pm2 logs
-
Находим своего бота в Telegram, и проверяем, что он отвечает на сообщения.
-
Для того, чтобы открыть доступ, нужно знать идентификатор пользователя. Первое обращение пользователя бот пишет в логи:
sudo pm2 logs
-
Открываем
config.js
и назначаем себя админом, заменив идентификатор в настройкеbot.adminChatId
, а также добавляем себя к пользователям бота в настройкеbot.allowedChatIds
. Администратор может быть только один. А пользователей может быть много. Добавлять их нужно по тому же принципу. -
Перезапускаем бота, чтобы применить настройки:
sudo pm2 restart all
-
После перезапуска напишите боту - он должен отобразить свою клавиатуру: