mirror of
https://github.com/suchmememanyskill/CYD-Klipper.git
synced 2026-03-21 05:33:24 +00:00
Add min fetcher for octoprint
This commit is contained in:
@@ -177,7 +177,7 @@ bool OctoPrinter::fetch()
|
||||
request_consecutive_fail_count = 0;
|
||||
JsonDocument doc;
|
||||
deserializeJson(doc, client.getStream());
|
||||
parse_printer_state(doc);
|
||||
parse_printer_status(doc);
|
||||
|
||||
doc.clear();
|
||||
configure_http_client(client2, "/api/job", true, 1000, printer_config);
|
||||
@@ -216,12 +216,56 @@ bool OctoPrinter::fetch()
|
||||
|
||||
PrinterDataMinimal OctoPrinter::fetch_min()
|
||||
{
|
||||
return {};
|
||||
PrinterDataMinimal min = {};
|
||||
min.success = true;
|
||||
min.print_progress = 0;
|
||||
min.power_devices = 0;
|
||||
min.state = PrinterState::PrinterStateOffline;
|
||||
|
||||
{
|
||||
HTTPClient client;
|
||||
int http_code = 0;
|
||||
configure_http_client(client, "/api/printer", true, 1000, printer_config);
|
||||
int http_code = client.GET();
|
||||
|
||||
if (http_code == 200)
|
||||
{
|
||||
JsonDocument doc;
|
||||
deserializeJson(doc, client.getStream());
|
||||
min.state = parse_printer_state(doc);
|
||||
}
|
||||
else if (http_code == 409)
|
||||
{
|
||||
min.state = PrinterState::PrinterStateError;
|
||||
return min;
|
||||
}
|
||||
else
|
||||
{
|
||||
return min;
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
HTTPClient client;
|
||||
configure_http_client(client, "/api/job", true, 1000, printer_config);
|
||||
|
||||
if (client.GET() == 200)
|
||||
{
|
||||
JsonDocument doc;
|
||||
deserializeJson(doc, client.getStream());
|
||||
min.print_progress = parse_job_state_progress(doc);
|
||||
}
|
||||
else
|
||||
{
|
||||
min.state = PrinterState::PrinterStateError;
|
||||
}
|
||||
}
|
||||
|
||||
return min;
|
||||
}
|
||||
|
||||
void OctoPrinter::disconnect()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
const char* MACRO_AUTOLEVEL = "Auto-Level (G28+G29)";
|
||||
|
||||
@@ -14,10 +14,12 @@ class OctoPrinter : public BasePrinter
|
||||
bool no_printer = false;
|
||||
unsigned char request_consecutive_fail_count{};
|
||||
|
||||
void parse_printer_state(JsonDocument& in);
|
||||
void parse_printer_status(JsonDocument& in);
|
||||
PrinterState parse_printer_state(JsonDocument& in);
|
||||
void parse_job_state(JsonDocument& in);
|
||||
float parse_job_state_progress(JsonDocument& in);
|
||||
void parse_error(JsonDocument& in);
|
||||
void OctoPrinter::parse_file_list(JsonDocument &in, std::list<OctoFileSystemFile> &files, int fetch_limit);
|
||||
void parse_file_list(JsonDocument &in, std::list<OctoFileSystemFile> &files, int fetch_limit);
|
||||
|
||||
bool get_request(const char* endpoint, int timeout_ms = 1000);
|
||||
void init_ui_panels();
|
||||
|
||||
@@ -2,11 +2,9 @@
|
||||
#include "octoprint_printer_integration.hpp"
|
||||
#include <ArduinoJson.h>
|
||||
|
||||
void OctoPrinter::parse_printer_state(JsonDocument& in)
|
||||
PrinterState OctoPrinter::parse_printer_state(JsonDocument& in)
|
||||
{
|
||||
auto flags = in["state"]["flags"];
|
||||
auto text = in["state"]["text"];
|
||||
|
||||
bool cancelling = flags["cancelling"];
|
||||
bool closedOrError = flags["closedOrError"];
|
||||
bool error = flags["error"];
|
||||
@@ -21,25 +19,32 @@ void OctoPrinter::parse_printer_state(JsonDocument& in)
|
||||
|
||||
if (printing || resuming)
|
||||
{
|
||||
printer_data.state = PrinterState::PrinterStatePrinting;
|
||||
return PrinterState::PrinterStatePrinting;
|
||||
}
|
||||
else if (pausing || paused)
|
||||
{
|
||||
printer_data.state = PrinterState::PrinterStatePaused;
|
||||
return PrinterState::PrinterStatePaused;
|
||||
}
|
||||
else if (cancelling || finishing || ready)
|
||||
{
|
||||
printer_data.state = PrinterState::PrinterStateIdle;
|
||||
return PrinterState::PrinterStateIdle;
|
||||
}
|
||||
else
|
||||
|
||||
return PrinterState::PrinterStateError;
|
||||
}
|
||||
|
||||
void OctoPrinter::parse_printer_status(JsonDocument& in)
|
||||
{
|
||||
auto text = in["state"]["text"];
|
||||
printer_data.state = parse_printer_state(in);
|
||||
|
||||
if (printer_data.state == PrinterState::PrinterStateError)
|
||||
{
|
||||
if (text != NULL && (printer_data.state_message == NULL || strcmp(printer_data.state_message, text)))
|
||||
{
|
||||
printer_data.state_message = (char *)malloc(strlen(text) + 1);
|
||||
strcpy(printer_data.state_message, text);
|
||||
}
|
||||
|
||||
printer_data.state = PrinterState::PrinterStateError;
|
||||
}
|
||||
|
||||
auto temperature = in["temperature"];
|
||||
@@ -88,6 +93,12 @@ void OctoPrinter::parse_job_state(JsonDocument& in)
|
||||
printer_data.remaining_time_s = progress["printTimeLeft"];
|
||||
}
|
||||
|
||||
float OctoPrinter::parse_job_state_progress(JsonDocument& in)
|
||||
{
|
||||
float completion = in["progress"]["completion"];
|
||||
return completion / 100;
|
||||
}
|
||||
|
||||
void OctoPrinter::parse_error(JsonDocument& in)
|
||||
{
|
||||
const char* error = in["error"];
|
||||
|
||||
Reference in New Issue
Block a user