README.md

VK-бот для управления 3D-принтером (Klipper/Moonraker)

Полноценный бот для сообщества ВКонтакте, который позволяет управлять 3D-принтером под управлением Klipper + Moonraker: смотреть статус, температуры, управлять питанием (принтер, свет, хост), запускать печать из списка файлов, делать фото и видео (с управлением светом), получать автоматические уведомления о состоянии печати.


Оглавление

  1. Требования
  2. 🚀 Быстрая установка
  3. Установка пакетов и зависимостей
  4. Настройка сообщества ВКонтакте и получение токена
  5. Получение API-ключа Moonraker (опционально)
  6. Настройка Яндекс.Диска для видео (опционально)
  7. Настройка переменных окружения (.env)
  8. Настройка автоматических уведомлений
  9. Создание виртуального окружения и установка зависимостей
  10. Запуск бота вручную
  11. Проверка работоспособности
  12. Команды бота
  13. Автозапуск при старте системы (systemd)
  14. Удаление сервиса автозапуска
  15. Устранение неполадок
  16. Дополнительные замечания
  17. Вклад и поддержка

Требования

  • Сервер с установленным Klipper + Moonraker (например, Orange Pi, Raspberry Pi).
  • Камера, поддерживающая MJPEG-поток (например, через crowsnest или mjpg‑streamer).
  • Python 3.9+, pip, git, ffmpeg.
  • Сообщество ВКонтакте (тип «Группа» или «Публичная страница»).
  • Яндекс.Диск (опционально, для отправки видео).
  • Доступ к Moonraker API (обычно через localhost:7125).

🚀 Быстрая установка

git clone https://gitflic.ru/project/romariokk/vk_bot_klipper.git
cd vk_bot_klipper
sudo bash install.sh

Скрипт: 1. Установит системные пакеты (python3-venv, git, ffmpeg) 2. Запросит VK_TOKEN, MOONRAKER_URL, MOONRAKER_API_KEY, YANDEX_DISK_TOKEN, NOTIFY_CONFIG, CAMERA_URL, CAMERA_STREAM_URL, PRINTER_POWER_DEVICE, LIGHT_POWER_DEVICE 3. Скопирует проект в ~/vk_moonraker_bot 4. Создаст .env, виртуальное окружение и установит зависимости 5. Настроит и запустит systemd-сервис vk-moonraker-bot 6. Предложит удалить исходный клон ~/vk_bot_klipper

Примечание: после установки папку ~/vk_bot_klipper можно удалить — рабочая копия бота живёт в ~/vk_moonraker_bot. Скрипт сам предложит это сделать.

💾 Бэкап конфигурации: при удалении uninstall.sh автоматически сохраняет .env в ~/vk_bot_env_backup.txt. При следующей установке install.sh обнаружит бэкап и предложит использовать сохранённые значения — вводить токены заново не придётся. Если хотите начать с чистого листа, удалите бэкап перед установкой:

rm ~/vk_bot_env_backup.txt

Проверить статус:

sudo systemctl status vk-moonraker-bot
sudo journalctl -u vk-moonraker-bot -f

Удаление

cd ~/vk_moonraker_bot
sudo bash uninstall.sh

Скрипт: 1. Остановит и удалит systemd-сервис vk-moonraker-bot 2. Сохранит .env в ~/vk_bot_env_backup.txt (права 600 — только владелец) 3. Спросит, удалять ли директорию бота 4. Спросит, удалять ли исходный клон ~/vk_bot_klipper (если остался)

Про бэкап .env: файл создаётся автоматически, если .env существует на момент удаления. При повторной установке install.sh обнаружит его и предложит использовать сохранённые значения. Токены при показе маскируются — видны только первые символы.


Установка пакетов и зависимостей

Подключитесь к вашему серверу (например, через SSH) и выполните команды:

# Обновление системы и установка базовых пакетов
sudo apt update && sudo apt upgrade -y
sudo apt install -y python3 python3-pip python3-venv git ffmpeg

