В завершающей 3 части постараюсь вкратце объяснить как запустить телеграм бота на VPS. Предыдущие части доступны здесь и здесь .
Регистрируемся на любом VPS хостинге.
Можно даже бесплатно на Amazon AWS запустить VPS, но работает бесплатно сервер недолго и нужна банковская карта VISA или MASTERCARD для регистрации. Поэтому в моем случае это не вариант.
Я использовал HOSTKEY, но можно использовать абсолютно любой хостинг. После регистрации жмем Новый сервер и выбираем vm.pico за 300 рублей в месяц и нажимаем Order.
Выбираем предустановленную OS Ubuntu 22.04 и жмем Заказать.
Далее надо будет оплатить и начнется установка сервера.
После установки заходим на VPS с помощью командной строки (CMD) вводим
ssh root@1XX.1XX.XX.XX
Вводим пароль и наконец все готово к установке пакетов.
Теперь необходимо установить пакеты, которые нам потребуются.
Python как правило бывает уже предустановлен. Установим PIP, SQLITE, MC, SUPERVISOR и CRON.
sudo apt install python3-pip sudo apt install sqlite3 sudo apt install mc sudo apt install supervisor sudo apt install cron
PIP нам потребуется для установки пакетов для python, SQLITE для сохранения выгруженных с авто данных, MC (Midnight Commander) можно будет использовать для удобства работы с файлами. SUPERVISOR и CRON будем использовать для запуска Бота и Периодической выгрузки данных с Авто.
Программа для опроса BMW и записи данных в SQLite была описана в первой части, для ее работы необходимо установить на VPS следующие компоненты.
sudo pip install asyncio sudo pip install bimmer_connected
Программа Телеграм Бота была описана во второй части повествования, для ее работы необходимо будет установить на VPS следующие компоненты.
sudo pip install logging sudo pip install telebot sudo pip install http.client sudo pip install schedule sudo pip install time sudo pip install math
Код из двух предыдущих частей повествования сохраним в два файла BMW.py и BOT.py соответственно. Теперь надо скопировать созданные файлы на VPS. Я Это делаю через FileZilla. Можно использовать любой другой SFTP файловый браузер для загрузки.
Прописываем в FileZilla IP адрес сервера, логин и пароль и коннектимся к нашему серверу. Далее копируем в папку /home/ наши созданные файлы, заходим на сервер по SSH и проверяем что файлы скопировались.
Сделаем вновь скаченные файлы исполнительными c помощью команды chmod
sudo chmod +x /home/BMW.py sudo chmod +x /home/BOT.py
Работоспособность скопированных программ можно проверить испольнуя:
sudo python3 /home/BMW.py sudo python3 /home/BOT.py
В моем случае вылезла ошибка отсутствия файла базы данных /home/mydatabase.db и в файлах BMW.py и BOT.py потребовалось детально прописать адрес к Базе данных – /home/mydatabase.db . Все, после этого все завелось без проблем.
Теперь дело “за малым” – настроить Supervisor и cron.
Открываем конфигурацию cron для добавления скрипта.
sudo crontab -e
Первый раз система предложит выбрать редактор. Жмем 1, Nano нас устроит.
Добавляем следующую строчку:
*/30 * * * * python3 /home/BMW.py >> /home/BMW.log 2>&1
Нажимаем CTRL+O для сохранения и CTRL+X для выхода.
Скрипт выше означает, что BMW.py будет запускаться раз в 30 минут. Опрашивать данные чаще не рискнул.
BOT.py должен работать постоянно и если с процессом что-то случилось, то система должна перезапустить процесс. Для такой задачи удобнее использовать supervisor вместо cron.
Для этого запускаем Midnigth Commander с помощью команды mc и переходим в папку /etc/supervisor/conf.d/
С помощью Midnitgh Commander надо будет создать файл BMW.conf со следующим наполнением
[program:BMW]
command=python3 /home/BMW.py
autorestart=true
startsecs=300 ; 5 минут (60 секунд * 5 минут)
stderr_logfile=/home/BMW_err.log
stdout_logfile=/home/BMW_out.log
Далее выйти из MC и выполнить команды:
sudo supervisorctl reread sudo supervisorctl update sudo supervisorctl start all
По сей день мой бот работает без проблем. Даже удивительно, что нет сбоев и с серверов БМВ пока запросы приходят без проблем, тьфу тьфу тьфу… Иногда подумываю, допилить новые фичи и сделать его публичным. Но для публичности надо Шифровать логин и пароль от Connected drive, а это уже более серьезный подход к делу… Буду рад, если напишете мысли интересных идей, что можно придумать с данными с авто…