Git Product home page Git Product logo

octoprint-smartabl's Introduction

SmartABL

Plugin designed to expedite your 3D printing process. It smartly reduces unnecessary Auto Bed Leveling (ABL) actions, letting you focus on what's important – your prints, not the prep time. Compatible with a wide array of 3D printing firmwares, SmartABL is perfect for anyone looking to enhance their printing efficiency, from hobbyists to professionals.

How it works?

The plugin reads ABL_CMD1 from your print file and check the bed mesh in memoryM.

  • If mesh is updated, M420 S1M is sent in order to load bed mesh from memory.
  • If mesh is outdated or doesn't exist, ABL_CMD is sent in order to generate a new mesh. On Marlin, M500 is also sent to save the mesh on the eeprom.

1: ABL_CMD can be G29 (Marlin/Prusa-buddy), G80 (Prusa) or BED_MESH_CALIBRATE (Klipper). This can be customized in SmartABL settings.

Warning: Prusa and Klipper require at least 1 ABL to track the state.

Note: By default, the standard ABL command for each firmware triggers SmartABL algorithm, however, you can customize this behaviour in settings: the command that triggers the algorithm, the command sent to the printer or even ignore commands.

References:

Credits to Oscar for the idea.

Compatibility

  • Marlin (M)
  • Prusa (P)
  • Prusa-buddy (B)
  • Klipper (K)
  • Custom*

*: You can customize the gcode triggering ABL and the gcode sent to the printer in settings. Check the setting "Enable SmartABL on unknown firmware" to use not detected firmwares.

Want your firmware to be compatible? Open an Issue on github so we can add it 🙂

Don't forget to upload plugin_SmartABL.log!!

Setup

Install via the bundled Plugin Manager or manually using this URL:

https://github.com/scmanjarrez/OctoPrint-SmartABL/archive/master.zip

Configuration

Commands

  • @SMARTABLRESET: Send this command by terminal or gcode to zero the counter.

Settings panel

GCODES

  • Trigger custom gcode(s): By default, SmartABL only triggers with the standard ABL commands, i.e. G29/G80/BED_MESH_CALIBRATE. However, you can define here a list of gcodes that can trigger SmartABl, e.g. macros or non-standard commands. Default: disabled (G29).

  • ABL custom gcode(s): By default, SmartABL sends the standard ABL commands, i.e. G29/G80/BED_MESH_CALIBRATE. However, you can define here a list of gcodes that will be sent instead, e.g. macros or non-standard commands. Default: disabled (G29).

  • Ignore gcode(s): Define here if you want to skip gcodes. The commands defined here won't be sent to the printer. Default: disabled.

Force bed leveling

  • After # days. Default: enabled (1).
  • After # prints. Default: enabled (5).
  • If current print bed temperature is different from last print. Default: enabled.
  • If current print hotend temperature is different from last print. Default: enabled.

Extras

  • Take into account failed/stopped jobs in prints counter. Default: disabled (only successful prints increase the counter).
  • Enable SmartABL on unknown firmwares. Default: disabled.

    You have to enable and configure Trigger custom gcode(s) and ABL custom gcode(s). If you don't configure these two settings, SmartABL assumes marlin firmware by default (i.e. G29 read from file and G29 send to printer when ABL is needed)

Screenshot of SmartABL settings panel

Side panel

  • ABL Restricted: Normal behaviour, the plugin chooses when to trigger ABL based on your settings.

  • P/FP: Number of current prints/Number of prints to force ABL.

  • ABL Always: Ignore settings; the plugin always trigger ABL. Handy when you need to force-update your mesh.

Screenshot of SmartABL side panel

Support me

You find this plugin helpful and want to support me?

Ko-fi link to support me

Acknowledgement

Thank you jneilliii and foosel for your continuous help!

License

OctoPrint-SmartABL  Copyright (C) 2022-2024 scmanjarrez.
This program comes with ABSOLUTELY NO WARRANTY; for details check below.
This is free software, and you are welcome to redistribute it
under certain conditions; check below for details.

LICENSE

octoprint-smartabl's People

Contributors

github-actions[bot] avatar scmanjarrez avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

saladpanda

octoprint-smartabl's Issues

[Request] - allow for custom G29 codes to be used

Is your feature request related to a problem? Please describe.

I like to use a custom leveler command in my START code:

G29 X4 Y4 L50 R150 F50 B150 T V4 ; do a quick BED LEVLING : 5 - point matrix bed level check

It would be nice if I could have SmartABL allow for custom input of the G29 command instead of using the default full G29.

Describe the solution you'd like

I could see two different solutions:

  1. I include the custom G29 command in my gcode... so it would be nice if it was just used when doing the leveling... and just skip it until the plugin settings are met (every 3 prints, or +1 days is what I set mine to be)
  2. allow the user to define it in the Octoprint plugin ... this seems like more work, but if this was easier, it'd be an okay solution

Describe alternatives you've considered

No response

Additional context

No response

[Help needed] Looking for Klipper users to make SmartABL compatible

Hi,
I'm looking for Klippers users that want to help me testing the plugin.
I'd like to understand how it works, how the leveling process is done with Klipper.

  • Do you use the same gcodes (G29*)?
  • How to you generate the gcodes files (same slicers a marlin)? A copy of gcodes file would be very helpful.
  • Is it possible to save and load a mesh from eeprom/disk?

SMartABL not working after update to Octoprint 1.9.1

The problem