# Проверка версии Python (должна быть 3.9+)
python3 --version

Примечание: при быстрой установке через install.sh этот шаг выполняется автоматически.


Настройка сообщества ВКонтакте и получение токена

  1. Создайте сообщество (если ещё нет):

    • Перейдите на vk.com/groups → «Создать сообщество».
    • Задайте название, тип (группа или публичная страница).
  2. Включите сообщения бота:

    • Управление → Настройки для бота → «Возможности ботов» → Включить.
    • Также включите «Сообщения сообщества».
  3. Получите ключ доступа (токен):

    • Управление → Работа с API → «Ключи доступа».
    • Нажмите «Создать ключ».
    • Отметьте галочки:
      • ✅ Разрешить приложению доступ к управлению сообществом
      • ✅ Разрешить приложению доступ к сообщениям сообщества
      • ✅ Разрешить приложению доступ к документам сообщества (для отправки видео)
    • Скопируйте полученный токен (начинается с vk1.a.).

Примечание: ID сообщества (GROUP_ID) не требуется вводить в .env – бот определяет его автоматически из токена.


Получение API-ключа Moonraker (опционально)

Если в вашем moonraker.conf не настроен api_key, можно оставить поле пустым. Если нужен ключ:

# В файле конфигурации Moonraker (обычно ~/printer_data/config/moonraker.conf)
# Добавьте или раскомментируйте строку:
api_key: ваш_сложный_ключ

# После изменения перезапустите Moonraker:
sudo systemctl restart moonraker

Настройка Яндекс.Диска для видео (опционально)

Если вы хотите, чтобы бот отправлял видео (через команду «видео»), нужно настроить загрузку на Яндекс.Диск.

  1. Создайте приложение на oauth.yandex.ru:

    • Название: любое (например, 3D Printer Bot).
    • Платформа: «Веб‑сервисы».
    • Redirect URI: https://oauth.yandex.ru/verification_code (подойдёт любой).
    • Права:
      • ✅ Яндекс.Диск REST API → Запись в любом месте на Диске
      • ✅ Яндекс.Диск REST API → Доступ к информации о публичных ресурсах
    • Сохраните Client ID.
  2. Получите токен:

    • Перейдите по ссылке:

      https://oauth.yandex.ru/authorize?response_type=token&client_id=ВАШ_CLIENT_ID
      
    • Подтвердите доступ, скопируйте полученный токен (выглядит как y0_AgAAAA...).
  3. Опционально: создайте папку на Яндекс.Диске для видео и запишите её ID (по умолчанию бот загружает в корень).

Важно: если YANDEX_DISK_TOKEN не задан, команда «видео» автоматически отключается — кнопка не появится в меню, пакет yadisk не устанавливается.


Настройка переменных окружения (.env)

Создайте файл .env в корне проекта:

nano .env

Готовый шаблон — в файле .env.example. Скопируйте его и заполните:

cp .env.example .env
nano .env

Содержимое (замените на свои значения):

VK_TOKEN=vk1.a.XXXX...
MOONRAKER_URL=http://localhost:7125
MOONRAKER_API_KEY=
YANDEX_DISK_TOKEN=
NOTIFY_CONFIG=1,5,15
CAMERA_URL=http://localhost:8080/?action=snapshot
CAMERA_STREAM_URL=http://localhost:8080/?action=stream
PRINTER_POWER_DEVICE=TronxyX5SA
LIGHT_POWER_DEVICE=Light

Параметры:

