Fix time in bambu integration

This commit is contained in:
suchmememanyskill
2024-11-02 14:42:14 +01:00
parent f21b480611
commit 66e3a6765c
2 changed files with 10 additions and 13 deletions

View File

@@ -47,6 +47,7 @@ class BambuPrinter : public BasePrinter
popup_message_timeout_s = -1; popup_message_timeout_s = -1;
bambu_misc = 0; bambu_misc = 0;
printer_data.error_screen_features = PrinterFeatureRetryError | PrinterFeatureIgnoreError | PrinterFeatureContinueError; printer_data.error_screen_features = PrinterFeatureRetryError | PrinterFeatureIgnoreError | PrinterFeatureContinueError;
print_start = millis();
} }
bool move_printer(const char* axis, float amount, bool relative); bool move_printer(const char* axis, float amount, bool relative);

View File

@@ -120,31 +120,22 @@ void BambuPrinter::parse_state(JsonDocument& in)
} }
else if (strcasecmp(state, "running") == 0 || strcasecmp(state, "prepare") == 0) else if (strcasecmp(state, "running") == 0 || strcasecmp(state, "prepare") == 0)
{ {
if (print_start <= 0)
{
print_start = millis();
}
printer_data.state = PrinterState::PrinterStatePrinting; printer_data.state = PrinterState::PrinterStatePrinting;
} }
else else
{ {
print_start = 0;
printer_data.state = PrinterState::PrinterStateIdle; printer_data.state = PrinterState::PrinterStateIdle;
} }
} }
if (printer_data.state == PrinterState::PrinterStatePrinting)
{
printer_data.elapsed_time_s = (millis() - print_start) / 1000;
}
if (print.containsKey("mc_remaining_time")) if (print.containsKey("mc_remaining_time"))
{ {
printer_data.remaining_time_s = print["mc_remaining_time"]; printer_data.remaining_time_s = print["mc_remaining_time"];
printer_data.remaining_time_s *= 60; printer_data.remaining_time_s *= 60;
if (printer_data.remaining_time_s > 300)
{
print_start = millis() - (printer_data.remaining_time_s / (1 - printer_data.print_progress) * printer_data.print_progress * 1000);
}
} }
if (print.containsKey("mc_percent")) if (print.containsKey("mc_percent"))
@@ -153,6 +144,11 @@ void BambuPrinter::parse_state(JsonDocument& in)
printer_data.print_progress /= 100; printer_data.print_progress /= 100;
} }
if (printer_data.state == PrinterState::PrinterStatePrinting)
{
printer_data.elapsed_time_s = (millis() - print_start) / 1000;
}
if (print.containsKey("layer_num")) if (print.containsKey("layer_num"))
{ {
printer_data.current_layer = print["layer_num"]; printer_data.current_layer = print["layer_num"];