Skip to content

Commit d94df9d

Browse files
authored
0.1.8rc1 (#56)
* bring latest pybambu module in from home assistant integration * add onBeforePrintStart callback to prevent starting "local" files and display print options dialog.* add onBeforePrintStart callback to prevent starting "local" files and display print options dialog (with AMS mapping support) * add AMS display in sidebar
1 parent d0fd4a5 commit d94df9d

22 files changed

+4517
-68
lines changed
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
name: issue validator
2+
on:
3+
workflow_dispatch:
4+
issues:
5+
types: [opened, edited]
6+
7+
permissions:
8+
issues: write
9+
10+
jobs:
11+
validate:
12+
runs-on: ubuntu-latest
13+
steps:
14+
- uses: actions/checkout@v4
15+
- uses: Okabe-Junya/[email protected]
16+
with:
17+
body: '/\[(octoprint\.log)\]|\[(plugin_bambu_printer_serial\.log)\]/g'
18+
body-regex-flags: 'true'
19+
is-auto-close: 'true'
20+
issue-type: 'both'
21+
github-token: ${{ secrets.GITHUB_TOKEN }}

octoprint_bambu_printer/bambu_print_plugin.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
from octoprint.logging.handlers import CleaningTimedRotatingFileHandler
2323

2424
from octoprint_bambu_printer.printer.file_system.cached_file_view import CachedFileView
25-
from pybambu import BambuCloud
25+
from octoprint_bambu_printer.printer.pybambu import BambuCloud
2626

2727
from octoprint_bambu_printer.printer.file_system.remote_sd_card_file_list import (
2828
RemoteSDCardFileList,
@@ -67,7 +67,9 @@ def on_settings_initialized(self):
6767
self._timelapse_files_view.with_filter("timelapse/", ".avi")
6868

6969
def get_assets(self):
70-
return {"js": ["js/bambu_printer.js"]}
70+
return {"js": ["js/jquery-ui.min.js", "js/knockout-sortable.1.2.0.js", "js/bambu_printer.js"],
71+
"css": ["css/bambu_printer.css"]
72+
}
7173

7274
def get_template_configs(self):
7375
return [
@@ -77,7 +79,7 @@ def get_template_configs(self):
7779
"custom_bindings": True,
7880
"template": "bambu_timelapse.jinja2",
7981
},
80-
] # , {"type": "generic", "custom_bindings": True, "template": "bambu_printer.jinja2"}]
82+
{"type": "generic", "custom_bindings": True, "template": "bambu_printer.jinja2"}]
8183

8284
def get_settings_defaults(self):
8385
return {
@@ -97,6 +99,9 @@ def get_settings_defaults(self):
9799
"email": "",
98100
"auth_token": "",
99101
"always_use_default_options": False,
102+
"ams_data": [],
103+
"ams_mapping": [],
104+
"ams_current_tray": None,
100105
}
101106

102107
def is_api_adminonly(self):

octoprint_bambu_printer/printer/bambu_virtual_printer.py

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from __future__ import annotations
22

33
import collections
4-
from dataclasses import dataclass, field
4+
from dataclasses import dataclass, field, asdict
55
import math
66
from pathlib import Path
77
import queue
@@ -11,7 +11,7 @@
1111
from octoprint_bambu_printer.printer.file_system.cached_file_view import CachedFileView
1212
from octoprint_bambu_printer.printer.file_system.file_info import FileInfo
1313
from octoprint_bambu_printer.printer.print_job import PrintJob
14-
from pybambu import BambuClient, commands
14+
from octoprint_bambu_printer.printer.pybambu import BambuClient, commands
1515
import logging
1616
import logging.handlers
1717

@@ -43,6 +43,7 @@ class BambuPrinterTelemetry:
4343
lastTempAt: float = time.monotonic()
4444
firmwareName: str = "Bambu"
4545
extruderCount: int = 1
46+
ams_current_tray: int = -1
4647

4748

4849
# noinspection PyBroadException
@@ -64,6 +65,7 @@ def __init__(
6465
self._data_folder = data_folder
6566
self._last_hms_errors = None
6667
self._log = logging.getLogger("octoprint.plugins.bambu_printer.BambuPrinter")
68+
self.ams_data = self._settings.get(["ams_data"])
6769

6870
self._state_idle = IdleState(self)
6971
self._state_printing = PrintingState(self)
@@ -168,6 +170,22 @@ def project_files(self):
168170
def change_state(self, new_state: APrinterState):
169171
self._state_change_queue.put(new_state)
170172

173+
def _convert2serialize(self, obj):
174+
if isinstance(obj, dict):
175+
return {k: self._convert2serialize(v) for k, v in obj.items()}
176+
elif hasattr(obj, "_ast"):
177+
return self._convert2serialize(obj._ast())
178+
elif not isinstance(obj, str) and hasattr(obj, "__iter__"):
179+
return [self._convert2serialize(v) for v in obj]
180+
elif hasattr(obj, "__dict__"):
181+
return {
182+
k: self._convert2serialize(v)
183+
for k, v in obj.__dict__.items()
184+
if not callable(v) and not k.startswith('_')
185+
}
186+
else:
187+
return obj
188+
171189
def new_update(self, event_type):
172190
if event_type == "event_hms_errors":
173191
self._update_hms_errors()
@@ -178,13 +196,25 @@ def _update_printer_info(self):
178196
device_data = self.bambu_client.get_device()
179197
print_job_state = device_data.print_job.gcode_state
180198
temperatures = device_data.temperature
199+
ams_data = self._convert2serialize(device_data.ams.data)
200+
201+
if self.ams_data != ams_data:
202+
self._log.debug(f"Recieveid AMS Update: {ams_data}")
203+
self.ams_data = ams_data
204+
self._settings.set(["ams_data"], ams_data)
205+
self._settings.save(trigger_event=True)
181206

182207
self.lastTempAt = time.monotonic()
183208
self._telemetry.temp[0] = temperatures.nozzle_temp
184209
self._telemetry.targetTemp[0] = temperatures.target_nozzle_temp
185210
self._telemetry.bedTemp = temperatures.bed_temp
186211
self._telemetry.bedTargetTemp = temperatures.target_bed_temp
187212
self._telemetry.chamberTemp = temperatures.chamber_temp
213+
self._telemetry.ams_current_tray = device_data.push_all_data["ams"]["tray_now"] or -1
214+
215+
if self._telemetry.ams_current_tray != self._settings.get_int(["ams_current_tray"]):
216+
self._settings.set_int(["ams_current_tray"], self._telemetry.ams_current_tray)
217+
self._settings.save(trigger_event=True)
188218

189219
self._log.debug(f"Received printer state update: {print_job_state}")
190220
if (
@@ -214,6 +244,8 @@ def _update_hms_errors(self):
214244

215245
def on_disconnect(self, on_disconnect):
216246
self._log.debug(f"on disconnect called")
247+
self.stop_continuous_status_report()
248+
self.stop_continuous_temp_report()
217249
return on_disconnect
218250

219251
def on_connect(self, on_connect):
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
"""Initialise the Bambu Client"""
2+
# TODO: Once complete, move pybambu to PyPi
3+
from .bambu_client import BambuClient
4+
from .bambu_cloud import BambuCloud

0 commit comments

Comments
 (0)