Переменная Обязательна Описание
VK_TOKEN ✅ Токен сообщества (формат vk1.a....).
MOONRAKER_URL ✅ Адрес Moonraker (обычно http://localhost:7125).
MOONRAKER_API_KEY ❌ API-ключ Moonraker (если не требуется, оставьте пустым).
YANDEX_DISK_TOKEN ❌ Токен Яндекс.Диска. Нужен только для команды «видео».
NOTIFY_CONFIG ❌ Настройка автоуведомлений (формат вкл,мин,прогресс).
CAMERA_URL ❌ URL камеры для снимка. По умолчанию http://localhost:8080/?action=snapshot.
CAMERA_STREAM_URL ❌ URL камеры для видеопотока. По умолчанию http://localhost:8080/?action=stream.
PRINTER_POWER_DEVICE ❌ Имя устройства питания принтера в moonraker.conf. По умолчанию TronxyX5SA.
LIGHT_POWER_DEVICE ❌ Имя устройства питания света в moonraker.conf. По умолчанию Light.

Сохраните файл (Ctrl+O, Enter, Ctrl+X).

Бэкап конфигурации

Файл .env содержит все ваши токены. uninstall.sh автоматически сохраняет его копию в ~/vk_bot_env_backup.txt перед удалением бота. При следующей установке install.sh обнаружит бэкап и предложит использовать сохранённые значения — вводить токены вручную не потребуется.

Если хотите сохранить .env самостоятельно (например, до запуска uninstall.sh):

cp ~/vk_moonraker_bot/.env ~/vk_bot_env_backup.txt
chmod 600 ~/vk_bot_env_backup.txt

Если хотите начать с чистого листа — удалите бэкап:

rm ~/vk_bot_env_backup.txt

Безопасность: файл бэкапа имеет права 600 — читать его может только владелец (klipper). Не копируйте его в публичные папки, не отправляйте никому и не коммитьте в Git.


Настройка автоматических уведомлений

Параметр NOTIFY_CONFIG задаётся в формате включено,интервал_минут,шаг_прогресса:

  • Первое число (1 или 0): включить (1) или выключить (0) все автоуведомления (включая уведомления о запуске бота, включении/выключении принтера, начале/конце печати и периодические отчёты).
  • Второе число: интервал в минутах. Если 0 – отправка по времени отключена. Если больше 0 – бот будет каждые N минут присылать текущий статус печати.
  • Третье число: шаг прогресса в процентах. Если 0 – отправка по прогрессу отключена. Если больше 0 – бот будет присылать уведомления при достижении прогресса, кратного этому числу (например, 15, 30, 45…).

Примеры:

NOTIFY_CONFIG Описание
1,5,15 Уведомления включены, каждые 5 минут и при 15%, 30%, 45%… прогресса.
1,0,20 Только по прогрессу (20%, 40%, 60%, 80%, 100%).
1,10,0 Только каждые 10 минут (без привязки к прогрессу).
0,0,0 Все автоуведомления отключены.

Важно: бот автоматически определяет CHAT_ID (идентификатор чата для уведомлений) при первом обращении пользователя – вам не нужно указывать его вручную.


Создание виртуального окружения и установка зависимостей

# В папке проекта
python3 -m venv venv
source venv/bin/activate   # активируем окружение

# Устанавливаем необходимые библиотеки
pip install --upgrade pip
pip install vkbottle python-dotenv aiohttp

Если планируете использовать видео — дополнительно:

pip install yadisk requests

Примечание: при быстрой установке через install.sh этот шаг выполняется автоматически. Пакет yadisk ставится только если задан YANDEX_DISK_TOKEN.


Запуск бота вручную

# Убедитесь, что находитесь в папке проекта и активировали venv
source venv/bin/activate
python bot.py

В терминале появится:

INFO:__main__:Бот запущен
INFO:vkbottle:Starting BotPolling for <API ...>

Теперь бот работает и отвечает на команды в сообществе.


Проверка работоспособности

Напишите в сообщество «начать» – бот отправит приветствие и клавиатуру.

Проверьте основные команды:

  • «статус» – фото + информация о принтере (температуры, вентиляторы, прогресс печати).
  • «файлы» – список G-код файлов, кнопки для запуска печати.
  • «🔌» – подменю управления питанием принтера, света и выключения хоста.
  • «видео» (если настроен Яндекс.Диск) – записывает 5-секундное видео, загружает на Диск, возвращает ссылку.

Команды бота

Все команды отправляются текстом в чат с сообществом. Также доступны клавиатуры с кнопками.

Главное меню (кнопки)

Кнопка Действие
статус Отправить фото с камеры (с включением/выключением света) и подробный отчёт: состояние принтера, прогресс печати (если идёт), температуры экструдера и стола, температуру MCU и хоста, состояния вентиляторов (обдув модели, экструдера, драйверов, корпусный), состояние устройств питания, сообщение с дисплея (M117).
🔌 Перейти в подменю управления питанием (принтер, свет, хост).
файлы Показать список последних 10 G-код файлов с датами модификации. Для каждого файла формируется кнопка «печать <имя>».
видео (если настроен Яндекс.Диск) Записать 5-секундное видео с камеры (с включением света за 2 секунды до записи), загрузить на Яндекс.Диск (перезапись файла video.mp4) и отправить прямую ссылку на скачивание.

Системное подменю (кнопки)

Кнопка Действие
🔌 Принтер Включить/выключить питание принтера. Запрашивает подтверждение.
💡 Свет Включить/выключить свет. Запрашивает подтверждение.
⚡ Выключить хост Выключить хост (Orange Pi). Запрашивает подтверждение.
◀️ назад Вернуться в главное меню.

Кнопки управления печатью (появляются в главном меню, когда печать активна или на паузе)

Кнопка Действие
⏸ Пауза / ▶ Возобновить Приостановить или возобновить текущую печать. Запрашивает подтверждение.
🛑 Стоп Остановить печать. Запрашивает подтверждение.

Дополнительные команды (текстовые)

Команда Действие
начать, старт, привет, start, Начать Показать главное меню с полным приветствием.
назад Вернуться в главное меню из любого подменю.
печать <имя_файла> (Не вводится вручную) – кнопка, создаваемая для каждого файла. Запускает печать выбранного файла после подтверждения.

Автоматические уведомления (если включены)

  • При запуске бота – сообщение о готовности.
  • При включении/выключении принтера (если действие произошло не через бота).
  • При начале, успешном завершении, ошибке или отмене печати.
  • Периодически (по времени или прогрессу) – статус печати с прогрессом, временем, температурами.

Автозапуск при старте системы (systemd)

Примечание: при быстрой установке через install.sh systemd-сервис создаётся и запускается автоматически. Раздел ниже — для ручной установки.

Чтобы бот запускался автоматически после перезагрузки хоста, создайте systemd-сервис.

  1. Создайте файл сервиса:

    sudo nano /etc/systemd/system/vk-moonraker-bot.service
    
  2. Вставьте содержимое (поправьте пути и пользователя, если нужно):

    [Unit]
    Description=VK Bot for Moonraker
    After=network.target moonraker.service
    Wants=moonraker.service
    
    [Service]
    Type=simple
    User=klipper
    Group=klipper
    WorkingDirectory=/home/klipper/vk_moonraker_bot
    Environment="PATH=/home/klipper/vk_moonraker_bot/venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
    ExecStart=/home/klipper/vk_moonraker_bot/venv/bin/python /home/klipper/vk_moonraker_bot/bot.py
    Restart=on-failure
    RestartSec=10
    
    [Install]
    WantedBy=multi-user.target
    
  3. Перезагрузите systemd и включите сервис:

    sudo systemctl daemon-reload
    sudo systemctl enable vk-moonraker-bot.service
    sudo systemctl start vk-moonraker-bot.service
    
  4. Проверьте статус:

    sudo systemctl status vk-moonraker-bot.service
    
  5. Просмотр логов:

    sudo journalctl -u vk-moonraker-bot -f
    

Управление сервисом

Бот будет запускаться автоматически после сети и Moonraker. При падении сервис будет перезапускаться через 10 секунд.

Для управления используйте стандартные команды systemctl:

  • Остановить:

    sudo systemctl stop vk-moonraker-bot
    
  • Запустить:

    sudo systemctl start vk-moonraker-bot
    
  • Перезапустить:

    sudo systemctl restart vk-moonraker-bot
    
  • Отключить автозапуск:

    sudo systemctl disable vk-moonraker-bot
    

Удаление сервиса автозапуска (при необходимости)

sudo systemctl stop vk-moonraker-bot
sudo systemctl disable vk-moonraker-bot
sudo rm /etc/systemd/system/vk-moonraker-bot.service
sudo systemctl daemon-reload

Примечание: для полного удаления бота (вместе с директорией и .env) используйте uninstall.sh — см. раздел «Быстрая установка». Он создаст автобэкап .env перед удалением.


Устранение неполадок

Ошибки при установке

Проблема Причина Решение
bash: /dev/fd/63: No such file or directory Конструкция <(curl ...) не работает под sudo — root-процесс не видит файловый дескриптор, созданный в пользовательской оболочке Используйте установку через git clone (см. раздел «Быстрая установка») или передайте скрипт через конвейер: curl -s ... \| sudo bash
404 Not Found при скачивании install.sh GitFlic не поддерживает raw-ссылки вида raw/branch/master/... Клонируйте репозиторий: git clone https://gitflic.ru/project/romariokk/vk_bot_klipper.git — затем запустите sudo bash install.sh из папки проекта
bash: install.sh: No such file or directory Файл не скачался или скачался пустым (0 байт) Проверьте: ls -la install.sh. Если размер 0 — используйте git clone, а не curl
Установка прерывается на apt-get install Нет доступа к репозиториям Debian или нет интернета Проверьте sudo apt update вручную, убедитесь, что сеть работает
install.sh не предлагает использовать бэкап .env Файл ~/vk_bot_env_backup.txt не найден или содержит пустой VK_TOKEN Проверьте: ls -la ~/vk_bot_env_backup.txt. Если файла нет — введите параметры вручную. Если VK_TOKEN пуст — скрипт автоматически переключится на ручной ввод

Ошибки при запуске сервиса

Проблема Причина Решение
RuntimeError: no running event loop В bot.py используется bot.run_forever() вместе с asyncio.create_task() — в vkbottle 4.x такой порядок не работает Обновите bot.py — последний блок должен быть:
async def main():
...
await bot.run_polling()
if __name__ == "__main__":
asyncio.run(main())
TypeError: 'list' object is not callable при @bot.loop_wrapper.on_startup API loop_wrapper устарел и удалён в vkbottle 4.x Уберите декоратор @bot.loop_wrapper.on_startup, используйте asyncio.run(main()) с await bot.run_polling()
ModuleNotFoundError: requests is not installed yadisk требует requests для HTTP-сессий, но не тянет его как зависимость Установите: sudo -u klipper /home/klipper/vk_moonraker_bot/venv/bin/pip install requests, затем sudo systemctl restart vk-moonraker-bot
Сервис падает с status=1/FAILURE и перезапускается по кругу Любая из ошибок выше Смотрите логи: sudo journalctl -u vk-moonraker-bot -n 50 --no-pager. После исправления сбросьте счётчик: sudo systemctl reset-failed vk-moonraker-bot && sudo systemctl restart vk-moonraker-bot
restart counter is at N и сервис не поднимается systemd ушёл в защиту после нескольких падений Выполните sudo systemctl reset-failed vk-moonraker-bot, затем sudo systemctl restart vk-moonraker-bot
Сервис active, но бот не отвечает в ВК Токен невалидный или у сообщества не включены нужные опции Проверьте: 1) в ВК включены «Сообщения сообщества» и «Возможности ботов»; 2) токен имеет права на управление сообществом и сообщения; 3) в логах нет ошибок авторизации

