В завершающей 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, а это уже более серьезный подход к делу... Буду рад, если напишете мысли интересных идей, что можно придумать с данными с авто...

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


  1. Wesha
    21.03.2024 00:35
    +1

    Сдаётся мне, что известной картинке нужен небольшой апдейт