From f265a309944601e8f9ebc4da395f5952006ee070 Mon Sep 17 00:00:00 2001 From: viewit Date: Sat, 25 Apr 2026 14:08:16 +0200 Subject: [PATCH] docs: LAN-Modus korrekt beschreiben --- README.en.md | 50 +++++----- README.md | 269 ++++++++++++++++++++++++++++----------------------- 2 files changed, 177 insertions(+), 142 deletions(-) diff --git a/README.en.md b/README.en.md index d2e02e4..61bed4d 100644 --- a/README.en.md +++ b/README.en.md @@ -1,6 +1,6 @@ # KX-Bridge – Anycubic Kobra X Moonraker Bridge -**Version:** 0.9.1-beta5 +**Version:** 0.9.1-beta4 **Status:** Public Beta – suitable for home users, feedback welcome KX-Bridge is a Moonraker-compatible HTTP/WebSocket bridge for the **Anycubic Kobra X** 3D printer. It allows you to control the printer through OrcaSlicer and other Moonraker-compatible software — no Klipper, no Raspberry Pi required. @@ -24,7 +24,7 @@ KX-Bridge is a Moonraker-compatible HTTP/WebSocket bridge for the **Anycubic Kob ## Requirements -- Anycubic Kobra X on your local network (LAN, no Wi-Fi client isolation) +- Anycubic Kobra X on your local network, with **LAN mode enabled** (printer menu → enable LAN mode) - Printer MQTT credentials (→ see [Extracting credentials](#extracting-credentials)) - Docker **or** Python 3.9+ **or** the pre-built Linux binary @@ -33,24 +33,28 @@ KX-Bridge is a Moonraker-compatible HTTP/WebSocket bridge for the **Anycubic Kob ## Quick start – Docker (recommended) ```bash -# 1. Create .env -cp .env.example .env -# Fill in your printer data (→ extract_credentials) +# 1. Start the bridge +./start.sh +``` -# 2. Start the bridge -docker compose up -d +`start.sh` builds the Docker image automatically on first run and starts the bridge. + +``` +# 2. Open the web UI: http://BRIDGE-IP:7125 +# → Settings (⚙) open automatically on first start +# → Enter your credentials (→ see Extracting credentials) # 3. In OrcaSlicer: add printer → "Moonraker" → http://BRIDGE-IP:7125 ``` Check logs: ```bash -docker compose logs -f +docker-compose logs -f ``` -Update: +Stop: ```bash -docker compose pull && docker compose up -d +docker-compose down ``` --- @@ -59,11 +63,11 @@ docker compose pull && docker compose up -d ```bash chmod +x kx-bridge -./kx-bridge --printer-ip 192.168.x.x --username userXXXX --password XXXXX \ - --device-id XXXXX --mode-id 20030 +./kx-bridge ``` -Or place a `.env` file in the same directory — the bridge reads it automatically. +Open the web UI: `http://localhost:7125` +→ Settings (⚙) open automatically and guide you through the initial setup. --- @@ -71,32 +75,31 @@ Or place a `.env` file in the same directory — the bridge reads it automatical ```bash pip install aiohttp -python kobrax_moonraker_bridge.py --printer-ip 192.168.x.x ... -# Or fill in .env and start without arguments python kobrax_moonraker_bridge.py ``` +Open the web UI: `http://localhost:7125` +→ Settings (⚙) open automatically on first start. + --- ## Extracting credentials The MQTT credentials are printer-specific and are generated on first connection with AnycubicSlicerNext. The `extract_credentials` tool reads them from the memory of the running slicer. -**Requirement:** AnycubicSlicerNext must be running and connected to the printer. +**Requirement:** AnycubicSlicerNext must be running and connected to the printer (printer status is shown). ### Windows ``` -extract_credentials.exe --write-env +extract_credentials.exe ``` -Writes the found credentials directly to `.env`. - ### Linux ```bash chmod +x extract_credentials -./extract_credentials --write-env +./extract_credentials ``` ### Output @@ -114,10 +117,13 @@ chmod +x extract_credentials Device-ID xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (hits: 3504) Printer IP 192.168.x.x (hits: 3036) ======================================================= - -Hint: pass --write-env to save credentials to '.env'. ``` +Enter the displayed values in the bridge settings: +Open web UI → **⚙ Settings** → fill in the fields → **Save & Restart** + +> If the result looks uncertain: `--verbose` shows all found candidates. + All credentials are **processed locally only** — nothing is sent to external servers. --- diff --git a/README.md b/README.md index 814d8a5..a6b046b 100644 --- a/README.md +++ b/README.md @@ -1,25 +1,9 @@ -# KX-Bridge +# KX-Bridge – Anycubic Kobra X Moonraker Bridge -Verbindet den Anycubic Kobra X mit OrcaSlicer – ohne Klipper, ohne Raspberry Pi. +**Version:** 0.9.1-beta4 +**Status:** Public Beta – für Heimanwender geeignet, Feedback willkommen -KX-Bridge läuft auf deinem PC oder NAS und stellt eine Moonraker-kompatible Schnittstelle bereit, über die OrcaSlicer den Drucker direkt steuern kann: Druckstart, Temperatur, Fortschritt, Pause/Fortsetzen/Abbrechen, AMS-Farbwechsel, Druckgeschwindigkeit und mehr. - -**Version:** 0.9.1-beta5 - ---- - -## Enthaltene Dateien - -| Datei | Beschreibung | -|-------|-------------| -| `kobrax_moonraker_bridge.py` | Bridge-Hauptprogramm | -| `kx-bridge` | Vorkompilierte Linux-Binary | -| `extract_credentials.exe` | Zugangsdaten aus AnycubicSlicerNext auslesen (Windows) | -| `extract_credentials` | Zugangsdaten aus AnycubicSlicerNext auslesen (Linux) | -| `kobra_x_orcaslicer_preset.zip` | OrcaSlicer-Druckerprofil für den Kobra X | -| `bridge.sh` | Service-Manager für Linux | -| `Dockerfile` / `docker-compose.yml` | Docker-Deployment | -| `.env.example` | Konfigurationsvorlage | +KX-Bridge ist eine Moonraker-kompatible HTTP/WebSocket-Bridge für den **Anycubic Kobra X** 3D-Drucker. Sie ermöglicht die Steuerung des Druckers über OrcaSlicer und andere Moonraker-kompatible Software, ohne dass Klipper oder ein Raspberry Pi benötigt wird. --- @@ -40,93 +24,135 @@ KX-Bridge läuft auf deinem PC oder NAS und stellt eine Moonraker-kompatible Sch ## Voraussetzungen -- Anycubic Kobra X im LAN-Modus (Drucker muss über LAN erreichbar sein, nicht nur über Anycubic-Cloud) -- PC, NAS oder Server im gleichen Netzwerk (Windows oder Linux) -- Docker oder Python 3.9+ -- MQTT-Zugangsdaten des Druckers → [Schritt 1](#schritt-1-zugangsdaten-ermitteln) +- Anycubic Kobra X im lokalen Netzwerk, mit aktiviertem **LAN-Modus** (Drucker-Menü → LAN-Modus einschalten) +- MQTT-Credentials des Druckers (→ siehe [Credentials extrahieren](#credentials-extrahieren)) +- Docker **oder** Python 3.9+ **oder** direkt die Linux-Binary --- -## Schnellstart - -### Schritt 1: Zugangsdaten ermitteln - -Die Bridge benötigt druckerspezifische MQTT-Zugangsdaten. - -> **Wichtig:** Der Drucker muss sich im LAN-Modus befinden. Nur wenn der Drucker direkt über LAN (nicht ausschließlich über die Anycubic-Cloud) erreichbar ist, können die Zugangsdaten ermittelt und die Bridge genutzt werden. - -AnycubicSlicerNext starten und mit dem Drucker verbinden (bis der Drucker-Status angezeigt wird), dann: - -**Windows:** -``` -extract_credentials.exe --write-env -``` - -**Linux:** -```bash -chmod +x extract_credentials -./extract_credentials --write-env -``` - -Die Zugangsdaten werden automatisch in `.env` gespeichert. - -> Falls das Ergebnis unsicher wirkt: `--verbose` zeigt alle gefundenen Kandidaten. Den richtigen Wert manuell in `.env` eintragen. - ---- - -### Schritt 2: Konfiguration prüfen +## Schnellstart – Docker (empfohlen) ```bash -cp .env.example .env -# .env öffnen und Werte kontrollieren +# 1. Bridge starten +./start.sh +``` + +`start.sh` baut das Docker-Image automatisch beim ersten Aufruf und startet die Bridge. + +``` +# 2. Web-UI öffnen: http://BRIDGE-IP:7125 +# → Einstellungen (⚙) öffnen sich automatisch beim ersten Start +# → Zugangsdaten eintragen (→ siehe Credentials extrahieren) + +# 3. In OrcaSlicer: Drucker → "Moonraker" → http://BRIDGE-IP:7125 +``` + +Logs prüfen: +```bash +docker-compose logs -f +``` + +Stoppen: +```bash +docker-compose down ``` --- -### Schritt 3: Bridge starten +## Schnellstart – Binary (Linux) -**Option A – Docker (empfohlen):** -```bash -docker compose up -d -``` -Läuft im Hintergrund, startet automatisch nach Systemneustart. - -**Option B – Linux Binary:** ```bash chmod +x kx-bridge ./kx-bridge -# Oder mit Service-Manager: -./bridge.sh start ``` -**Option C – Python direkt:** +Web-UI öffnen: `http://localhost:7125` +→ Einstellungen (⚙) öffnen sich automatisch und führen durch die Erstkonfiguration. + +--- + +## Schnellstart – Python direkt + ```bash pip install aiohttp python kobrax_moonraker_bridge.py ``` ---- - -### Schritt 4: OrcaSlicer-Profil installieren - -1. `kobra_x_orcaslicer_preset.zip` in OrcaSlicer importieren: - Datei → Konfigurationen importieren → ZIP auswählen -2. Anycubic Kobra X als Drucker auswählen +Web-UI öffnen: `http://localhost:7125` +→ Einstellungen (⚙) öffnen sich automatisch beim ersten Start. --- -### Schritt 5: OrcaSlicer verbinden +## Credentials extrahieren -1. Drucker-Einstellungen öffnen +Die MQTT-Zugangsdaten sind druckerspezifisch und werden beim ersten Verbindungsaufbau mit dem AnycubicSlicerNext generiert. Das Tool `extract_credentials` liest sie aus dem RAM des laufenden Slicers aus. + +**Voraussetzung:** AnycubicSlicerNext muss gestartet und mit dem Drucker verbunden sein (Drucker-Status wird angezeigt). + +### Windows + +``` +extract_credentials.exe +``` + +### Linux + +```bash +chmod +x extract_credentials +./extract_credentials +``` + +### Ausgabe + +``` +[*] Prozess gefunden: AnycubicSlicerNext.exe (PID 1234) +[*] 1986 Speichersegmente gelesen (738.8 MB) +[*] Analysiere ... 100% (739 MB) + +======================================================= + ERGEBNISSE +======================================================= + Username userXXXXXXXXXX (Treffer: 47) + Password *************** (Treffer: 1046) + Device-ID xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (Treffer: 3504) + Drucker-IP 192.168.x.x (Treffer: 3036) +======================================================= +``` + +Die angezeigten Werte in die Bridge-Einstellungen übertragen: +Web-UI öffnen → **⚙ Einstellungen** → Felder ausfüllen → **Speichern & Neustart** + +> Falls das Ergebnis unsicher wirkt: `--verbose` zeigt alle gefundenen Kandidaten. + +Alle Credentials werden **ausschließlich lokal verarbeitet** — keine Übertragung an externe Server. + +--- + +## Konfiguration (.env) + +```env +PRINTER_IP=192.168.x.x # IP des Druckers +MQTT_PORT=9883 # Standard, nicht ändern +MQTT_USERNAME=userXXXXXXXX # Beginnt mit "user" +MQTT_PASSWORD=XXXXXXXXXXXXXX # ~15 Zeichen, gemischt +DEVICE_ID=xxxxxxxx... # 32-stelliger Hex-String +MODE_ID=20030 # Kobra X Standard +``` + +--- + +## OrcaSlicer verbinden + +1. Drucker hinzufügen → **Anycubic Kobra X** (oder generischer Klipper-Drucker) 2. Verbindungstyp: **Moonraker** -3. Adresse: `http://IP-DES-BRIDGE-PC:7125` eintragen -4. Auf „Test" klicken – bei erfolgreicher Verbindung erscheint eine Bestätigungsmeldung +3. IP: `http://BRIDGE-HOST:7125` +4. Verbindung testen → sollte "Online" anzeigen --- ## Web-UI -Die Bridge stellt unter `http://BRIDGE-IP:7125` eine Web-Oberfläche bereit: +Die Bridge stellt unter `http://BRIDGE-HOST:7125` eine Web-Oberfläche bereit: | Bereich | Funktion | |---------|----------| @@ -136,55 +162,56 @@ Die Bridge stellt unter `http://BRIDGE-IP:7125` eine Web-Oberfläche bereit: | Druckgeschwindigkeit | Leise / Normal / Sport | | Lüfter / Licht | Lüfterdrehzahl und Drucklicht | | AMS | Filament einziehen / ausziehen | -| Kamera | Live-Vorschau (falls vom Drucker unterstützt) | +| Kamera | Live-Vorschau (falls Drucker unterstützt) | | ⚙ Einstellungen | MQTT-Zugangsdaten, Poll-Intervall, Self-Update | ### Self-Update -Über das ⚙-Menü in der Web-UI kann die Bridge auf neue Versionen prüfen und sich selbst aktualisieren — ohne Neuinstallation. Nach dem Download startet sie automatisch neu. +Über das ⚙-Menü in der Web-UI kann die Bridge auf neue Versionen prüfen und sich selbst aktualisieren — ohne Neuinstallation. Nach dem Download startet die Bridge automatisch mit der neuen Version neu. --- -## bridge.sh – Service-Manager (Linux) +## bridge.sh (Linux Service-Manager) ```bash -./bridge.sh start # Im Hintergrund starten -./bridge.sh stop # Beenden -./bridge.sh restart # Neustarten -./bridge.sh status # Status anzeigen -./bridge.sh log 50 # Letzte 50 Log-Zeilen +./bridge.sh start # Bridge im Hintergrund starten +./bridge.sh stop # Bridge beenden +./bridge.sh restart # Neustarten +./bridge.sh status # Status und Port prüfen +./bridge.sh log 50 # Letzte 50 Log-Zeilen ``` --- -## Docker – Nützliche Befehle +## Druckerzustände -```bash -docker compose up -d # Starten -docker compose down # Stoppen -docker compose logs -f # Logs verfolgen -docker compose pull && docker compose up -d # Update -``` +Die Bridge übersetzt die internen Kobra-Zustände in Moonraker-kompatible Zustände: + +| Kobra-Zustand | Bedeutung | +|---------------|-----------| +| free | Bereit | +| printing / busy | Druckt | +| pausing / paused | Pausiert | +| resuming / resumed | Wird fortgesetzt | +| stopping / stoped | Wird gestoppt | +| finished | Abgeschlossen | +| canceled | Abgebrochen | +| failed | Fehler | --- ## Fehlerbehebung -**Port 7125 belegt:** +**Port 7125 bereits belegt:** ```bash -./bridge.sh stop +./bridge.sh stop # oder: fuser -k 7125/tcp ./bridge.sh start ``` -**Verbindungstest in OrcaSlicer schlägt fehl:** -- Firewall prüfen: Port 7125 muss erreichbar sein -- Bridge-Log prüfen: `./bridge.sh log` oder `docker compose logs` -- Drucker-IP in `.env` korrekt? - -**Zugangsdaten werden abgelehnt:** -- AnycubicSlicerNext starten, mit Drucker verbinden -- `extract_credentials --verbose` ausführen und alle Kandidaten prüfen -- Richtigen Wert manuell in `.env` eintragen, Bridge neu starten +**Credentials ungültig / Verbindung abgelehnt:** +- AnycubicSlicerNext starten, mit Drucker verbinden, `extract_credentials` erneut ausführen +- Falls das Ergebnis unsicher wirkt: `extract_credentials --verbose` zeigt alle Kandidaten an +- Den richtigen Kandidaten manuell in `.env` eintragen und Bridge neu starten **Temperaturänderungen werden ignoriert:** - Während eines laufenden Drucks werden Temperaturänderungen über einen separaten Kanal gesendet — das ist normal und wird von der Bridge automatisch erkannt. @@ -192,21 +219,26 @@ docker compose pull && docker compose up -d # Update **Docker: Permission denied:** ```bash sudo usermod -aG docker $USER -# Neu einloggen, dann erneut versuchen +# Neu einloggen +``` + +**Docker: .env nicht gefunden:** +```bash +# .env muss im gleichen Verzeichnis wie docker-compose.yml liegen +cp .env.example .env && nano .env ``` --- -## Konfigurationsreferenz (.env) +## Logs -| Parameter | Beschreibung | Beispiel | -|-----------|-------------|---------| -| `PRINTER_IP` | IP-Adresse des Druckers | `192.168.1.100` | -| `MQTT_PORT` | MQTT-Port (nicht ändern) | `9883` | -| `MQTT_USERNAME` | Benutzername (beginnt mit „user") | `userXXXXXXXXXX` | -| `MQTT_PASSWORD` | Passwort (~15 Zeichen) | `***` | -| `DEVICE_ID` | Geräte-ID (32 Hex-Zeichen) | `xxxxxxxx...` | -| `MODE_ID` | Modell-ID (Kobra X Standard) | `20030` | +```bash +# Docker +docker compose logs -f kx-bridge + +# Binary / Python +tail -f /tmp/bridge.log # bei Nutzung von bridge.sh +``` --- @@ -214,14 +246,11 @@ sudo usermod -aG docker $USER - Die Bridge bindet standardmäßig auf `0.0.0.0:7125` — nur im lokalen Netzwerk nutzen - `.env` enthält Drucker-Credentials — nicht öffentlich teilen -- Alle Zugangsdaten werden ausschließlich lokal verarbeitet — keine Übertragung an externe Server +- Die Credentials sind druckerspezifisch und haben keinen Zugang zu Anycubic-Cloud-Diensten --- -## Hinweis zur Nutzung +## Lizenz & Rechtliches -Dieses Projekt dient der privaten Nutzung und der Herstellung von Interoperabilität zwischen dem Anycubic Kobra X und freier Software (OrcaSlicer). - -`extract_credentials` liest ausschließlich den Arbeitsspeicher des auf deinem eigenen PC laufenden AnycubicSlicerNext-Prozesses. Es werden keine Daten übertragen oder gespeichert, außer in die lokale `.env`-Datei. - -Das Projekt steht in keiner Verbindung zu Anycubic und wird nicht kommerziell betrieben. +Dieses Projekt entstand durch Interoperabilitätsforschung gem. §69e UrhG. +Ausschließlich für private, nicht-kommerzielle Nutzung.