forked from viewit/KX-Bridge-Release
Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 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,23 @@
|
||||
# Changelog
|
||||
|
||||
## [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
|
||||
|
||||
18
CHANGELOG.md
18
CHANGELOG.md
@@ -1,5 +1,23 @@
|
||||
# Changelog
|
||||
|
||||
## [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
|
||||
|
||||
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
|
||||
|
||||
@@ -8,6 +8,21 @@ Verwendung:
|
||||
|
||||
OrcaSlicer-Konfiguration:
|
||||
Drucker-Typ: Klipper | Host: 127.0.0.1 | Port: 7125
|
||||
|
||||
────────────────────────────────────────────────────────────────────────────
|
||||
Copyright (C) 2026 viewit (KX-Bridge contributors)
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License v3.0 as published
|
||||
by the Free Software Foundation. See the LICENSE file in the project root
|
||||
or <https://www.gnu.org/licenses/gpl-3.0.html> for the full text.
|
||||
|
||||
This program is distributed WITHOUT ANY WARRANTY; without even the implied
|
||||
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
Reverse-engineering of the Anycubic Kobra X MQTT protocol was carried out
|
||||
for interoperability purposes (§69e UrhG / EU Software Directive Art. 6).
|
||||
This project is not affiliated with Anycubic. See NOTICE.md for details.
|
||||
"""
|
||||
|
||||
import argparse
|
||||
@@ -6179,7 +6194,7 @@ def build_app(bridge: KobraXBridge) -> web.Application:
|
||||
|
||||
# Root + Printer-Routen (Single-Page, JS liest Pathname)
|
||||
r.add_get("/", bridge.handle_index)
|
||||
r.add_get("/printer{num:\d+}", bridge.handle_index)
|
||||
r.add_get(r"/printer{num:\d+}", bridge.handle_index)
|
||||
r.add_get("/favicon.ico", bridge.handle_favicon)
|
||||
|
||||
# WebSocket
|
||||
|
||||
Reference in New Issue
Block a user