Telegramm-Bot
| Funktion / Feature | Notify Plugin | Moonraker Telegram Bot |
|---|---|---|
| Erfordert externen Server | - | + |
| Fernsteuerung des Druckers | - (kann über zmod.link erfolgen) | + |
| Zeitraffer erstellen | - (möglich über timelapse | + |
| Ereignisinformationen drucken (Start, Pause, Abbruch, Ende) | + | + |
| Filamentsensor-Informationen | + | + |
| Drucken von Fortschrittsinformationen in Prozent | + | + |
| Arbeiten mit mehreren Druckern über einen Bot | + | - |
| Informieren durch andere Dienste | + | - |
| Splooman | - | + |
Info
Wenn Sie nur Telegram-Benachrichtigungen benötigen, dann verwenden Sie das Notify-Plugin.
Telegram Bot¶
Beschreibung¶
Grundidee: Unsere Hardware ist sehr langsam und verfügt über begrenzten Speicher. Daher ist es unpraktisch, den Moonraker-Telegram-Bot direkt auf der Hardware auszuführen. Wir können ihn jedoch auf einem externen Server betreiben. Dazu benötigen wir einen beliebigen Server (physisch oder virtuell), den der Drucker per SSH erreichen kann.
Die neue Version generiert automatisch SSH-Schlüssel (für die passwortlose Authentifizierung).
Die Schlüssel können hier gefunden werden:
/mod_data/ssh.pub.txt- dies ist ein öffentlicher Schlüssel. Der Text dieses Schlüssels sollte auf dem Server in der Datei~/.ssh/authorised_keysabgelegt werden/mod_data/ssh.keyist der private Schlüssel. Er wird vom Drucker verwendet, um sich mit dem Server zu verbinden.
Sie brauchen die Schlüssel selbst nicht. Sie müssen nur das Makro ZSSH_ON mit den folgenden Parametern aufrufen:
- SSH_SERVER - IP oder Name des Servers
- SSH_PORT - ssh-Port des Servers - normalerweise 22
- SSH_USER - Benutzername auf dem ssh-Server
- VIDEO_PORT - Port, der auf dem Server verwendet wird, um Videodaten von der Kamera zu empfangen (8080)
- MOON_PORT - Port, der auf dem Server verwendet wird, um Daten von moonraker zu empfangen (7125).
- REMOTE_RUN - Befehl, der auf dem Remote-Server aufgerufen werden soll
Die Ausführung von ssh verbraucht etwa 300 Kilobyte Speicherplatz.
Wenn sich Drucker und der Server im selben Netzwerk befinden, ist die Verwendung von SSH nicht erforderlich. Lesen Sie die telegram.conf Konfigurationsdatei Hier ist eine Sample-config.
Die Konfigurationsdatei kann vom Drucker mod/telegram/ heruntergeladen werden.
Registrieren Sie den Bot¶
Wie Sie Ihren Bot registrieren
- gehen Sie zu @BotFather.
/newbot.- Gib einen beliebigen Namen ein
- Geben Sie den Namen des Bot ein (muss auf
_botenden, z. B.ff5msuper_bot) - Sie erhalten eine lange ID — tragen Sie diese in den Einstellungen beim Parameter
bot_tokendes Bots ein.
Server-Bereitstellung¶
Telegram Bot mit einem Befehl unter Debian installieren¶
Wenn Sie nur Telegram-Benachrichtigungen benötigen, dann verwenden Sie das Notify-Plugin.
Installieren Sie Telegram bot mit einem Befehl unter Debian:
Unter dem Benutzer root ausführen
bash <(wget --cache=off -q -O - https://github.com/ghzserg/zmod_ff5m/raw/refs/heads/1.6/telegram/telegram.sh)
Wenn Sie wget nicht haben
apt update && apt install wget -y
Dieses Skript:
- Docker installieren
- Laden Sie docker-compose.yml und telegram.conf herunter. Beispielkonfiguration
- Erstellt einen
tbot-Benutzer - Führt Sie durch die Bot-Registrierung und fragt den
bot_tokenab - Hilft Ihnen, die
chat_idzu ermitteln und fragt diese ab - Wird ff5m.sh installieren.
Sie müssen den ssh-Schlüssel selbst hinzufügen.
Telegram Bot schrittweise installieren¶
Wenn Sie nur Benachrichtigungen in Telegram benötigen, dann verwenden Sie das Notify-Plugin
- Kopieren Sie die docker-compose.yml aus dem Verzeichnis
mod/telegram/des Druckers. -
Installieren Sie Docker (Anleitung für Debian):
apt update apt upgrade -y apt install docker.io docker-compose docker apparmor -y -
Erstellen Sie ein Verzeichnis für den Bot:
mkdir bot1 cd bot1 -
Kopieren Sie die docker-compose.yml in das erstellte Verzeichniss.
-
Erstellen Sie die Unterverzeichnisse:
mkdir config log timelapse_finished timelapse chmod 777 config log timelapse_finished timelapse -
Kopieren Sie die telegram.conf aus dem Ordner mod/telegram/ in das Konfigurationsverzeichnis und passen Sie es an Ihre Bedürfnisse an.
Weitere Informationen zur Konfiguration des Bots können Sie hier nachlesen.
-
Starten Sie den Bot:
docker-compose up -d -
Erstellen Sie einen Benutzer und vergeben Sie Berechtigungen:
useradd tbot usermod -a -G docker tbot
Hinzufügen von ssh-Schlüsseln¶
-
Melden Sie sich als Benutzer
tbotan.su - tbot -
SSH-Schlüssel hinzufügen:
mkdir .ssh cat >.ssh/authorised_keys
Fügen Sie den öffentlichen Schlüssel (Public Key) aus mod_data/ssh.pub.txt ein und drücken Sie anschließend Strg + D.
ZSSH auf dem Drucker starten¶
Führen Sie dann ZSSH_ON auf dem Drucker mit den notwendigen Parametern aus.
Nach jedem Neustart wird ssh nach 3 Minuten automatisch gestartet.
Spoolman¶
Bearbeiten Sie die Datei docker-compose.yml
Hinzufügen:
spoolman:
image: ghcr.io/donkie/spoolman:latest
restart: unless-stopped
volumes:
- ./spoolman:/home/app/.local/share/spoolman
ports:
- "7912:8000"
environment:
- TZ=Asia/Yekaterinburg
Öffnen Sie den Port in Ihrer Firewall, wenn Sie diese verwenden.
iptables -I INPUT -p tcp --dport 7912 -j ACCEPT
Erstellen Sie das spoolman-Verzeichnis:
mkdir spoolman
chmod 777 spoolman
Starten Sie Docker neu:
docker-compose down && docker-compose up -d
docker compose down && docker compose up -d
Fügen Sie auf dem Drucker in der Datei mod_data/user.moonraker.conf Folgendes hinzu:
external_IP - die externe IP des Servers, auf dem docker läuft
Der Drucker MUSS Zugriff auf diese IP haben.
[spoolman]
server: http://external_IP:7912
sync_rate: 5
Zeitzone¶
Bearbeiten Sie die Datei docker-compose.yml
Geben Sie Ihre Zeitzone an. In der Beispieldatei wird TZ=Asia/Yekaterinburg angegeben.
docker-compose down && docker-compose up -d
docker compose down && docker compose up -d
Installation und Konfiguration für armbian (von noyhay)¶
Wenn Ihnen nur Telegram-Benachrichtigungen genügen - dann verwenden Sie das Notify-Plugin
Laden Sie Debian Minimal/IOT-Images mit Armbian von https://www.armbian.com/download/
Installieren Sie Armbian auf der sdcard mit balenaEtcher von https://etcher.balena.io/.
Starten Sie das System, erstellen Sie ein root-Passwort und einen neuen Benutzer
Von nun an machen wir alles unter dem Benutzer root
su - root
Richten Sie Wi-Fi ein, falls Sie es nach dem Anlegen eines neuen Benutzers noch nicht eingerichtet haben
sudo armbian-config
Aktualisieren Sie das System
sudo apt update && sudo apt upgrade -y
Apparmor Linux Kernel Sicherheitsmodul installieren
sudo apt install -y apparmor apparmor-utils
Installieren Sie den Telegram-Bot
bash <(wget --cache=off -q -O - https://github.com/ghzserg/zmod_ff5m/raw/refs/heads/1.6/telegram/telegram.sh)
Hinzufügen von ssh-Schlüsseln: Einloggen vom Benutzer root zum Benutzer tbot
su - tbot
Schreibe ssh-Schlüssel:
mkdir -p .ssh
cat >.ssh/authorised_keys
Starten Sie das System neu
```sudo reboot
Installation des Telegram-Bots über helm in Kubernetes (von aldiserg)¶
Wenn Ihnen nur Telegram-Benachrichtigungen genügen - dann verwenden Sie das Notify-Plugin
Laden Sie helm herunter und installieren Sie es auf Ihrem Computer https://helm.sh/docs/intro/install/
Klonen Sie das Repository mit helm chart
git clone https://github.com/aldiserg/zmod_ff5m_tg_bot.git
-
persistence.enabled auf false ändern, wenn Sie nicht vorhaben, Zeitraffer für eine lange Zeit zu speichern
-
persistence.volumes...storageClass, wenn wir einen externen Speicher für Zeitraffer verwenden wollen
-
configMapAsFile.data.telegram.conf - unsere Hauptkonfiguration, hier müssen wir die Felder ändern:
Wie man bot_token und chat_id erhält siehe hier[bot] server: 3D_printer_host:7125 bot_token: 1111111111:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA chat_id: 111111111 [Kamera] Gastgeber: http://3D_printer_host:8080/?action=stream host_snapshot: http://3D_printer_host:8080/?action=snapshot
Installation:
Die Befehle müssen aus dem Verzeichnis ausgeführt werden, in dem sich die Karte befindet
helm upgrade --install zmod_ff5m_tg_bot ./ -n default -f values.yaml
Lösung eines Problems bei der Verbindung des Druckers mit dem Server über SSH¶
Nach einer Neuinstallation des Betriebssystems auf dem Server wurden die SSH-Hostschlüssel geändert und der Drucker verweigert die Verbindung mit einer Fehlermeldung:
ssh-ed25519 host key mismatch ...
Lösung¶
1. Löschen der gespeicherten Tasten auf dem Drucker¶
Verbinden Sie sich über SSH mit dem Drucker:
` bash
ssh root@<<IP_drucker> -p 22
Standard-Passwort:
root
Führen Sie als nächstes die Befehle aus:
` bash
cd ~/.ssh
rm -f wissen
Damit werden die alten gespeicherten Hostschlüssel des Servers entfernt.
2. Erzeugen Sie das SSH-Schlüsselpaar auf dem Drucker neu (falls erforderlich)¶
Wenn Sie ein neues Schlüsselpaar erzeugen wollen, müssen Sie die alten Dateien löschen:
` bash
cd ~/mod_data
rm -f ssh.pub.txt ssh.key
Nach dem Neustart wird der Dienst automatisch neue Schlüssel erstellen.
Der oeffentliche Schluessel (ssh.pub.txt) muss in einer Datei auf dem Server zurueckgelegt werden:
~/.ssh/authorised_keys
für den Benutzer, über den die Verbindung läuft (z.B. tbot).
3. Prüfen der Verbindung¶
Nach dem Löschen der Schlüssel auf dem Drucker und dem Aktualisieren der authorised_keys auf dem
Server --- führen Sie das ZSSH-Makro auf dem Drucker aus.
Die Verbindung sollte nun ohne Fehler aufgebaut werden.