Ошибки взаимодействия с Moonraker

Проблема Причина Решение
Moonraker error 503: Klippy Host not connected Klipper потерял связь с платой принтера: принтер выключен, Klipper не запущен, или прошивка MCU не загружена Проверьте sudo systemctl status klipper и питание принтера. Если принтер выключен — это нормальное поведение, бот продолжит работу без данных Klipper
Moonraker вернул 401 или 403 Включена авторизация Moonraker, но MOONRAKER_API_KEY пустой или неверный Скопируйте api_key из moonraker.conf и укажите в .env, затем перезапустите сервис
Connection refused при обращении к Moonraker Moonraker не запущен или слушает другой адрес Проверьте sudo systemctl status moonraker и MOONRAKER_URL в .env. Убедитесь, что curl работает: curl http://localhost:7125/server/info
Бот не находит устройство питания Имя устройства в .env не совпадает с moonraker.conf Проверьте секцию [power ...] в moonraker.conf. Обновите PRINTER_POWER_DEVICE и LIGHT_POWER_DEVICE в .env, перезапустите сервис

Ошибки камеры и фото

Проблема Причина Решение
photo is undefined в логах Разовая неудача VK API при загрузке фото. Бот повторяет попытку до 3 раз Фото обычно всё равно доходит со второй попытки. Если хочется чистых логов — замените logger.warning на logger.debug в status_handler (функция в bot.py)
Фото не отправляется совсем Камера не отдаёт снимок по CAMERA_URL Проверьте: curl -s -o /tmp/test.jpg -w "HTTP %{http_code}, размер %{size_download}\n" "http://localhost:8080/?action=snapshot". Если размер 0 или ошибка — проблема в камере (crowsnest / mjpg-streamer)
Camera returned 404 Неверный URL в CAMERA_URL Проверьте адрес камеры через браузер. Обновите CAMERA_URL в .env, перезапустите сервис
crowsnest не запущен Сервис камеры упал sudo systemctl status crowsnest, затем sudo systemctl restart crowsnest