Nothing changed other than update to Octoprint 1.9.0, then .1 then .2.
No ABL after print 5 (I have it set to 5 prints/ 10 days.

Version of SmartABL

1.2.2

Version of OctoPrint

1.92

Operating system running OctoPrint

OctoPi 1.0.0

Printer model & used firmware incl. version

E3V2, MRISCOC Ender3V2S1-20221002

Browser and version of browser, operating system running browser

Firefox, latest

Checklist of files to include below

  • Systeminfo Bundle (always include!)
  • Contents of the JavaScript browser console (always include in cases of issues with the user interface)
  • Screenshots and/or videos showing the problem (always include in case of issues with the user interface)
  • GCODE file with which to reproduce (always include in case of issues with GCODE analysis or printing behaviour)

Additional information & file uploads

plugin_SmartABL.log
octoprint-systeminfo-20230718111159.zip

Start and end codes unchanged since last issue reported.

Cancel button hides behind SmartABL buttons

The problem

Whenever I have this plugin active my cancel button drops behind Smart ABL....
image

Version of SmartABL

1.2.2

Version of OctoPrint

1.9.1

Operating system running OctoPrint

OctoPi

Printer model & used firmware incl. version

Ender 3 (BTT SKR Mini E3 V3) - Marlin - latest (just installed)

Browser and version of browser, operating system running browser

Chrome (latest)

Checklist of files to include below

  • Systeminfo Bundle (always include!)
  • Contents of the JavaScript browser console (always include in cases of issues with the user interface)
  • Screenshots and/or videos showing the problem (always include in case of issues with the user interface)
  • GCODE file with which to reproduce (always include in case of issues with GCODE analysis or printing behaviour)

Additional information & file uploads

octoprint-systeminfo-20230706093505.zip

JS Console:

msgport.js:70 {"notify":"init_tab"}
lockdown-install.js:1 Removing intrinsics.JSON.rawJSON
visitProperties @ lockdown-install.js:1
isAllowedPropertyValue @ lockdown-install.js:1
isAllowedProperty @ lockdown-install.js:1
visitProperties @ lockdown-install.js:1
(anonymous) @ lockdown-install.js:1
repairIntrinsics @ lockdown-install.js:1
(anonymous) @ lockdown-install.js:1
(anonymous) @ lockdown-run.js:4
lockdown-install.js:1 Removing intrinsics.JSON.isRawJSON
visitProperties @ lockdown-install.js:1
isAllowedPropertyValue @ lockdown-install.js:1
isAllowedProperty @ lockdown-install.js:1
visitProperties @ lockdown-install.js:1
(anonymous) @ lockdown-install.js:1
repairIntrinsics @ lockdown-install.js:1
(anonymous) @ lockdown-install.js:1
(anonymous) @ lockdown-run.js:4
lockdown-install.js:1 Removing intrinsics.%ArrayPrototype%.toReversed
visitProperties @ lockdown-install.js:1
isAllowedPropertyValue @ lockdown-install.js:1
isAllowedProperty @ lockdown-install.js:1
visitProperties @ lockdown-install.js:1
(anonymous) @ lockdown-install.js:1
repairIntrinsics @ lockdown-install.js:1
(anonymous) @ lockdown-install.js:1
(anonymous) @ lockdown-run.js:4
lockdown-install.js:1 Removing intrinsics.%ArrayPrototype%.toSorted
visitProperties @ lockdown-install.js:1
isAllowedPropertyValue @ lockdown-install.js:1
isAllowedProperty @ lockdown-install.js:1
visitProperties @ lockdown-install.js:1
(anonymous) @ lockdown-install.js:1
repairIntrinsics @ lockdown-install.js:1
(anonymous) @ lockdown-install.js:1
(anonymous) @ lockdown-run.js:4
lockdown-install.js:1 Removing intrinsics.%ArrayPrototype%.toSpliced
visitProperties @ lockdown-install.js:1
isAllowedPropertyValue @ lockdown-install.js:1
isAllowedProperty @ lockdown-install.js:1
visitProperties @ lockdown-install.js:1
(anonymous) @ lockdown-install.js:1
repairIntrinsics @ lockdown-install.js:1
(anonymous) @ lockdown-install.js:1
(anonymous) @ lockdown-run.js:4
lockdown-install.js:1 Removing intrinsics.%ArrayPrototype%.with
visitProperties @ lockdown-install.js:1
isAllowedPropertyValue @ lockdown-install.js:1
isAllowedProperty @ lockdown-install.js:1
visitProperties @ lockdown-install.js:1
(anonymous) @ lockdown-install.js:1
repairIntrinsics @ lockdown-install.js:1
(anonymous) @ lockdown-install.js:1
(anonymous) @ lockdown-run.js:4
lockdown-install.js:1 Removing intrinsics.%ArrayPrototype%.@@unscopables.toReversed
visitProperties @ lockdown-install.js:1
isAllowedPropertyValue @ lockdown-install.js:1
isAllowedProperty @ lockdown-install.js:1
visitProperties @ lockdown-install.js:1
isAllowedPropertyValue @ lockdown-install.js:1
isAllowedProperty @ lockdown-install.js:1
visitProperties @ lockdown-install.js:1
(anonymous) @ lockdown-install.js:1
repairIntrinsics @ lockdown-install.js:1
(anonymous) @ lockdown-install.js:1
(anonymous) @ lockdown-run.js:4
lockdown-install.js:1 Removing intrinsics.%ArrayPrototype%.@@unscopables.toSorted
visitProperties @ lockdown-install.js:1
isAllowedPropertyValue @ lockdown-install.js:1
isAllowedProperty @ lockdown-install.js:1
visitProperties @ lockdown-install.js:1
isAllowedPropertyValue @ lockdown-install.js:1
isAllowedProperty @ lockdown-install.js:1
visitProperties @ lockdown-install.js:1
(anonymous) @ lockdown-install.js:1
repairIntrinsics @ lockdown-install.js:1
(anonymous) @ lockdown-install.js:1
(anonymous) @ lockdown-run.js:4
lockdown-install.js:1 Removing intrinsics.%ArrayPrototype%.@@unscopables.toSpliced
visitProperties @ lockdown-install.js:1
isAllowedPropertyValue @ lockdown-install.js:1
isAllowedProperty @ lockdown-install.js:1
visitProperties @ lockdown-install.js:1
isAllowedPropertyValue @ lockdown-install.js:1
isAllowedProperty @ lockdown-install.js:1
visitProperties @ lockdown-install.js:1
(anonymous) @ lockdown-install.js:1
repairIntrinsics @ lockdown-install.js:1
(anonymous) @ lockdown-install.js:1
(anonymous) @ lockdown-run.js:4
lockdown-install.js:1 Removing intrinsics.%ArrayBufferPrototype%.transferToFixedLength
visitProperties @ lockdown-install.js:1
isAllowedPropertyValue @ lockdown-install.js:1
isAllowedProperty @ lockdown-install.js:1
visitProperties @ lockdown-install.js:1
(anonymous) @ lockdown-install.js:1
repairIntrinsics @ lockdown-install.js:1
(anonymous) @ lockdown-install.js:1
(anonymous) @ lockdown-run.js:4
lockdown-install.js:1 Removing intrinsics.%ArrayBufferPrototype%.detached
visitProperties @ lockdown-install.js:1
isAllowedPropertyValue @ lockdown-install.js:1
isAllowedProperty @ lockdown-install.js:1
visitProperties @ lockdown-install.js:1
(anonymous) @ lockdown-install.js:1
repairIntrinsics @ lockdown-install.js:1
(anonymous) @ lockdown-install.js:1
(anonymous) @ lockdown-run.js:4
lockdown-install.js:1 Removing intrinsics.%StringPrototype%.isWellFormed
visitProperties @ lockdown-install.js:1
isAllowedPropertyValue @ lockdown-install.js:1
isAllowedProperty @ lockdown-install.js:1
visitProperties @ lockdown-install.js:1
(anonymous) @ lockdown-install.js:1
repairIntrinsics @ lockdown-install.js:1
(anonymous) @ lockdown-install.js:1
(anonymous) @ lockdown-run.js:4
lockdown-install.js:1 Removing intrinsics.%StringPrototype%.toWellFormed
visitProperties @ lockdown-install.js:1
isAllowedPropertyValue @ lockdown-install.js:1
isAllowedProperty @ lockdown-install.js:1
visitProperties @ lockdown-install.js:1
(anonymous) @ lockdown-install.js:1
repairIntrinsics @ lockdown-install.js:1
(anonymous) @ lockdown-install.js:1
(anonymous) @ lockdown-run.js:4
lockdown-install.js:1 Removing intrinsics.%RegExpPrototype%.unicodeSets
visitProperties @ lockdown-install.js:1
isAllowedPropertyValue @ lockdown-install.js:1
isAllowedProperty @ lockdown-install.js:1
visitProperties @ lockdown-install.js:1
(anonymous) @ lockdown-install.js:1
repairIntrinsics @ lockdown-install.js:1
(anonymous) @ lockdown-install.js:1
(anonymous) @ lockdown-run.js:4
lockdown-install.js:1 Removing intrinsics.%TypedArrayPrototype%.toReversed
visitProperties @ lockdown-install.js:1
isAllowedPropertyValue @ lockdown-install.js:1
isAllowedProperty @ lockdown-install.js:1
visitProperties @ lockdown-install.js:1
(anonymous) @ lockdown-install.js:1
repairIntrinsics @ lockdown-install.js:1
(anonymous) @ lockdown-install.js:1
(anonymous) @ lockdown-run.js:4
lockdown-install.js:1 Removing intrinsics.%TypedArrayPrototype%.toSorted
visitProperties @ lockdown-install.js:1
isAllowedPropertyValue @ lockdown-install.js:1
isAllowedProperty @ lockdown-install.js:1
visitProperties @ lockdown-install.js:1
(anonymous) @ lockdown-install.js:1
repairIntrinsics @ lockdown-install.js:1
(anonymous) @ lockdown-install.js:1
(anonymous) @ lockdown-run.js:4
lockdown-install.js:1 Removing intrinsics.%TypedArrayPrototype%.with
visitProperties @ lockdown-install.js:1
isAllowedPropertyValue @ lockdown-install.js:1
isAllowedProperty @ lockdown-install.js:1
visitProperties @ lockdown-install.js:1
(anonymous) @ lockdown-install.js:1
repairIntrinsics @ lockdown-install.js:1
(anonymous) @ lockdown-install.js:1
(anonymous) @ lockdown-run.js:4
/?#tab_plugin_dashboard:1 [DOM] Found 2 elements with non-unique id #settings-gcodeviewer-size: (More info: https://goo.gl/9p2vKq) input#settings-gcodeviewer-size.input-mini.text-right input#settings-gcodeviewer-size.input-mini.text-right
packed_plugins.js?29c9aa6c:12667 Create PrettyGCode View Model
packed_core.js?aa48d7d9:1832 Starting dependency resolution...
packed_core.js?aa48d7d9:1845 ... dependency resolution done
packed_core.js?aa48d7d9:1868 Initial application setup done, connecting to server...
DevTools failed to load source map: Could not load content for chrome-extension://bmnlcjabgnpnenekpadlanbbkooimhnj/browser-polyfill.js.map: System error: net::ERR_BLOCKED_BY_CLIENT
packed_core.js?aa48d7d9:1662 Connected to the server
packed_core.js?aa48d7d9:1667 Triggering connect on all view models
packed_core.js?aa48d7d9:1669 Server (re)connect processed
packed_core.js?aa48d7d9:1868 Finalizing application startup
packed_core.js?aa48d7d9:1849 Going to bind 56 view models...
packed_core.js?aa48d7d9:1861 Did not bind view model TimelapseViewModel to target #timelapse since it does not exist
packed_core.js?aa48d7d9:1861 Did not bind view model TimelapseViewModel to target #timelapse_link since it does not exist
packed_core.js?aa48d7d9:1861 Did not bind view model BackupViewModel to target #wizard_plugin_backup since it does not exist
packed_core.js?aa48d7d9:1861 Did not bind view model ClassicWebcamWizardViewModel to target #wizard_classicwebcam since it does not exist
packed_core.js?aa48d7d9:860 Chrome Arc Fix disabled
packed_core.js?aa48d7d9:860 Chrome Arc Fix enabled
packed_core.js?aa48d7d9:1861 Did not bind view model UsageViewModel to target #wizard_plugin_tracking since it does not exist
packed_core.js?aa48d7d9:1861 Did not bind view model ClassicWebcamViewModel to target #classicwebcam_container since it does not exist
packed_core.js?aa48d7d9:1861 Did not bind view model SoftwareUpdateViewModel to target #softwareupdate_confirmation_dialog since it does not exist
packed_core.js?aa48d7d9:1861 Did not bind view model SoftwareUpdateViewModel to target #wizard_plugin_softwareupdate_update since it does not exist
packed_core.js?aa48d7d9:1861 Did not bind view model SoftwareUpdateViewModel to target #wizard_plugin_softwareupdate_settings since it does not exist
packed_core.js?aa48d7d9:344 Please use the webcam system introduced with 1.9.0, the webcam_rotate90 config setting is deprecated and will be removed in a future release. Stacktrace: Error
    at SettingsViewModel.read (http://octopi.neomatrix.us/static/webassets/packed_core.js?aa48d7d9:344:137)
    at Function.yd (http://octopi.neomatrix.us/static/webassets/packed_libs.js?6bee1dee:130:18275)
    at Function.zd (http://octopi.neomatrix.us/static/webassets/packed_libs.js?6bee1dee:130:17972)
    at Function.ha (http://octopi.neomatrix.us/static/webassets/packed_libs.js?6bee1dee:130:17808)
    at Function.Qa (http://octopi.neomatrix.us/static/webassets/packed_libs.js?6bee1dee:130:18942)
    at Function.subscribe (http://octopi.neomatrix.us/static/webassets/packed_libs.js?6bee1dee:130:9437)
    at Function.$c (http://octopi.neomatrix.us/static/webassets/packed_libs.js?6bee1dee:130:17479)
    at Object.ba (http://octopi.neomatrix.us/static/webassets/packed_libs.js?6bee1dee:129:824)
    at Object.cc (http://octopi.neomatrix.us/static/webassets/packed_libs.js?6bee1dee:130:11134)
    at SettingsViewModel.e [as webcam_rotate90] (http://octopi.neomatrix.us/static/webassets/packed_libs.js?6bee1dee:130:15915)
read @ packed_core.js?aa48d7d9:344
yd @ packed_libs.js?6bee1dee:130
zd @ packed_libs.js?6bee1dee:130
ha @ packed_libs.js?6bee1dee:130
Qa @ packed_libs.js?6bee1dee:130
subscribe @ packed_libs.js?6bee1dee:130
$c @ packed_libs.js?6bee1dee:130
ba @ packed_libs.js?6bee1dee:129
cc @ packed_libs.js?6bee1dee:130
e @ packed_libs.js?6bee1dee:130
css @ VM11066:3
update @ packed_libs.js?6bee1dee:133
a.$.l @ packed_libs.js?6bee1dee:132
yd @ packed_libs.js?6bee1dee:130
zd @ packed_libs.js?6bee1dee:130
ha @ packed_libs.js?6bee1dee:130
a.o.a.$ @ packed_libs.js?6bee1dee:130
(anonymous) @ packed_libs.js?6bee1dee:132
D @ packed_libs.js?6bee1dee:129
p @ packed_libs.js?6bee1dee:131
k @ packed_libs.js?6bee1dee:131
m @ packed_libs.js?6bee1dee:131
k @ packed_libs.js?6bee1dee:131
m @ packed_libs.js?6bee1dee:131
k @ packed_libs.js?6bee1dee:131
a.vc @ packed_libs.js?6bee1dee:132
(anonymous) @ packed_core.js?aa48d7d9:1863
Pn @ packed_libs.js?6bee1dee:30
(anonymous) @ packed_libs.js?6bee1dee:51
(anonymous) @ packed_core.js?aa48d7d9:1858
Pn @ packed_libs.js?6bee1dee:30
(anonymous) @ packed_libs.js?6bee1dee:51
bindViewModels @ packed_core.js?aa48d7d9:1849
setTimeout (async)
(anonymous) @ packed_core.js?aa48d7d9:1868
c @ packed_libs.js?6bee1dee:13
fireWith @ packed_libs.js?6bee1dee:13
l @ packed_libs.js?6bee1dee:13
(anonymous) @ packed_libs.js?6bee1dee:13
load (async)
send @ packed_libs.js?6bee1dee:13
ajax @ packed_libs.js?6bee1dee:13
OctoPrintClient.ajax @ packed_client.js?3339ed72:12
OctoPrintClient.get @ packed_client.js?3339ed72:12
OctoPrintSettingsClient.get @ packed_client.js?3339ed72:112
SettingsViewModel.self.requestData @ packed_core.js?aa48d7d9:334
fetchSettings @ packed_core.js?aa48d7d9:1868
setTimeout (async)
(anonymous) @ packed_core.js?aa48d7d9:1868
c @ packed_libs.js?6bee1dee:13
fireWith @ packed_libs.js?6bee1dee:13
l @ packed_libs.js?6bee1dee:13
(anonymous) @ packed_libs.js?6bee1dee:13
load (async)
send @ packed_libs.js?6bee1dee:13
ajax @ packed_libs.js?6bee1dee:13
OctoPrintClient.ajax @ packed_client.js?3339ed72:12
OctoPrintClient.ajaxWithData @ packed_client.js?3339ed72:12
OctoPrintClient.post @ packed_client.js?3339ed72:12
OctoPrintClient.postJson @ packed_client.js?3339ed72:12
OctoPrintBrowserClient.passiveLogin @ packed_client.js?3339ed72:60
LoginStateViewModel.self.requestData @ packed_core.js?aa48d7d9:235
onServerConnect @ packed_core.js?aa48d7d9:1868
(anonymous) @ packed_core.js?aa48d7d9:1868
c @ packed_libs.js?6bee1dee:13
fireWith @ packed_libs.js?6bee1dee:13
s.<computed> @ packed_libs.js?6bee1dee:13
DataUpdater.self._onConnectMessage @ packed_core.js?aa48d7d9:1662
(anonymous) @ packed_client.js?3339ed72:24
Pn @ packed_libs.js?6bee1dee:30
(anonymous) @ packed_libs.js?6bee1dee:51
OctoPrintSocketClient.propagateMessage @ packed_client.js?3339ed72:24
(anonymous) @ packed_client.js?3339ed72:31
(anonymous) @ packed_libs.js?6bee1dee:47
_t @ packed_libs.js?6bee1dee:35
(anonymous) @ packed_libs.js?6bee1dee:46
(anonymous) @ packed_libs.js?6bee1dee:51
onMessage @ packed_client.js?3339ed72:31
r.dispatchEvent @ packed_libs.js?6bee1dee:1585
(anonymous) @ packed_libs.js?6bee1dee:1585
w._transportMessage @ packed_libs.js?6bee1dee:1585
i.emit @ packed_libs.js?6bee1dee:1585
ws.onmessage @ packed_libs.js?6bee1dee:1585
packed_core.js?aa48d7d9:344 Please use the webcam system introduced with 1.9.0, the webcam_flipH config setting is deprecated and will be removed in a future release. Stacktrace: Error
    at SettingsViewModel.read (http://octopi.neomatrix.us/static/webassets/packed_core.js?aa48d7d9:344:137)
    at Function.yd (http://octopi.neomatrix.us/static/webassets/packed_libs.js?6bee1dee:130:18275)
    at Function.zd (http://octopi.neomatrix.us/static/webassets/packed_libs.js?6bee1dee:130:17972)
    at Function.ha (http://octopi.neomatrix.us/static/webassets/packed_libs.js?6bee1dee:130:17808)
    at Function.Qa (http://octopi.neomatrix.us/static/webassets/packed_libs.js?6bee1dee:130:18942)
    at Function.subscribe (http://octopi.neomatrix.us/static/webassets/packed_libs.js?6bee1dee:130:9437)
    at Function.$c (http://octopi.neomatrix.us/static/webassets/packed_libs.js?6bee1dee:130:17479)
    at Object.ba (http://octopi.neomatrix.us/static/webassets/packed_libs.js?6bee1dee:129:824)
    at Object.cc (http://octopi.neomatrix.us/static/webassets/packed_libs.js?6bee1dee:130:11134)
    at SettingsViewModel.e [as webcam_flipH] (http://octopi.neomatrix.us/static/webassets/packed_libs.js?6bee1dee:130:15915)
read @ packed_core.js?aa48d7d9:344
yd @ packed_libs.js?6bee1dee:130
zd @ packed_libs.js?6bee1dee:130
ha @ packed_libs.js?6bee1dee:130
Qa @ packed_libs.js?6bee1dee:130
subscribe @ packed_libs.js?6bee1dee:130
$c @ packed_libs.js?6bee1dee:130
ba @ packed_libs.js?6bee1dee:129
cc @ packed_libs.js?6bee1dee:130
e @ packed_libs.js?6bee1dee:130
css @ VM11068:3
update @ packed_libs.js?6bee1dee:133
a.$.l @ packed_libs.js?6bee1dee:132
yd @ packed_libs.js?6bee1dee:130
zd @ packed_libs.js?6bee1dee:130
ha @ packed_libs.js?6bee1dee:130
a.o.a.$ @ packed_libs.js?6bee1dee:130
(anonymous) @ packed_libs.js?6bee1dee:132
D @ packed_libs.js?6bee1dee:129
p @ packed_libs.js?6bee1dee:131
k @ packed_libs.js?6bee1dee:131
m @ packed_libs.js?6bee1dee:131
k @ packed_libs.js?6bee1dee:131
m @ packed_libs.js?6bee1dee:131
k @ packed_libs.js?6bee1dee:131
m @ packed_libs.js?6bee1dee:131
k @ packed_libs.js?6bee1dee:131
m @ packed_libs.js?6bee1dee:131
k @ packed_libs.js?6bee1dee:131
m @ packed_libs.js?6bee1dee:131
k @ packed_libs.js?6bee1dee:131
a.vc @ packed_libs.js?6bee1dee:132
(anonymous) @ packed_core.js?aa48d7d9:1863
Pn @ packed_libs.js?6bee1dee:30
(anonymous) @ packed_libs.js?6bee1dee:51
(anonymous) @ packed_core.js?aa48d7d9:1858
Pn @ packed_libs.js?6bee1dee:30
(anonymous) @ packed_libs.js?6bee1dee:51
bindViewModels @ packed_core.js?aa48d7d9:1849
setTimeout (async)
(anonymous) @ packed_core.js?aa48d7d9:1868
c @ packed_libs.js?6bee1dee:13
fireWith @ packed_libs.js?6bee1dee:13
l @ packed_libs.js?6bee1dee:13
(anonymous) @ packed_libs.js?6bee1dee:13
load (async)
send @ packed_libs.js?6bee1dee:13
ajax @ packed_libs.js?6bee1dee:13
OctoPrintClient.ajax @ packed_client.js?3339ed72:12
OctoPrintClient.get @ packed_client.js?3339ed72:12
OctoPrintSettingsClient.get @ packed_client.js?3339ed72:112
SettingsViewModel.self.requestData @ packed_core.js?aa48d7d9:334
fetchSettings @ packed_core.js?aa48d7d9:1868
setTimeout (async)
(anonymous) @ packed_core.js?aa48d7d9:1868
c @ packed_libs.js?6bee1dee:13
fireWith @ packed_libs.js?6bee1dee:13
l @ packed_libs.js?6bee1dee:13
(anonymous) @ packed_libs.js?6bee1dee:13
load (async)
send @ packed_libs.js?6bee1dee:13
ajax @ packed_libs.js?6bee1dee:13
OctoPrintClient.ajax @ packed_client.js?3339ed72:12
OctoPrintClient.ajaxWithData @ packed_client.js?3339ed72:12
OctoPrintClient.post @ packed_client.js?3339ed72:12
OctoPrintClient.postJson @ packed_client.js?3339ed72:12
OctoPrintBrowserClient.passiveLogin @ packed_client.js?3339ed72:60
LoginStateViewModel.self.requestData @ packed_core.js?aa48d7d9:235
onServerConnect @ packed_core.js?aa48d7d9:1868
(anonymous) @ packed_core.js?aa48d7d9:1868
c @ packed_libs.js?6bee1dee:13
fireWith @ packed_libs.js?6bee1dee:13
s.<computed> @ packed_libs.js?6bee1dee:13
DataUpdater.self._onConnectMessage @ packed_core.js?aa48d7d9:1662
(anonymous) @ packed_client.js?3339ed72:24
Pn @ packed_libs.js?6bee1dee:30
(anonymous) @ packed_libs.js?6bee1dee:51
OctoPrintSocketClient.propagateMessage @ packed_client.js?3339ed72:24
(anonymous) @ packed_client.js?3339ed72:31
(anonymous) @ packed_libs.js?6bee1dee:47
_t @ packed_libs.js?6bee1dee:35
(anonymous) @ packed_libs.js?6bee1dee:46
(anonymous) @ packed_libs.js?6bee1dee:51
onMessage @ packed_client.js?3339ed72:31
r.dispatchEvent @ packed_libs.js?6bee1dee:1585
(anonymous) @ packed_libs.js?6bee1dee:1585
w._transportMessage @ packed_libs.js?6bee1dee:1585
i.emit @ packed_libs.js?6bee1dee:1585
ws.onmessage @ packed_libs.js?6bee1dee:1585
packed_core.js?aa48d7d9:344 Please use the webcam system introduced with 1.9.0, the webcam_flipV config setting is deprecated and will be removed in a future release. Stacktrace: Error
    at SettingsViewModel.read (http://octopi.neomatrix.us/static/webassets/packed_core.js?aa48d7d9:344:137)
    at Function.yd (http://octopi.neomatrix.us/static/webassets/packed_libs.js?6bee1dee:130:18275)
    at Function.zd (http://octopi.neomatrix.us/static/webassets/packed_libs.js?6bee1dee:130:17972)
    at Function.ha (http://octopi.neomatrix.us/static/webassets/packed_libs.js?6bee1dee:130:17808)
    at Function.Qa (http://octopi.neomatrix.us/static/webassets/packed_libs.js?6bee1dee:130:18942)
    at Function.subscribe (http://octopi.neomatrix.us/static/webassets/packed_libs.js?6bee1dee:130:9437)
    at Function.$c (http://octopi.neomatrix.us/static/webassets/packed_libs.js?6bee1dee:130:17479)
    at Object.ba (http://octopi.neomatrix.us/static/webassets/packed_libs.js?6bee1dee:129:824)
    at Object.cc (http://octopi.neomatrix.us/static/webassets/packed_libs.js?6bee1dee:130:11134)
    at SettingsViewModel.e [as webcam_flipV] (http://octopi.neomatrix.us/static/webassets/packed_libs.js?6bee1dee:130:15915)
read @ packed_core.js?aa48d7d9:344
yd @ packed_libs.js?6bee1dee:130
zd @ packed_libs.js?6bee1dee:130
ha @ packed_libs.js?6bee1dee:130
Qa @ packed_libs.js?6bee1dee:130
subscribe @ packed_libs.js?6bee1dee:130
$c @ packed_libs.js?6bee1dee:130
ba @ packed_libs.js?6bee1dee:129
cc @ packed_libs.js?6bee1dee:130
e @ packed_libs.js?6bee1dee:130
css @ VM11068:3
update @ packed_libs.js?6bee1dee:133
a.$.l @ packed_libs.js?6bee1dee:132
yd @ packed_libs.js?6bee1dee:130
zd @ packed_libs.js?6bee1dee:130
ha @ packed_libs.js?6bee1dee:130
a.o.a.$ @ packed_libs.js?6bee1dee:130
(anonymous) @ packed_libs.js?6bee1dee:132
D @ packed_libs.js?6bee1dee:129
p @ packed_libs.js?6bee1dee:131
k @ packed_libs.js?6bee1dee:131
m @ packed_libs.js?6bee1dee:131
k @ packed_libs.js?6bee1dee:131
m @ packed_libs.js?6bee1dee:131
k @ packed_libs.js?6bee1dee:131
m @ packed_libs.js?6bee1dee:131
k @ packed_libs.js?6bee1dee:131
m @ packed_libs.js?6bee1dee:131
k @ packed_libs.js?6bee1dee:131
m @ packed_libs.js?6bee1dee:131
k @ packed_libs.js?6bee1dee:131
a.vc @ packed_libs.js?6bee1dee:132
(anonymous) @ packed_core.js?aa48d7d9:1863
Pn @ packed_libs.js?6bee1dee:30
(anonymous) @ packed_libs.js?6bee1dee:51
(anonymous) @ packed_core.js?aa48d7d9:1858
Pn @ packed_libs.js?6bee1dee:30
(anonymous) @ packed_libs.js?6bee1dee:51
bindViewModels @ packed_core.js?aa48d7d9:1849
setTimeout (async)
(anonymous) @ packed_core.js?aa48d7d9:1868
c @ packed_libs.js?6bee1dee:13
fireWith @ packed_libs.js?6bee1dee:13
l @ packed_libs.js?6bee1dee:13
(anonymous) @ packed_libs.js?6bee1dee:13
load (async)
send @ packed_libs.js?6bee1dee:13
ajax @ packed_libs.js?6bee1dee:13
OctoPrintClient.ajax @ packed_client.js?3339ed72:12
OctoPrintClient.get @ packed_client.js?3339ed72:12
OctoPrintSettingsClient.get @ packed_client.js?3339ed72:112
SettingsViewModel.self.requestData @ packed_core.js?aa48d7d9:334
fetchSettings @ packed_core.js?aa48d7d9:1868
setTimeout (async)
(anonymous) @ packed_core.js?aa48d7d9:1868
c @ packed_libs.js?6bee1dee:13
fireWith @ packed_libs.js?6bee1dee:13
l @ packed_libs.js?6bee1dee:13
(anonymous) @ packed_libs.js?6bee1dee:13
load (async)
send @ packed_libs.js?6bee1dee:13
ajax @ packed_libs.js?6bee1dee:13
OctoPrintClient.ajax @ packed_client.js?3339ed72:12
OctoPrintClient.ajaxWithData @ packed_client.js?3339ed72:12
OctoPrintClient.post @ packed_client.js?3339ed72:12
OctoPrintClient.postJson @ packed_client.js?3339ed72:12
OctoPrintBrowserClient.passiveLogin @ packed_client.js?3339ed72:60
LoginStateViewModel.self.requestData @ packed_core.js?aa48d7d9:235
onServerConnect @ packed_core.js?aa48d7d9:1868
(anonymous) @ packed_core.js?aa48d7d9:1868
c @ packed_libs.js?6bee1dee:13
fireWith @ packed_libs.js?6bee1dee:13
s.<computed> @ packed_libs.js?6bee1dee:13
DataUpdater.self._onConnectMessage @ packed_core.js?aa48d7d9:1662
(anonymous) @ packed_client.js?3339ed72:24
Pn @ packed_libs.js?6bee1dee:30
(anonymous) @ packed_libs.js?6bee1dee:51
OctoPrintSocketClient.propagateMessage @ packed_client.js?3339ed72:24
(anonymous) @ packed_client.js?3339ed72:31
(anonymous) @ packed_libs.js?6bee1dee:47
_t @ packed_libs.js?6bee1dee:35
(anonymous) @ packed_libs.js?6bee1dee:46
(anonymous) @ packed_libs.js?6bee1dee:51
onMessage @ packed_client.js?3339ed72:31
r.dispatchEvent @ packed_libs.js?6bee1dee:1585
(anonymous) @ packed_libs.js?6bee1dee:1585
w._transportMessage @ packed_libs.js?6bee1dee:1585
i.emit @ packed_libs.js?6bee1dee:1585
ws.onmessage @ packed_libs.js?6bee1dee:1585
packed_core.js?aa48d7d9:1861 Did not bind view model bedlevelvisualizerViewModel to target #wizard_plugin_bedlevelvisualizer since it does not exist
packed_plugins.js?29c9aa6c:13188 onAfterBinding
packed_plugins.js?29c9aa6c:10462 onBeforeBinding: settings= {atCommandActions: ƒ, clearRegionsAfterPrintFinishes: ƒ, enteringExcludedRegionGcode: ƒ, exitingExcludedRegionGcode: ƒ, extendedExcludeGcodes: ƒ, …}
packed_core.js?aa48d7d9:235 User admin logged in
packed_core.js?aa48d7d9:240 Login mechanism: http
packed_core.js?aa48d7d9:1866 ... binding done
packed_core.js?aa48d7d9:1866 Application startup complete
packed_core.js?aa48d7d9:1796 Error calling onTabChange on view model PrettyGCodeViewModel : TypeError: self.controlViewModel._enableWebcam is not a function
    at PrettyGCodeViewModel.self.onTabChange (http://octopi.neomatrix.us/static/webassets/packed_plugins.js?29c9aa6c:13475:43)
    at callViewModelIf (http://octopi.neomatrix.us/static/webassets/packed_core.js?aa48d7d9:1795:75)
    at http://octopi.neomatrix.us/static/webassets/packed_core.js?aa48d7d9:1789:138
    at Pn (http://octopi.neomatrix.us/static/webassets/packed_libs.js?6bee1dee:30:530)
    at Function.<anonymous> (http://octopi.neomatrix.us/static/webassets/packed_libs.js?6bee1dee:51:66)
    at callViewModelsIf (http://octopi.neomatrix.us/static/webassets/packed_core.js?aa48d7d9:1789:95)
    at callViewModels (http://octopi.neomatrix.us/static/webassets/packed_core.js?aa48d7d9:1788:56)
    at OctoPrint.coreui.exports.onTabChange (http://octopi.neomatrix.us/static/webassets/packed_core.js?aa48d7d9:1822:47)
    at HTMLAnchorElement.<anonymous> (http://octopi.neomatrix.us/static/webassets/packed_core.js?aa48d7d9:1845:1896)
    at HTMLAnchorElement.dispatch (http://octopi.neomatrix.us/static/webassets/packed_libs.js?6bee1dee:13:43090)
callViewModelIf @ packed_core.js?aa48d7d9:1796
(anonymous) @ packed_core.js?aa48d7d9:1789
Pn @ packed_libs.js?6bee1dee:30
(anonymous) @ packed_libs.js?6bee1dee:51
callViewModelsIf @ packed_core.js?aa48d7d9:1789
callViewModels @ packed_core.js?aa48d7d9:1788
OctoPrint.coreui.exports.onTabChange @ packed_core.js?aa48d7d9:1822
(anonymous) @ packed_core.js?aa48d7d9:1845
dispatch @ packed_libs.js?6bee1dee:13
v.handle @ packed_libs.js?6bee1dee:13
trigger @ packed_libs.js?6bee1dee:13
(anonymous) @ packed_libs.js?6bee1dee:13
each @ packed_libs.js?6bee1dee:13
each @ packed_libs.js?6bee1dee:13
trigger @ packed_libs.js?6bee1dee:13
show @ packed_libs.js?6bee1dee:536
(anonymous) @ packed_libs.js?6bee1dee:552
each @ packed_libs.js?6bee1dee:13
each @ packed_libs.js?6bee1dee:13
$.fn.tab @ packed_libs.js?6bee1dee:550
selectTab @ packed_core.js?aa48d7d9:1823
OctoPrint.coreui.exports.updateTab @ packed_core.js?aa48d7d9:1823
bindViewModels @ packed_core.js?aa48d7d9:1868
setTimeout (async)
(anonymous) @ packed_core.js?aa48d7d9:1868
c @ packed_libs.js?6bee1dee:13
fireWith @ packed_libs.js?6bee1dee:13
l @ packed_libs.js?6bee1dee:13
(anonymous) @ packed_libs.js?6bee1dee:13
packed_plugins.js?29c9aa6c:10715 ExcludeRegionPlugin:: excludedRegions updated, redrawing GCODE viewer: excludedRegions= []

[Request] ABL Misfire

Is your feature request related to a problem? Please describe.

I always have to redo the ABL if for some reason it misfires, i.e. there is a big cavern in the middle of the bed.

Describe the solution you'd like

If the variation is off by more than X redo the auto leveling automatically.

Describe alternatives you've considered

No response

Additional context

No response

Question regarding functions

Hello, I've gotten the plugin to work just once and I have it set to abl after 6 successfully prints. But now, I can't get it to abl after 6 prints. My question is, I'm using prusaslicer and I do not have G29 in the gcode as I rarely have to abl my bed, I have G28 followed by M420 s1 z10.
Is it required to include G29 into custom g-code for this to work?

[Request] Reset smartabl when bed leveling is run not through a file.

Is your feature request related to a problem? Please describe.

When I run a bed level visualization with Bed Visualizer, it doesn't reset the counter on smartabl.

Describe the solution you'd like

It would be nice if SmartABL would detect the g29 being sent to the printer, or even had a macro that would reset the counter. (In such a way that the macro could be added to the bed level visualizer level gcode)

Describe alternatives you've considered

It would work fine if there were just a button to reset it. Possibly, if you click on the middle area that shows the count of when the next abl will be run, giving a popup to reset it.

Additional context

No response

Still shows version 1.2.0 after updating to 1.2.1

The problem

  1. update to 1.2.1
  2. restart Octoprint
  3. pop shows that an upgrade to 1.2.1 is available

Version of SmartABL

1.2.1

Version of OctoPrint

1.9.0

Operating system running OctoPrint

OctoPi

Printer model & used firmware incl. version

No response

Browser and version of browser, operating system running browser

No response

Checklist of files to include below

  • Systeminfo Bundle (always include!)
  • Contents of the JavaScript browser console (always include in cases of issues with the user interface)
  • Screenshots and/or videos showing the problem (always include in case of issues with the user interface)
  • GCODE file with which to reproduce (always include in case of issues with GCODE analysis or printing behaviour)

Additional information & file uploads

octoprint-systeminfo-20230625150451.zip

[Request] Special behavior short short prints

Is your feature request related to a problem? Please describe.

I'm often frustrated when quickly firing up some 15 minute, off the cuff print, and find that because of bed leveling, it's be twice as long until I can have my part. Granted, my 7*7 leveling might be excessive, but still

Describe the solution you'd like

A section of settings for short prints that override the general settings. There could even be a field for the user to specify what they mean by short, but I think less than 20-30 minutes should be a good default. That way if you plan on firing off a bunch of little prints, you can have those force an updated mesh after every 10 prints, while your normal prints are every 5

Describe alternatives you've considered

No response

Additional context

No response

Printer is stuck

The problem

  1. Start the print with any of my files (example provided!) and default settings of SmartABL
  2. Printer will heat the bed to 60°C, then homes all axes
  3. It then heats the tool to 160° (the preheat-temperature).
  4. Nothing more happens with the printer.

If I try to cancel the print, the state is stuck in "Cancelling". Deactivating the SmartABL-Plugin will solve the issue.

The start gcode is as follows:

; --- Global Settings
; layer_height = {layer_height}
; smooth_spiralized_contours = {smooth_spiralized_contours}
; magic_mesh_surface_mode = {magic_mesh_surface_mode}
; machine_extruder_count = {machine_extruder_count}
; --- Single Extruder Settings
; speed_z_hop = {speed_z_hop}
; retraction_amount = {retraction_amount}
; retraction_hop = {retraction_hop}
; retraction_hop_enabled = {retraction_hop_enabled}
; retraction_enable = {retraction_enable}
; retraction_speed = {retraction_speed}
; retraction_retract_speed = {retraction_retract_speed}
; retraction_prime_speed = {retraction_prime_speed}
; speed_travel = {speed_travel}

; Turn ON PSU
M80
; Extruder-Steps
M92 E460 ; Extruder steps (vorher: 445)
M900 K0.1 ; Linear-Advance for PLA

M190 S{material_bed_temperature_layer_0} ; Warten, bis vorgeheizt
G28; Fahr zum Nullpunkt
; M851 Z-2.52; Nozzle to probe offset PETG
; M851 Z-3.17 ; PLA
M104 S160 ; extruder auf 160 ° heizen
@BEDLEVELVISUALIZER
G29; Autoleveling
M420 S1; Get and/or set bed leveling state
M109 S{material_print_temperature_layer_0} ; extruder korrekt heizen
G92 E0; setze den Extruder auf Null
G1 Z2.0 F3000; Druckkopf 2mm nach oben fahren
G1 X10.1 Y20 Z{layer_height_0} F5000.0; Fahre an die Startposition X10.1 Y20 Z0.28
G1 X10.1 Y200.0 Z{layer_height_0} F1500.0 E25; Ziehe eine Linie von der Startposition aus nach Y200
G1 X10.4 Y200.0 Z{layer_height_0} F5000.0; Bissl zur Seite bewegen
G1 X10.4 Y20 Z{layer_height_0} F1500.0 E50; eine 2. Linie nach vorne ziehen
G92 E0; setze den Extruder auf Null
G1 Z2.0 F3000; Fahr die Düse 2mm nach oben
;M201 X2000.00 Y500.00 Z100.00 E10000.00

The last line I can see in the terminal is M104 S160:

Changing monitoring state from "Operational" to "Starting"
Send: N4 M117 ETA is 15:35:03*75
Recv: ok
Send: N0 M110 N0*125
Recv: ok
Changing monitoring state from "Starting" to "Printing"
Recv:  T:171.27 /0.00 B:57.37 /0.00 @:0 B@:0
Send: N1 M82*24
Recv: ok
PSUControl: ok
Send: N2 M92 E460*77
[...]
Recv: ok
Send: N3 M117 ETA is 15:32:27*77
Recv: ok
Send: N4 M117 ETA is 15:32:28*69
Recv: ok
Send: N5 M117 ETA is 15:32:12*77
Recv: ok
Send: N6 M900 K0.1*104
Recv: ok
Send: N7 M190 S60*89
[...]
Recv: ok
Send: N8 M113 S2*105
Recv: ok
Send: N9 M117 ETA is 15:32:04*70
Recv: ok
Send: N10 M117 ETA is 15:32:14*127
Recv: ok
Send: N11 M117 ETA is 15:32:24*125
Recv: ok
Send: N12 G28*32
[...]
Recv: X:128.00 Y:187.00 Z:17.78 E:0.00 Count X:10255 Y:14983 Z:7108
Recv: ok
Send: N13 M117 ETA is 15:32:31*123
Recv: ok
Send: N14 M117 ETA is 15:32:41*123
Recv:  T:141.09 /0.00 B:62.13 /60.00 @:0 B@:0
Recv: ok
Send: N15 M104 S160*86
Recv: ok
Send: N16 M420 V1*85
Recv: Bilinear Leveling Grid:
Recv:       0      1      2      3      4
Recv:  0 +0.117 +0.069 +0.054 +0.054 +0.127
Recv:  1 +0.094 +0.037 +0.019 +0.014 +0.029
Recv:  2 +0.129 +0.092 +0.054 +0.042 +0.022
Recv:  3 +0.049 -0.021 -0.026 +0.002 -0.041
Recv:  4 -0.016 -0.066 -0.068 -0.046 -0.001
Recv: 
Recv: echo:Bed Leveling OFF
Recv: echo:Fade Height OFF
Recv: ok
Send: N17 G29*36
[...]
Recv: Bilinear Leveling Grid:
Recv:       0      1      2      3      4
Recv:  0 +0.069 +0.027 +0.019 -0.003 +0.054
Recv:  1 +0.049 +0.012 -0.023 -0.021 -0.013
Recv:  2 +0.072 +0.044 +0.017 -0.018 -0.028
Recv:  3 -0.018 -0.053 -0.066 -0.043 -0.063
Recv:  4 -0.104 -0.129 -0.134 -0.099 -0.056
Recv: 
Recv: echo:busy: processing
Recv:  T:159.63 /160.00 B:60.03 /60.00 @:23 B@:0
Recv: X:258.00 Y:310.00 Z:15.00 E:0.00 Count X:20671 Y:24838 Z:5967
Recv: ok
Send: N18 M117 ETA is 15:32:32*115
Recv: ok
Send: N19 M117 ETA is 15:32:42*117
Recv: ok
Send: N20 M117 ETA is 15:32:52*126
Recv: ok
Send: N21 M117 ETA is 15:33:02*123
Recv: ok
Send: N22 M117 ETA is 15:33:12*121
Recv: ok
Send: N23 M117 ETA is 15:33:22*123
Recv: ok
Send: N24 M117 ETA is 15:33:32*125
Recv: ok
Send: N25 M500*17
Recv: echo:Settings Stored (709 bytes; crc 57400)
Recv: ok
Send: N26 M420 V1*86
Recv: Bilinear Leveling Grid:
Recv:       0      1      2      3      4
Recv:  0 +0.069 +0.027 +0.019 -0.003 +0.054
Recv:  1 +0.049 +0.012 -0.023 -0.021 -0.013
Recv:  2 +0.072 +0.044 +0.017 -0.018 -0.028
Recv:  3 -0.018 -0.053 -0.066 -0.043 -0.063
Recv:  4 -0.104 -0.129 -0.134 -0.099 -0.056
Recv: 
Recv: echo:Bed Leveling ON
Recv: echo:Fade Height OFF
Recv: ok
Recv:  T:160.13 /160.00 B:59.69 /60.00 @:16 B@:11
Send: N27 M117 ETA is 15:33:37*123
Recv: ok
Recv:  T:160.35 /160.00 B:59.71 /60.00 @:14 B@:8
Recv:  T:160.13 /160.00 B:59.84 /60.00 @:16 B@:1
Recv:  T:159.85 /160.00 B:59.79 /60.00 @:20 B@:6
Recv:  T:159.96 /160.00 B:59.80 /60.00 @:19 B@:7
Recv:  T:159.67 /160.00 B:59.38 /60.00 @:22 B@:29
Send: N28 M117 ETA is 15:33:47*115
Recv: ok
[...]

Version of SmartABL

1.2.0

Version of OctoPrint

1.9.0

Operating system running OctoPrint

RaspiOS with docker

Printer model & used firmware incl. version

Sidewinder X1

Browser and version of browser, operating system running browser

Checklist of files to include below

  • Systeminfo Bundle (always include!)
  • Contents of the JavaScript browser console (always include in cases of issues with the user interface)
  • Screenshots and/or videos showing the problem (always include in case of issues with the user interface)
  • GCODE file with which to reproduce (always include in case of issues with GCODE analysis or printing behaviour)

Additional information & file uploads

octoprint-systeminfo-20230624150405.zip
plugin_SmartABL (2).log
PipeHolder.aw.gcode.txt

SmartABL continually executes ABL on every print if ABL not saved to EEPROM

The problem

Hi Sergio, the add-in works really well! I've noticed an issue that may not be a bug. When SmartABL triggers an ABL, it will run and on the actual printer screen, you have a prompt to save the newly run ABL. If you don't press save, then the print job starts. But on the next print job, SmartABL runs again. I guess this makes sense, since the ABL Mesh was not saved to EEPROM. Is there a way for SmartABL to execute the save automatically, as opposed to me needing to manually press SAVE on the printer screen?

Version of SmartABL

1.0.0

Version of OctoPrint

1.87

Operating system running OctoPrint

Version 0.18.0, running on Raspberry Pi 3 Model B Rev 1.2

Printer model & used firmware incl. version

Ender 3v2, Mriscoc 2.13

Browser and version of browser, operating system running browser

Firefox, Windows 10 Pro 22H2

Checklist of files to include below

  • Systeminfo Bundle (always include!)
  • Contents of the JavaScript browser console (always include in cases of issues with the user interface)
  • Screenshots and/or videos showing the problem (always include in case of issues with the user interface)
  • GCODE file with which to reproduce (always include in case of issues with GCODE analysis or printing behaviour)

Additional information & file uploads

plugin_SmartABL.log

ABL every time you start printer?

Is your feature request related to a problem? Please describe.

I have my gcode set to default. I am forcing an ABL after 10days. I am forcing an ABL after 5 prints. I am set to ignore failed prints.

All seems to work fine, but I turn my printer off if I am not immediately doing another print. Is it normal that is does an ABL at the first print, EVERY time I power on? If I power off and on 4 times in the same day, it will do an ABL at the start of each of those 4 prints.

Describe the solution you'd like

I'd like it to ignore power on/off and follow the rules set in the options.

Describe alternatives you've considered

No response

Additional context

No response

Improve Plugin Description by explaining the Acronym ABL at least once

The problem

I just looked through the plugin list and came across this plugin.
To be honest, I have no idea what it does or my it might be useful to me.

"Simple plugin to reduce the number of ABLs triggered." doesn't tell me anything, even though I own and run a 3D printer for many years already.

The README should start with a description of the problem that this plugin is trying to solve, rather than "How it works", because the latter is not interesting as long as the user doesn't understand why this plugin exists in the first place.

Version of SmartABL

latest

Version of OctoPrint

n/a

Operating system running OctoPrint

n/a

Printer model & used firmware incl. version

No response

Browser and version of browser, operating system running browser

No response

Checklist of files to include below

  • Systeminfo Bundle (always include!)
  • Contents of the JavaScript browser console (always include in cases of issues with the user interface)
  • Screenshots and/or videos showing the problem (always include in case of issues with the user interface)
  • GCODE file with which to reproduce (always include in case of issues with GCODE analysis or printing behaviour)

Additional information & file uploads

No response

[Request] Ability to add other GCODES to be stripped out if leveling is skipped

Is your feature request related to a problem? Please describe.

I have a printer which I use G80 to request a mesh bed level, so this plugin currently does not work for me.

Additionally, I use a custom GCODE command which tells the printer to wait for the mesh leveling probe to reach a preset temperature, so it will be more accurate. (an M command)

Describe the solution you'd like

I would like the ability to skip both of these commands on this printer if bed leveling is expected to be skipped.

Would it be possible to add a feature where an alternate list of GCODES (and M codes) could be specified, which would be skipped instead if bed leveling is to be skipped?

Describe alternatives you've considered

No response

Additional context

No response

SmartABL disabling due to "unsupported firmware" but running Klipper

The problem

When I start

Upon upgrading from the 0.14 pre-release for Klipper testing to the new 0.5.0 release, I now get a message that my firmware is unsupported and SmartABL plugin is disabled.

Using Klipper with OctoKlipper plugin.

Message appears when connecting OctoPi to Klipper.

image

Terminal output at connection to Klipper is:

Connecting to port /tmp/printer, baudrate 115200
Changing monitoring state from "Opening serial connection" to "Connecting"
Connected to: Serial<id=0xa7e7cff0, open=True>(port='/tmp/printer', baudrate=115200, bytesize=8, parity='N', stopbits=1, timeout=10.0, xonxoff=False, rtscts=False, dsrdtr=False), starting monitor
Send: N0 M110 N0*125
Recv: ok
Send: N0 M110 N0*125
Changing monitoring state from "Connecting" to "Operational"
Recv: ok
Send: N0 M110 N0*125
Recv: ok
Send: N1 M115*39
Recv: ok FIRMWARE_VERSION:v0.11.0-148-g52f4e20c FIRMWARE_NAME:Klipper
Send: M21
Recv: ok

Version of SmartABL

0.5.0

Version of OctoPrint

1.8.7

Operating system running OctoPrint

OctoPi

Printer model & used firmware incl. version

Ender 3 running Klipper 0.11

Browser and version of browser, operating system running browser

No response

Checklist of files to include below

  • Systeminfo Bundle (always include!)
  • Contents of the JavaScript browser console (always include in cases of issues with the user interface)
  • Screenshots and/or videos showing the problem (always include in case of issues with the user interface)
  • GCODE file with which to reproduce (always include in case of issues with GCODE analysis or printing behaviour)

Additional information & file uploads

No response

[Request] - Log previous print bed temperature and do ABL if changed

Is your feature request related to a problem? Please describe.

Hi,
First thanks for this plugin, it's awesome!

I had the idea of avoid doing ABL if let's say previous print or the print where the ABL was trigered was done with same bed temperature but do it if it changed.

i.e.: Previous 3 prints done with PLA at 60º bed and ABL done on first print, next print going for PETG at 80º bed so perform ABL.

P.S.: Maybe instead of writing a complex way to save history of previous prints take data from PrintJobHistory plug-in

Thanks in advance!!

Describe the solution you'd like

Previous print bed temperature differs form next one, so perform ABL.

Describe alternatives you've considered

No response

Additional context

No response

SamrtABL seems to be non functional on my system

The problem

After reading the readme multiple times, uninstalling and reinstalling several times I still can't get the plugin to work.
It's totally possible that I'm doing something wrong, but as for now I have no idea what that could be.

The only thing in the readme which I'm not quite sure about is this sentence:

Warning: Prusa and Klipper require at least 1 ABL to track the state.

Is that something which I need to do manually?
Or does it mean that the first print has to be with ABL?

Other than that, I saw this in the side panel:
After installation of SmartABL the P/FP shows 0/5
After the first print (with ABL) finishes it shows: 1/5
Starting the second print ABL is performed again, after which the P/FP shows: 0/5
After the second print finishes P/FP shows 1/5 again

As said, it might be totally my mistake, but I still hope to find a pointer here.

Version of SmartABL

1.2.2

Version of OctoPrint

1.92

Operating system running OctoPrint

OctoPi 0.18.0

Printer model & used firmware incl. version

Prusa i3MK3S+ FW 3.13.0

Browser and version of browser, operating system running browser

No response

Checklist of files to include below

  • Systeminfo Bundle (always include!)
  • Contents of the JavaScript browser console (always include in cases of issues with the user interface)
  • Screenshots and/or videos showing the problem (always include in case of issues with the user interface)
  • GCODE file with which to reproduce (always include in case of issues with GCODE analysis or printing behaviour)

Additional information & file uploads

octoprint-systeminfo-20230729133341.zip
plugin_SmartABL.log
helper_disk_0.4n_0.2mm_PLA_MK3S_1m.gcode.zip

ABL every time (N3P)

The problem

ABL is done every time regardless of plugin settings

Version of SmartABL

0.1.3

Version of OctoPrint

1.8.6

Operating system running OctoPrint

Docker (Raspbian)

Printer model & used firmware incl. version

Elegoo Neptune 3 Pro (1.5.3)

Browser and version of browser, operating system running browser

Any

Checklist of files to include below

  • Systeminfo Bundle (always include!)
  • Contents of the JavaScript browser console (always include in cases of issues with the user interface)
  • Screenshots and/or videos showing the problem (always include in case of issues with the user interface)
  • GCODE file with which to reproduce (always include in case of issues with GCODE analysis or printing behaviour)

Additional information & file uploads

octoprint-systeminfo-20230220113238.zip
octoprint-logs.zip

Z Steppers Auto-Alignment (G34)

Is your feature request related to a problem? Please describe.

No response

Describe the solution you'd like

Please can your add "Z Steppers Auto-Alignment" feature support?
I have dual Z axis motor, and after power off Z steppers, or power off printer, Z axis can move down. I wold like to use "Z Steppers Auto-Alignment" marlin feature to fix this problem before bed leveling.
Or may be can your add custom G-code edit menu for bed leveling? Not a single command.
Thanks.

Describe alternatives you've considered

No response

Additional context

No response

[Request] Bed Visualizer compatibility

Is your feature request related to a problem? Please describe.

Currently, if SmartABL triggers a bedlevel after X days, the Bed Visualizer plugin doesn't pickup this new mesh because Bed Visualizer doesn't pick this up.

In the normal start Gcode for every print there is the code for doing a mesh, as well as a line with "@BEDLEVELVISUALIZER".
SmartABL is very good at catching the code for doing the new mesh and strip it when it isn't needed, but it leaves the @BEDLEVELVISUALIZER line.
This sets the bedlevelvisualizer in the mode that it thinks the printer is doing a bedlevel while it actually started with the print itself.

Describe the solution you'd like

It would be great if SmartABL could also send a "@BEDLEVELVISUALIZER" in the Gcode. This would have bed visualizer pick-up this new mesh and display it.

And/or if in the normal GCODE the @BEDLEVELVISUALIZER line is there and it decides no bedlevel is needed, then also strip this line from the gcode.

Describe alternatives you've considered

No response

Additional context

No response

M420 S1 and then print just stalls

The problem

I don't know if I have something configured wrong or not. but since last update, when trying to print with unrestricted able with unified bed leveling, watching terminal, when I start a print, I see it go through the motions, once it hits abl, in this case, g29 p1, instead it runs M420 S1, and then just stops

Version of SmartABL

SmartABL (0.5.1)

Version of OctoPrint

OctoPrint 1.8.7

Operating system running OctoPrint

OctoPrint 1.8.7 Python 3.9.2 OctoPi 1.0.0

Printer model & used firmware incl. version

No response

Browser and version of browser, operating system running browser

No response

Checklist of files to include below

  • Systeminfo Bundle (always include!)
  • Contents of the JavaScript browser console (always include in cases of issues with the user interface)
  • Screenshots and/or videos showing the problem (always include in case of issues with the user interface)
  • GCODE file with which to reproduce (always include in case of issues with GCODE analysis or printing behaviour)

Additional information & file uploads

No response

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.