forked from viewit/KX-Bridge-Release
Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| f1bfab969c | |||
| 81729c37a5 | |||
| fe1ed4b096 |
2
.gitignore
vendored
2
.gitignore
vendored
@@ -7,5 +7,3 @@ dist/
|
||||
releases/*/kx-bridge
|
||||
releases/*/extract_credentials
|
||||
releases/*/extract_credentials.exe
|
||||
config/config.ini
|
||||
data
|
||||
@@ -1,5 +1,54 @@
|
||||
# Changelog
|
||||
|
||||
## [0.9.13] – 2026-05-20
|
||||
|
||||
### Fixes
|
||||
- **Self-Update war in 0.9.12 kaputt (wichtig):** Der In-App-Updater ersetzte
|
||||
nur `kobrax_moonraker_bridge.py`, aber seit 0.9.12 importiert diese Datei das
|
||||
ausgelagerte `_web_assets.py` (gebündeltes Frontend). Ein Update auf 0.9.12
|
||||
crashte daher mit `ModuleNotFoundError: No module named '_web_assets'` und die
|
||||
Bridge kam nicht wieder hoch. Der Updater lädt jetzt **alle** Bridge-Module
|
||||
(Hauptdatei + `_web_assets.py` + Client + Loader) erst vollständig herunter
|
||||
und ersetzt sie dann atomar — und verweigert das Self-Update im Binary-Modus
|
||||
(stattdessen neue Binary/neues Docker-Image laden).
|
||||
|
||||
> Falls du nach dem Update auf 0.9.12 hängengeblieben bist: einmalig das
|
||||
> Docker-Image neu bauen/deployen oder die 0.9.13-Binary holen, danach
|
||||
> funktioniert das Self-Update wieder.
|
||||
|
||||
## [0.9.12] – 2026-05-20
|
||||
|
||||
### Fixes
|
||||
- **Pause-Status** wird jetzt korrekt erkannt: Die Bridge las den Geräte-State
|
||||
statt des verschachtelten Druckauftrags-States, dadurch wurde ein pausierter
|
||||
Druck teils noch als „druckend" angezeigt. Layer/Fortschritt/Restzeit kommen
|
||||
jetzt ebenfalls aus dem Auftrags-Report.
|
||||
|
||||
### Intern
|
||||
- Frontend (HTML/CSS/JS) aus der Python-Datei nach `web/index.html` ausgelagert,
|
||||
zur Build-Zeit wieder eingebettet — besser wartbar, für Nutzer keine Änderung.
|
||||
|
||||
### Doku
|
||||
- Community-**Home-Assistant-Integration** von @gangoke verlinkt.
|
||||
|
||||
## [0.9.11] – 2026-05-20
|
||||
|
||||
### Neu
|
||||
- **ACE Pro 2 Support (experimentell, Community-Beitrag von @gangoke, PR #26):** Die Bridge erkennt jetzt die Filament-Hardware automatisch und passt sich an:
|
||||
- **Modi:** `toolhead` (kein ACE, Standard-4-Slot-Box), `ace_direct` (ein ACE Pro 2 direkt am Toolhead), `ace_hub` (bis zu 4 ACE-Units am Slot-4-Hub) — insgesamt bis zu **19 Slots**.
|
||||
- **AMS Auto-Refill** Umschalter.
|
||||
- **Trockner:** Temperatur-/Luftfeuchte-Monitor, Start/Stop/Temp/Dauer-Steuerung, mit Material-Presets in einer neuen Config-Sektion `[ace_dry_presets]` (PLA, PLA+, PETG, TPU, ABS/ASA, PA/PC + 3 Custom).
|
||||
- **UI:** Filament-Sektion skaliert auf 19 Slots, Modus-Label, geladener Slot grün umrandet mit Lade-/Entlade-Puls-Animation, Unload/Load direkt aus dem Slot-Edit-Dialog.
|
||||
- **GCode-Farb-Mapping:** ACE2-fähig, Farbe-aus-GCode-Fix, Hinweis bei Inkonsistenz zwischen Mapping und Objekten, besseres Default-Mapping.
|
||||
|
||||
> **⚠️ Experimentell:** Die ACE-Pro-2-Hardware-Pfade wurden vom Contributor mit einer einzelnen ACE2-Unit entwickelt und getestet; die 2–4-Unit-Hub-Konfigurationen sind theoretisch und auf echter Hardware ungetestet. Wir haben hier ebenfalls keine ACE2-Hardware zur Verifikation. Der Standard-`toolhead`-Pfad (ohne ACE) wurde live gegen einen echten Kobra X getestet. Wer ein Multi-ACE-Setup betreibt: bitte per Issue Rückmeldung geben.
|
||||
|
||||
### Fixes
|
||||
- **Happy-Hare-MMU-Emulation:** Es werden nur belegte Slots gesynct — kein Placeholder für leere Slots (kompatibel mit OrcaSlicer PR #13372).
|
||||
- **GCode-Farb-Dialog** zeigt nach einem neuen Upload nicht mehr die Daten der vorherigen Datei.
|
||||
|
||||
---
|
||||
|
||||
## [0.9.10] – 2026-05-17
|
||||
|
||||
> **Hinweis:** Mit diesem Release wird der Fokus von neuen Features auf
|
||||
|
||||
48
CHANGELOG.md
48
CHANGELOG.md
@@ -1,5 +1,53 @@
|
||||
# Changelog
|
||||
|
||||
## [0.9.13] – 2026-05-20
|
||||
|
||||
### Fixes
|
||||
- **Self-update was broken for 0.9.12 (important):** the in-app updater only
|
||||
replaced `kobrax_moonraker_bridge.py`, but since 0.9.12 that file imports the
|
||||
extracted `_web_assets.py` (bundled frontend). Updating to 0.9.12 therefore
|
||||
crashed with `ModuleNotFoundError: No module named '_web_assets'` and the
|
||||
bridge wouldn't come back up. The updater now downloads **all** bridge modules
|
||||
(main file + `_web_assets.py` + client + loaders), fully, then swaps them
|
||||
atomically — and refuses to self-update in binary mode (use the new
|
||||
binary/Docker image instead).
|
||||
|
||||
> If you got stuck on 0.9.12 after pressing update: rebuild/redeploy the Docker
|
||||
> image or grab the 0.9.13 binary once, then self-update works again.
|
||||
|
||||
## [0.9.12] – 2026-05-20
|
||||
|
||||
### Fixes
|
||||
- **Pause state** is now read correctly: the bridge was looking at the device-level
|
||||
state instead of the nested print-job state, so a paused print sometimes still
|
||||
showed as printing. Layer/progress/remaining-time are now also taken from the
|
||||
job report.
|
||||
|
||||
### Internal
|
||||
- Frontend (HTML/CSS/JS) extracted from the Python file into `web/index.html`,
|
||||
bundled back in at build time — easier to maintain, no change for users.
|
||||
|
||||
### Docs
|
||||
- Linked the community **Home Assistant integration** by @gangoke.
|
||||
|
||||
## [0.9.11] – 2026-05-20
|
||||
|
||||
### New
|
||||
- **ACE Pro 2 support (experimental, community contribution by @gangoke, PR #26):** the bridge now auto-detects the filament hardware and adapts:
|
||||
- **Modes:** `toolhead` (no ACE, stock 4-slot box), `ace_direct` (one ACE Pro 2 directly on the toolhead), `ace_hub` (up to 4 ACE units on the slot-4 hub) — up to **19 slots** total.
|
||||
- **AMS auto-refill** toggle.
|
||||
- **Dryer:** temperature/humidity monitor, start/stop/temp/duration control, with material presets configurable in a new `[ace_dry_presets]` config section (PLA, PLA+, PETG, TPU, ABS/ASA, PA/PC + 3 custom).
|
||||
- **UI:** filament section scales to 19 slots, mode label, loaded slot is green-outlined with a load/unload pulse animation, unload/load straight from the slot-edit dialog.
|
||||
- **GCode color mapping:** ACE2-aware, color-from-GCode fix, inconsistency notifier when the mapping doesn't match the objects, better default mapping.
|
||||
|
||||
> **⚠️ Experimental:** the ACE Pro 2 hardware paths were developed and tested by the contributor with a single ACE2 unit; the 2–4 unit hub configurations are theoretical and untested on real hardware. We don't have ACE2 hardware to verify against either. The standard `toolhead` (no-ACE) path was verified live against a real Kobra X here. If you run a multi-ACE setup, please report back via Issues.
|
||||
|
||||
### Fixes
|
||||
- **Happy Hare MMU emulation:** only populated slots are now synced — no placeholder for empty slots (aligns with OrcaSlicer PR #13372).
|
||||
- **GCode color dialog** no longer shows the previously-uploaded file's data after a new upload.
|
||||
|
||||
---
|
||||
|
||||
## [0.9.10] – 2026-05-17
|
||||
|
||||
> **Heads-up:** with this release the focus shifts from new features to
|
||||
|
||||
@@ -6,6 +6,7 @@ COPY requirements.txt .
|
||||
RUN pip install --no-cache-dir -r requirements.txt
|
||||
|
||||
COPY kobrax_moonraker_bridge.py .
|
||||
COPY _web_assets.py .
|
||||
COPY config_loader.py .
|
||||
COPY env_loader.py .
|
||||
COPY kobrax_client.py .
|
||||
|
||||
13
README.de.md
13
README.de.md
@@ -16,6 +16,8 @@ Eine Moonraker-kompatible Bridge, die direkt mit dem Drucker spricht.
|
||||
|
||||
[](https://gitea.it-drui.de/viewit/KX-Bridge-Release/releases)
|
||||
|
||||
[](https://gitea.it-drui.de/viewit/KX-Bridge-Release/releases)
|
||||
|
||||
[](https://www.youtube.com/watch?v=1Ql4wfH27fM)
|
||||
|
||||
<sub>Gefällt dir KX-Bridge? Ein Kaffee auf <a href="https://ko-fi.com/viewitde">Ko-fi</a> hält das Projekt am Leben. ☕</sub>
|
||||
@@ -99,6 +101,17 @@ Drucker → Verbindungstyp **Moonraker** → Host: `http://BRIDGE-IP:7125`
|
||||
|
||||
---
|
||||
|
||||
## 🏠 Community & Integrationen
|
||||
|
||||
- **[Home-Assistant-Integration](https://github.com/gangoke/kobrax-lan-hass-component)**
|
||||
von [@gangoke](https://github.com/gangoke) — bindet Sensoren, Drucksteuerung,
|
||||
Licht, Kamera und das GCode-Vorschaubild als native Home-Assistant-Entitäten ein.
|
||||
|
||||
> Dies sind **Community-Projekte**, die nicht von KX-Bridge betreut oder
|
||||
> supportet werden. Bei Fragen oder Problemen bitte das verlinkte Repository nutzen.
|
||||
|
||||
---
|
||||
|
||||
## 🔧 Zugangsdaten manuell ermitteln
|
||||
|
||||
Normalerweise nicht nötig — *„+ Drucker hinzufügen"* macht das automatisch. Falls doch:
|
||||
|
||||
13
README.md
13
README.md
@@ -16,6 +16,8 @@ A Moonraker-compatible bridge that talks directly to the printer.
|
||||
|
||||
[](https://gitea.it-drui.de/viewit/KX-Bridge-Release/releases)
|
||||
|
||||
[](https://gitea.it-drui.de/viewit/KX-Bridge-Release/releases)
|
||||
|
||||
[](https://www.youtube.com/watch?v=1Ql4wfH27fM)
|
||||
|
||||
<sub>Like KX-Bridge? A coffee on <a href="https://ko-fi.com/viewitde">Ko-fi</a> keeps the project alive. ☕</sub>
|
||||
@@ -99,6 +101,17 @@ Printer → Connection type **Moonraker** → Host: `http://BRIDGE-IP:7125`
|
||||
|
||||
---
|
||||
|
||||
## 🏠 Community & Integrations
|
||||
|
||||
- **[Home Assistant integration](https://github.com/gangoke/kobrax-lan-hass-component)**
|
||||
by [@gangoke](https://github.com/gangoke) — exposes sensors, print controls,
|
||||
light, camera and the GCode thumbnail as native Home Assistant entities.
|
||||
|
||||
> These are **community projects**, not maintained or supported by KX-Bridge.
|
||||
> For questions or issues, please use the linked repository.
|
||||
|
||||
---
|
||||
|
||||
## 🔧 Getting credentials manually
|
||||
|
||||
Normally not needed — *"+ Add printer"* does this automatically. If you do need it:
|
||||
|
||||
2991
_web_assets.py
Normal file
2991
_web_assets.py
Normal file
File diff suppressed because it is too large
Load Diff
34
config.ini.example
Normal file
34
config.ini.example
Normal file
@@ -0,0 +1,34 @@
|
||||
# KX-Bridge Konfigurationsdatei
|
||||
# Kopiere diese Datei nach config.ini und trage deine Werte ein:
|
||||
# cp config.ini.example config.ini
|
||||
#
|
||||
# Credentials mit extract_credentials.exe (Windows) oder
|
||||
# extract_credentials (Linux) aus dem laufenden AnycubicSlicerNext auslesen.
|
||||
|
||||
[connection]
|
||||
# IP-Adresse des Druckers im lokalen Netzwerk
|
||||
printer_ip = 192.168.x.x
|
||||
|
||||
# MQTT-Port (Anycubic Kobra X Standard: 9883)
|
||||
mqtt_port = 9883
|
||||
|
||||
# MQTT-Zugangsdaten (druckerspezifisch, beginnt mit "user")
|
||||
username = userXXXXXXXXXX
|
||||
password = XXXXXXXXXXXXXXX
|
||||
|
||||
# Geräte-ID (32-stelliger Hex-String, druckerspezifisch)
|
||||
device_id = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||
|
||||
# Modell-ID (Kobra X Standard: 20030)
|
||||
mode_id = 20030
|
||||
|
||||
[print]
|
||||
# Standard-AMS-Slot für Einfarbdruck (auto = alle belegten Slots, 0-3 = fixer Slot)
|
||||
default_ams_slot = auto
|
||||
|
||||
# Auto-Leveling vor jedem Druck (1 = an, 0 = aus)
|
||||
auto_leveling = 1
|
||||
|
||||
[bridge]
|
||||
# Poll-Intervall in Sekunden
|
||||
poll_interval = 3
|
||||
@@ -34,29 +34,3 @@ auto_leveling = 1
|
||||
[bridge]
|
||||
# Poll-Intervall in Sekunden
|
||||
poll_interval = 3
|
||||
|
||||
[ace_dry_presets]
|
||||
# Vordefinierte Dry-Set Presets (Temp in °C, Dauer in Sekunden)
|
||||
pla_temp = 45
|
||||
pla_duration_sec = 14400
|
||||
pla_plus_temp = 45
|
||||
pla_plus_duration_sec = 14400
|
||||
petg_temp = 50
|
||||
petg_duration_sec = 14400
|
||||
tpu_temp = 55
|
||||
tpu_duration_sec = 14400
|
||||
abs_asa_temp = 45
|
||||
abs_asa_duration_sec = 28800
|
||||
pa_pc_temp = 55
|
||||
pa_pc_duration_sec = 43200
|
||||
|
||||
# Custom Presets (Name + Temp + Dauer)
|
||||
custom_1_name = Custom 1
|
||||
custom_1_temp = 45
|
||||
custom_1_duration_sec = 14400
|
||||
custom_2_name = Custom 2
|
||||
custom_2_temp = 45
|
||||
custom_2_duration_sec = 14400
|
||||
custom_3_name = Custom 3
|
||||
custom_3_temp = 45
|
||||
custom_3_duration_sec = 14400
|
||||
|
||||
@@ -14,6 +14,13 @@ Verwendung:
|
||||
info = client.query_info()
|
||||
print(info["data"]["temp"])
|
||||
client.disconnect()
|
||||
|
||||
────────────────────────────────────────────────────────────────────────────
|
||||
Copyright (C) 2026 viewit (KX-Bridge contributors)
|
||||
|
||||
Licensed under GPLv3 — see LICENSE in the project root.
|
||||
Protocol reverse-engineered for interoperability (§69e UrhG / EU Software
|
||||
Directive Art. 6). Not affiliated with Anycubic. See NOTICE.md.
|
||||
"""
|
||||
|
||||
import hashlib
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user