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;
|
request_consecutive_fail_count = 0;
|
||||||
JsonDocument doc;
|
JsonDocument doc;
|
||||||
deserializeJson(doc, client.getStream());
|
deserializeJson(doc, client.getStream());
|
||||||
parse_printer_state(doc);
|
parse_printer_status(doc);
|
||||||
|
|
||||||
doc.clear();
|
doc.clear();
|
||||||
configure_http_client(client2, "/api/job", true, 1000, printer_config);
|
configure_http_client(client2, "/api/job", true, 1000, printer_config);
|
||||||
@@ -216,12 +216,56 @@ bool OctoPrinter::fetch()
|
|||||||
|
|
||||||
PrinterDataMinimal OctoPrinter::fetch_min()
|
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()
|
void OctoPrinter::disconnect()
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* MACRO_AUTOLEVEL = "Auto-Level (G28+G29)";
|
const char* MACRO_AUTOLEVEL = "Auto-Level (G28+G29)";
|
||||||
|
|||||||
@@ -14,10 +14,12 @@ class OctoPrinter : public BasePrinter
|
|||||||
bool no_printer = false;
|
bool no_printer = false;
|
||||||
unsigned char request_consecutive_fail_count{};
|
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);
|
void parse_job_state(JsonDocument& in);
|
||||||
|
float parse_job_state_progress(JsonDocument& in);
|
||||||
void parse_error(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);
|
bool get_request(const char* endpoint, int timeout_ms = 1000);
|
||||||
void init_ui_panels();
|
void init_ui_panels();
|
||||||
|
|||||||
@@ -2,11 +2,9 @@
|
|||||||
#include "octoprint_printer_integration.hpp"
|
#include "octoprint_printer_integration.hpp"
|
||||||
#include <ArduinoJson.h>
|
#include <ArduinoJson.h>
|
||||||
|
|
||||||
void OctoPrinter::parse_printer_state(JsonDocument& in)
|
PrinterState OctoPrinter::parse_printer_state(JsonDocument& in)
|
||||||
{
|
{
|
||||||
auto flags = in["state"]["flags"];
|
auto flags = in["state"]["flags"];
|
||||||
auto text = in["state"]["text"];
|
|
||||||
|
|
||||||
bool cancelling = flags["cancelling"];
|
bool cancelling = flags["cancelling"];
|
||||||
bool closedOrError = flags["closedOrError"];
|
bool closedOrError = flags["closedOrError"];
|
||||||
bool error = flags["error"];
|
bool error = flags["error"];
|
||||||
@@ -21,25 +19,32 @@ void OctoPrinter::parse_printer_state(JsonDocument& in)
|
|||||||
|
|
||||||
if (printing || resuming)
|
if (printing || resuming)
|
||||||
{
|
{
|
||||||
printer_data.state = PrinterState::PrinterStatePrinting;
|
return PrinterState::PrinterStatePrinting;
|
||||||
}
|
}
|
||||||
else if (pausing || paused)
|
else if (pausing || paused)
|
||||||
{
|
{
|
||||||
printer_data.state = PrinterState::PrinterStatePaused;
|
return PrinterState::PrinterStatePaused;
|
||||||
}
|
}
|
||||||
else if (cancelling || finishing || ready)
|
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)))
|
if (text != NULL && (printer_data.state_message == NULL || strcmp(printer_data.state_message, text)))
|
||||||
{
|
{
|
||||||
printer_data.state_message = (char *)malloc(strlen(text) + 1);
|
printer_data.state_message = (char *)malloc(strlen(text) + 1);
|
||||||
strcpy(printer_data.state_message, text);
|
strcpy(printer_data.state_message, text);
|
||||||
}
|
}
|
||||||
|
|
||||||
printer_data.state = PrinterState::PrinterStateError;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
auto temperature = in["temperature"];
|
auto temperature = in["temperature"];
|
||||||
@@ -88,6 +93,12 @@ void OctoPrinter::parse_job_state(JsonDocument& in)
|
|||||||
printer_data.remaining_time_s = progress["printTimeLeft"];
|
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)
|
void OctoPrinter::parse_error(JsonDocument& in)
|
||||||
{
|
{
|
||||||
const char* error = in["error"];
|
const char* error = in["error"];
|
||||||
|
|||||||
Reference in New Issue
Block a user