Telegram Bot
| Funkce | Notify Plugin | Moonraker Telegram Bot |
|---|---|---|
| Vyžaduje externí server | – | + |
| Vzdálené ovládání tiskárny | – (možné přes zmod.link) | + |
| Vytváření časosběrů | – (možné přes timelapse) | + |
| Notifikace o událostech tisku (start, pauza, zrušení, dokončení) | + | + |
| Notifikace senzoru filamentu | + | + |
| Procentuální průběh tisku | + | + |
| Více tiskáren přes jednoho bota | + | – |
| Notifikace přes jiné služby | + | – |
| Spoolman | - | + |
Pokud potřebujete pouze notifikace v Telegramu, použijte Notify plugin
Telegram Bot¶
Popis¶
Hlavní myšlenka: Naše tiskárna je velmi pomalá a má omezenou paměť. Proto je nepraktické spouštět moonraker-telegram-bot přímo na ní. Nicméně jej můžeme spustit na externím serveru. K tomu stačí jakýkoli server (fyzický/virtuální), ke kterému má tiskárna přístup přes SSH.
Nová verze automaticky generuje SSH klíče (používané pro přihlášení bez hesla).
Umístění klíčů:
/mod_data/ssh.pub.txt— veřejný klíč. Zkopírujte jeho obsah do souboru~/.ssh/authorized_keysna serveru./mod_data/ssh.key— soukromý klíč. Tiskárna ho používá pro připojení k serveru.
Samotné klíče nepotřebujete. Jednoduše zavolejte makro ZSSH_ON s následujícími parametry:
SSH_SERVER— IP nebo hostname vašeho serveruSSH_PORT— SSH port na serveru (výchozí: 22)SSH_USER— uživatelské jméno na serveruVIDEO_PORT— Port serveru pro příjem video streamu z kamery (výchozí: 8080)MOON_PORT— Port serveru pro příjem dat z Moonrakeru (výchozí: 7125)REMOTE_RUN— Příkaz k provedení na vzdáleném serveru
Použití SSH spotřebuje přibližně 300 KB paměti.
Pokud jsou tiskárna a server ve stejné síti, SSH není nutné. Viz konfigurační soubor telegram.conf.
Konfigurační soubor lze stáhnout z tiskárny ze složky mod/telegram/. Ukázková konfigurace
Registrace bota¶
Jak zaregistrovat svého bota:
- Přejděte na @BotFather
- Pošlete
/newbot - Zadejte libovolné jméno
- Zadejte uživatelské jméno bota (musí končit na
_bot, např.ff5msuper_bot) - Obdržíte dlouhé ID — přidejte jej do parametru
bot_tokenv nastavení bota.
Nasazení na server¶
Instalace Telegram bota na Debian jedním příkazem¶
Pokud potřebujete pouze notifikace v Telegramu, použijte Notify plugin
Nainstalujte Telegram bota jedním příkazem na Debian:
Spusťte jako uživatel root:
bash <(wget --cache=off -q -O - https://github.com/ghzserg/zmod_ff5m/raw/refs/heads/1.7/telegram/telegram.sh)
Pokud není nainstalován wget:
apt update && apt install wget -y
Tento skript:
- Nainstaluje Docker
- Stáhne docker-compose.yml a telegram.conf Ukázková konfigurace
- Vytvoří uživatele
tbot - Provede vás registrací bota a požádá o
bot_token - Provede vás získáním
chat_ida požádá o něj - Nainstaluje ff5m.sh
Přidejte SSH klíče ručně.
Instalace Telegram bota krok za krokem¶
Pokud potřebujete pouze notifikace v Telegramu, použijte Notify plugin
- Zkopírujte docker-compose.yml z adresáře
mod/telegram/na tiskárně. -
Nainstalujte Docker (instrukce pro Debian):
apt update apt upgrade -y apt install docker.io docker-compose docker apparmor -y -
Vytvořte adresář pro bota:
mkdir bot1 cd bot1 -
Umístěte docker-compose.yml sem.
-
Vytvořte podadresáře:
mkdir config log timelapse_finished timelapse chmod 777 config log timelapse_finished timelapse -
Zkopírujte telegram.conf z
mod/telegram/doconfig/a upravte jej.
Více o konfiguraci bota najdete zde.
-
Spusťte bota:
docker-compose up -d -
Vytvořte uživatele a přidělte oprávnění:
useradd tbot usermod -a -G docker tbot
Přidání SSH klíčů¶
-
Přihlaste se jako uživatel
tbot:su - tbot -
Přidejte SSH klíče:
Vložte veřejný klíč zmkdir .ssh cat > .ssh/authorized_keysmod_data/ssh.pub.txt, poté stiskněteCtrl + D.
Spuštění ZSSH na tiskárně¶
Po nastavení spusťte makro ZSSH_ON na tiskárně s požadovanými parametry.
SSH se automaticky restartuje 3 minuty po každém restartu.
Spoolman¶
Upravte soubor docker-compose.yml.
Přidejte:
spoolman:
image: ghcr.io/donkie/spoolman:latest
restart: unless-stopped
volumes:
- ./spoolman:/home/app/.local/share/spoolman
ports:
- "7912:8000"
environment:
- TZ=Asia/Yekaterinburg
Otevřete port ve firewallu, pokud jej používáte:
iptables -I INPUT -p tcp --dport 7912 -j ACCEPT
Vytvořte adresář spoolman:
mkdir spoolman
chmod 777 spoolman
Restartujte Docker:
docker-compose down && docker-compose up -d
docker compose down && docker compose up -d
Na tiskárně přidejte do mod_data/user.moonraker.conf:
external_IP — externí IP adresa serveru, na kterém běží Docker.
Tiskárna MUSÍ mít přístup k této IP.
[spoolman]
server: http://external_IP:7912
sync_rate: 5
Časové pásmo¶
Upravte soubor docker-compose.yml
Zadejte své časové pásmo. V ukázkovém souboru je TZ=Asia/Yekaterinburg
docker-compose down && docker-compose up -d nebo docker compose down && docker compose up -d
Instalace a nastavení pro Armbian (od noyhay)¶
Pokud potřebujete pouze notifikace v Telegramu, použijte Notify plugin
Stáhněte obraz Debian Minimal/IOT s Armbianem z webu https://www.armbian.com/download/
Nainstalujte Armbian na SD kartu pomocí balenaEtcher z https://etcher.balena.io/
Spusťte systém, nastavte heslo uživatele root a vytvořte nového uživatele.
Pokračujte pod uživatelem root:
su - root
Nastavte Wi-Fi, pokud jste to neudělali při vytváření uživatele:
sudo armbian-config
Aktualizujte systém:
sudo apt update && sudo apt upgrade -y
Nainstalujte AppArmor (bezpečnostní modul jádra Linuxu):
sudo apt install -y apparmor apparmor-utils
Nainstalujte Telegram bota:
bash <(wget --cache=off -q -O - https://github.com/ghzserg/zmod_ff5m/raw/refs/heads/1.7/telegram/telegram.sh)
Přidejte SSH klíče:
Přepněte na uživatele tbot z root:
su - tbot
Nastavte SSH klíče:
mkdir -p .ssh
cat > .ssh/authorized_keys
mod_data/ssh.pub.txt, poté stiskněte Ctrl + D.
Restartujte systém:
sudo reboot
Instalace Telegram bota na Kubernetes přes Helm (od aldiserg)¶
Pokud potřebujete pouze notifikace v Telegramu, použijte Notify plugin
Stáhněte a nainstalujte Helm: https://helm.sh/docs/intro/install/
Naklonujte repozitář s Helm chartem:
git clone https://github.com/aldiserg/zmod_ff5m_tg_bot.git
-
persistence.enabled změňte na "false", pokud neplánujete trvale ukládat časosběry
-
persistence.volumes...storageClass změňte, pokud budete používat externí úložiště
-
configMapAsFile.data.telegram.conf - hlavní konfigurační soubor; změňte v něm několik řádků:
Jak získat bot_token a chat_id viz zde[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
Instalace:
Příkazy install/upgrade spouštějte ve složce s Helm chartem.
helm upgrade --install zmod_ff5m_tg_bot ./ -n default -f values.yaml
Řešení problému s připojením tiskárny k serveru přes SSH¶
Po přeinstalaci operačního systému serveru se změní jeho SSH host klíče a tiskárna se odmítne připojit s chybou:
ssh-ed25519 host key mismatch ...
Řešení¶
1. Vymazání uložených klíčů v tiskárně¶
Připojte se k tiskárně přes SSH:
ssh root@<IP_tiskárny> -p 22
Výchozí heslo:
root
Poté spusťte:
cd ~/.ssh
rm -f know*
Tím se odstraní staré uložené host klíče serveru.
2. Opětovné vytvoření páru SSH klíčů v tiskárně (v případě potřeby)¶
Pokud je potřeba vytvořit nový pár klíčů, odstraňte staré soubory:
cd ~/mod_data
rm -f ssh.pub.txt ssh.key
Po restartu služba automaticky vytvoří nové klíče. Veřejný klíč (ssh.pub.txt) bude nutné znovu přidat na server do souboru ~/.ssh/authorized_keys uživatele, pod kterým připojení funguje (například tbot).
3. Ověření připojení¶
Po vymazání klíčů v tiskárně a aktualizaci souboru authorized_keys na serveru spusťte na tiskárně makro ZSSH_ON. Připojení by nyní mělo fungovat bez chyby.
Alternativa k botu¶
Vzhledem k občasným výpadkům Telegramu je alternativou vytváření časosběrných videí na samostatném serveru (na stejném serveru, který se dříve používal pro Telegram bota).
Příklad najdete v repozitáři printer_timelapse. Po několika drobných úpravách jej lze propojit s web-timelapse a získat podobné funkce bez použití komunikační aplikace.
Základní postup: server sleduje, zda na tiskárně začal tisk, během tisku pořizuje snímky a po dokončení z nich vytvoří video a náhledový obrázek. Podporuje více tiskáren.