Ошибки видео и Яндекс.Диска

Проблема Причина Решение
ModuleNotFoundError: No module named 'yadisk' Пакет не установлен, потому что при установке не задали YANDEX_DISK_TOKEN Установите вручную: ./venv/bin/pip install yadisk requests, перезапустите сервис
Ошибка 403 при публикации на Яндекс.Диске У приложения нет права Доступ к информации о публичных ресурсах Зайдите в oauth.yandex.ru, откройте приложение, добавьте нужное право, получите новый токен
ffmpeg error при записи видео ffmpeg не установлен или поток камеры недоступен Проверьте ffmpeg -version и доступность CAMERA_STREAM_URL. Установите: sudo apt install ffmpeg
Неверный OAuth-токен Токен Яндекс.Диска просрочен или отозван Получите новый токен по инструкции из README, обновите .env, перезапустите сервис

Ошибки печати и управления принтером

Проблема Причина Решение
Бот не запускает печать Принтер выключен, Klipper не подключён, или файл не найден Проверьте статус принтера командой «статус». Убедитесь, что Klipper запущен и видит MCU
Принтер выключен, печать невозможна В коде есть проверка питания устройства PRINTER_POWER_DEVICE — если оно off, печать запрещена Это корректное поведение. Включите принтер через подменю «🔌»
Печать не останавливается кнопкой «Стоп» Проблема связи с Moonraker Проверьте логи: sudo journalctl -u vk-moonraker-bot -n 30. Убедитесь, что Moonraker отвечает: curl http://localhost:7125/printer/print/cancel -X POST
Дублируются уведомления при включении/выключении принтера через бота Механизм подавления работает на основе 15-секундной задержки — иногда её не хватает Если дублирование регулярное — увеличьте значение в bot.py в переменной last_power_action_time (замените 15 на 20 или 30)

