Telegramm-Bot
| Funktion / Feature | Notify Plugin | Moonraker Telegram Bot | 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 | | - | + |
Wenn Sie nur Telegram-Benachrichtigungen benötigen, dann [verwenden Sie das Notify-Plugin] (https://github.com/ghzserg/notify/blob/main/Readme_ru.md).
Telegram Bot¶
Beschreibung¶
Wenn Ihnen nur Telegram-Benachrichtigungen genügen - dann verwenden Sie das Notify-Plugin
Das Wesentliche: Wir haben sehr langsame Eisen und sehr wenig Speicher. Es macht also keinen Sinn, moonraker-telegram-bot auf der Hardware laufen zu lassen. Aber wir können ihn auf einem externen Server laufen lassen. Zu diesem Zweck benötigen wir einen beliebigen Server (real/virtuell), auf den der Drucker über SSH zugreifen kann.
Die neue Version erzeugt automatisch SSH-Schlüssel (sie werden zur Autorisierung ohne Passwörter verwendet).
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 Server im selben Netzwerk befinden, ist die Verwendung von SSH nicht erforderlich. Lesen Sie die Konfigurationsdatei telegram.conf Sample-config.
Die Konfigurationsdatei kann vom Drucker mod/telegram/ heruntergeladen werden.
Registrieren Sie den Bot¶
Wie Sie Ihren Bot registrieren
- gehen Sie zu @BotFather.
/Neuer Bot.- Gib einen beliebigen Namen ein
- Geben Sie den Bot-Namen ff5msuper_bot ein - achten Sie darauf, dass am Ende _bot steht.
- Geben Sie eine lange ID ein - diese muss in den Bot-Einstellungen im Parameter bot_token eingetragen werden
Server-Bereitstellung¶
Telegram Bot mit einem Befehl unter Debian installieren¶
Wenn Sie nur Telegram-Benachrichtigungen benötigen, dann [verwenden Sie das Notify-Plugin] (https://github.com/ghzserg/notify/blob/main/Readme_ru.md).
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
- Legt den Benutzer tbot an
- Schreibt Anweisungen zur Registrierung des Telegram-Bots und fordert
bot_tokenan - Schreibt Anweisungen, um
chat_idzu erhalten und fordertchat_idan - Wird [ff5m.sh] installieren (https://github.com/ghzserg/zmod_ff5m/blob/1.6/telegram/ff5m.sh)
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] (https://github.com/ghzserg/notify/blob/main/Readme_ru.md)
Nehmen Sie die Datei docker-compose.yml aus mod/telegram/ c printer.
Installieren Sie docker, dann folgen Sie den Anweisungen 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
Legen Sie docker-compose.yml dort ab.
Unterverzeichnisse erstellen
mkdir config log timelapse_finished timelapse
chmod 777 config log timelapse_finished timelapse
Legen Sie telegram.conf aus 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.
Führen Sie im Verzeichnis bot1 Folgendes aus
docker-compose up -d
Fügen Sie einen Benutzer hinzu und geben Sie ihm das Recht, docker-compose selbst auszuführen.
useradd tbot
usermod -a -G docker tbot
Hinzufügen von ssh-Schlüsseln¶
-
Melden Sie sich als Benutzer
tbotan. `bash su - tbot ``` -
Ssh-Schlüssel schreiben:
mkdir .ssh cat >.ssh/authorised_keys
Geben Sie den öffentlichen Schlüssel aus der Datei mod_data/ssh.pub.txt ein. Dann 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.
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 -doderdocker compose down && docker compose up -d````
Spoolman¶
Bearbeiten Sie die Datei docker-compose.yml
Hinzufügen:
spoolman:
image: ghcr.io/donkie/spoolman:latest
Neustart: wenn nicht gestoppt
Volumes:
- ./spoolman:/home/app/.local/share/spoolman
Ports:
- "7912:8000"
Umgebung:
- TZ=Asien/Jekaterinburg
Öffnen Sie den Port in Ihrer Firewall, wenn Sie diese verwenden.
`iptables -I INPUT -p tcp --dport 7912 -j ACCEPT
Erstellen Sie einen spoolman Ordner.
mkdir spoolman
chmod 777 spoolman
Starten Sie Docker neu:
`docker-compose down && docker-compose up -d oder docker compose down && docker compose up -d
Auf dem Drucker schreiben Sie in mod_data/user.moonraker.conf
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
Installation und Konfiguration für armbian (von noyhay)¶
Wenn Ihnen nur Telegram-Benachrichtigungen genügen - dann [verwenden Sie das Notify-Plugin] (https://github.com/ghzserg/notify/blob/main/Readme_ru.md)
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] (https://github.com/ghzserg/notify/blob/main/Readme_ru.md)
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.