Telegram Bot
| Функция / Возможность | Плагин Notify | Moonraker Telegram Bot |
|---|---|---|
| Требует внешний сервер | – | + |
| Удалённое управление принтером | – (можно через zmod.link) | + |
| Создание таймлапса | – (можно через timelapse) | + |
| Информация о событиях печати (старт, пауза, отмена, окончание) | + | + |
| Информация от датчика филамента | + | + |
| Информация о прогрессе печати в процентах | + | + |
| Работа с несколькими принтерами через одного бота | + | – |
| Информировиние через другие сервисы | + | - |
| Splooman | - | + |
Если вам достаточно только уведомлений в Telegram - то используйте плагин Notify
Telegram Bot¶
Описание¶
Если вам достаточно только уведомлений в Telegram - то используйте плагин Notify
Суть: У нас очень медленное железо и очень мало памяти. Поэтому на железе запускать moonraker-telegram-bot нет смысла. Но мы его можем запустить на внешнем сервере. Для этого нужен любой сервер (реальный/виртуальный), до которого сможет достучаться принтер по SSH.
Новая версия автоматом создает SSH ключи (они используются для авторизации без паролей).
Ключи лежат тут:
/mod_data/ssh.pub.txt- это открытый ключ. Текст из него необходимо поместить на сервере в файл~/.ssh/authorized_keys/mod_data/ssh.key- закрытый ключ. Используется принтером для подключения к серверу.
Сами ключи вам по сути не нужны. Вам достаточно вызвать макрос ZSSH_ON передав следующие параметры:
- SSH_SERVER - ip или имя вашего сервера
- SSH_PORT - порт ssh на сервере - обычно 22
- SSH_USER - имя пользователя на ssh сервере
- VIDEO_PORT - порт который будет использоваться на сервере для приема видеоданных с камеры (8080)
- MOON_PORT - порт который будет использоваться на сервере для приема данных от moonraker (7125).
- REMOTE_RUN - команда, которую нужно вызывать на удаленном сервере
Запуск ssh съедает около 300 килобайт памяти.
Если принтер и сервер находятся в одной сети, то использовать SSH не обязательно. Читайте файл конфигурации telegram.conf Sample-config
Файл конфигурации можно скачать с принтера mod/telegram/.
Регистрация бота¶
Как зарегистрировать свой бот
- Идете к @BotFather
/newbot- Вводите любое имя, которое вам нравится
- Вводите имя бота ff5msuper_bot - обязательно _bot в конце.
- Получаете длинный ID - его нужно будет прописать в настройках бота в параметр bot_token
Развертывание сервера¶
Установка телеграмм бота одной командой на Debian¶
Если вам достаточно только уведомлений в Telegram - то используйте плагин Notify
Установка телеграмм бота одной командой на Debian:
Выполнять под пользователем root
bash <(wget --cache=off -q -O - https://github.com/ghzserg/zmod_ff5m/raw/refs/heads/1.6/telegram/telegram.sh)
Если у вас нет wget
apt update && apt install wget -y
Этот скрипт:
- Установит docker
- Скачает docker-compose.yml и telegram.conf. Sample-config
- Создаст пользователя tbot
- Напишет инструкцию по регистрации телеграмм бота и запросит
bot_token - Напишет инструкцию по получению
chat_idи запроситchat_id - Установит ff5m.sh
Добавить ssh ключ нужно будет самостоятельно
Установка телеграмм бота по шагам¶
Если вам достаточно только уведомлений в Telegram - то используйте плагин Notify
Берете файл docker-compose.yml из mod/telegram/ c принтера.
Устанавливаете docker, далее инструкция для Debian
apt update
apt upgrade -y
apt install docker.io docker-compose docker apparmor -y
Создаете каталог для бота.
mkdir bot1
cd bot1
Помещаете туда docker-compose.yml
Создаете подкаталоги
mkdir config log timelapse_finished timelapse
chmod 777 config log timelapse_finished timelapse
В каталог config помещаете telegram.conf из mod/telegram/ и правите его под себя.
Больше информации о настройке бота можно почитать тут
Из каталога bot1 запускаете
docker-compose up -d
Добавляете пользователя и даем ему право самому запускать docker-compose
useradd tbot
usermod -a -G docker tbot
Добавление ssh ключей¶
-
Заходим под пользователем
tbotsu - tbot -
Прописываем ssh ключи:
mkdir .ssh cat >.ssh/authorized_keys
Вводите открытый ключ из файла mod_data/ssh.pub.txt. Потом Ctrl + d
Запуск ZSSH на принтере¶
После этого запускаете на принтере ZSSH_ON c необходимыми параметрами.
После каждой перезагрузки ssh, будет запускаться автоматически через 3 минуты.
TimeZone¶
Отредактируйте файл docker-compose.yml
Укажите вашу временную зону. В примере файла указана TZ=Asia/Yekaterinburg
docker-compose down && docker-compose up -d или docker compose down && docker compose up -d
Spoolman¶
Отредактируйте файл docker-compose.yml
Добавьте:
spoolman:
image: ghcr.io/donkie/spoolman:latest
restart: unless-stopped
volumes:
- ./spoolman:/home/app/.local/share/spoolman
ports:
- "7912:8000"
environment:
- TZ=Asia/Yekaterinburg
Откройте порт в фаерволе если он у вас используется
iptables -I INPUT -p tcp --dport 7912 -j ACCEPT
Создайте папку spoolman
mkdir spoolman
chmod 777 spoolman
Перезапустите docker:
docker-compose down && docker-compose up -d или docker compose down && docker compose up -d
На принтере пропишите в mod_data/user.moonraker.conf
external_IP - внешний ИП сервера на котором стоит docker
У принтера ДОЛЖЕН быть доступ к этому IP
[spoolman]
server: http://external_IP:7912
sync_rate: 5
Установка и настройка для armbian (от noyhay)¶
Если вам достаточно только уведомлений в Telegram - то используйте плагин Notify
Скачиваем Debian Minimal/IOT images with Armbian с сайта https://www.armbian.com/download/
Устанавливаем Armbian на sdcard с помощью balenaEtcher с сайта https://etcher.balena.io/
Запускаем систему, создаем пароль root и нового пользователя
В дальнейшем все делаем под пользователем root
su - root
Настраиваем wi-fi, если не настроили после создания нового пользователя
sudo armbian-config
Обновляем систему
sudo apt update && sudo apt upgrade -y
Устанавливаем apparmor модуль безопасности ядра Linux
sudo apt install -y apparmor apparmor-utils
Устанавливаем бот telegram
bash <(wget --cache=off -q -O - https://github.com/ghzserg/zmod_ff5m/raw/refs/heads/1.6/telegram/telegram.sh)
Добавление ssh ключей: Заходим из под пользователя root в пользователя tbot
su - tbot
Прописываем ssh ключи:
mkdir -p .ssh
cat >.ssh/authorized_keys
Перезагружаем систему
sudo reboot
Установка бота телеграмм через helm в kubernetes (от aldiserg)¶
Если вам достаточно только уведомлений в Telegram - то используйте плагин Notify
Скачиваем helm и устанавливаем на компьютер https://helm.sh/docs/intro/install/
Клонируем репозиторий с helm чартом
git clone https://github.com/aldiserg/zmod_ff5m_tg_bot.git
-
persistence.enabled меняем на false если не планируется долговременно хранить таймлапсы
-
persistence.volumes...storageClass если будем использовать внешний сторадж для таймлапсов
-
configMapAsFile.data.telegram.conf - основной наш конфиг, тут нужно поменять поля:
Как получить bot_token и chat_id смотри тут[bot] server: 3D_printer_host:7125 bot_token: 1111111111:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA chat_id: 111111111 [camera] host: http://3D_printer_host:8080/?action=stream host_snapshot: http://3D_printer_host:8080/?action=snapshot
Установка:
Команды должны выполняться из директории в которой находится чарт
helm upgrade --install zmod_ff5m_tg_bot ./ -n default -f values.yaml
Решение проблемы с подключением принтера к серверу через SSH¶
После переустановки ОС на сервере меняются SSH host-ключи, и принтер отказывается подключаться с ошибкой:
ssh-ed25519 host key mismatch ...
Решение¶
1. Очистка сохранённых ключей на принтере¶
Подключитесь к принтеру по SSH:
ssh root@<IP_принтера> -p 22
Пароль по умолчанию:
root
Далее выполните команды:
cd ~/.ssh
rm -f know*
Это удалит старые сохранённые host-ключи сервера.
2. Пересоздание пары SSH-ключей на принтере (при необходимости)¶
Если требуется сгенерировать новую пару ключей, нужно удалить старые файлы:
cd ~/mod_data
rm -f ssh.pub.txt ssh.key
После перезапуска сервис автоматически создаст новые ключи.
Публичный ключ (ssh.pub.txt) нужно будет снова добавить на сервер в файл:
~/.ssh/authorized_keys
tbot).
3. Проверка подключения¶
После очистки ключей на принтере и обновления authorized_keys на
сервере --- запустите ZSSH макрос на принтере.
Теперь соединение должно устанавливаться без ошибок.