Ошибки уведомлений

Проблема Причина Решение
Уведомления не приходят chat_id.txt не создан, потому что ни один пользователь не написал боту «начать» Напишите боту «начать» — он сохранит ваш CHAT_ID и начнёт отправлять уведомления
Приходит только первое уведомление, дальше тишина В коде использовался random_id=0 — VK API требует уникальный random_id для каждого сообщения Убедитесь, что в bot.py в функции send_notification есть random_id=random.randint(1, 2**31 - 1)
NOTIFY_CONFIG не работает, все уведомления молчат Значение в .env содержит лишние символы (кавычки, текст после чисел) Формат должен быть строго 1,5,15 — три числа через запятую, без кавычек и пробелов. Проверьте: grep NOTIFY_CONFIG .env

Права и директории

Проблема Причина Решение
Permission denied при создании chat_id.txt Скрипт запускается от пользователя, у которого нет прав в директории бота Убедитесь, что владелец директории — тот же пользователь, от которого работает сервис: sudo chown -R klipper:klipper ~/vk_moonraker_bot
venv/bin/python: No such file or directory Директория venv не создалась или была удалена Пересоздайте: cd ~/vk_moonraker_bot && python3 -m venv venv && ./venv/bin/pip install vkbottle python-dotenv aiohttp, перезапустите сервис
.env с токенами попал в Git Файл не был добавлен в .gitignore перед первым коммитом Удалите из индекса: git rm --cached .env, добавьте .env в .gitignore, закоммитьте. Обязательно перевыпустите все токены — они считаются утекшими

Полезные команды для диагностики

# Статус сервиса
sudo systemctl status vk-moonraker-bot

# Последние 50 строк логов
sudo journalctl -u vk-moonraker-bot -n 50 --no-pager

# Логи в реальном времени
sudo journalctl -u vk-moonraker-bot -f

# Проверить конфигурацию .env
sudo cat /home/klipper/vk_moonraker_bot/.env

# Проверить бэкап .env
ls -la ~/vk_bot_env_backup.txt

# Проверить доступность Moonraker
curl -s http://localhost:7125/server/info | head -20

# Проверить камеру (снимок)
curl -s -o /tmp/test.jpg -w "HTTP %{http_code}, размер %{size_download}\n" "http://localhost:8080/?action=snapshot"

# Проверить поток камеры (первые 2 секунды)
timeout 2 curl -s "http://localhost:8080/?action=stream" -o /dev/null && echo "OK" || echo "FAIL"

# Перезапустить сервис с чистого состояния
sudo systemctl reset-failed vk-moonraker-bot
sudo systemctl restart vk-moonraker-bot

# Проверить версию vkbottle
/home/klipper/vk_moonraker_bot/venv/bin/pip show vkbottle

Совет: если что-то не работает — сначала посмотрите логи сервиса (sudo journalctl -u vk-moonraker-bot -n 50 --no-pager). В 90% случаев причина видна прямо в первых строках traceback.


Дополнительные замечания

  • Имена устройств питания (PRINTER_POWER_DEVICE, LIGHT_POWER_DEVICE) должны совпадать с именами в moonraker.conf (секции [power ...]). Задаются в .env.
  • Камера: рекомендуется использовать crowsnest. В конфиге crowsnest задайте mode: mjpeg и port: 8080. URL-адреса камеры задаются через CAMERA_URL и CAMERA_STREAM_URL в .env.
  • Безопасность: не публикуйте файл .env и не передавайте токены третьим лицам. Файл .env уже в .gitignore. Бэкап ~/vk_bot_env_backup.txt также имеет права 600 — не копируйте его в публичные места.
  • Автоуведомления: настройка NOTIFY_CONFIG позволяет гибко управлять уведомлениями без изменения кода.
  • Файл chat_id.txt создаётся автоматически рядом с bot.py при первом обращении пользователя – не удаляйте его, если хотите сохранить канал уведомлений.
  • Бэкап конфигурации сохраняется автоматически при удалении бота через uninstall.sh и подхватывается при следующей установке через install.sh.

Вклад и поддержка

Если вы нашли ошибку или хотите предложить улучшение, создайте Issue в репозитории проекта.


Приятного использования!

⬆️ Оглавление

Описание
Вк бот для удалённого мониторинга и контроля 3д принтера на основе klipper
Конвейеры
0 успешных
0 с ошибкой
Разработчики